HTTP协议基本分析.docx
- 文档编号:8919441
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:10
- 大小:419.21KB
HTTP协议基本分析.docx
《HTTP协议基本分析.docx》由会员分享,可在线阅读,更多相关《HTTP协议基本分析.docx(10页珍藏版)》请在冰点文库上搜索。
HTTP协议基本分析
HTTP协议基本分析
一.实验目的
1.使用nginx软件,将个人主机配置成服务器,初步了解Web服务器的创建和使用。
2.使用Wireshark软件,通过动手实践对抓取的数据包进行实例分析,重点理解HTTP协议。
二.实验环境
系统环境
Windows10家庭版
Web服务器
Nginx-1.12.1
抓包软件
Wireshark2.2.0
浏览器客户端
Firefox56.0
本机IP
10.104.160.126
对方电脑IP
10.104.160.29
三.实验过程
(一)Web服务器的搭建
1.在个人电脑上搭建服务器时,我们常常使用一些比较实用的软件。
如在windows下我们可能会选择去用IIS,十分的快捷,而在linux下,我们可能首先会想到apache,下面是W3Techs网站数据关于用户选择软件类型的排
。
对于Nginx,大多数业内人士认为其是效率比较高的后起之秀,在本试验中,我们也将采用该软件。
2.根据课程需要文件中提供的nginx-1.12.1.zip压缩包,我们直接解压并运行nginx.exe,如果电脑配置正常,则会出现以下状况:
其中在任务管理器中可观察该程序的PID号,
同时在命令提示行中输入netstat-aon|findstr":
80",可发现该程序的运行需要占用80端口。
如出现nginx.exe无法正常启动现象,可首先考虑80端口被其他应用所占用,具体解决方法可见博客园中张占岭的文章《Nginx系列~Nginx服务启动不了
。
3.当该程序正常运行后,我们下一步在本机上进行访问网页的测试。
打开Firefox浏览器,浏览器地址栏输入http:
//10.104.160.126,访问Web服务器的主页,可发现浏览器显示如下(若无法访问则是在服务器配置过程中出现问题):
(二)抓取IP包并作简要分析
下面我们将进行抓取IP包实验,即在个人主机上访问同一局域网内其他主机时产生的通讯数据包,当然要保证其他主机已启动nginx程序。
本实验中选择IP地址为10.104.160.29的主机(服务器端),在Firefox浏览器中输入http:
//10.104.160.29,访问其web服务器的主页,同时打开wireshark进行抓包,在这一过程中得到的HTTP请求报文如下:
图1HTTPGET请求操作
图2HTTPGET请求操作
分析如下:
1)序列号为377的数据包是arp查询帧,客户端(IP:
10.104.160.126)通过arp查询服务器端(IP:
10.104.160.29)的mac地址。
2)序列号为378的数据包是arp回应帧,服务器端告知客户端它的mac地址为f0:
76:
1c:
cc:
ef:
3f。
3)序列号为379、380、381的数据包是TCP连接的三次握手数据包,连接的双方是客户端和web服务器。
4)序列号为382的数据包是客户端发起的HTTPGET请求,向Web服务器处请求根页面。
5)序列号为383的数据包是对序列号为382的数据包的AC
。
6)序列号为384、385的数据包为服务器回应的主页内容,约1Kb,其中384数据包内容为0-535字节,385数据包为536-892字节。
7)序列号为386的数据包是对序列号为385数据包的ACK。
8)序列号为388的数据包是客户端发起的HTTPGET请求favicon.ico图标,序列号为389的数据包是服务器端的回应,显示未找到图标内容。
9)序列号为390的数据包是客户端再次发起的HTTPGET请求favicon.ico图标,序列号为391的数据包是服务器端的回应,依旧显示未找到图标内容。
10)序列号为392的数据包是对序列号为391数据包的ACK。
11)序列号为485、486、566、567的数据包为应用层的心跳包(TCPKeep-Alive
以维持客户端与服务器端的正常通信。
12)序列号为590、598、601、602的数据包是关闭浏览器后双方拆除tcp连接的会话过程。
(三)对HTTP请求作简要分析
下面我们将具体分析图1中第382个数据包的HTTP请求解码,经分析得到以下结论:
1)HTTP请求:
请求的方法是GET,“/”表示请求Web服务器的根目录,“HTTP/1.1”表示的是URI(UniformResourceIdentifier,统一资源标识符)及其版本;
2)Host:
包含的主机信息为10.104.160.29,即web服务器。
3)User-Agent:
包含HTTP客户端运行的浏览器类型,这里采用的是MozillaFirefox56.0;
4)Accept:
指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序,这里可以看到客户端能够接收的类型有text/html,application/xhtml+xml等。
5)Accept-Language:
指定优先选择的语言是中文;
6)Accept-Encoding:
指定内容编码类型为gzip或deflate;
7)Connection:
指定的连接类型为Keep-Alive,即在一个TCP上可以进行多个http会话。
(四)对HTTP响应作简要分析
Web服务器在收到客户端HTTP请求后,会向客户端发送一个应答响应。
图1中序列号为385的数据包即是Web服务器返回给客户端的HTTP响应数据包,经解码分析后得到以下信息:
1)HTTP响应:
“HTTP/1.1”表示的是URI(UniformResourceIdentifier,统一资源标识
符)及其版本,“200OK”是HTTP响应的状态码,表示客户端请示的页面存在,且状态
正常。
2)Server:
显示支持当前请求页面的Web服务器的类型为nginx,1.12.1位服务器的版本。
3)Date:
显示当前的时间为格林尼治标准时
2017年10月7日2时36分50秒,与北京时间相比晚约8个小时,即实际抓包时间约为10时36分。
4)Content-Type:
显示此HTTP连接的内容类型。
5)Last-Modified:
该网页的最后一次修改时间
6)Connection:
显示此HTTP连接的类型为Keep-Alive。
7)ETag:
被请求变量的实体值。
8)Line-basdtextdata:
Web服务器传送给客户端浏览器的HTML代码。
在以太网中,数据包的大小在64-1518字节之间,如果客户端请求的页面大于1518字节,则会将请求的页面分段传送给客户端。
浏览器接收到Web服务器传送给自己的HTML代码后,便开始读取数据并将其显示为网页。
(五)总结HTTP访问流程
通过对报文的研究与分析,我们将总结HTTP的工作流程如下:
一次HTTP操作称为一个事务,当客户端已经获得服务器端的MAC地址后其具体工作过程可分为七步:
a)Client首先发送一个TCP连接的SYN请求,ACK=0表示确认号无效,SYN=1表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq=x表示Client自己的初始序号(seq=0就代表这是第0号包),这时候Client进入syn_sent状态,表示客户端等待服务器的回复
b)Server监听到连接请求报文后,如同意建立连接,则向Client发送SYN/ACK的数据包进行确认。
TCP报文首部中的SYN和ACK都置1,ack=x+1表示期望收到对方下一个报文段的第一个数据字节序号是x+1,同时表明x为止的所有数据都已正确收到(ack=1其实是ack=0+1,也就是期望客户端的第1个包),seq=y表示Server自己的初始序号(seq=0就代表这是服务器这边发出的第0号包)。
这时服务器进入syn_rcvd,表示服务器已经收到Client的连接请求,等待client的确认。
c)Client收到确认后还需再次发送一个ACK数据包进行确认确认,包内含有要发送给Server的数据。
ACK置1表示确认号ack=y+1有效(代表期望收到服务器的第1个包),Client自己的序号seq=x+1(表示这就是我的第1个包,相对于第0个包来说的),一旦收到Client的确认之后,这个TCP连接就进入Established状态。
d)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:
统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
e)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
f)但在某些情况下(脚本比较复杂,需耗费大量时间执行)开始的时候只能返回HTTP的报头,而数据可能会在相隔一段时间后再单独地分组进行传输。
g)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,数据传输完毕后客户端发送FIN数据包与服务器断开连接。
四.结果分析
通过本次实验,我们初步了解HTTP协议的工作模式,同时也对客户端与服务器端的通信过程有更深的认识。
在探索过程中出现了很多与计算机网络通信的相关名词,因此也查阅了很多资料去辅助理解。
由于时间有限,HTTP协议中包含的内容又比较多,所有仍有许多HTTP工作流程中详细的操作没有深入研究!
五.参考资料
【1】轻松使用Nginx搭建web服务器
【2】Nginx系列~Nginx服务启动不了
【3】TCP的状态(SYN,FIN,ACK,PSH,RST,URG)
【4】为什么基于TCP的应用需要心跳包(TCPkeep-alive原理分析)
【5】GMT的含义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HTTP 协议 基本 分析