Wireshark实验 - TCP

Wireshark实验 - TCP

官方英文文档:Wireshark_TCP_v6.0.pdf

以下内容为笔者翻译:


Wireshark 实验: HTTP v6.0

《计算机网络:自顶向下方法(第6版)》补充材料,J.F. Kurose and K.W. Ross

“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。” ——中国谚语

© 2005-2012, J.F Kurose and K.W. Ross, All Rights Reserved


在本实验中,我们将详细研究著名的 TCP 协议的行为。 我们将通过从您的电脑向远程服务器传输一份 150KB 的文件(一份 Lewis Carrol 的“爱丽丝梦游仙境”文本),并分析 TCP 传输内容的发送和接收过程来实现。 我们将研究 TCP 对序列和确认号的使用,以提供可靠的数据传输;我们将看到 TCP 的拥塞控制算法 – 慢启动和拥塞避免 – 在过程中,我们将看看 TCP 的接收器发送流量控制的机制。 我们还将简要地观察 TCP 连线的设置,我们还会研究计算机和服务器之间 TCP 连线的性能(吞吐量和往返时间)。

1. 捕获从计算机到远程服务器的批量 TCP 传输)

在开始我们对 TCP 的探索之前,我们需要使用 Wireshark 来获取文件从计算机到远程服务器的 TCP 传输的数据包内容。您可以通过访问一个网页,在网页上输入您计算机上存储的文件名称(包含 Alice in Wonderland 的 ASCII 文本),然后使用HTTP POST 方法将文件传输到 Web 服务器(见文中第 2.2.3 节)。我们使用POST 方法而不是 GET 方法,因为我们希望将大量数据从您的计算机传输到另一台计算机。当然,我们将在此期间运行 Wireshark 以获取从您的计算机发送和接收的 TCP 区段的内容

执行以下步骤:

  • 启动Web浏览器在实验网站查看Alice in Wonderland 的 ASCII 档案文件。将此文件存储在计算机上的某个位置

  • 接下来去这里

  • 你将会看到如下图的网页
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RlcfAZbr-1648111080354)(../imgs/TCP/1.png)]

  • 使用此表单中的“选择文件”按钮选择包含 Alice in Wonderland的文件。 这个时候不要按下Upload alice.txt file按钮

  • 启动 Wireshark 并开始数据包捕获 (Capture-> Start),然后在 Wireshark 数据包捕获选项视窗上按 OK (我们不需要在此处选择任何选项)(详细操作因Wireshark 版本略有不同)

  • 返回浏览器,按“Upload alice.txt file”按钮将文件上传到 gaia.cs.umass.edu
    服务器。文件上传后,浏览器窗口中会显示一条简短的祝贺消息。(如下图所示)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGD0XZkG-1648111080355)(../imgs/TCP/2.png)]

  • 停止 Wireshark 数据包捕获。 您的 Wireshark 视窗内容应该类似于下面显示
    的内容。
    (../imgs/TCP/3.png)]

  • 如果您无法在实际的网路上运行 Wireshark,则可以下载在作者的计算机上执行上述步骤时捕获的数据包跟踪文件。当您探索下面的问题时,即使您已经捕获了自己的传输内容并使用它来回答下面的问题,您也可能会发现这份下载的跟踪包很有参考价值。下载链接

2. 跟踪包的初步观察
  • 首先,在 Wireshark 视窗顶部的显示的过滤器指定窗口中输入“tcp”(小写,无引号,并且不要忘记在输入后按 enter 键!),过滤 Wireshark 视窗中显示的数据包。
    ps:
    这里有一个小trick,实际上在我们捕获的时候,还没有点击发送就会捕获到很多别的tcp报文段,这会对我们的观察造成很大的干扰,这个时候就需要筛选,根据上一个DNS实验可以知道,我们可以通过nslookup命令来向DNS服务器请求一个url的ip地址,我们可以从提交页面看到,实际的请求页面的url为 gaia.cs.umass.edu (注意,不应该有http://),然后获取它的ip地址
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eP0MaOAo-1648111080357)(.//../imgs/TCP/4.png)]

    获取到之后我们可以在WireShark中通过ip进行筛选(筛选那些tcp报文段且发送或者接受的ip是128.119.245.12)

  • 您应该看到的是计算机和 gaia.cs.umass.edu 之间的一系列 TCP 和 HTTP 讯息。您应该看到包含 SYN 讯息的初始三次握手。您应该看到 HTTP POST 讯息。根据您使用的 Wireshark 的版本,您可能会看到从您的计算机向 gaia.cs.umass.edu 发送一系列“HTTP Continuation”讯息。 回想一下我们在早期的 HTTP Wireshark 实验室
    中的讨论,这不是 HTTP Continuation 消息 – 这是 Wireshark 指示有多个 TCP 区段用于承载单个 HTTP 讯息的方式。在 Wireshark 的最新版本中,您将在 Wireshark显示的 Info 列中看到“[重新组装的 PDU 的 TCP 段]”,以指示此 TCP 区段包含属于上层协议讯息的数据(在我们的示例中为,HTTP)。您还应该看到从gaia.cs.umass.edu 返回到您的计算机的 TCP ACK 区段。

  • 利用下载的 http://gaia.cs.umass.eduwireshark-labs/wireshark-traces.zip 档案,打开其中的 Wireshark 捕获的数据包文件 tcp-ethereal-trace-1 来回答以下问题(即下载跟踪包并打开 Wireshark 中的跟踪包;见附注 2)。在回答问题时,您应该提交用于回答问题的跟踪内的数据包的列印输出。 加上适当的注释以解释您的答案。 要印出数据包,请使用文件 - >列印,选择仅选定数据包,选择数据包摘要行,然后选择回答问题所需的最小数据包详细信息量。(下载的压缩文件打不开,因此用我自己捕获的分析)

  1. 将文件传输到 gaia.cs.umass.edu 的客户端计算机(源)使用的 IP 地址和 TCP 端口号是什么

100.120.23.92:55167
这里发现其实最开始不应该用dns查询ip的。。。正确的做法应该是根据我们捕获到的报文,按照http协议进行筛选,找到POST报文,然后就可以查看到IP和TCP端口号
(注意下面两个http请求是乱入的~)
在这里插入图片描述

  1. gaia.cs.umass.edu 的 IP 地址是什么?在哪个端口号上发送和接收此连接的 TCP 区段?

128.119.245.12:80
答案在上面的图中就有体现

  1. 用于在客户端计算机和 gaia.cs.umass.edu 之间启动 TCP 连接的 TCP SYN 区段的序列号是什么?将区段标识为 SYN 区段的区段有什么功能?

Seq:3794991032
此时筛选条件应该为
tcp and (ip.dst == 128.119.245.12 or ip.src == 128.119.245.12) 表示仅查看二者间的tcp报文段
筛选后可以看到如下的tcp报文段(感觉第二行的报文段,也就是55168端口向目标的80端口发送tcp连接建立请求有点奇怪,因为根据第一题可以知道,我们发送的端口号使用的是55167,而且从后续的报文交换来看,也并没有55168端口的事,所以猜测是http协议希望并行传输~)
在这里插入图片描述

忽略图中的第二行报文段,从图中可以看到第一行WireShark用方框给我们标出是SYN,点开后可以发现,初始化的序列号(Seq)是3794991032,Seq的功能为防止此前发送的报文段滞留在网络中,影响到下一次的TCP连接(具体的影响方式为:如果我们的TCP报文都从0开始编号,那么假设我第一次的TCP连接某一个报文段的Seq为1500,由于网络问题,滞留在了网络中,等到这次的TCP连接结束后,一段时间后,上述两个主机进行第二次TCP连接时,可能滞留的报文段神奇地被发送到了接受主机,那么他就会把这个报文当作此时发送方发送的报文段,从而产生错误。而随机生成Seq的话,第一次的滞留的报文就算发送给接受主机,也会因为Seq和Ack不匹配而被接受主机拒绝接收~)
在这里插入图片描述

  1. gaia.cs.umass.edu 发送给客户端计算机以回复 SYN 的 SYNACK 区段的序列号是多少?SYNACK 区段中的 Acknowledgment 栏位的值是多少?Gaia.cs.umass.edu 是如何确定此 Acknowledgment 的数值的?在将区段标识为 SYNACK 区段的区段在连线中有什么功能

Seq:600963478
Ack:3794991033(请求报文Seq+1)
功能:告知TCP请求的建立者,已经收到了连接建立请求并允许连接
在这里插入图片描述

上图为SYN ACK报文,是TCP连接建立的第二步,可以看到ACK和SYN标志位都是1

  1. 包含 HTTP POST 命令的 TCP 区段的序列号是多少? 请注意,为了找到
    POST 命令,您需要深入了解 Wireshark 窗口底部的数据包内容⫿段,在其
    DATA 栏位中查找带有“POST”的区段。

Seq:3794991033
双击打开第一个标记为[PSH,ACK]的报文段,可以通过二进制形式查看
在这里插入图片描述

  1. 在跟踪文件中是否有重传的区段?为了回答这个问题,您检查了什么(在跟踪包中)?

点击:统计->TCP流形图->时间序列(Stevens),可以得到下图,可以看到随着时间的增大,序号并不是一直在增大的,有部分重传的序号~
在这里插入图片描述

下面的往返时间,有点抽象
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值