1.HTTP简介:
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。
通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
2.HTTP协议例子:
下面是一个HTTP客户端与服务器之间会话的例子,运行于www.google.com,端口80
客户端请求:
GET / HTTP/1.1 Host: www.google.com(末尾有一个空行。第一行指定方法、资源路径、协议版本;第二行是在1.1版里必带的一个header作用指定主机)
服务器应答:
HTTP/1.1 200 OK Content-Length: 3059 Server: GWS/2.0 Date: Sat, 11 Jan 2003 02:44:04 GMT Content-Type: text/html Cache-control: private Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Connection: keep-alive(紧跟着一个空行,并且由HTML格式的文本组成了Google的主页)
在HTTP1.0,单一TCP连接内仅执行一个“客户端发送请求—服务器发送应答”周期,之后释放TCP连接。在HTTP1.1优化支持持续活跃连接:客户端连续多次发送请求、接收应答;批量多请求时,同一TCP连接在活跃(Keep-Live)间期内复用,避免重复TCP初始握手活动,减少网络负荷和响应周期。此外支持应答到达前继续发送请求(通常是两个),称为“流线化”(stream)。
3.HTTP状态码
所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。
状态代码的第一个数字代表当前响应的类型:
4.HTTP状态码(详细中文解释,可参考WIKI:https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81)
1 Status Code Definitions 2 Informational 1xx 3 100 Continue 4 101 Switching Protocols 5 Successful 2xx 6 200 OK 7 201 Created 8 202 Accepted 9 203 Non-Authoritative Information 10 204 No Content 11 205 Reset Content 12 206 Partial Content 13 Redirection 3xx 14 300 Multiple Choices 15 301 Moved Permanently 16 302 Found 17 303 See Other 18 304 Not Modified 19 305 Use Proxy 20 306 (Unused) 21 307 Temporary Redirect 22 Client Error 4xx 23 400 Bad Request 24 401 Unauthorized 25 402 Payment Required 26 403 Forbidden 27 404 Not Found 28 405 Method Not Allowed 29 406 Not Acceptable 30 407 Proxy Authentication Required 31 408 Request Timeout 32 409 Conflict 33 410 Gone 34 411 Length Required 35 412 Precondition Failed 36 413 Request Entity Too Large 37 414 Request-URI Too Long 38 415 Unsupported Media Type 39 416 Requested Range Not Satisfiable 40 417 Expectation Failed 41 Server Error 5xx 42 500 Internal Server Error 43 501 Not Implemented 44 502 Bad Gateway 45 503 Service Unavailable 46 504 Gateway Timeout 47 505 HTTP Version Not Supported
参考资料:
1.Hypertext Transfer Protocol -- HTTP/1.1 RFC https://tools.ietf.org/html/rfc2616
2.HTTP状态码 https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
3.超文本传输协议 https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE