- Http 是应用层协议,基于 请求/响应模式,是一种 无状态的协议。
- Http 1.0 不能持续连接,每一次请求都会建立一次TCP连接,请求结束后关闭。
Http 1.1加了持续连接,客户端第一次请求会建立TCP连接,接下来的请求会一直使用该TCP连接,降低了建立连接的开销。 - Http的请求:三个部分: 请求行,消息报头,请求正文。
请求行:一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF结尾。请求行以空格分隔。结尾不允许出现其他字符。GET /test.html HTTP/1.1 (CRLF)。
GET方法用于获取由Request-URI所标识的资源信息;通过浏览器输入网址访问网页,采用的都是GET方法向服务器获取资源。
POST方法用于向服务器发送请求,要求服务器接受附在请求后面的数据。表单提交的时候用的多。 - 浏览器与服务器的一般过程 Java服务器:
服务器端:ServerSocket serverSocket = new ServerSocket(80);
serverSocket.accept(); //服务器是阻断式访问,accept方法会一直等待客户端连接。
客户端输入:www.baidu.com :80 —> DNS(Domain Name Service) —>221.179.180.20:80
Socket socket = new Socket(“221.179.180.20”,80); - HTTP响应:
状态行: HTTP-Version Status-Code Reason-Phrase CRLF eg: HTTP/1.1 200 OK
状态代码:- 1XX: 指示信息-表示请求已接受,继续处理。
- 2XX: 成功-表示请求已经被成功接收,理解,接受。
200 : OK 客户端请求成功。 - 3XX: 重定向-要完成请求必须进行更进一步的操作。
- 4XX: 客户端错误-请求由语法错误或请求无法实现。
400 : Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
401 : Unauthorized 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用。
404 : Not Found 请求的资源不在,比如输入了错误的URL。 - 5XX: 服务器端错误-服务器未能实现合法的请求。
500 : Internal Server Error 服务器发生不可预期的错误,导致无法完成客户的请求。
503 : Service Unavailable 服务器当前不能够处理客户的请求,在一段时间之后,服务器可能会恢复正常。
- Telnet:
HTTP协议与TELNET协议都是基于TCP协议。