TCP协议

TCP有点类似于GBN和SR的混用,base和next指出一个范围内的字节,是已发送但是未确认的,接收方发送的ACK是累计确认;发送方只设一个计时器,超时就重发最老的那个段,对于乱序的段时丢弃还是缓存需要设计者自定义
快速重传:在计时器还没到时间之前,如果先收到了3个冗余ACK,总计收到4个ACK后,发送方不等计时器到时就直接重发

三次握手建立连接

三次握手解决的是半连接(服务器单方面建立连接)和老数据(TCP的段延时到达)的问题

TCP三次握手

三次握手确保了双方都有接收和发送的能力,建立了一个全双工通道

四次挥手释放连接

f69b36840ca85365a99e9e02e96dc824

注意,客户端同意服务端的关闭后会进入time-wait状态,确保再没有报文还没到之后才关闭

流量控制

为了防止接收方发送方速度不匹配导致的缓冲区溢出的情况,会做流量控制。通过捎带技术,接收方在返回确认的时候会带上缓冲区的空闲大小

拥塞控制

拥塞控制可分为1.网络辅助信息的拥塞控制。这种方式对网络负担较大
2.端到端的拥塞控制。这种是TCP协议所采用的方式
端到端的拥塞控制的检测方法:1.发生了超时2.接收到3个冗余ACK

TCP拥塞控制

发送方的发送速率rate = CongWin(以下用CW代替) / RTT(往返延迟)
CW是动态的,是感知到的网络拥塞程度的函数,检测之后,CW有以下动作:
一·超时或者收到三个冗余ACK
1.超时:CW降为1MSS(maxmun segment size最大报文长度,即单个TCP报文段中能承载的最大数据量),进入SS(慢启动)阶段,然后倍增到CW/2(每个RTT),从而进入CA(拥塞避免)阶段
2.三个冗余:CW降为CW/2,进入CA阶段

二·正常收到ACK,CW试探增加:
SS阶段:加倍增加
CA阶段:线性增加

一个示范TCP流程

一开始CW默认为1,开始慢启动阶段,1-》2-》4-》8-》16,假设16MSS发生了超时,则将8MSS设为警戒值,同时CW设为1MSS,重新进入慢启动阶段,1-》2-》4-》8,此时不能再大了,开始拥塞避免阶段,每次加1,线性增加,8-》9-》10-》11-》12,假设12MSS又发生了超时,则重复上一步;假设12MSS收到了3个冗余ACK,说明已经有了拥塞的征兆了,则将警戒值设为CW/2,CW设为警戒值+3(3个冗余ACK)

这样的拥塞控制机制也让TCP的传输具备了公平性

注意:

TCP的拥塞控制和流量控制会一起执行,取最小的那个来满足两者共同的要求,作为发送方发送速度

posted @ 2025-12-01 22:25  StephZh  阅读(0)  评论(0)    收藏  举报