creasylai19

a programmer(https://github.com/creasylai19)

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字代表当前响应的类型:

  • 1xx消息——请求已被服务器接收,继续处理
  • 2xx成功——请求已成功被服务器接收、理解、并接受
  • 3xx重定向——需要后续操作才能完成这一请求
  • 4xx请求错误——请求含有词法错误或者无法被执行
  • 5xx服务器错误——服务器在处理某个正确请求时发生错误

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

posted on 2015-10-26 01:07  creasylai19  阅读(329)  评论(0编辑  收藏  举报