HTTP通信

HTTP的通信可以分为两部分:HTTP请求和HTTP应答.HTTP通信过程默认使用的是TCP协议,TCP连接从建立到关闭的过程中,客户端(浏览器)仅给服务器发送了一个HTTP请求,而服务器则会给客户端返回一个HTTP应答。我们主要分析一下HTTP请求报文段和HTTP应答报文段的内容。

HTTP请求

这是HTTP的请求内容:

第一部分请求行

请求行,格式:“请求方式+”“”+ URL +“”+版本+回车+换行“,示例中的第一行,其中GET是请求方式,HTTP://www.baidu.com/index。 HTML是目标资源的URL,其中“HTTP”是所谓计划,表示获取目标资源需要使用的与应用层协议; “HTTP / 1.0”表示客户端使用的HTTP的版本号是1.0当然,目前主流HTTP版本是1.1。常见的请求方法有九种,如下图4-1中所示:

第二部分请求头部字段

HTTP请求的头部字段,示例中的2-4行,一个HTTP请求可以包含多个头部字段,一个字段用一行表示,包含“名称,':','',值”。作用是添加一写附加信息,常见的请求头部如下:

  • 接受:浏览器能够处理的内容类型;
  • 接收字符集:浏览器能够显示的字符集;
  • 的Accept-Encoding:浏览器能够处理的压缩编码;
  • 接受语言:浏览器当前设置的语言;
  • 连接:浏览器与服务器之间连接的类型/ *两种类型连接(Keep-Alive(长连接),close(短链接))* /
  • 饼干:当前页面设置的任何Cookie的;
  • 主持人:发出请求的页面所在的域;
  • 的Referer:发出请求的页面的URL;
  • 用户代理:浏览器的用户代理字符串;

参照上面的头部请求信息比表,我们就可以明白2-4行的信息,这里就不再解释了。

第三部分分界

扫描二维码关注公众号,回复: 4830501 查看本文章

一个空行,由且仅由一个回车符和一个换行符组成,是正文与头部的分界线,用来标识头部的结束。

第四部分正文

正文部分,在空行之后,HTTP请求可以包含可选的消息体,比如得到请求就没有请求正文。但如果消息体非空,则HTTP请求报头字段中必须包含描述消息体长度的字段。

HTTP应答

说完上面的的HTTP请求部分,我们再来研究一下HTTP的应答部分的相关内容,如下面的内容:

对于这段内容,是由状态行和应答的头部字段组成,当然,HTTP的应答不止这两个部分,它与请求部分一样,也是由四部分组成,但是也有区别。

第一部分状态行

状态行由三部分组成:使用协议的版本号,状态码以及状态信息,三者之间用空格隔开并且在行尾加回车换行,通常情况下服务器需要使用和客户端相同的HTTP协议版本。状态码由三围数字组成,相关含义如下图4-2所示:

第二部分应答头部

示例中的2-7行,表达方法与HTTP请求中的头部字段相同,同样也是添加了一部分附加信息,常用的请求头信息如下

  • Server服务器应用程序软件的名称和版本
  • Content-Type响应正文的类型(是图片还是二进制字符串)
  • Content-Length响应正文长度
  • Content-Charset响应正文使用的编码
  • Content-Encoding响应正文使用的数据压缩格式
  • Content-Language响应正文使用的语言
  • 日期响应时间

对于第四行可能有些难理解,“text”是主文档类型,“html”是子文档类型,“text/html”表示目标文档index.thml是text类型中的html文档,“charset”是text文档的一个参数,用于指定文档的字符编码。

第三部分 分界

应答的分界同请求的分界一样,以一个空行来区分空行和相应头部。

第四部分 应答正文

在空行之后就是被请求文档的内容,但是它的长度会在头部中被声明。

猜你喜欢

转载自blog.csdn.net/pretysunshine/article/details/84634746