[通俗易懂]深入理解TCP协议(上):理论基础
2018-01-28 13:38
295 查看
[通俗易懂]深入理解TCP协议(上):理论基础
阅读(20571) | 评论(9)收藏12 淘帖1 赞
JackJiang Lv.9
1 年前 | |只看大图
阅读(20571) | 评论(9)收藏12 淘帖1 赞
JackJiang Lv.9
1 年前 | |只看大图
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP |
下面的示例中,网络包(1000-1499)被网络给延误了,导致发送方没有收到ACK,而后面到达的三个包触发了“Fast Retransmit算法”,所以重传,但重传时,被延误的包又到了,所以,回了一个SACK=1000-1500,因为ACK已到了3000,所以,这个SACK是D-SACK——标识收到了重复的包。这个案例下,发送端知道之前因为“Fast Retransmit算法”触发的重传不是因为发出去的包丢了,也不是因为回应的ACK包丢了,而是因为网络延时了。
1)可以让发送方知道,是发出去的包丢了,还是回来的ACK包丢了。
2)是不是自己的timeout太小了,导致重传。
3)网络上出现了先发的包后到的情况(又称reordering)
4)网络上是不是把我的数据包给复制了。
知道这些东西可以很好得帮助TCP了解网络情况,从而可以更好的做网络上的流控。Linux下的tcp_dsack参数用于开启这个功能(Linux 2.4后默认打开)
好了,上篇就到这里结束了。如果你觉得我写得还比较浅显易懂,那么,欢迎移步看下篇《[通俗易懂]深入理解TCP协议(下)》。
(原文链接:http://coolshell.cn/articles/11564.html)
相关文章推荐
- [通俗易懂]深入理解TCP协议(上):理论基础
- 机器学习之深入理解神经网络理论基础、BP算法及其Python实现
- 深入理解Java并发机制(1)--理论基础
- 深入理解Java并发机制(1)--理论基础
- 深入理解Java并发机制(1)--理论基础
- 深入理解Java并发机制(1)--理论基础
- [通俗易懂]深入理解TCP协议(下):RTT、滑动窗口、拥塞处理
- [通俗易懂]深入理解TCP协议(下):RTT、滑动窗口、拥塞处理
- 深入理解Java并发机制(1)--理论基础
- 深入理解云存储和云计算-理论基础
- 深入理解Java并发机制(1)--理论基础
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- 转_结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
- 深入理解Java的Annotation系列-第一部分 注解基础
- 深入理解Java内存模型(一)——基础
- 线程基础----深入理解volatile变量
- Java多线程 -- 深入理解JMM(Java内存模型) --(一)基础
- 深入理解 JavaScript 异步系列(1)——基础
- 【Android基础】Activity深入理解(一)——Activity生命周期
- 深入理解Java内存模型(一)——基础