HTTP请求报文解析

一、建立HTTP传输的意义

HTTP是一种超文本的传输协议,服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。使用HTTP协议可以方便的将PC浏览器手工填表端口与单片机上传接口共用,可以有效的减少服务端的开发工作量。

二、HTTTP建立流程

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

1.建立TCP连接

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

备注:在建立TCP的端口连接后,web端与服务器需要建立三次握手联机,才可以进行通信;

2.Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。常用请求的命令有:常用的HTTP请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;

3.Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

请求信息的内容包括:

GET / HTTP/1.1 //请求方法为GET,HTTP协议为1.1

Host: www.baidu.com //URL为www.baidu.com

User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 //用户代理,也就是浏览器了,显示了浏览器的详细信息

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 //服务器能够发送的文件类型text/html的意思是HTML文本文档类型,后面那些查文档去

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 //服务器能够发送的语言zh-cn为中文,后面那些查文档去

Accept-Encoding: gzip, deflate //服务器能够发送的编码格式为gzip,编码格式不符合浏览器会解释不了

Cookie: BAIDUID=AF6C346B14E94898933E5F858C63F889:FG=1; BDREFER=%7Burl%3A%22http%3A//news.baidu.com/%22%2Cword%3A%22%22%7D; H_PS_PSSID=2097_1464_2133_1944_1788 //cookie,服务器存储在客户端的信息,每次请求都会将服务器保存在客户端的cookie一并发送上服务器。

Connection: keep-alive //连接,keep-alive保持状态

Cache-Control: max-age=0 //随报文传送缓存指示cache-control max-age>0时 直接从游览器缓存中 提取max-age

4.Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答,HTTP/1.1 200 OK,应答的第一部分是协议的版本号和应答状态码。

5.Web服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

HTTP/1.1 200 OK //HTTP版本 1.1 状态码200 原因短语OK

Date: Tue, 02 Apr 2013 04:27:50 GMT//响应的时间日期

Server: BWS/1.0 //服务器应用程序软件的名称和版本 BWS/1.0

Content-Length: 4271//响应的主体内容的长度为4271个字节

Content-Type: text/html;charset=utf-8 //响应类型为HTML文本,编码类型为utf-8

Cache-Control: private//缓存指示

Expires: Tue, 02 Apr 2013 04:27:50 GMT//实体不在有效,要从原始的源端再次获取此实体的日期和时间

Content-Encoding: gzip//对主体执行的编码方式为gzip

Set-Cookie: H_PS_PSSID=2097_1464_2133_1944_1788; path=/; domain=.baidu.com //设置cookie,path,domain都是cookie的信息(作用范围等等)

Connection: Keep-Alive//状态为保持连接

6.Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

7.Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接。

三、使用单片机显示网络传输技巧

1.因大部分的GPRS或WiFi支持域名解析,固使用单片机做HTTP协议传输时,不需要DNS解析。若使用有线网络传输,则需要外部服务器的协助来完成DNS的解析;

2.http传输协议默认的端口号为:80端口;

4.如果使用HTTP 1.0及以下版本,web服务器默认是短连接方式,在完成一次传输后就会主动断开,以保证网络资源的有效利用。所以单片机每次发送数据前都需要做TCP/IP连接;

5.HTTP超文本传输范例:

Accept: */*

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;

Windows NT 5.1; SV1; .NET CLR 2.0.50727)

Connection: Keep-Alive

四、HTTP测试方法

可以使用在线版的HTTP协议解析工具来进行相关数据的传输。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171228G0M0YX00?refer=cp_1026

扫码关注云+社区