HNU_计算机网络_实验1(2021级)-应用协议与数据包分析实验(使用Wireshark)
HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务。(1)HTTP 的工作原理HTTP 是一个面向事务的C/S协议。使用TCP 作为底层传输协议,是无状态的,每个事务都是独立地进行处理。此外,客户可以使用多个端口和和服务器(80 端口)之间建立多个连接。(2)HTTP 报文格式HTTP有两类报文:从客户到服务器的请求报文和从服务器到客户
一、实验目的
通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。
二、实验内容
1.HTTP 协议简介
HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务。
(1)HTTP 的工作原理
HTTP 是一个面向事务的C/S协议。使用TCP 作为底层传输协议,是无状态的,每个事务都是独立地进行处理。此外,客户可以使用多个端口和和服务器(80 端口)之间建立多个连接。
(2)HTTP 报文格式
HTTP有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。

图1.2 和图1.3显示了捕获的HTTP 请求和响应报文:

图1.2 HTTP 请求报文示例

图1.3 HTTP 响应报文示例
2.实验环境与说明
(1)实验目的
在PC 机上访问Web 页面,截获报文,分析HTTP 协议的报文格式和HTTP 协议的工作过程(2
(2)实验设备与连接
本地实验室环境,无须设备连接;
注意:请通过访问可以连接的WWW 站点或使用IIS 建立本地WWW 服务器来进行实验。
(3)实验分组
每四名同学为一组,每人一台计算机独立完成实验
三、实验步骤
1.截获报文
(1)在PC机上运行Wireshark,开始截获报文
打开wireshark主页面后, 打开WLAN接口,此时wireshark开始抓包。

(2)从浏览器上访问Web 界面
打开Wireshark开始截获报文,从浏览器访问:http://hdjw.hnu.edu.cn/Njw2017/index.html#/student(湖南大学教务系统)
在Wireshark中截获了包括TCP,DNS,HTTP等各种协议的报文,可在截取报文的上方菜单栏选择HTTP协议进行过滤:

(3)将截获的报文命名为http-学号保存
2.报文分析
(1)问题1-2种HTTP报文
综合分析截获的报文,查看有几种HTTP 报文?
有两种HTTP 报文,分别为请求报文和应答报文:
- 请求报文:下图第1行为从客户端发往服务器的请求报文,其最左边箭头为向左表示请求报文。
其中Source的192.168.185.68 是客户端的ip,Destination的202.197.99.16是服务器的ip
- 响应报文:下图第2行为服务器发往客户端的响应报文。
其中Source的202.197.99.16是服务器的ip,Destination的192.168.185.68是客户端的ip

(2)问题2-HTTP报文格式
在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,填写表1.1 和表1.2。
- HTTP 请求报文:

表1.1 HTTP 请求报文格式
|
方 法 |
GET |
版 本 |
HTTP1.1 |
|
URL |
/Njw2017/index.html |
||
|
首部字段名 |
字段值 |
字段所表达的信息 |
|
|
HOST |
hdjw.hnu.edu.cn |
接收请求的主机名 |
|
|
Connection |
keep-alive |
表示保持连接 |
|
|
Upgrade-Insecure-Requests |
1 |
表示浏览器请求将当前的非安全(HTTP)请求升级为安全(HTTPS)请求,以增强安全性 |
|
|
User-Agent |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46 |
表明用户代理,即可用的浏览器类型,此处使用的是Edge浏览器 |
|
|
Accept |
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 |
描述接受响应的数据的数据类型。其中q表示相对质量因子,指示接受数据类型的优先级 |
|
|
Accept-Encoding |
gzip, deflate |
表示客户端可处理的压缩编码 |
|
|
Accept-Language |
zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 |
表示接收的语言类型 |
|
|
Cookie |
UM_distinctid=18885c6bd5b8f6-02ca2c23dab8e8-7b515473-1bcab9-18885c6bd5c1d91; qqmail_alias=duanfuzhao@hnu.edu.cn; sdp_app_session-80=355546de2560fc354a8672e8d135fd5661bd85522159e865cf4a098dbc21c1b209bd5a25af3287f534afa1 |
Cookie值,用户标识 |
|
- HTTP 应答报文:

表1.2 HTTP 应答报文格式
|
版本 |
HTTP1.1 |
状态码 |
200 |
|
短语 |
OK |
||
|
首部字段名 |
字段值 |
字段所表达的信息 |
|
|
Server |
Sangine |
表示服务器应用程序 |
|
|
Date |
Mon, 06 Nov 2023 09:09:02 GMT |
表示响应生成的时间 |
|
|
Content-Type |
application/javascript; charset=utf-8 |
表示响应主体的内容类型 |
|
|
Transfer-Encoding |
chunked |
表明响应的传输编码方式(chunked-分块) |
|
|
Connection |
keep-alive |
表示持续建立连接 |
|
|
Expires |
Thu, 01 Jan 1970 00:00:01 GMT |
表示响应的过期时间 |
|
|
Cache-Control |
no-cache |
表示不缓存此响应 |
|
|
Content-Encoding |
gzip |
表示响应主体的内容编码方式 |
|
(3)问题3-连接、端口
分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用了哪几个端口号?
查看所有报文的源端口与目的端口,
- 客户机与服务器共建立了3个连接。
- 端口号:
- 客户机的三个端口号为:51266、51267、51268;
- 服务器的是熟知端口号:80。
![]()
(4)问题4-HTTP协议工作过程
综合分析截获的报文,将结果填入表1.3 中。
表1.3 HTTP协议工作过程
|
HTTP客户机端口号 |
HTTP服务器端口号 |
所包括的报文号 |
步骤说明 |
|
51268 |
80 |
10 |
TCP连接请求报文段 |
|
51268 |
80 |
13 |
TCP连接请求确认报文段 |
|
51268 |
80 |
14 |
普通的TCP确认报文段 |
|
51267 |
80 |
34 |
TCP连接释放报文段【80>51267】 |
|
51267 |
80 |
35 |
TCP确认报文段 |
|
51267 |
80 |
36 |
TCP连接释放报文段【51267->80】 |
|
51267 |
80 |
38 |
TCP确认报文段 |
|
51267 |
80 |
21 |
HTTP请求报文 |
|
51267 |
80 |
33 |
HTTP响应报文 |
通过浏览器访问一个网页时,浏览器和服务器的工作过程如下:
① 浏览器分析待访问页面的URL,并向本地DNS 服务器请求IP 。
② DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器。
③ 浏览器与HTTP 服务器通过三次握手建立TCP 连接。
④ 浏览器向HTTP 服务器发出请求报文 (含GET 信息),请求访问服务器的指定页面。
⑤ 服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览器会打开多个端口,与服务器建立多个连接。
⑥ 通过四次挥手释放TCP 连接。
⑦ 浏览器收到页面并显示给用户。
①TCP连接请求-三报文握手
1)TCP连接请求报文段
第一次握手:客户端发送SYN(标志位,表示请求建立连接)到服务器,并进入SYN_SENT状态。
Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据。
Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据。

2)TCP连接请求确认报文段
第二次握手:服务器收到请求后,回送SYN+ACK信令到客户端,此时服务器进入SYN_RECV状态。
Seq = 0 :初始建立值为0,表示当前还没有发送数据,
Ack = 1 : 表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。

3)普通的TCP确认报文段
第三次握手:主客户端收到SYN+ACK包,向服务器发送确认ACK包,完成三次握手。
ACK :标志位,表示已经收到记录。
Seq = 1 :表示当前已经发送1个数据。

②TCP连接释放-四报文挥手

1)TCP连接释放报文段【80>51267】
第一次挥手:发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接。

2)TCP确认报文段
第二次挥手:收到FIN后,知道不会再有数据从客户端传来,发送ACK进行确认

3)TCP连接释放报文段【51267->80】
第三次挥手:服务端发送[FIN+ACK]给对方,表示自己没有数据要发送了,然后直接断开TCP会话的连接,释放相应的资源。

4)TCP确认报文段
第四次挥手:客户端收到了服务端的FIN信令后,发送ACK确认消息。断开了到服务端的TCP连接,释放所有资源。当服务端收到客户端的ACK回应后,会进入CLOSE状态,并关闭本端的会话接口,释放相应资源。

③HTTP请求、响应报文


四、实验总结
通过这次实验学习到了很多的知识点。首先学会了使用wireshark来截取各种网络数据包,并可以对数据包详细信息进行一定分析。
同时对HTTP协议有了更深一层次的理解,尤其体会到了TCP建立的三次握手、取消的四次挥手的过程。
另外,在与同学交流中还遇到了下面的问题:
几个报文的ACK序号都一样,并且这些报文的Sequence Number都不一样,并且后一个Sequence Number为前一个Sequence Number加上前一个报文大小再加上1。

经查阅资料,TCP segment of a reassembled PDU:主机响应一个查询或者命令时,如果要回应很多数据(信息),而这些数据超出了TCP的最大MSS时,主机通过发送多个数据包来传送这些数据(注意:这些包并未被分片)。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)