[关闭]
@Sakura-W 2016-10-03T02:56:51.000000Z 字数 1706 阅读 1326

HTTP

网络


一、Introduction

HTTP(The Hypertext Protocol),即超文本传输协议,是一个用于分布式、协作和超媒体信息系统的应用协议,是WWW数据通信的基础。

设计HTTP最初的目的是提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源定位符来标识。

通常,由HTTP客户端(Web浏览器、网络爬虫等)发起一个请求,创建一个到服务器指定端口(默认为80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求,一旦收到请求,服务器会向客户端返回一个状态,比如HTTP/1.1 200 OK,以及返回的内容(如请求的文件、错误消息或者其他信息)。

HTTP是一个无状态的协议,即协议对于事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传。这样可能导致每次连接传送的数据量增大,当然也在服务器不需要先前信息时,它的应答就比较快。(保持HTTP连接状态的技术:Cookie、Session(会话))

二、Request and Response

图片.png-31.8kB

客户端与服务器通过request/response对进行信息传递,客户端发送一个请求信息,然后从服务器收到相应的响应信息。

1、URLs

图片.png-13.8kB

如上图,请求信息通常一个是URLs

2、Request Verbs

以上是常用的请求方法。

3、Status Codes

服务器在收到请求后,会向客户端发送响应,响应包括状态码和数据。

1XX表示:请求已被服务器接收,告诉客户端继续发送剩下的请求部分。

2XX表示:请求已被服务器接收成功。常用的是200 OK,表示请求被成功接收、理解并接受。

3XX表示:重定向,要求客户端采用额外的方法。常见的是304,表示该资源没有被修改过,客户端可以使用缓存中的数据。

4XX表示:客户端错误。可能是请求一个无效资源或者发送一个错误请求,常用的是404 NOT Found,表示页面不存在。

5XX表示:服务器错误。常见的是500 Internal Server Error

4、Request and Response Message Formats

图片.png-37.2kB

信息内容

message = <start-line>
          *(<message-header>)
          CRLF(强制换行)
          [<message-body>]

<start-line> = Request-Line | Status-Line
<message-header> = Field-Name ":" Field-Value

请求头通常有:general headersrequest headersresponse headersentity headers这几种。
信息主体包括完整的数据信息或者一块一块的信息。

General Headers
请求和响应信息通常都有General headers
图片.png-8.3kB

Entity Headers
Entity headers包含数据主体的元信息:
图片.png-10.7kB

Request Format
格式如下:

Request-Line = Method SP URI SP HTTP-Version CRLF//SP表示空格
Requst-header = ...

一个例子:
图片.png-9.4kB

Response Format
格式如下:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF//Reason-Phrase是Status-Code的自然语言解释
Response-header = ...

一个例子:
图片.png-9.8kB

三、Tools to view HTTP Traffic

Chrome
Fiddler
Charles

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注