首页 理论教育 HTTP协议及实例分析

HTTP协议及实例分析

时间:2023-06-30 理论教育 版权反馈
【摘要】:HTTP 协议用于在Internet 上发送和接收消息。HTTP 协议使用可靠的TCP 连接,默认端口是80。图3-2-11HTTP 请求包格式HTTP 协议定义的第一部分请求行的“方法”有多种,如GET、POST、OPTIONS、HEAD 等,表示“下载网页”“上传网页”等命令。当首页显示完毕后,停止Wireshark 抓包,保存抓包数据,观察HTTP 协议的实际工作过程以及HTTP 请求包和应答包的内容。HTTP 协议的内部操作分4 个过程: 建立连接;发送请求信息;接收响应信息;关闭连接。

HTTP协议及实例分析

HTTP 协议用于在Internet 上发送和接收消息。

(1)HTTP 协议是一种请求—应答式协议: 客户机发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP 包。

(2)HTTP 协议使用可靠的TCP 连接,默认端口是80。

(3)HTTP 的第一个版本是HTTP/0.9,后来发展了多个版本。

1.HTTP 协议工作方式

HTTP 协议的内部操作过程: 基于HTTP 协议的客户-服务器模式的信息交换过程,它分为4 个过程: 建立连接;发送请求信息;发送响应信息;关闭连接。

(1)客户机与服务器建立连接。

(2)客户机向服务器递交请求,在请求中指明所要求的特定文件。

(3)服务器发回一个应答,如果确认请求,则在应答中包括状态编号和该文件内容。

(4)客户机与服务器断开连接。

简而言之,任何服务器除了包括HTML 文件以外,还有一个HTTP 驻留程序,用于响应用户请求。用户的浏览器是HTTP 客户,向服务器发送请求,当在浏览器中输入一个开始文件或单击一个超级链接时,浏览器就向服务器发送了HTTP 请求,此请求被送往由IP 地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包都包括要传送的数据和控制信息(即告诉网络怎样处理数据包)。

在HTTP 中,Client/Server (客户机/服务器)之间的会话总是由客户机通过建立连接和发送HTTP 请求包初始化,服务器不会主动联系客户端或要求与客户机建立连接。浏览器和服务器都可以随时中断连接。例如,在浏览网页时,可以随时单击“停止”按钮来中断当前的文件下载过程,关闭与Web 服务器的HTTP 连接。

2.HTTP 数据包的格式

客户机与服务器通过三次握手建立连接后,会发送一个请求数据包给服务器。请求方式的格式: 统一资源标识符(URI)、协议版本号、MIME 信息(包括请求修饰符、客户机信息和可能的内容)。服务器接收到请求后,会给予相应的响应信息,其格式为一个状态行,包括: 信息的协议版本号、一个成功或错误的代码、MIME 信息(包括服务器信息、实体信息和可能的内容)。因此,HTTP 数据包分为请求数据包和应答数据包,格式各有不同。

1)HTTP 请求包

HTTP 请求包由3 部分构成,分别是: 请求行、请求头、请求正文。其中,第1 部分为单独一行;第2 部分为连续的若干行;第2 部分和第3 部分之间以空行相间隔。因此,HTTP的请求包格式可如图3-2-11 所示。

图3-2-11 HTTP 请求包格式

HTTP 协议定义的第一部分请求行的“方法”有多种,如GET、POST、OPTIONS、HEAD 等,表示“下载网页”“上传网页”等命令。

第2 部分请求头的关键字也有很多种,如Host、Accept、Connection、Accept-Language 等,表示“用户在地址栏中输入的地址”“浏览器支持的资源类型”“本次连接的属性”“浏览器支持的语言类型”等。

下面是一个HTTP 请求包(GET)的例子:

图3-2-12 HTTP 应答包格式

2)HTTP 应答包

HTTP 应答包的格式和请求包相似,也由3 个部分构成,分别是: 状态行、应答头、应答正文。应答包的格式如图3-2-12 所示。

HTTP 协议定义的第1 部分状态行的“状态代码”有多种,代表不同的含义,如200、304、404、503 等,分别表示“一切正常”“资源未改变”“文件未找到”“服务不可用”等含义。(www.xing528.com)

第2 部分应答头的关键字也有很多种,如Server、Date、Content-Type、Last-Modified等,分别表示“应答服务器的名称和版本信息”“应答服务器端当前时间”“应答正文的类型”“应答服务器端资源最后被修改的时间”等。

下面是一个HTTP 应答的例子:

3.协议实例分析

在Web 客户端启动Wireshark,将过滤条件设置为截获本机的所有IP 数据包,然后启动IE 浏览器,访问某网站,如www.zxm.com。当首页显示完毕后,停止Wireshark 抓包,保存抓包数据,观察HTTP 协议的实际工作过程以及HTTP 请求包和应答包的内容。本机IP 地址是172.22.97.21。

HTTP 协议的内部操作分4 个过程: 建立连接;发送请求信息;接收响应信息;关闭连接。下面对照图3-2-13 来分析抓取的数据包。

图3-2-13 HTTP 请求数据包实例

1)建立连接

图3-2-13 所示中的前4 个数据帧是DNS 报文,HTTP 协议工作从第525 帧数据开始。

第520、523、524 帧数据是HTTP 协议使用下层TCP 协议通过三次握手原则建立连接的过程: 客户端向Web 服务器发送一个SYN 同步连接请求;Web 服务器收到请求后,向客户端发送一个SYN/ACK 数据包,同意客户端的连接请并向客端发起同步;客户端收到该数据包后再次确认,从而成功建立TCP 连接。

由此可知,HTTP 通信发生在TCP 协议之上、Web 服务器的缺省端口是TCP 的80 端口,客户端是一个在特定范围内的随机端口号(本实例客户端口号是59744),所以HTTP 是一个可靠的协议。

2)发送请求信息

第525 帧数据是主机发给服务器的HTTP 请求包。从端口号信息上可以看到HTTP 协议发送请求信息的一些特征: 建立一个连接后,客户机就把请求消息通过该连接送到服务器的保留端口上,完成提出请求动作。

再来分析第525 帧的具体数据:

第1 行是请求行,内容为“GET/HTTP/1.1\r\n”,表明请求方法是GET,请求的网页是该网站的根目录下的默认网页,使用HTTP 协议,版本是1.1。

第2 ~8 行是请求头,包括以各种关键字开头的若干连续行。第2 行表示网页的主机是www.zxm.com;第3 行表明keep-alive 请求连接;第4 行“Upgrade-Insecure-Requests:1\r\n”告诉服务器,浏览器可以处理https 协议;第5 行给出浏览器类型;第6 行表明客户端请求类型;第7 行表明请求的编码格式;第8 行表明请求的语言。

3)接收响应信息

第529 帧数据是服务器的响应包信息,如图3-2-14 所示。

图3-2-14 HTTP 应答包实例

分析具体数据:

第1 行是状态行,内容为“HTTP/1.1 200 OK\r \n”,表明服务器使用HTTP 协议,版本是1.1,状态码200 表明成功接受请求。

第2 ~8 行,是应答头,包括以各种关键字开头的若干连续行。例如,第2 行指明发送该响应报文的文本类型;第3 行指明该报文最后修改时间;等等。

第9 行是空行。

从第10 行开始是响应的正文。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈