实验一 捕获 TCP 数据包
1你的客户端电脑传送文件到 192.168.1.70 的 IP 地址和端口是什么?从192.168.1.70 接收文件的 IP 地址和端口是什么?
你的客户端电脑传送文件:192.18.43.150 8003
从192.18.43.150 接收文件:110.42.197.24 52615
2用来初始化客户端电脑和 192.168.1.70的 TCP连接的TCP SYN 报文段的序号是什么?在报文段中,哪个地方表明这是一个SYN报文段?
序号是:Seq=0
可见初始化这个报文段的序号是0,Flags字段中SYN位为1,表明了这是一个SYN报文段。
“21”,“4.287052000”,“192.168.43.150”,“110.42.197.24”,“TCP”,“66”,“52615 > mcreport [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1”
3回复 SYN 报文段时,由 192.168.1.70 发送的SYNACK报文段的序号是什
么?在SYNACK 报文段中的 ACKnowledgement 域的值是什么?192.168.1.70 是如何确定这个值的?表明这个段是SYNACK的标志位或者符号是什么?
SYNACK 序号是0,ACK 值为1,其等于SYN 报文段中Seq值加1,标志位是Flags = 0x12。
“24”,“4.323871000”,“110.42.197.24”,“192.168.43.150”,“TCP”,“66”,“mcreport > 52615 [SYN, ACK] Seq=0 Ack=1 Win=64240 Len=0 MSS=1360 SACK_PERM=1 WS=128”
4包含 HTTP POST 命令的 TCP 段的序号是多少?注意,要找到 POST 命令,你需要在 Wireshark 窗口的底部发掘这个数据包内容域,找到一个在其 DATA 域中有标识POST 的段。
包含POST命令的TCP报文段的序号是1
5仔细思考一下作为 TCP 连接的第一个报文段的包含 HTTP POST 的 TCP 报文段。TCP 连接(包括包含 HTTP POST 的报文段)的开头 6 个报文段的序号是多少?每个报文段都在什么时间发送?每个报文段接收到 ACK 的时间是多少?
六个是:
每个:TCP segment
6开始的 6 个 TCP 报文段的长度各自是多少?
第一个
Len=951 长度为Len+20=971
第二个
Len=12240 长度为Len+20=12260
第三个
Len=1360 长度为Len+20=1380
第四个
Len=5440 长度为Len+20=5460
第五个
Len=2720 长度为Len+20=2740
第六个
Len=2720 长度为Len+20=2740
7在整个跟踪过程中,在接收端广告(advertise)的可用缓存空间的最小值是多少?接收端有没有因缓存空间不足而限制发送端的发送?
可以看出,接收窗口大小最小是66560,而发送窗口大小一直是260,所以没有限制。
8在跟踪文件中,有重传的报文段么?回答这个问题,你需要检查哪个地方?
有。
检查客户机发出报文段的sequence number字段即可,如果有重复的sequence number,则证明发生了相同数据的重传。
9接收方在一个 ACK 中,通常确认多少数据?你能辨别出这样一种情形吗:即接收方对收到的报文段,每隔一个确认一次?
接收方在一个ACK 中通常确认1 -2个报文段数据。利用Flow Graph 功能,查看相应的发送和ack情况,其中一部分统计如下:可以看出在这次跟踪过程中通常是每个ACK确认一个报文段。
10这个 TCP 连接的吞吐量(每单位时间传输的字节数)是多少?解释你是如何计算这个数值的?
在上传整个文件的过层中,第一个报文段的序号是1,时间是4.287683000s,最后一个报文段的序号是52597,时间是8.392043000s,这个过程的平均吞吐量为:
52597/(8.392043000-4.287683000)=12814.90923Bps
第一个报文段:
11 TCP 拥塞控制
用Time-Sequence-Graph(Stevens)中的画图工具观察从客户端发送到
192.168.1.70 服务器的TCP段的序列号-时间图。你怎样判断TCP的慢启动(slowstart)开始和结束?拥塞避免在什么地方开始起作用的?注意在实际的跟踪中,不是所有的都像教材那样简单漂亮的形式。同时还要注意在Time-Sequence-Graph(Stevens)中纵坐标所代表的变量与教材中是否不同。总结这次实验中所得到的 TCP 数据与我们在教材中所学的理想情况有什么不同?
对于慢启动过程的特征是发送端的Congestion window 值指数增长。上面的图像中,开头一段发送的报文段数量为1,2,4,6,可以判断前三轮为慢启动;第四轮及以后的发送过程中,发送的数量稳定在一个较稳定的程度,可以大致判断拥塞避免在此时起作用。
不同之处:发送过程整体较为稳定,没有出现数据的重传现象。基本是每一个ACK确认一个报文段,而不是2个3个居多。发送速度较快,没有发现明显的拥塞控制和报文段中的窗口大小变化情况。
可能的原因有3个:发送的txt文件较小;网络较差,重传率高。
实验二 HTTP抓包分析
6. 基本 HTTP 的 GET/response 交互
(1)你的浏览器所运行的是 http 协议的 1.0 版本还是 1.1?服务器用的是什么版本的 http 协议?
服务器用的是HTTP1.1
2)你的浏览器可以支持多少种语言(如果有)?
中文,支持zh-CN,zh
3)你自己的 IP 地址是多少?服务器呢?
自己的:192.18.43.150
服务器的:110.42.197.24
4)从服务器传回浏览器的状态代码是什么?
HTTP/1.1 200 OK\r\n
5)你所看到的 html 文件在服务器上最后的修改时间是什么?
Date: Tue, 28 Dec 2021 05:45:02 GMT\r\n
7. 有条件的 HTTP 的 GET/response 交互
在 packet-content 窗口中观察第一个从浏览器向服务器发出的 http GET 请求的数据包,是否看到一行显示“ IF-MODIFIED-SINCE” ?
没有。因为这是浏览器第一次请求该页面。
观察从服务器传回的 response 数据包,服务器是否很清楚的传回了该 html 文件的内容?你如何知道的?
返回了文件内容,因为返回状态码为200。并返回了html文件。
观察第二个从浏览器向服务器发出的 http GET 请求的数据包,是否看到一行显示 IF-MODIFIED-SINCE” ?如果有,在“ IF-MODIFIED-SINCE” 报头后显示的是什么?
有这行字段。信息为上次请求该文件的时间。(如果找不到就抓包的时候多刷新几次)
从服务器传回的对第二个 http GET 的 response 的状态代码是什么?服务器是否很清楚的传回了该 html 文件的内容?你如何知道的?
状态码是304,短语是Not Modified,并没有明确返回文件内容,因为该网页内容在上次访问之后未被修改过,且本地中有上次访问的缓存。
8. 获取较长的 HTML 文件
(1)浏览器向服务器发送了多少个 http GET 请求的数据包?
1个。
(2)该 http response 数据包需要多少个含有数据的 TCP 段来传送?
传输这一个HTTP响应需要5个TCP数据段。
(3) 与 http GET 对应的 response 数据包的状态代码是什么?
状态码200,短语OK。
9. 获取有嵌入对象的 HTML 文件
(1) 浏览器向服务器发送了多少个 http GET 请求的数据包?这些数据包发送的目的网 址是什么?
发送了4个 http GET 请求的数据包。
目的地址为:
(2) 浏览器是从两个服务器上连续下载这两个图片还是并行下载的?请做相应解释。
不是并发下载的,有先后顺序。