TCP流量控制与滑动窗口

TCP连接的发送速率和接收速率是不一致的,接收方处理数据的速度和发送方发送数据的速度可能不匹配,因此若不能使发送方与接收方同步的话,会导致数据的丢包。

滑动窗口能比较好的解决这个问题。滑动窗口的机制是在服务端设置一个接受窗口,接收窗口值由数据接收端指定,以字节数形式存储于TCP报文头,在TCP进行三次握手连接的时候,通知窗口信息,使得发送方的发送窗口与接收方的接收窗口同步。

提问:

TCP如何进行流量控制?

TCP请求连接服务器进行三次握手时,服务器会在响应报文段中将接收窗口值,以字节数形式存储于TCP报文头,客户端接收到此报文段之后根据此信息调整自己的发送窗口。客户端保证自己发送的数据都在发送窗口之内,已发送还未确认的数据也在发送窗口和发送缓冲区中,不在发送窗口的数据不可发送。

服务端保证对于乱序到达的数据存储在接收缓冲区中,使用累积确认,每次收到乱序报文段时,发送一个ACK,表示希望客户端什么样的数据,时刻调整窗口大小。

需要注意:当服务端将rwnd=0的信息通报给客户端之后,客户端将不再发送数据,等待服务端处理完接收缓冲区的数据之后,服务端将rwnd=40的信息通报给客户端,但因为某种原因,该报文段在传输过程中丢失,此时双方则陷入了一个死锁状态,客户端将不再发送数据,而服务端等待接收数据,为了TCP遇到这种情况时,客户端在收到rwnd=0的信息之后,依然会发送一个只有1字节的数据,若缓冲区依然是满的,此报文段会被服务器丢掉,客户端会进行超时重传,若缓冲区有空余,则服务端会响应一个ACK报文段,该报文段的rwnd!=0(我们可以理解为设置了一个定时器)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值