计算机网络之快重传和快恢复以及TCP连接与释放的握手

快重传和快恢复

快重传可以让发送方尽早得知丢失消息,

当发送消息M1,M2,M3,M4,M5后,假如消息M2丢失,那么按照算法会发送对M2报文前一个报文M1的重复确认(M1正常接受到,已经发送了确认),然后之后收到M4,M5,也会发送两个重复确认,这样,规定只要收到3次重复确认,立即重传下一消息M3;

然后执行快恢复算法,发送方调整门限值为原来拥塞窗口值的一半,然后拥塞窗口值等于门限值,开始执行慢开始算法。这叫做乘法减少MD(multiplicative decrease),之前拥塞避免阶段拥塞窗口逐个增加一个报文段大小,叫做加法增大AI(addition increase),l两者合称AIMD算法。

之前假设接收方缓存足够大,接收方窗口rwnd(render window)实际有限,又叫做通知窗口.发送方发送窗口大小一定不能超过拥塞窗口和接收窗口大小。

即 发送窗口上限值=min(rwnd,cwnd)

主动队列管理AQM

路由器按照先进先出的队列处理分组,当队列满时候,后序排在队列尾部的分组会被丢弃,叫做尾部丢弃策略。

尾部丢弃会导致数据丢失,产生丢失重传现象,这时进入慢开始阶段,由于多条连接在IP层的复用,所以会让许多TCP连接同时进入慢开始状态。叫做全局同步。

主动队列管理AQM(active queue management)是在队列长度达到某个警戒值即开始丢弃新到达分组,提醒对方放慢发送速率。

实现方法可以采用随机早期检测RED(eandom early detection)法,路由器维持最小门限和最大门限两个参数。

按算法计算出平均队列长度,

平均队列长度小于最小门限,新到达分组排队。

平均队列长度大于最大门限,新到达分组丢弃。

平均队列长度在最小门限和最大门限之间,按照概率P丢弃新到达分组。

TCP连接的建立

采用客户服务器模式,主动发起连接一方叫客户,另一方叫服务器。

该过程也叫做握手,需要客户和服务器交换三个TCP报文段。

开始时候,服务器创建传输控制块TCB,准备接收客户请求,服务器进入LISTEN状态,等待客户连接。

三次握手:

(1)客户端创建传输控制块TCB,向服务器发出请求报文段,首部确认位SYN=1,同时选择一个初始序号seq=x;

SYN=1的报文段不带数据,消耗一个序号,

客户进入SYN-SENT(同步已发送)状态。

(2)服务器收到后,如果同意建立连接,发送确认,报文段中SYN同步位和ACK确认位都为1,并且选择一个初始序号y,这时进入服务器进入SYN-RCVD同步收到状态。

(3)客户端收到后,发出确认报文,ACK位为1,确认号ack=y+1;(服务器发送来的报文序列号加一)ACK报文段可以携带数据,如果不懈怠数据就不消耗序号,这样下一个数据序号seq=x+1;这样客户端进入established(已连接)状态,服务器收到确认报文后也进入(established)已连接状态

TCP的连接释放

(1)请求释放链接的一方A先发出连接释放报文段,该报文段FIN终止位为1,序号设为seq=u,u为已传输过的数据最后一个字节➕1,然后再停止发送数据,本身进入FIN-WAIT-1状态,等待接收方确认,规定FIN报文段即使不携带数据,也要好一个序列号。

(2)另一B方收到后发出确认,确认号ack=u+1;报文段序号为发送方前面传输的最后一个数据序号加1,接着TCP连接进入半关闭状态,即发起断开A到另一方B的发送已经被关闭。但B到A方向的发送还没有被关闭。

(3)发起断开一方A收到确认后,进入终止等待2状态(FIN-WAIT-2),等待另一方B释放连接。

(4)另一方如果不再发送数据,发出连接释放报文,将报文FIN终止位设为1,序号为问,(可能又崽半关闭期间发送了数据),而且要重复上次发送过的确认报文确认号ack=u+1;这时自身进入last-ack(最后确认状态),等待对方确认。

(5)A收到后,发出确认报文,确认位ACK为1,确认号ack=w+1,自身序号seq=u+1(前面的FIN报文消耗品个序号,进入时间等待(time-wait)阶段,经过时间等待计时器设置时间的2MSL后,A进入CLOSED状态,MSL叫做最长报文寿命,

设置时间2MSL原因:

(1)超时重传:丢失最后发出的确认报文段后,在2MSL时间内重传,

(2)本持续时间内所有报文都吃网络中消失。

TCP还设置了保活计时器,时间为2小时,如果建立TCP连接后出现了故障,无法响应,由于设置在每次收到消息后等待2H,之后如果还没有收到消息,发送探测报文段,以后每隔75秒发送一次,如果10次没有响应就关闭连接。

相关推荐
luj_176811 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
吴懿不在11 小时前
某次热身赛re方向wp WORDS 51,500 READ 172 MIN base64,
网络
小林ixn15 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络
2603_9547083116 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
青岛前景互联信息技术有限公司17 小时前
以新标准为底座,前景互联打造高危场景智能接处警新体系
大数据·网络·人工智能
大飞记Python17 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf
AFinalStone17 小时前
Android 7系统网络(四)Native层(下)—netd Controller详解
android·网络
卖萌的斜阳17 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
单片机·网络协议·tcp/ip
Sirius Wu17 小时前
OpenClaw(UpClaw)三层Tool全链路治理深度详解
网络·人工智能·架构·aigc
用户83344239661418 小时前
Qt6 实现 TCP/UDP/组播 透明中继抓包工具 | 流量录制回放 | 工业设备调试
网络协议