实验一:TCP、ICMP协议分析实验
在这个实验中,我们将通过分析TCP的一个片段发送和接收从你的电脑传送到远程服务器的一个大小为150KB的文件来研究TCP的特性和执行过程,同时也将探索ICMP协议,由ping程序产生的ICMP 消息和ICMP 消息的格式与内容。在开始之前请打开我们的实验工具Wireshark,点击“捕获”—“选项”选择要捕捉的输入接口,选择“在所有接口上使用混杂模式”,然后点击“开始”,这样可以有选择的捕获只和你有关系的数据包。
一、捕获一个从你的电脑到远程服务器的TCP数据
在我们开始对TCP的研究之前,我们需要利用Wireshark来捕获一个TCP的数据包。这个包从你的电脑向远程服务器传输一个文件,我们是使用POST方式而不用GET方法是因为我们要传输一个很大数量的数据。
现在按以下步骤做:
1. 打开你的浏览器。输入:
你将会看到Alice in Wonderland的文本版,然后点击鼠标右键另存到你的电脑中;
2. 接下来输入:
;
3. 你将会看到一个像这样的屏幕:
4. 按“选择文件”按钮选取你刚才保存的文件,请先不要按“Upload alice.txt file”按钮;
5. 现在打开Wireshark,开始数据包的捕获;
6.再回到你的浏览器,按下“Upload alice.txt file”按钮向服务器来上载
文件(一旦这个文件被上载,一个短小的祝词将会显示在你的浏览器窗口);
7.停止Wireshark的捕获,你的Wireshark窗口应该和下面所示的窗口相类似:
来看一下捕获的数据,在主窗口顶部的“应用显示过滤器”中输入“tcp”以用来过滤包。你所看见的是你的电脑和之间的一系列TCP和HTTP消息。你可以看到含有SYN消息的最初的三次握手,还可以看到一个HTTP POST消息和一系列从你的电脑发送到的HTTP附加部分的消息。同时,你也可以看到从 返回到你的电脑的TCP ACK片段。
8. 点击“文件”—“保存”选项将数据保存,命名为tcp-1。
通过观察所捕获数据包的内容回答以下问题:
Q1. 你的电脑向 传输文件时所用的IP地址和TCP端口号是多少?
A1:IP地址:182.138.127.2
TCP端口号:49508
Q2. 的IP地址是多少?该服务器的哪个端口发送和接收TCP片段?
A2:IP地址:128.119.245.12
发送和接收TCP片段端口:80
Q3. 用来在你的电脑和 之间开始TCP连接的TCP SYN片段的序列号是多少?在片段中怎样识别这个片段是一个SYN片段?
A3:开始TCP连接的TCP SYN片段的序列号:2291245470(绝对序列号)
识别片段方式:Syn设置为1
Q4. 回复SYN的SYN ACK片段的序列号是多少?怎样测定这个ACK的值?在片段中靠什么来识别这是一个SYN ACK片段?
A4:Sequence number:1034370948(绝对序列号)
Acknowledgement number:2291245471(绝对序列号)
测定方式:Acknowledgement number比SYN的序列号多1
识别方式:Acknowledgement和Syn均设置为1
Q5. 看到的数据包中有HTTP数据包,其请求方法是什么?其TCP片段的序列号是多少?A5:请求方法:POST
TCP序列号:2712239079(参考下图中随便选一个序列号)
Q6. FIN ACK片段有什么作用?简述终端连接的握手过程。
A6:作用:关闭连接
终端连接握手过程如下:
(1)A发送一个FIN,用来关闭A到B的数据传送。
(2)B收到这个FIN,发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)B关闭与A的连接,发送一个FIN给A。
(4)A发回ACK报文确认,并将确认序号设置为收到序号加1。
Q7.(附加题)window size value、calculated window size和window size scaling factor之间有什么关系?为什么要这样来计算窗口的值?
A7:window size value:窗口大小;
calculated window size:计划窗口大小;
window size scaling factor:窗口大小缩放因子;
三者之间的关系为:window size scaling factor=calculated window size/ window size value。Window size value为TCP首部字段窗口填写的值,计算后的calculated window size 是实际可以使用的值。
二、ICMP与ping
现在按以下步骤做:
1. 打开命令提示符;
2. 打开Wireshark,开始捕捉数据包;
3. 在命令提示符里输入:ping -n 10 (参数“-n 10”说明需要发送10 个ping 消息);
4. 当ping程序终止后,停止用Wireshark捕获数据包,Wireshark 窗口应该和下图类似:
来看一下捕获的数据,在主窗口顶部的“应用显示过滤器”中输入“icmp”以用来过滤包。我们可以看到源端发出了10个查问包并收到了10个响应,可以对每一个响应源端计算往返时间(RTT),也不妨计算一下这10个包平均RTT。注意到包列表显示出20个包:源端发出的10个ping询问和收到的10个ping 响应。现在让我们展开由我们电脑