计算机网络实验——学习记录五(TCP协议2)

一、TCP协议重传机制

        TCP协议是一种面向连接、可靠的传输层协议。为了保证数据的可靠传输,TCP采用数据包重传的机制来应对网络传输过程中可能出现的丢包、错包和乱序等问题。

        TCP协议的重传包括超时重传、快速重传、带选择确认SACK的重传和重复SACK重传四种。

二、iptables命令

        执行Linux命令,用iptables设置规则,模拟丢包:以10%的概率丢弃目的地址为192.168.57.254的IP数据报。

iptables -I FORWARD -d 192.168.57.254 -m statistic --mode random --probability 0.1 -j DROP

解释:

(1)-I FORWARD 在FORWARD接口上执行命令;

(2)-d 192.168.57.254 目的地址(destination address)是192.168.57.254的IP数据报;

(3)-m statistic 以统计的概率进行丢包;

(4)-mode random 随机模式;

(5)--probability 0.1 概率是0.1;

(6)-j DROP 操作(job):丢弃;

三、Wireshark软件默认规则

1. 黑色打底、红色字体(默认的着色规则,可修改)的TCP数据包:出错的数据包;

2. TCP Dup ACK:重复(duplicate)的ACK;

3. TCP Fast Retransmission:快重传;

4. TCP Out-Of-Order:乱序(部分ACK(快重传中的特殊情况:在一次快重传的过程中,一个RTT(往返时间)之内,出现两次丢包的现象));

5. TCP Retransmission:超时重传;

四、序号

相对序号:TCP协议 右键——Protocol Preference——勾选Relative sequence numbers;

绝对序号:TCP协议 右键——Protocol Preference——取消勾选Relative sequence numbers;

五、应用到列

把序号字段应用到列:Sequence numbers 右键——Apply as Column

六、重复ACK确认

超时重传报文段发送之前,共收到几次对该报文段的前一个报文段的ACK确认:

「TCP Dup ACK 26#19」表示:对26号ACK报文,重传19次,加上正常26号ACK,一共20次。

七、重传机制

触发快重传之后,如果还是传输失败,会重置时钟,直到触发超时重传,超时重传与快重传之间的时间间隔是一个RTT。

快重传定义:三次重复ACK然后发送快重传(实际情况是可能在接收方快重传之前,就连续收到大于三次的重复ACK确认报文)。

八、回答问题

(1)找到94号TCP Out-Of-Order(乱序),前一个报文93号是部分ACK报文;

(2)根据93号部分ACK报文段,找到它前面的快重传编号是78;根据快重传报文中的序号,分析序号34713是原始报文要发送的数据编号;

(3)根据序号34713找到Wireshark分配给(引起快重传的)丢失报文段的编号:53;

(4)Wireshark分配给快重传前ns56A发送的最后一个报文段的编号:快重传前的报文是76号;快重传发生时,ns56A发送的最后一字节的编号是63672(62225 + 数据长度Len1448 - 1);

(5)ns56A收到部分ACK报文段后,会立即重传部分ACK所指向的报文60777;

九、超时重传

(1)使用部分ACK可以(一定程度)避免超时重传;

(2)超时重传需要回退N帧,从下一个确认帧(66号)开始重新发送,直到对方发来下一个确认帧(77号)结束;

上一篇:​面试经典150题——从前序与中序遍历序列构造二叉树


下一篇:【001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂】