Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TCP拥塞控制/流量控制 #69

Open
HCLacids opened this issue Feb 19, 2024 · 2 comments
Open

TCP拥塞控制/流量控制 #69

HCLacids opened this issue Feb 19, 2024 · 2 comments
Labels

Comments

@HCLacids
Copy link
Owner

流量控制是体现TCP稳定性的一面,防止其丢失包。
由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。主要的方式就是接收方返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。
流量控制死锁 是接受者收到了一个窗口为0的response 接受者等待发送者下一个response,若发送者下一个不为0的response丢失了,则产生死锁,互相等待。接受者在收到窗口为0的response时,应该计时,一定时间后去主动询问窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。

@HCLacids
Copy link
Owner Author

拥塞控制
慢开始算法,探测网络容量窗口,从1开始成倍数的增加,2,4,8等个数发送包。
为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:当cwnd<ssthresh时,使用慢开始算法。
当cwnd>ssthresh时,改用拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意
拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口按线性规律缓慢增长。
image

@HCLacids
Copy link
Owner Author

HCLacids commented Feb 19, 2024

快重传是接受方收到非序列的报文,立刻返回重新确认信息。
快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
image

快恢复针对于预防网络拥塞(三个重复确认时),即从ssthresh/2开始进行拥塞避免算法,缓慢增大
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant