更好的阅读体验
Lab5:TCP
在本实验中,我们将详细研究著名的 TCP 协议的行为。 我们将通过从您的电脑向远程服务器传输一份 150KB 的文件(一份 Lewis Carrol 的“爱丽丝梦游仙境”文本),并分析 TCP 传输内容的发送和接收过程来实现。 我们将研究 TCP 对序列和确认号的使用,以提供可靠的数据传输;我们将看到 TCP 的拥塞控制算法 – 慢启动和拥塞避免 – 在过程中,我们将看看 TCP 的接收器发送流量控制的机制。 我们还将简要地观察 TCP 连线的设置,我们还会研究计算机和服务器之间 TCP 连线的性能(吞吐量和往返时间)。
在开始本实验之前,您应该先查看课本中的第 3.5 和 3.7 节。
1. Capturing a bulk TCP transfer from your computer to a remote server (捕获从计算机到远程服务器的批量 TCP 传输)
在开始我们对 TCP 的探索之前,我们需要使用 Wireshark 来获取文件从计算机到远程服务器的 TCP 传输的数据包内容。您可以通过访问一个网页,在网页上输入您计算机上⬀储的文件名称(包含 Alice in Wonderland 的 ASCII 文本),然后使用HTTP POST 方法将文件传输到 Web 服务器(见文中第 2.2.3 节)。我们使用POST 方法而不是 GET 方法,因为我们希望将大量数据从您的计算机传输到另一台计算机。当然,我们将在此期间运行 Wireshark 以获取从您的计算机发送和接收的 TCP 区段的内容。
执行以下步骤:
-
启动 Web 浏览器。 在 http://gaia.cs.umass.edu/wireshark-labs/alice.txt 查看Alice in Wonderland 的 ASCII 档案文件。 将此文件⬀储在计算机上的某个位置。
-
接下来去 http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html.
-
你将会看到如下图的网页

-
使用此表单中的“Browse…”按钮在计算机上输入包含 Alice in Wonderland 的文件名(完整路径名)(或手动执行)。这个时候请不要按下“Upload alice.txt file”按钮。
-
启动 Wireshark 并开始数据包捕获 (Capture-> Start),然后在 Wireshark 数据包捕获选项视窗上按 OK (我们不需要在此处选择任何选项)(详细操作因Wireshark 版本略有不同)。
-
返回浏览器,按“Upload alice.txt file”按钮将文件上传到 gaia.cs.umass.edu服务器。文件上传后,浏览器窗口中会显示一条简短的祝贺消息。
-
停止 Wireshark 数据包捕获。 您的 Wireshark 视窗内容应该类似于下面显示的内容。

-
如果您无法在实际的网路上运行 Wireshark,则可以下载在作者的计算机上执行上述步骤时捕获的数据包跟踪文件。当您探索下面的问题时,即使您已经捕获了自己的传输内容并使用它来回答下面的问题,您也可能会发现这份下载的跟踪包很有参考价值。
2. A first look at the captured trace (跟蹤包的初步觀察)
在详细分析 TCP 连接的行为之前,让我们先概观看一下跟踪包的内容。
- 首先,在 Wireshark 视窗顶部的显示的过滤器指定窗口中输入“tcp”(小写,无引号,并且不要忘记在输入后按 enter 键!),过滤 Wireshark 视窗中显示的数据包。
您应该看到的是计算机和 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.edu/wireshark-labs/wireshark-traces.zip 档案,打开其中的 Wireshark 捕获的数据包文件 tcp-ethereal-trace-1 来回答以下问题(即下载跟踪包并打开 Wireshark 中的跟踪包;见附注 2)。在回答问题时,您应该提交用于回答问题的跟踪内的数据包的列印输出。 加上适当的注释以解释您的答案。 要印出数据包,请使用文件 - >列印,选择仅选定数据包,选择数据包摘要行,然后选择回答问题所需的最小数据包详细信息量。
- 将文件传输到 gaia.cs.umass.edu 的客户端计算机(源)使用的 IP 地址和TCP 端口号是什么? 要回答这个问题,最简单的方法是使用“所选数据包标头的详细信息”视窗,选择 HTTP 讯息并探索用于携带此 HTTP 讯息的TCP 数据包的详细信息(如果你不确定是哪一个 Wireshark 视窗。请参阅“Getting Started with Wireshark”实验中的图 2 )
- 分析作者提供的抓包结果
- 作者 IP:192.168.1.102,TCP 发送端口 1161

- gaia.cs.umass.edu 的 IP 地址是什么? 在哪个端口号上发送和接收此连接的TCP 区段?
- 接收 IP:128.119.245.12,TCP 接受端口 80
如果您能够连网并使用 Wireshark 创建自己的跟踪包,请回答以下问题:
-
客户端计算机(源)将文件传输到 gaia.cs.umass.edu 所使用的 IP 地址和TCP 端口号是多少?
略
由于本实验是关于 TCP 而不是 HTTP,让我们更改 Wireshark 的“捕获数据包列表”视窗,以便显示有关包含 HTTP 讯息的 TCP 区段的信息,而不是 HTTP 讯息。 要让 Wireshark 执行此操作,请选择 Analyze-> Enabled Protocols。 然后取消勾选 HTTP 框,并选择确定。 您现在应该看到一个 Wireshark 窗口,如下所示:

这就是我们正在寻找的 – 在您的计算机和 gaia.cs.umass.edu 之间发送的一系列 TCP区段。我们将使用您捕获的数据包跟踪(和/或 http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces.zip 中的数据包跟踪 tcp-ethereal-trace-1:请参阅前面的脚注 )
在本实验的其余部分研究 TCP 行为。
3. TCP Basics (TCP 基础)
回答下列关于 TCP 区段的问题:
-
用于在客户端计算机和 gaia.cs.umass.edu 之间启动 TCP 连接的 TCP SYN 区段的序列号是什么? 将区段标识为 SYN 区段的区段有什么功能?
- SYN相对序列号为 0, 绝对序列号为 232129012

- 根据三次握手,客户端应该发送 SYN 请求请求建立连接,我找到发送的第一个请求并且发现客户端(我的电脑)将 SYN 标志标 0 用来请求建立连接。 S e q u e n c e n u m b e r = 232129012 Sequence \ number =232129012 Sequence number=232129012 这是个随机值,这一步也是三次握手的第一步

-
gaia.cs.umass.edu 发送给客户端计算机以回复 SYN 的 SYNACK 区段的序列号是多少? SYNACK 区段中的 Acknowledgment 栏位的值是多少?Gaia.cs.umass.edu 是如何确定此 Acknowledgment 的数值的? 在将区段标识为 SYNACK 区段的区段在连线中有什么功能?
- SYN 为 0
- A c k n o w l e d g m e n t = 1 ( 232129013 ) Acknowledgment \ = 1\ (232129013) Acknowledgment =1 (232129013)
- A c k n o w l e d g m e n t Acknowledgment Acknowledgment 为 客户端的 S e q u e n c e N u m b e r ( 232129012 ) + 1 Sequence Number \ (232129012) + 1 Sequence

本文通过实验详细研究TCP协议,涉及序列号、确认号、三次握手、慢启动和拥塞避免算法,以及流量控制机制。通过Wireshark观察文件从本地到服务器的传输过程,分析吞吐量、往返时间和TCP连接性能。
最低0.47元/天 解锁文章

5万+





