【实验目的】
1、掌握TCP可靠传输原理;
2、掌握TCP的超时重传和快重传机制;
3、了解Linux下iptables命令的使用方法。
【实验步骤与结果记录】
1.在Linux中,打开terminal运行端口,执行如下命令,修改TCP连接的接收缓存参数,减少Linux分配的接收缓存,降低接收窗口值
2.在terminal中执行如下命令,关闭SACK选项,避免执行给予SACK的重传算法
3.本实验采用和UDP协议探索和分析实验相同的网络拓扑,创建虚拟网络拓扑并为虚拟网络拓扑中的各路由器配置静态路由,关闭网卡offload功能,将运输舱封装时需要的计算还给CPU
如图中红框所示的导入脚本的代码,将脚本进行导入和运行
4.在路由器RA中用iptables设置规则,模拟丢包,以10%的概率丢弃墓地地址为192.168.57.254(ns57C)的IP数据报
5.打开两个端口,分别模拟主机ns56A和主机ns57A,执行如下命令
6.再主机ns56A上创建一个100k字节长度的文件备用
7.在主机ns56A上启动wireshark,在接口tap56A上启动
8.在主机ns57C上打开TCP服务程序,在主机ns56A上打开TCP客户程序,然后通过网络将主机ns56A上的100K.0文件发送到主机ns57C
9.在主机ns57A的模拟终端中,执行如下命令
10.在wireshark中停止抓包,保存抓包结果文件并分析本次TCP通信理解TCP超时重传机制和快重传机制
【问题与分析】
1、本实验要求捕获到TCP超时重传事件,快重传事件和部分ACK事件,你在实验中捕获这几种事件时,操作系统为主机ns56A上的TCP客户程序分配的端口号是多少,如果这些事件是分多次捕获的,请分别给出客户进程的端口号。截图说明。
39254
2、在你的实验结果中,任意选择一个超时重传的报文段,分析并回答以下问题:
(1) wireshark给这个超时重传报文段的编号是多少?分析超时重传报文段的首部,截图并填写表5.1。
表5.1 超时重传报文段分析 | |
Wireshark分配给重传报文段的编号 | 93 |
源端口 | 39254 |
目的端口 | 4499 |
序号(相对序号) | 60241 |
数据偏移 | 32 |
窗口 | 7300 |
(2) 这个超时重传报文段重传的原TCP报文段的编号是多少,分析原TCP报文段的首部,截图并填写表5.2。
表5.2原TCP报文段分析 | |
Wireshark分配给原报文段的编号 | 78 |
源端口 | 39254 |
目的端口 | 4499 |
序号(相对序号) | 60241 |
数据偏移 | 32 |
窗口 | 7300 |
(3) 超时重传报文段发送之前,共收到几次对该报文段的前一个报文段的ACK确认?该超时重传报文段触发过快重传么?该报文段与原报文段的时间间隔是多长?截图说明你的分析过程。
确认了6次;触发过重传;时间间隔为0.622158672-0.421555681=0.200602911
3、在你的实验结果中,任意选择一个快重传的报文段,分析并回答以下问题:
(1) wireshark给这个快重传报文段的编号是多少?分析超时重传报文段的首部,截图并填写表5.3。
表5.3 快重传报文段分析 | |
Wireshark分配给快重传报文段的编号 | 102 |
源端口 | 39254 |
目的端口 | 4499 |
序号(相对序号) | 38433 |
数据偏移 | 32 |
窗口 | 7300 |
(2) 这个快重传报文段重传的原TCP报文段的编号是多少,分析原TCP报文段的首部,截图并填写表5.4。
表5.4原TCP报文段分析 | |
Wireshark分配给原报文段的编号 | 93 |
源端口 | 39254 |
目的端口 | 4499 |
序号(相对序号) | 60241 |
数据偏移 | 32 |
窗口 | 7300 |
(3) 快重传报文段发送之前,共收到几次对该报文段的前一个报文段的ACK确认?截图说明你的分析过程。
7次
4、在你的实验结果中,找到一次主机ns57C发给主机ns56A的部分ACK报文段。分析这次快重传过程中,引起快重传的丢失报文段、快重传报文段、快重传之前ns56A发送的最后一个报文段、部分ACK报文段,截图并填写表5.5。
表5.5部分ACK分析 | |
Wireshark分配给丢失报文段的编号 | 67 |
Wireshark分配给快重传报文段的编号 | 73 |
Wireshark分配给快重传前ns56A发送的最后一个报文段的编号 | 63 |
Wireshark分配给部分ACK报文段的编号 | 101 |
丢失报文段的序号(相对序号) | 39254 |
丢失报文段的数据部分长度 | 1448(字节) |
快重传报文段的序号(相对序号) | 39254 |
快重传之前ns56A发送的最后一个报文段的序号(相对序号) | 63 |
快重传之前ns56A发送的最后一个报文段的数据部分长度 | 1448(字节) |
快重传发生时,ns56A发送的最后一字节的编号 | 55937 |
部分ACK报文段的确认号(相对确认号) | 54489 |
ns56A收到部分ACK报文段后,是如何处理的?截图说明你的分析过程。