• 实验目的

通过分析从本地计算机到远程服务器传输150KB文件(包含《爱丽丝梦游仙境》文本)的TCP段,深入研究TCP的行为。

- 学习TCP如何使用序列号和确认号来提供可靠的数据传输。

- 观察TCP的拥塞控制算法——慢启动和拥塞避免——的实际操作。

- 研究TCP的接收方广告的流量控制机制。

- 简要了解TCP连接的建立过程。

- 调查本地计算机与服务器之间TCP连接的性能(吞吐量和往返时间)。

  • 实验步骤
  1. 捕捉从计算机网络到远程服务器的批量TCP传输

(1)启动 Web 浏览器。在http://gaia.cs.umass.edu/wireshark-labs/alice.txt查看 Alice in Wonderlan的ASCII档案文件。将此文件存储在计算机上的某个位置。

(2)接下来去http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html.你将会看到如下图的网页,使用此表单中的“Browse…”按钮在计算机上输入包含 Alice in Wonderland的文件名(完整路径名)(或手动执行)。这个时候请不要按下“Upload alice.txt fifile”按钮。

(3)启动 Wireshark 并开始数据包捕获 (Capture→ Start),然后在 Wireshark 数据包捕获选项视窗上按OK (我们可以在捕获数据包开始前设置捕获过滤器,以便滤除无用的数据包,减少TCp协议分析的干扰。)(详细操作因Wireshark 版本略有不同)。

(4)返回浏览器,按“Upload alice.txt fifile” 按钮将文件上传到gaia.cs.umass.edu服务器。文件上传后,浏览器窗口中会显示一条简短的祝贺消息。

(5)停止 Wireshark 数据包捕获。

  1. 第一眼看到捕捉的踪迹

首先,在 Wireshark 视窗顶部的显示的过滤器指定窗口中输入“tcp”(小写,无引号,并且不要忘记在输入后按 enter 键!),过滤 Wireshark 视窗中显示的数据包。可以看到SYN讯息的初始三次握手,也可以看到HTTP POST的讯息。

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

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

IP地址:192.168.1.102   TCP端口号:1161

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

 IP地址:128.119.245.12   TCP端口号:80

如果您能够连网使用WireShark创建自己的跟踪包,请回答:

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

客户端IP:10.68.164.208  端口:52253

gaia.cs.umass.edu IP:110.43.89.7  端口:80

  1. TCP基础知识(根据数据包文件 tcp-ethereal-trace-1 )

针对TCP段回答一下问题:

  1. 您的客户端计算机 (源) 用于传输文件t o gaia.cs.umass.edu的IP地址和TCP端口号是什么?gaia.cs.umass.edu接收文件时使用的IP地址和端口号是多少。

客户端IP:192.168.1.102  端口:1161

gaia.cs.umass.edu IP:128.119.245.12 端口:80

  1. 用于启动客户端计算机与gaia.cs.umass.edu之间的TCP连接的TCP SYN段的序列号是多少?段中是什么将段标识为SYN段?

SYN段的序列号:0;绝对序列号为:232129012

在TCP(传输控制协议)段中,是FLAGS字段将段标识为SYN段。

  1. gaia.cs.umass.edu在回复SYN时发送给客户端计算机的SYNACK段的序列号是多少?SYNACK数据段中的确认字段的值是多少?gaia.cs.umass.edu是如何确定这个值的?段中是什么将段标识为SYNACK段?

SYNACK段的序列号:0    绝对序列号:883061785

确定字段的值:1       绝对确定号:232129013

根据SYN段中Next Sequence Number。

FLAGS字段将段标识为SYNACK段。

  1. 包含HTTP POST命令的TCP段的序列号是多少?注意,为了找到POST命令,您需要深入挖掘真实窗口底部的包内容字段,在其数据字段中寻找带有“POST”的段。

序列号为:1

其中http post相关信息包含在[Reassembled PDU in frame: 199]

  1. 请考虑将包含HTTP POST的TCP段作为TCP连接中的第一个段。TCP连接中的前六个段(包括包含HTTPPOST的段)的序列号是什么?每个片段是在什么时候发送的?每个片段的ACK是什么时候收到的?给定每个TCP段的发送时间和收到其确认的时间之间的差异,这六个段中每个段的RTT值是多少?收到每个ACK后,估计RTT值(见第237页)?假设估计的dRTT值等于第一个段所测量的RTT,然后使用第237页的sepatedRTT方程计算。

注意: Wireshark有一个很好的功能,允许您为发送的每个 TCP 区段绘制RTT。 在从客户端发送到gaia.cs.umass.edu服务器的“捕获的数据包列表”窗口中选择一个TCP段。 然后选择:Statistics-> TCP Stream Graph-> Round Trip Time Graph

EstimatedRTT=0.875∗EstimatedRTT+0.125∗SampleRTT

  • 第一段:

EstimatedRTT=0.02746second

  • 第二段:

EstimatedRTT=0.875*0.02746+0.125*0.035557=0.0285second

  • 第三段:

EstimatedRTT=0.875*0.0285+0.125*0.070059=0.0337second

  • 第四段:

EstimatedRTT=0.875*0.0337+0.125*0.114428=0.0438second

  • 第五段:

EstimatedRTT=0.875*0.0438+0.125*0.139894=0.0558second

  • 第六段:

EstimatedRTT=0.875*0.0558+0.125*0.189645=0.0725second

  1. 前六个TCP段的长度是多少?1460
  2. 收到的整个跟踪的最小可用缓冲空间量是多少?缺少接收者缓冲区空间是否限制了发送者?

在gaia.cs.umass.edu为整个跟踪的最小缓冲区空间量(接收器窗口)是5840字节。

该接收器窗口稳步增长,直到最大接收器缓冲器大小达到62780字节。通过检查此跟踪,发送器永远不会因为接收器缓冲区空间不足而受到抑制。

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

没有重传输的段。通过检查跟踪文件中TCP数据段的序列号。在该轨迹的时间序列图(Stevens)中,从源(192.168.1.102)到目的地(128.119.245.12)的所有序列号都随着时间单调递增。如果存在重传数据段,则该重传数据段的序列号应小于其相邻数据段的序列号。

  1. 接收者通常在ACK中承认多少数据?您能否识别接收器选择每其他接收段的情况(参见文本第245页的表3.2)。

通常在ACK中确认1460bit数据。TCP是累计确认的,一般接收方每隔一个接收到的区段才发送确认。

例如:第60号是对第54号和55号数据的确认,所以确认的数据为1460*2=2920bit。

  1. TCP连接的吞吐量(单位时间传输的字节)?解释您是如何计算这个值的。

TCP吞吐量=总数据量/总传输时间。

可以通过第一个TCP数据段的序列号(即,对于第4号数据段为1字节)和最后一个确认确认的序列号(对于第202号数据段,为164091字节)之间的差来计算发送的总数据量。总数据量=164091-1=164090。

则:总传输时间=5.45583-0.026477=5.4294second。

那么tcp连接的吞吐量=164090/5.4294=30222字节/second。

  1. TCP拥塞控制

现在让我们检查从客户端服务器的每单位时间发送的数据量。而不是(繁琐地!)从 Wireshark 窗口中的原始数据计算这些数值,我们将使用 Wireshark 的TCP 图形工具 – 时序图(Stevens) - 来绘制数据。

在 Wireshark 的“捕获数据包列表”窗口中选择一个 TCP 区段。然后选择菜单:Statistics-> TCP Stream Graph-> Time-Sequence-Graph(Stevens)。您应该看到一个类似于下图的图,该图是根据 http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip 中的跟踪数据包 tcp-ethereal-trace-1 中捕获的资料所创建的。(见前面的附注):

这里,每个点代表一个发送的 TCP 区段,绘制区段的序列号与发送的时间。 请注意,堆叠在一起的一组点表示发送方背靠背发送的一系列数据包。

根据在 http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip 中的数据跟踪包tcp-ethereal-trace-1 内容回答以下有关 TCP 区段的问题

  1. 使用时序图(Stevens)绘图工具查看从客户端发送到 gaia.cs.umass.edu 服务器的区段的序列号与时间关系图。您能否确定 TCP 的慢启动阶段的开始和结束位置,以及拥塞避免接管的位置? 评论测量的数据与我们在文本中研究过的TCP的理想化行为不同的方式。

慢启动:TCP窗口增长,第二个TCP段(分组5)发生。发送窗口呈指数型增长。

拥塞避免:

  • 实验收获
  1. 通过实验,深入理解TCP协议的三次握手、数据传输、重传机制以及流量控制和拥塞控制等机制。
  2. 实验中可以观察到每个TCP段(数据包)都被赋予一个序列号,这样接收方就可以对接收到的数据进行排序,并检测重复或丢失的数据包。确认号则用于告知发送方哪些数据已经被成功接收。
  3. 实验中可以观察到TCP的拥塞控制算法,如慢启动和拥塞避免,以及接收窗口流量控制机制。
  4. 本次使用HTTP POST方法而不是GET方法,因为需要把大量的数据从计算机传输到另一台计算机。POST方法不会限制请求体的大小,而GET方法的URL长度有限制。
  5. 实验中可以研究计算机和服务器之间TCP连接的性能,如吞吐量和往返时间(RTT)。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐