计算机网络实验三:TCP

(写题截图的时候注意看清端口号,血泪的教训-_-)

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

启动您的网络浏览器。 前往 http://gaia.cs.umass.edu/wireshark-labs/alice.txt 并检索《爱丽丝梦游仙境》的ASCII副本。 将此存储为您计算机上的.txt文件。

接下来前往 Upload page for TCP Wireshark Lab

您应该会看到一个类似于下图的屏幕。

图1

使用此表单中的浏览按钮找到您刚刚创建的包含爱丽丝梦游仙境的计算机文件。 不要立即按“上传alice.txt文件”按钮。

现在启动Wireshark并开始捕获数据包(如果您需要复习如何执行此操作,请参阅之前的Wireshark实验室)。

返回您的浏览器,按“上传alice.txt文件”按钮将文件上传到gaia.cs.umass.edu服务器。 文件上传后,您的浏览器窗口将显示一条简短的祝贺信息,如图

图2

停止Wireshark数据包捕获。 你的Wireshark窗口应该看起来与图3中显示的窗口类似

图3

2. 捕获跟踪的初步查看

在详细分析TCP连接的行为之前,让我们先从高层次上查看跟踪。

让我们从查看上传alice.txt文件到gaia.cs.umass.edu的HTTP POST消息开始。 在你的Wireshark跟踪中找到该文件,并展开HTTP消息,这样我们可以更仔细地查看HTTP POST消息。你的Wireshark屏幕应该看起来像图3。

这个跟踪文件可以用来回答这个Wireshark实验室的问题,而无需自己实际捕获数据包。这个跟踪是使用Wireshark在作者之一的计算机上运行时制作的,同时执行本Wireshark实验室中指示的步骤。下载跟踪文件后,你可以将其加载到Wireshark中,并使用文件下拉菜单查看跟踪,选择打开,然后选择跟踪文件名

这里有几点需要注意:

你的应用层HTTP POST消息的主体包含了alice.txt文件的内容,这是一个大于152K字节的大文件。 好吧 - 它不是那么大,但对于这一个HTTP POST消息来说太大了,无法仅用一个TCP段来包含!

实际上,如图3中Wireshark窗口所示,我们看到HTTP POST消息被分散在107个TCP段中。 这在图3中红色箭头所指的位置显示 [旁注:Wireshark没有这样的红色箭头;我们添加到图中以便帮助J]。 如果你更仔细地看,你还可以看到Wireshark也在非常帮助你,告诉你包含POST消息开始的第一个TCP段是特定示例中的追踪的第142个包,在图3中,这是追踪tcp-wireshark-trace1-1 在脚注2中提到的。包含POST消息的第二个TCP段在追踪中是第143个包,依此类推。

现在,让我们通过查看一些TCP段来“动手实践”

首先,通过在Wireshark窗口顶部的显示过滤器规范窗口中输入“tcp”(小写,不带引号,并且输入后不要忘记按回车!)来过滤显示的数据包。 你的Wireshark显示应该看起来像图4。 在图4中,我们注意到了设置了SYN位的TCP段 - 这是三次握手中的第一个TCP消息,它建立了到gaia.cs.umass.edu的TCP连接,该连接最终将传送HTTP POST消息和alice.txt文件。我们还注意到了SYNACK段(TCP三次握手的第二步),以及携带POST消息和alice.txt文件开始部分的TCP段(如上所述的数据包#4)。当然,如果你正在取自己的追踪文件,数据包编号会有所不同,但你应该看到与图3和图4中显示的类似行为。

图4

1传输alice.txt文件到gaia.cs.umass.edu的客户端计算机(源)使用的IP地址和TCP端口号是什么? 要回答这个问题,最简单的方法可能是选择一个HTTP消息并探索用于传输此HTTP消息的TCP数据包的详细信息,使用“选定的数据包头窗口的详细信息”

 由图(红色方框)可知,客户端ip地址:10.69.208.83,TCP端口:50053

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

由图(蓝色方框)可知,ip地址:128.119.245.12, 接收端口号:80

3. TCP基础

3 用于启动客户端计算机和gaia.cs.umass.edu之间的TCP连接的TCP SYN段的序列号是多少? (注意:这是TCP段本身携带的“原始”序列号;它不是Wireshark窗口中“No.”列的包号。记住,在TCP或UDP中没有所谓的“包号”;正如你所知,TCP中有序列号,这就是我们在这里追求的。同时注意,这不是相对于本TCP会话的起始序列号的相对序列号。)在这个TCP段中,是什么标识了该段为SYN段? 在此会话中,TCP接收方能够使用选择性确认吗(允许TCP功能更像是一个“选择性重复”接收器,见文本中的3.4.5节)?

序列号是2662384658

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

4 gaia.cs.umass.edu回复SYN时发送的SYNACK段的序列号是多少? 是段中的哪一部分将该段标识为SYNACK段? SYNACK段中的确认字段的值是多少? gaia.cs.umass.edu是如何确定那个值的?

Seq:398242010

ACK:2662384659

功能:告知TCP请求的建立者,已经收到了连接建立请求并允许连接

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

5 包含HTTP POST命令头部的TCP段的序列号是多少? 请注意,为了找到POST消息头部,你需要深入Wireshark窗口底部的数据包内容字段,寻找其DATA字段中包含ASCII文本“POST”的段。这个TCP段的有效载荷(数据)字段中包含多少字节的数据?传输的文件alice.txt中的所有数据都装入了这一个段中吗?

Seq:2662384659

双击打开第一个标记为[PSH,ACK]的报文段,可以通过二进制形式查看

这个TCP段的有效载荷(数据)字段中包含707字节的数据,从图中

也可以用下方的蓝色区域的最后一个字节减去蓝色区域的第一个字节

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值