
网络编程
雅痞萌叔
养天地之正气,法古今之完人。
展开
-
网络编程之nagle算法和TCP_NODELAY
之前写过一篇blog ,描述了用mina的时候写socket发现的一个诡异现象,当时将多个小数据写操作合并成一个写操作,问题就没了。Chenshuo同学还建议我设置TCP_NODELAY,只是后来因为事情忙,也就没有再深究下去。现在大概明白,是由于nagle算法在捣乱。TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可...转载 2018-07-24 16:01:48 · 231 阅读 · 0 评论 -
七层网络协议
一、OSI七层网络协议OSI是Open System Interconnect的缩写,意为开放式系统互联。OSI参考模型各个层次的划分遵循下列原则:1)根据不同层次的抽象分层2)每层应当有一个定义明确的功能3)每层功能的选择应该有助于制定网络协议的国际标准。4)各层边界的选择应尽量节省跨过接口的通信量。5)层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过...转载 2018-07-27 10:56:29 · 872 阅读 · 0 评论 -
TCP传输小数据包效率问题(译自MSDN)
TCP传输小数据包效率问题(译自MSDN)http://www.ftpff.com/blog/?q=node/16 摘要:当使用TCP传输小型数据包时,程序的设计是相当重要的。如果在设计方案中不对TCP数据包的延迟应答,Nagle算法,Winsock缓冲作用引起重视,将会严重影响程序的性能。这篇文章讨论了这些问题,列举了两个案例,给出了一些传输小数据包的优化设计方案。背景:当M...转载 2018-07-24 19:53:53 · 410 阅读 · 0 评论 -
TCP和UDP的"保护消息边界" (经典)
在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。 对于UDP,...转载 2018-07-24 17:17:55 · 233 阅读 · 0 评论 -
TCP连接时CSocket粘包问题的解决方法
http://www.vckbase.com/document/viewdoc/?id=1203 解决TCP网络传输“粘包”问题作者:杨小平 王胜开原文出处:http://www.ciw.com.cn/ 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transpor...转载 2018-07-24 17:15:05 · 518 阅读 · 0 评论 -
TCP通信粘包问题分析和解决(全)
在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。对于UDP,不会使用块的合并...转载 2018-07-24 16:53:37 · 312 阅读 · 0 评论