Bootstrap

计算机网络:利用分组嗅探器分析传输层与网络层协议

实验内容

利用分组嗅探器分析传输层与网络层协议

实验目的

  1. 了解传输层TCP/UDP协议构造;
  2. 了解网络层IP协议构造;

实验预备知识

  1. TCP段结构
  2. UDP段结构
  3. IP数据报结构

实验过程描述

实验一:对传输层协议TCP/UDP进行捕包分析

(1)启动浏览器,打开http://gaia.cs.umass.edu/ethereal-labs/alice.txt网页,得到ALICE’S ADVENTURES IN WONDERLAND文本,将该文件保存到主机上。
(2)打开http://gaia.cs.umass.edu/ethereal-labs/TCP-ethereal-file1.html在Browse按钮旁的文本框中输入保存在主机上的文件ALICE’S ADVENTURES IN WONDERLAND的全名(含路径)
(3)启动Ethereal,开始分组俘获。
(4)在浏览器中,单击“Upload alice.txt file”按钮,将文件上传到gaia.cs.umass.edu服务器
(5)停止俘获。
浏览追踪信息
(6)在显示筛选规则中输入“tcp”
实验结果如下:
在这里插入图片描述
TCP拥塞控制实验:
在Ethereal已俘获分组列表子窗口中选择一个TCP 报文段。选择菜单。 Statistics->TCP Stream Graph-> Time-Sequence-Graph(Stevens)。
实验结果如下:
在这里插入图片描述

实验二:对网络层协议IP进行捕包分析

1.打开Ethereal,开始包捕获,然后在Ethereal包捕获的选择屏幕上点击OK;
2.开启pingplotter,在“Address to Trace”窗口输入目的地目标的名字:
在“#of times to Trace”区域输入3。然后选择Edit->Options->Packet,确认在packet size字段的值为56,点OK。然后按下Trace按钮。
3.发送一组具有较长长度的数据包,通过Edit->Options->Packet在包大小区域输入值为2000,点OK。接着按下Resume按钮;
4.再发送一组具有更长长度的数据包,通Edit->Options->Packet在包大小区域输入值为3500,点OK。接着按下Resume按钮;
5.停止Ethereal tracing;
实验结果如下:
在这里插入图片描述

实验结果

实验一:对传输层协议TCP/UDP进行捕包分析 结果如下:

在这里插入图片描述
(1) 向gaia.cs.umass.edu服务器传送文件的客户端主机的IP地址和TCP端口号是多少?
主机IP:10.236.17.22
在这里插入图片描述
(2) Gaia.cs.umass.edu服务器的IP地址是多少?对这一连接,它用来发送和接收TCP报文段的端口号是多少?
服务器IP是:128.119.245.12 端口号是:80
在这里插入图片描述
(3) 客户服务器之间用于初始化TCP连接的TCP SYN报文段的序号(sequence number)是多少?在该报文段中,是用什么来标示该报文段是SYN报文段的?
序号是0,把SYN置1,Flags:0x0002
在这里插入图片描述
(4) 服务器向客户端发送的SYNACK报文段序号是多少?该报文段中,ACKnowledgement字段的值是多少?Gaia.cs.umass.edu服务器是如何决定此值的?在该报文段中,是用什么来标示该报文段是SYNACK报文段的?
报文段的序号:0,ACK:1;把SYN和ACK置1,Flags:0x0012
在这里插入图片描述
(6) 包含HTTP POST命令的TCP报文段的序号是多少?152555
在这里插入图片描述

(7) 考虑在TCP连接中含有HTTP POST并把它作为第一个片段的TCP片段。在TCP连接(包括含有HTTP POST的片段)中最先的六个片段的序列号是多少?每一个片段是什么时候发送的?每一个片段接收到ACK是什么时候?请给出每一个TCP片段发送和确认被收到时的间隔,即六个片段中的每一个RTT值是多少?当接收到每一个ACK时的EstimatedRTT值是多少?假设对于第一个片段来说,EstimatedRTT值和标准的RTT值相同。
EstimatedRTT=(1-α)EstimatedRTT+αSampleRTT (假设α=0.125)可以知道如何计算即可
无法计算因为TCP是累计应答的,发了许多包只接受到一个ACK应答。
(8) 前六个TCP报文段的长度各是多少?
1,610,2004,3398,4792,6186
(9)在整个跟踪过程中,接收端公示的最小的可用缓存空间是多少?限制发送端的传输以后,接收端的缓存是否仍然不够用?
最小window size是1499 接受端缓存不够用

(9)在跟踪文件中是否有重传的报文段?进行判断的依据是什么?没有重传的报文段
没有重传,发出去的报文段Seq一直增加。

TCP拥塞控制:
在这里插入图片描述
10.利用Time-Sequence-Graph(Stevens) plotting工具,浏览由客户端向服务器发送的报文段序号和时间对应关系图。你能否辨别出TCP慢启动阶段的起止,以及在何处转入避免拥塞阶段?
图上的点一直是增长的,大致曲线也比较像指数型曲线,没有出现回落,所以一直在慢启动阶段没有出现拥塞避免

11.阐述所测量到的数据与TCP理想化的行为有何不同?
TCP理想化的行为慢启动阶段一直是指数增长,达到初始设定的阈值也会结束慢启动,但是可能这次传输的文件比较小还在第一次慢启动的时候就已经结束了。和基本的TCP理想化行为在慢启动阶段是一致的,由于没有出现拥塞避免快速重传等,后面的情景有何异同就不得而知了。

实验二:对网络层协议IP进行捕包分析 结果如下

在这里插入图片描述
在这里插入图片描述
下图是packet size =56的时候ping plotter 的截图,看时间轴,没有出现丢包。
在这里插入图片描述
在9:12改变packet size=2000第二个和第四个路由开始出现丢包,如下图:
在这里插入图片描述
再改变packet size =3000 第一跳路也开始丢包了,虽然丢包率只有3.2%最后一跳路由丢包率达到了74.5%
在这里插入图片描述
第一个ICMP包:
在这里插入图片描述
12. 选择你的电脑所发送的第一个ICMP请求消息,在包详细信息窗口扩展包的Internet协议部分。你的电脑的IP地址是多少?10.236.17.22
13. 在IP包头部,上层协议区域的值是多少?
ICMP(0X01)
14. IP头部有多少字节?IP数据包的有效载荷是多少字节?解释你是怎样确定有效载荷的数量的?
20字节,有效载荷36字节,因为head length:20 total length:56
15. 这个IP数据包被分割了吗?解释你是怎样确定这个数据包是否被分割?没有被分割,因为fragment offset=0

接下来单击列名按IP源地址排序数据包,选择你的电脑发送的第一个ICMP请求消息,扩展显示IP协议的数据。
在这里插入图片描述
16.在包捕获列表窗口,你能看到在第一个ICMP下的所有并发的ICMP消息吗?
可以
17.往同一IP的数据包哪些字段在改变,而且必须改变?为什么?哪些字段是保持不变的,而且必须保持不变?
这些字段改变了:identification ,header checksum ,protocol 这些字段没有改变:version header length differentiated services flages fragment offest
18.描述一下在IP数据包的Identification字段的值是什么样的?
在这里插入图片描述
接下来找到通过最近的路由器发送到你的电脑去的ICMP的TTL溢出回复的系列,回答以下问题:
从ping plotter 知第一跳路由IP是:10.236.255.254
TTL溢出回复 如下:
在这里插入图片描述
19. Identification字段和TTL字段的值是多少?
Identification;0xebb7(60343)Time to live:64
20. 所有的通过最近的路由器发送到你的电脑去的ICMP的TTL溢出回复是不是值都保持不变呢?为什么?
其他的溢出回复:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同一个路由器发回来的ICMP报文的TTL值是一样的,不同的路由器发回来的TTL值不一样。因为经过一个路由器TTL值就减1接下去研究一下分片,先按时间顺序排序数据包,找出在pingplotter中把包的大小改成2000后,你的电脑所发送的第一个ICMP请求消息。回答以下问题:

  1. 那个消息是否传送多于一个IP数据包的分片?看第一个被分割的IP数据包的片段,在IP头部有什么信息指出数据包已经被分割?在IP头部有什么信息指出这是否是第一个与后面片段相对的片段?这个IP数据包的长度是多少?
    Ethereal 抓到的包是分片的包已经组装好的包,所以没有第一个被分割的IP数据包的片段。
    在这里插入图片描述
  2. 看被分割的IP数据包的第二个片段。在IP头部有什么信息指出这不是第一个数据包片段?有更多的片段吗?你是怎么知道的?和上一个分片的长度加起来是2000吗?
    在这里插入图片描述
    more fragments :Not set 表明这不是第一个报文;没有更多的片段了;加起来是2000,1480+500+20=2000

再找出在pingplotter中把包的大小改成3500后,你的电脑所发送的第一个ICMP请求消息。回答以下问题:

23.从原始的数据包中产生了多少片段?片偏移分别为多少?
产生了三个片段,片偏移0,1480,2096
在这里插入图片描述
24.在片段之中IP头部哪些字段改变了?Identification变了吗?total length Flags Header checksum字段变了,identification 没变

实验当中问题及解决办法

1、ping plotter里设置packet size=2000抓到的包的长度不是2000?
解决:从Ethereal 抓到的包来看ping plotter 里的packet size 应该是整个ip 数据包的长度,不是有效载荷的长度
2、没有抓到第一个被分割的IP数据包的片段?
要是ip 数据包被分片,Ethereal抓到的不是分片的数据包,而是已经组装好的数据包,分片信息在IP Fragments里
在这里插入图片描述
这个包的偏移 应该是最后一个片的片偏移。

;