计算机网络实验1 捕获 TCP 数据包

本文详细描述了一个使用Wireshark进行TCP抓包的实验,涉及Wireshark的安装、抓包设置、文件上传过程中的TCP交互,包括SYN/SYNACK报文分析,慢启动和拥塞避免机制,以及与理论知识的对比。
摘要由CSDN通过智能技术生成
实验目的

通过实验熟悉 Wireshark 抓包软件的使用方法,理解 TCP 传输过程,以及慢启动、拥塞避免等相关技术。

实验环境

1操作系统:几乎任意 windows 版本。本实验是在 windows 下实现的。

2、所需软件:wireshark-setup-1.10.2.

实验内容

1windows 环境进行 Wireshark 抓包。

2、在 windows 环境 Wireshark 窗口中查看各种协议下的数据包。

3、在 windows 环境上传文件到服务器,同时观察 TCP 传输过程。

实验步骤
  1. Wireshark 的安装
  2. 捕捉从自己 PC 机到远程服务器的 TCP 传输

(1)登录网站82.157.139.98/login.php

    (2)进入网站的upload作业提交页面

按要求修改文件名,进行提交,先不要着急按“提交作业”按钮

Wireshark 开启数据包捕捉。

开始抓包之前,进入 Wirshark Capture->Options,选用WLAN,去掉“Hide capture info dialog” 前面的“√”,以便在抓包过程中看到数据框

安装好 Wireshark 后,点击 Capture->Start 开始抓包。回到浏览器,按“ 提交作业”按钮来上传文件。一旦文件被上载成功,将会有一个祝贺信息出现。

停止 Wireshark 数据包捕捉。你的 Wireshark 窗口会出现类似下面的样式:

左上角的过滤器(filter)工具栏中输入“ip.dst==82.157.139.98 or ip.src==82.157.139.98”的公网IP后回车,即可初步筛选所需数据

3.查看捕获的跟踪

在Wireshark窗口上方的过滤器(filter)窗口输入上面提到的合适的过滤条件 “and tcp”

1)在这些消息中,看到包含 SYN 消息的初始的三次握手过程。

2)可能会看到从你的计算机发送到82.157.139.98的一个 HTTP POST 消息(需要把

过滤条件“and tcp”改为“and http”)

3)从82.157.139.98返回到你计算机的 TCP ACK 段。

将文件输出并保存

回答以下有关TCP 报文段的问题:

1、你的客户端电脑传送文件到 82.157.139.98的 IP 地址和端口是什么?从82.157.139.98接收文件的 IP 地址和端口是什么?

答:传送文件的ip地址是10.149.1.147,端口是62128

接收文件的ip地址是82.157.139.98,端口是80

2、用来初始化客户端电脑和82.157.139.98 TCP 连接的 TCP SYN 报文段的序号是什么?在报文段中,哪个地方表明这是一个 SYN 报文段?

答:SYN报文段的序号Seq=0,Flags字段中SYN位为1,表明了这是一个SYN报文段。

3、回复 SYN 报文段时,由 82.157.139.98发送的 SYNACK 报文段的序号是什么?在SYNACK 报文段中的 ACKnowledgement 域的值是什么?82.157.139.98是如何确定这个值的?表明这个段是 SYNACK 的标志位或者符号是什么?

答:SYNACK 序号是0;Ack值为1;其等于SYN 报文段中Seq值加1,0+1=1;

标志位是Flags = 0x012,转换为二进制是00010010,对应的SYN和ACK标志位是1

4、包含 HTTP POST 命令的 TCP 段的序号是多少?注意,要找到 POST 命令,你需要在 Wireshark 窗口的底部发掘这个数据包内容域,找到一个在其 DATA 域中有标识POST 的段。

答:包含POST命令的TCP报文段的序号是1

5、仔细思考一下作为 TCP 连接的第一个报文段的包含 HTTP POST 的 TCP 报文段。 TCP 连接(包括包含 HTTP POST 的报文段)的开头6个报文段的序号是多少? 每个报文段都在什么时间发送?每个报文段接收到 ACK 的时间是多少?6个报文段:

答:

序号是19,发送时间是3.79416800

序号是20,发送时间是3.79429600

序号是21,发送时间是3.79429600

序号是22,发送时间是3.79429600

序号是23,发送时间是3.79429600

序号是24,发送时间是3.79429600

ACK:

接收第一个报文段的时间是3.81224900,ack=957表示seq=957之前的数据已经收到,即第一个报文段的数据。

收到第六个的报文段时间是3.81224900,ack=8017,表示seq=8017之前的数据都已收到。第六个报文段的序号是6605,长度是1412,最后一个序号是8016,即第六个报文段及其之前的都已收到。并不是每一个报文段都有对应的ACK,因为有可能1个ACK对之前几个报文段进行回应。

6、开始的 6 个 TCP 报文段的长度各自是多少?

答:第一个:Len = 956,长度 = 956 + 20 = 976

第二个:Len = 1412,长度 = 1412 + 20 = 1432

第三个:Len = 1412,长度 = 1412 + 20 = 1432

第四个:Len = 1412,长度 = 1412 + 20 = 1432

第五个:Len = 1412,长度 = 1412 + 20 = 1432

第六个:Len = 1412,长度 = 1412 + 20 = 1432

7、在整个跟踪过程中,在接收端广告(advertise)的可用缓存空间的最小值是多少? 接收端有没有因缓存空间不足而限制发送端的发送?

答:接收窗口最小是131072,而发送窗口大小一直是512,所以没有限制

8、在跟踪文件中,有重传的报文段么?回答这个问题,你需要检查哪个地方?

答:没有,因为可以看到sequence number 没有重复的。

检查客户机发出报文段的sequence number字段即可,如果有重复的sequence number,则证明发生了相同数据的重传。

9、接收方在一个 ACK 中,通常确认多少数据?你能辨别出这样一种情形吗:即接收方对收到的报文段,每隔一个确认一次?

答:确认三到四个;ack和发送的seq的值隔一个相同,就是每隔一个确认一次。

10、这个 TCP 连接的吞吐量(每单位时间传输的字节数)是多少?解释你是如何计算这个数值的?

答:最后一个报文段序号是759929,时间是3.91238900

第一个报文段的序号是1,时间是3.79416800

吞吐量759929/(3.91238900-3.79416800) =  6428037.319934699

TCP 拥塞控制

用Time-Sequence-Graph(Stevens)中的画图工具观察从客户端发送到82.157.139.98服务器的TCP段的序列号-时间图。你怎样判断TCP的慢启动(slowstart)开始和结束?拥塞避免在什么地方开始起作用的?注意在实际的跟踪中,不是所有的都像教材那样简单漂亮的形式。同时还要注意在Time-Sequence-Graph(Stevens)中纵坐标所代表的变量与教材中是否不同。

答:慢启动主要特点是指数增长,每次TCP接收窗口收到确认时都会增长,增加的大小就是已确认段的数目。

图中的纵坐标是seq序号,是累加起来的值,所以在一个时间对应的是发送量的前缀和,图中可以看到是1,3,7,15,31,56 …… ,对应的窗口是1,2,4,8,16,25,可以看到前5个时间段是慢启动,到了第六个也就是0.12s的时候增加变慢了,是拥塞避免起作用了。

纵坐标代表的变量与书中不同,这里是发送出去的报文段的seq序号,书中是拥塞窗口的大小。

总结这次实验中所得到的 TCP 数据与我们在教材中所学的理想情况有什么不同?

实验中没有发生网络拥塞,而且接收窗口大小一直大于发送窗口大小,课本中出现的快恢复快重传等在现实中同时出现的概率很小,因为现在的网络带宽很大,书本上是为了教学才把所有情况都画在一张图中。

发送数量较少,而且在局域网内流量并没有很大,所以数据传递一次就成功了,没有发生快重传等情况。

每一个ack确认三到四个,不是教材上的一个ack确认一个。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值