赞
踩
在开始之前请打开我们的实验工具Wireshark,点击“捕获”—“选项”选择要捕捉的输入接口,选择“在所有接口上使用混杂模式”,然后点击“开始”,这样可以有选择的捕获只和你有关系的数据包。
一、捕获一个从你的电脑到远程服务器的TCP数据
在我们开始对TCP的研究之前,我们需要利用Wireshark来捕获一个TCP的数据包。这个包从你的电脑向远程服务器传输一个文件,我们是使用POST方式而不用GET方法是因为我们要传输一个很大数量的数据。
现在按以下步骤做:
1.打开你的浏览器。输入:
http://gaia.cs.umass.edu/ethereal-labs/alice.txt
你将会看到Alice in Wonderland的文本版,然后点击鼠标右键另存到你的电脑中;
2.接下来输入:
Upload page for TCP Ethereal Lab
你将会看到一个像这样的界面:
3.按“选择文件”按钮选取你刚才保存的文件,请先不要按“Upload alice.txt file”按钮;
4.现在打开Wireshark,开始数据包的捕获;
5.再回到你的浏览器,按下“Upload alice.txt file”按钮向gaia.cs.umass.edu服务器来上载文件(一旦这个文件被上载,一个短小的祝词将会显示在你的浏览器窗口);
6.停止Wireshark的捕获,你的Wireshark窗口应该和下面所示的窗口相类似:
来看一下捕获的数据,在主窗口顶部的“应用显示过滤器”中输入“tcp”以用来过滤包。你所看见的是你的电脑和gaia.cs.umass.edu之间的一系列TCP和HTTP消息。你可以看到含有SYN消息的最初的三次握手,还可以看到一个HTTP POST消息和一系列从你的电脑发送到gaia.cs.umass.edu的HTTP附加部分的消息。同时,你也可以看到从gaia.cs.umass.edu 返回到你的电脑的TCP ACK片段。
7.点击“文件”—“保存”选项将数据保存,命名为tcp-1。
通过观察所捕获数据包的内容回答以下问题:
Q1.TCP属于五层协议中的哪一层?
传输层
Q2.你电脑向gaia.cs.umass.edu 传输文件时所用的IP地址和TCP端口号是多少?
IP地址:192.168.1.2
端口号:3837
Q3.gaia.cs.umass.edu的IP地址是多少?该服务器的哪个端口发送和接收TCP片段?
IP地址:128.119.245.12
端口号:80
Q4.用来在你电脑和gaia.cs.umass.edu 之间开始TCP连接的TCP SYN片段的序列号是多少?在片段中怎样识别这个片段是一个SYN片段?
序列号:相对序列号为0,真实序列号为2017586174
怎样识别:客户端发送一个TCP,标志位为SYN=1,序列号为0。
Q5.找出其中的HTTP数据包,它的请求方法是什么?
请求方法:POST
Q6.FIN ACK片段有什么作用?
作用:FIN ACK片段用于关闭TCP连接,是四次挥手的第一个片段。当一方要关闭连接时,它会发送一个FIN标志,告诉对方它不会再发送数据了。对方收到FIN标志后,会发送一个ACK标志,表示它已经收到了FIN标志,并准备好关闭连接。这个ACK标志也可以携带数据。如果对方也要关闭连接,它也会发送一个FIN标志,然后等待对方的ACK标志,最终双方都关闭连接。
Q7.结合所捕获的数据包,简述终端连接的握手过程。
1.客户端给服务器发送一个SYN片段,即使此UDP片段中的SYN位为1,该段中也包含客户端的初始序列号(Sequence number = J)。
2.服务器返回客户端SYN + ACK段,即SYN和ACK位字段都为1,该段中包含服务器的初始序列号(Sequence number = K);同时使 Acknowledgment number = J + 1来表示确认已收到客户端的SYN段(Sequence number = J)。
3.客户端给服务器响应一个ACK=1段,该段中使 Acknowledgment number = K + 1来表示确认已收到服务器的SYN段(Sequence number = K)。
Q8.window size value、calculated window size和window size scaling factor之间有什么关系?
Window size value表示接收方期望接收的数据量,以字节为单位。
Calculated window size是根据网络状况和接收方的处理能力计算出来的窗口大小,以字节为单位。
Window size scaling factor是一个可选的TCP选项,它允许接收方扩大窗口大小的范围。
Calculated window size = Window size scaling factor * Window size value
二、ICMP与ping
现在按以下步骤做:
1.打开命令提示符;
2.打开Wireshark,开始捕捉数据包;
3.在命令提示符里输入:ping -n 10 gaia.cs.umass.edu(参数“-n 10”说明需要发送10 个ping 消息);
4.当ping程序终止后,停止用Wireshark捕获数据包,Wireshark 窗口应该和下图类似:
来看一下捕获的数据,在主窗口顶部的“应用显示过滤器”中输入“icmp”以用来过滤包。我们可以看到源端发出了10个查问包并收到了10个响应,可以对每一个响应源端计算往返时间(RTT),也不妨计算一下这10个包平均RTT。注意到包列表显示出20个包:源端发出的10个ping询问和收到的10个ping 响应。现在让我们展开由我们电脑发出的第一个包,在上图中包内容区提供了这个包的信息。我们看到包内的IP数据包有协议号01(这是ICMP 的协议号),这说明这个IP数据包承载的是一个ICMP包。然后我们展开ICMP协议部分的信息,我们观察到这个ICMP包的Type为8而Code为0,这称为一个ICMP“请求”包。
5. 点击“文件”—“保存”选项将数据保存,命名为icmp-1。
通过观察所捕获数据包的内容回答以下问题:
Q9.ICMP属于五层模型中哪一层?
网络层
Q10.你主机的IP地址是什么?远程主机的IP地址是什么?
我主机的IP地址:192.168.1.2
远程主机的IP地址:128.119.245.12
Q11.为什么ICMP包没有源和目标端口号?
ICMP是Internet控制消息协议,用于在IP网络中传输控制信息和错误消息,是基于网络层的协议,而端口号是应用层的协议才有的,因此ICMP包没有源和目标端口号。
Q12.你主机发送ping请求包的TTL值是多少?都一样吗?
TTL值都一样,均为28
Q13.检查相应的ping回应包,ICMP type和code是多少?type的数字表示什么意思?
Ping回应包中
Type:0
Code:0
Type为0表示接收方回复Echo Request消息的响应消息。
Q14.TTL值代表什么含义?
TTL(Time To Live)值代表数据包在网络中可以经过的最大路由跳数。每经过一个路由器,TTL值就会减1,当TTL值为0时,数据包会被丢弃并返回一个错误消息。TTL值的作用是防止数据包在网络中无限循环。
Q15.为什么ping回应包的TTL时间不相同?
当ping请求到达目标主机时,它的TTL值可会因为经过不同数量的路由器而不同。此外,网络拓扑结构也可以影响TTL值的变化。如果某些路由器比其他路由器更远离源主机或目标主机,那么通过这些路由器的数据包的TTL值可能会更大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。