异步编程NIO(Netty, Vert.x, Akka和Node.js)

关于TCP收到数据粘包问题——Nagle算法

2018-07-11  本文已影响103人  XDgbh

在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须自己提供科学的拆包机制。

对于UDP,不会使用块的合并优化算法,这样,实际上目前认为,是由于UDP支持的是一对多的模式,所以接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的UDP包,在每个UDP包中就有了消息头(消息来源地址,端口等信息),这样,对于接收端来说,就容易进行区分处理了。所以UDP不会出现粘包问题。
https://www.cnblogs.com/kex1n/p/6502002.html
TCP通信粘包问题分析和解决(全)
====================================================================

TCP的Nagle算法和延迟ACK

https://blog.csdn.net/dog250/article/details/21303679
再次谈谈TCP的Nagle算法与TCP_CORK选项

https://blog.csdn.net/wdscq1234/article/details/52432095
TCP-IP详解:Nagle算法

上一篇 下一篇

猜你喜欢

热点阅读