tcp流控制原理

tcp的流控制

流控制,又叫做流量控制。接收端在接收发送端发送的数据包的时候,如果是高负荷情况下就无法继续接收数据,只能丢弃,丢弃后发送端超时重传,又加重了阻塞。
所以,用TCP提供了流量控制机制。 接收端向发送端通知它可以接收数据的大小。于是发送端就会发送不抄过这个限度的数据,这个数据叫做窗口大小。
TCP中有一个字段表示窗口大小。接收机将自己可以接受的缓冲区大小填入该字段发送给发送端,这个字段的值越高,就表明该主机吞吐量越大。
发送过程中,只要该缓冲区被突破,窗口大小的值会被设置为更小的值再发送给发送端。从而形成完整的流量控制。
发送端会在此期间,定时发送一个窗口探测的数据段。此数据段仅包含一个字节以获取最新的窗口大小信息。

接收端和发送端相互通信的时候,数据包处理速度不相等,发送端如果高于接收端的话,就会有许多包无法得到立即处理。因此接收端用缓冲区暂存这些数据包。
但是缓冲区满了发送端还继续发包,这些包只能丢弃,丢弃后发送端超时重传进一步增大负荷。

所以接收端会在tcp协议报文中加入流量窗口大小的字段通知发送端,缓存区的剩余大小就是窗口大小,发送端得知窗口大小后调整数据包发送的速率。
如果窗口大小为0 ,发送方会停止发包。 若想重启发送包, 发送方会定时地向接收方放出一个数据包大小为1的测试报文去询问接收方。如果接收方返回的报文中窗口大小>0则可以继续发包。

tcp是全双工通信,发送端和接收端都有窗口。发送端的窗口叫拥塞窗口。

参考 https://www.cnblogs.com/kubidemanong/p/9987810.html
《TCP/IP详解》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节的传输控制协议。它在计算机网络中扮演着重要的角色,用于控制数据的传输和控制。下面就来详细介绍一下TCP原理。 1. TCP连接的建立 TCP连接的建立需要经过三次握手过程。首先,客户端向服务端发送一个 SYN(同步)段,表示请求建立连接。服务端收到请求后,回复一个 SYN+ACK(同步+确认)段。客户端收到服务端的回复后,再回复一个 ACK(确认)段,表示连接建立成功。 2. 数据传输的可靠性 TCP通过使用序列号和确认号来保证数据传输的可靠性。发送方将数据分成多个段,每个段都有一个唯一的序列号。接收方收到数据后,会回复一个确认号,表示已经接收到了这个序列号的数据。如果发送方没有收到确认,就会重发这个段。如果接收方收到了重复的数据,就会丢弃掉这个数据段。 3. 滑动窗口 TCP还使用了滑动窗口的机制来进行控制。每个段都有一个大小,表示发送方可以发送的数据量。接收方会告诉发送方自己的窗口大小,表示可以接收的数据量。如果发送方的发送窗口大小大于接收方的窗口大小,就需要进行控制,减少发送方的发送速率。 4. TCP连接的关闭 TCP连接的关闭需要经过四次握手过程。首先,一方发送 FIN(结束)段,表示要关闭连接。另一方收到后,回复一个 ACK段,表示已经接收到关闭请求。然后另一方也发送一个 FIN段,表示自己也要关闭连接。最后,发送方再回复一个 ACK段,表示已经接收到了对方的关闭请求。 综上所述,TCP协议通过三次握手建立连接,使用序列号和确认号保证数据传输的可靠性,使用滑动窗口进行控制,通过四次握手关闭连接。这些机制保证了TCP的可靠性和稳定性,在计算机网络中得到了广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值