首页 > 编程知识 正文

控制TCP报文发送时机动作,tcp的流量控制和拥塞控制

时间:2023-05-06 07:59:05 阅读:116237 作者:342

文章清单1、流控制的定义2、流控制的实现方式3、例3.1进行3次拥塞控制,将发送窗口调整为03.2死锁局面3.3持续计时器

1、流量控制的定义

一般来说,我们希望更快地传输数据,但如果发送方发送太多数据,接收方可能无法接收,数据可能会丢失。 流量控制是指发送端的发送速率不要太快,使接收端能赶上接收。

2、流量控制实现方式利用滑动窗口机制,通过TCP连接方便地实现对发送端的流量控制。

3、例TCP发送侧的发送窗口=min{自身的拥塞窗口、TCP接收侧的接收窗口}

最大前提:考虑到忽视了拥塞控制,即TCP发送端的发送窗口等于接收端接收窗口的3.1次拥塞控制,将发送窗口调整为0

假设a向b发送数据。 建立连接时,b告诉a“我的接收窗口rwnd=400”。 (在此,rwnd意味着接收窗口。 因此,发送方的发送窗口不能超过来自接收方的接收窗口的值。 请注意,TCP的窗口单位是字节,而不是消息段。 TCP连接建立时的窗口协商过程未在图中示出。 另外,设各段为100字节长度,数据段编号的初始值为1 (图中最初的箭头以上的编号为seq=1)。 )请注意,图中箭头上方的大写ACK表示第一个确认位ACK,小写ACK表示确认字段的值。 请注意,接收主机n进行三次流控制,第一次将窗口减小到rwnd=300,第二次减小到rwnd=100,最后减小到rwnd=0,从而不允许在发送端重新生成数据这样,发送方暂时停止发送的状态持续到主机b重新发出新的窗口值为止。 另外,还需要注意的是,b向a发送的3个报文段中设定了ACK=1,只有在ACK=1时才确认号码字段是有意义的。 3.2死锁情况这里考虑的是,在图中,在b向a发送了零窗口消息段之后,b的接收缓存中出现了存储区域。 因此,b向a发送了rwnd=400的段,但该段在传输中丢失了。 a继续等待来自b的非零窗口通知,b也继续等待来自a的数据,如果没有其他措施,这种等待死锁将继续。

3.3持续计时器是为了解决这个问题。 TCP每个连接都有一个持续计时器。 TCP连接侧收到对方的零窗口通知后,启动持续计时器。 如果持续计时器设置的时间期满,则发送零窗口探测消息块(仅具有1字节数据),对方在确认该探测消息时提供了当前窗口值。 如果窗口值仍然为零,则接收到该消息段的一方将重置持续计时器。 如果窗口不为零,就可以消除死锁的僵局。 视频链接: https://www.bilibili.com/video/bv 1c 4411 d7j b? p=60

参考: https://blog.csdn.net/QQ _ 32998153/article/details/79685425

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。