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丢包时会全部重传从丢的那个包开始以后的数据吗? #369
Comments
我也有这个疑问 |
我也有这个疑问, 希望有人解答 |
原文中的理解应该是有误的,与链路层ARQ的Go-back-N混淆了。
首先,如果TCP开启了SACK(Selective ACK),则就是选择性重传。关于SACK,这篇文章图文并茂,解释得很清楚:
https://www.geeksforgeeks.org/selective-acknowledgments-sack-in-tcp/
其次,即使TCP没有开启SACK,它也并不会重传丢失的包(称为队头分组)以后的全部数据。丢包发生后,一方面,TCP发送端仍然是依据具体拥塞控制算法,根据收到的ACK分组数调整拥塞窗口CWND;另一方面,当连续收到3个重复ACK时,Fast
Retransmit机制会触发对队头分组的重传。在完成队头分组的重传后:1)如果CWND允许(即大于在外分组数),会继续发送新的分组;2)停滞发送等待新的ACK到来;3)长时间未收到对队头分组的确认将触发RTO到时。
所以TCP没有SACK时,只是包的恢复会延后,并不会盲目重发队头分组后面那些未被确认的分组。
…On Sat, Sep 24, 2022 at 9:03 PM thiscallaname ***@***.***> wrote:
我也有这个疑问, 希望有人解答
—
Reply to this email directly, view it on GitHub
<#369 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABWP2F3SB5UM6S4CN57SDHLV7333ZANCNFSM572VPSNA>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
*LI, Ye*
School of Information Science and Technology
Nantong University
Nantong 226019, Jiangsu Province, China
GitHub: *https://github.com/yeliqseu* <https://github.com/yeliqseu>
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
我的理解, TCP是SR和GBN的混合体,
丢包时, 会根据SACK只重传相应的分组,
"TCP丢包时会全部重传从丢的那个包开始以后的数据", 请教下这句话是咋理解的?
The text was updated successfully, but these errors were encountered: