HNU_计算机网络_实验1(2021级)-应用协议与数据包分析实验(使用Wireshark)

一、实验目的

        通过本实验,熟练掌握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个连接。
  • 端口号:
    1. 客户机的三个端口号为:51266、51267、51268;
    2. 服务器的是熟知端口号: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时,主机通过发送多个数据包来传送这些数据(注意:这些包并未被分片)。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值