TCP学习-MISC
TCP学习(misc)
参考书籍
- 《TCPIP详解:卷1》
TCP概览 - 可靠性
应用数据被分割成TCP认为最适合发送的数据块;如何确定合适的数据块长度?【18.4】
TCP发出一个段后启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;【21章:自适应超时及重传机制】
延迟确认:收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒【19.3】
- 用处
- 主要为了将该ACK与后续可能需要的数据传送放到一起,减小网络负载【数据捎带ACK】
- 绝大多数实现采用的时延为200ms:但是这里的定时器并不是从接收到数据开始定时,而是
连接建立之后创建的200ms周期定时器
Nagle算法
- 该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去
- 可以使用
TCPNODELAY选项来关闭Nagle算法
报文重排【根据TCP中的序列号】
流量控制
- 接收端有接收缓冲区【大小有限】:如果发端发的太快,接收端来不及处理,缓冲区剩余可用空间就会一直减小,直至接收缓冲区满;满了之后,接收端不能再接收新的报文,因为旧的报文还没有处理完,不能进行换出操作;因此需要进行流量控制,以调节发端的发送速度
- 窗口大小为字节数;起始于接收端发送报文的确认序号:因为确认序号之前的字节流已经确认收到,可以从接收端的接收缓存中换出
TCP学习-MISC
http://example.com/2024/07/22/TCP学习-MISC/