计算机网络实验一——应用协议与数据包分析

一、实验题目

通过本实验,熟练掌握Wireshark 的操作和使用,学习对HTTP 协议进行分析。

二、实验内容

学习HTTP协议,了解HTTP的工作原理和HTTP报文格式。运行Wireshark,截获
在浏览器访问web界面的报文,并根据截获的报文分析其格式与内容,进一步学习HTTP 协议工作过程。

三、实验原理

HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务。

1.HTTP 的工作原理

HTTP 是一个面向事务的客户服务器协议是无状态的。也就是说,每个事务都是独立地进行处理。当一个事务开始时,就在web 客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接。此外,客户可以使用多个端口和和服务器 (80 端口)之间建立多个连接。其工作过程包括以下几个阶段:

① 服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求;
② 一旦监听到连接请求,立即建立连接。
③ 浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。
④ 释放TCP 连接。

当用户在浏览器的地址栏输入要访问的HTTP 服务器地址时,浏览器和被访问HTTP 服
务器的工作过程如下:
① 浏览器分析待访问页面的URL 并向本地DNS 服务器请求IP 地解析;
② DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器;
③ 浏览器与HTTP 服务器建立TCP 连接,若连接成功,则进入下一步;
④ 浏览器向HTTP 服务器发出请求报文 (含GET 信息),请求访问服务器的指定页面;
⑤ 服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览
器会打开多个端口,与服务器建立多个连接;
⑥ 释放TCP 连接;
⑦ 浏览器收到页面并显示给用户。

2.HTTP 报文格式

HTTP 有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。下图
显示了两种报文的结构。
在这里插入图片描述
**开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,响应报文中的开始行叫做状态行。**在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
**首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。**在每一个首部行中都有首部字段名和它的值,每一行结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
实体主体,在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

请求报文的第一行请求行只有三个内容,即方法,请求资源的URL,以及HTTP的版本。所谓“方法”就是对所请求的对象进行的操作,这些方法实际上也是一些命令。
响应报文的第一行就是状态行。状态行包括三项:HTTP版本,状态码,以及解释状态码的简单短语。

四、实验步骤

1.截获报文步骤

步骤 1:在 PC 机上运行 Wireshark,开始截获报文;
步骤 2:从浏览器上访问 Web 界面,如 http://www. http://csee.hnu.edu.cn。打开网页,待浏览器的状态栏出现“完毕”信息后关闭网页。
步骤 3:停止截获报文,将截获的报文命名为 http-学号保存。

2.TCP连接分析

主要是三次握手过程:
在这里插入图片描述
第一次握手:建立连接时,客户端54020发送SYN包到服务器80,并进入SYN_SEND状态,等待服务器80确认SYN表示同步序号,用来建立连接;
第二次握手:SYN标志位和ACK标志位搭配使用(当连接请求的时候,Seq=0;连接被响应的时候,Seq=0,ACK=1)时是第二次握手。服务器80收到SYN包,必须确认客户54020的SYN,同时自己也发送一个SYN包(即SYN+ACK包),此时服务器80进入SYN_RECV状态;
(注:确认号ACK的数值等于发送方发送序号 +1(即接收方期望的下一个序列号)。
第三次握手:客户端54230收到服务器80的SYN+ACK包,向服务器80发送确认包ACK发送完毕后客户端54230和服务器80进入ESTABLISHED状态,完成三次握手;
还可以看到其中还有一个54231的连接请求,这里判断是为了进行并行连接加快速度。

3.HTTP简单分析

下面抓取湖南大学个人门户的HTTP数据包分析:
在这里插入图片描述
其中一条详细信息:
在这里插入图片描述
可以看到HTTP的报文含有OSI五层模型的所有信息。

  • 请求报文结构:
    在这里插入图片描述

  • 响应报文结构:
    在这里插入图片描述

补充:关于状态码共有41 种,常用的有:200(一切正常),301(网站已转移),400(服务器无法理解请求报文),404(服务器没有锁请求的对象)等。

4.思考题

下面以http://www.163.com/ 为例,分析截获的报文,回答以下几个问题:

1)综合分析截获的报文,查看有几种 HTTP 报文?
在这里插入图片描述
抓包内容如上图所示,共有两种HTTP报文,分别是请求报文与响应报文;
上图中的请求报文的方法为GET、版本号为HTTP/1.1;
响应报文状态为200,版本号为HTTP/1.1且描述为OK

这里我在最开始抓包的时候使用的是http://www.163.com的网址,访问时返回的响应报文为301,已经永久移动,而响应报文中还会有一个新的首部行Location,表示资源现在所处的位置;
在这里插入图片描述
可以发现新的位置URL为https://www.163.com/,不再是HTTP而是HTTPS,主要是为了安全性;其实不仅仅是www.163.com,主流的一些网页包括百度首页www.baidu.com都是这样。

2)在截获的 HTTP 报文中,任选一个 HTTP 请求报文和对应的 HTTP 应答报文,仔细 分析它们的格式
HTTP 请求报文格式:
在这里插入图片描述
HTTP响应报文格式:
在这里插入图片描述
3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用了哪几个端口号?
在这里插入图片描述
很显然,建立了两个连接,客户机的两个端口号分别是51370、51371,其中两个端口口的TCP分别发出了一个GET请求,接受响应报文之后进行连接断开。
而服务器的访问端口为默认80。

4)综合分析截获的报文,理解 HTTP 协议的工作过程
下面以51370端口建立的TCP连接为例:
在这里插入图片描述
在这里插入图片描述

5.实验遇到的问题

1.Wireshark找不到接口
原因:
未安装WinPcap,这个在安装Wireshark时会提示进行安装,但我没有注意;
解决方法:
www.winpcap.org进行下载安装即可;
然后在命令提示符中输入net start npf打开驱动。

2.Wireshark会截获非常多无用报文
原因:
我们的主机一直在静默运行很多应用程序,这些程序有些会进行网络数据的访问等,所以会有很多报文,难以观察
解决方法:
使用Wireshark的过滤器,我直接使用了tcp port http来进行过滤,效果很好。

五、 实验心得与不足

本次实验从实践中体会到了TCP连接的三次握手与四次挥手过程以及HTTP报文的两种格式,对书上的理论知识进行了巩固强化。
尤其在实验的过程中学习到了HTTP与HTTPS协议的不同,在http://www.163.com网站访问的报文中发现学习了一些网站从HTTP到HTTPS的过渡,通过在HTTP响应报文中添加首部行Location记录新的HTTPS网址可以实现跳转。本次实验受益匪浅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值