2024年6月10日发(作者:)

Wireshark抓包分析报告

1 / 8

目录

1. 使用wireshark获取完整的UDP报文 .............................................. 3

2. 使用wireshark抓取TCP报文 ........................................................... 3

2.1 建立TCP连接的三次握手 ......................................................... 3

2.1.1 TCP请求报文的抓取 .......................................................... 4

2.1.2 TCP连接允许报文的抓取 .................................................. 5

2.1.3 客户机确认连接报文的抓取 ............................................ 6

2.2 使用TCP连接传送数据 ............................................................. 6

2.3 关闭TCP连接 ............................................................................ 7

3. 实验心得及总结 ................................................................................ 8

2 / 8

1. 使用wireshark获取完整的UDP报文

打开wireshark,设置监听网卡后,使用google chrome 浏览器访问我腾讯微

博的首页

/?lv=1#!/list/qqfriends/5/?pgv_ref=

?ptlang=2052&pgv_ref=,抓得的UDP报文如图1

所示。

图1 UDP报文

分析以上的报文内容,UDP作为一种面向无连接服务的运输协议,其报文格

式相当简单。第一行中,Source port:64318是源端口号。第二行中,Destination

port:53是目的端口号。第三行中,Length:34表示UDP报文段的长度为34字

节。第四行中,Checksum之后的数表示检验和。这里0x表示计算机中16进制

数的开始符,其后的4f0e表示16进制表示的检验和,把它们换成二进制表示为:

0100 1111 0000 1110.

从wireshark的抓包数据看出,我抓到的UDP协议多数被应用层的DNS协议

应用。当一台主机中的DNS应用程序想要进行一次查询时,它构成了一个DNS

查询报文并将其交给UDP。UDP无须执行任何实体握手过程,主机端的UDP为

此报文添加首部字段,并将其发出。

2. 使用wireshark抓取TCP报文

2.1 建立TCP连接的三次握手

建立TCP连接需要经历三次握手,以保证数据的可靠传输,同样访问我的腾

讯微博主页,使用wireshark抓取的TCP报文,可以得到如图2所示的客户机和

服务器的三次握手的过程。

图2 建立TCP连接的三次握手

3 / 8

2.1.1 TCP请求报文的抓取

图2中所示的TCP请求连接报文如图3所示。

图3 TCP请求连接报文

分析图3中的请求报文数据可以发现:

第一行,source port指示源端口号为51329

第二行,destination port指示目的端口号为80,这也正是http客户机进程向

服务器发起TCP连接的端口号。

第三行,sequence number指示报文的序号为0.

第四行, header length指示报文的长度为28个字节。

第五行表示标志字段,其中有保留未用区,紧急指针,push指针等。标志字

段中SYN值为1,表示该报文是一个客户机请求连接的报文。

第六行,window size指示接受窗口的大小为8192个字节。

第七行,checksum指示校验和为0x8591,同样用16进制表示。

第八行是可选字段。一般而言,TCP报文的可选字段为空,所以报头长度为

20个字节,这里多出了8个字节,用来表示最大报文段长等内容。具体分析其

4 / 8

中内容,kind或者type表示options选项的种类。当kind/type为1时,表示NOP

——no operation,即无操作。当kind/type为2时,表示Maximum segment size,

最大报文段长。这里,MSS为1460个字节。当kind/type为4时,表示SACK

permitted,它表示一旦连接建立,发送的TCP请求报文的客户机期待接收到服务

器的SACK选项。整个可选字段的长度为8个字节,其中MSS占了4个字节,NOP

占了2个字节,SACK permitted占了2个字节。

仔细分析报文,我们不难发现,TCP请求连接报文中没有ack确认号,同时

报文中也没有包含应用层数据。

2.1.2 TCP连接允许报文的抓取

图2中所示的TCP允许连接报文如图4所示。分析图4中的报文信息如下:

图4 TCP连接允许报文

前两行分别表示了源端口号和目的端口号为80和51329.

第三行,sequence number指示服务器返回的报文的序号为0.

第四行,acknowledgment number指示服务器返回报文的确认号为1.

第五行表示报文长度为28字节。

第六行为标志字段,与TCP请求连接报文的标志字段不同的是,这里的ack

值为1,表示服务器成功接收请求连接报文。

5 / 8

第七行至第第九行和TCP请求连接报文的意义相同,这里不再赘述。

分析连接允许报文,发现,报文的最后出现了一个[SEQ/ACK analysis]字段。

这回应了客户机的请求连接申请,并指示往返时延RTT为0.005262秒。

2.1.3 客户机确认连接报文的抓取

图2中所示的客户机确认连接报文如图5所示。由于报文部分内容和上文的

报文内容那个意义相同,这里不再赘述。分析图5中的部分报文信息如下:

图5 客户机确认连接报文

第五行,acknowledgment number值为1,表示客户机成功接收到服务器发

来的连接允许响应报文。

第六行表示报头的长度为20个字节,这里不再有选项内容。

最后,客户机发出的报文中同样有[SEQ/ACK analysis]字段。它说明了此次报

文的意义是对服务器发来的报文的确认,并指示往返时延RTT为0.00011秒。

仔细分析客户机的确认连接报文,可以发现,报文中没有数据内容。至此,

建立TCP连接的三次握手已经完成,客户机和服务器之间可以相互交换数据了。

2.2 使用TCP连接传送数据

在三次连接建立完成过后,客户机便可以利用建立好的TCP连接向服务器发

送数据了。通过wireshark抓包发现,此次试验中,客户机在成功建立TCP连接

后,马上向服务器发送了一个http的GET请求报文。抓包结果如图6所示。

6 / 8

图6 建立在TCP连接上的http请求报文

对图6中的部分报文内容分析如下:

报文内容指示源端口号为51329,目的端口号为80,序号为1,期待接收的

下一个序号为1.同时发送报文使用了PUSH功能,表示接收方应立即将数据交给

上层。

在传输层之下,客户机发送了一个http请求报文。具体内容意义,这里不再

赘述。

2.3 关闭TCP连接

关闭一个TCP连接需要经历客户机和服务器间的四次通信。使用google

chrome浏览器访问/s/blog_,并使

用wireshark抓包,其中一个TCP连接的关闭过程如图7所示。

7 / 8

图7 TCP连接的关闭

分析图7中的TCP报文,首先由客户机192.168.1.102向成都电信服务器

221.236.31.234发送一个特殊的TCP报文字段。该报文字段的首部中,FIN比特

被置为1,表示请求关闭与服务器间的连接。ACK=1表示对上一次连接的确认,

期待服务器返回的下一字节的序号为1.

然后,服务器在收到请求关闭连接的报文之后,向客户机发送一个确认报文。

可以看到报文第一个字节的序号为1,ACK=2表示服务器期待接收的下一字节的

序号为2.

接着,服务器向客户机发送终止报文段,其FIN比特被置为=2表示服

务器期待接收的下一个字节的序号为2.

最后,客户机向服务器的终止报文进行确认,返回的报文第一个字节的序号

为2.并设置定时器,在定时器超时后,关闭连接。

可以看到,整个TCP连接关闭过程,客户机和服务器之间的通信完全符合TCP

报文传输的格式规范。

3. 实验心得及总结

在此次wireshark抓包实验中,我更加深刻的理解了UDP和TCP协议的报文

格式,传输规范和功能作用。UDP报文结构相当简单,它可以使应用层更好地控

制要发送的数据和发送时间,而且无需建立连接。报文的简单也降低了分组首部

的开销。TCP报文格式相对复杂,它需要建立连接。可以很有效的实现数据的可

靠传输,连接管理、拥塞管理和流量控制等功能。

在抓得的网络协议包中,我发现UDP协议大部分被DNS协议使用,TCP协议

大部分被HTTP和FTP协议使用。

流水线机制无处不在。事实上,分析wireshark抓得的我访问一个网站的网

络协议包,可以看到客户机几乎每次都向服务器发出许多TCP连接请求,由于网

络时延,服务器也会在一个时间段内集中返回确认报文内容。由于访问一个网页

要建立很多TCP连接,所以在关闭连接时,客户机也使用了流水线机制。这更加

充分的利用了计算机资源和网络资源,提高了响应速度。

8 / 8