首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
TCP/IP之Nagle算法与40ms延迟
】的更多相关文章
TCP/IP之Nagle算法与40ms延迟
Nagle算法是针对网络上存在的微小分组可能会在广域网上造成拥塞而设计的.该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组确认到达之前不能发送其他的小分组.同时,TCP收集这些少量的分组,并在确认到来时以一个分组发出去.它的设计规则如下: (1)如果包长度达到最大报文长度(MSS,Maximum Segment Size),则允许发送: (2)如果该包含有FIN,则允许发送: (3)设置了TCP_NODELAY选项,则允许发送: (4)未设置TCP_CORK选项时,若所…
TCP交换数据流——Nagle算法简单记录
Nagle算法: 该算法提出的目的是想解决网络中大量的小的TCP数据包造成网络拥塞的问题,举个例子,当客户端要发送一个字节的TCP数据包到服务器时,我们实际上产生了41字节长的分组:包括20字节的IP首部,20字节的TCP首部以及1个字节的数据.这被称为微小分组.这种情况下,有效传输通道的利用率只有1/40 . Nagle算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,也就是说,当A想要向B很多报文时,A不能一次性发完,必须要等待B发送第一个分组的确认,A收到该确认之后才能发第二…
TCP/IP之TCP_NODELAY与TCP_CORK
TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法.这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagle 算法.禁止Nagle后应用程序向内核递交的每个数据包都会立即发送出去.但是禁止Nagle,网络传输仍然受到TCP确认延迟机制的影响. CORK意思是塞子,TCP中的CORK意思是将连接塞住,使得数据先不发出去,等到拔去塞子后再发出去.设置该选项后,内核会尽力把小数据包拼接成一个大的数据包(一个M…
TCP Nagle算法&&延迟确认机制
TCP Nagle算法&&延迟确认机制 收藏 秋风醉了 发表于 3年前 阅读 1367 收藏 0 点赞 0 评论 0 [腾讯云]买域名送云解析+SSL证书+建站!>>> 摘要: TCP Nagle算法&&延迟确认机制 TCP Nagle算法&&延迟确认机制 TCP Nagle算法 http://baike.baidu.com/view/2468335.htm 百度百科:TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同…
TCP Nagle算法以及延迟确认(即延迟回复ACK)的学习
TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据. (一个连TCP接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据). Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块.(尤其在广域网中)(减少大量小包的发送) Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段.所谓“小段”,指的是小于MSS尺寸的…
TCP粘包, UDP丢包, nagle算法
一.TCP粘包 1. 什么时候考虑粘包 如果利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题(因为只有一种包结构,类似于http协议,UDP不会出现粘包现象).关闭连接主要要双方都发送close连接(参考tcp关闭协议).如:A需要发送一段字符串给B,那么A与B建立连接,然后发送双方都默认好的协议字符如"hello give me sth abour yourself",然后B收到报文后,就将缓冲区数据接收,然后关闭连接,这样粘包问…
nagle 算法 tcp nodelay 以及 quick ack分析
后面详细分析 先上传 之前总结查看源码后的总结 Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段.所谓"小段",指的是小于MSS尺寸的数据块,所谓"未被确认",是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到.也就是没有收到ack 的时候不会再次发送数据出去.该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发送的越快:而在希望减少微小分组数目的低速广域网上,则会发送更少的分组. Nagle算法的规则(可参考tcp_outp…
Nagle算法&&延时确认
数据流分类 成块数据 交互数据 Rlogin需要远程系统(服务器)回显我们(客户)键入的字符 数据字节和数据字节的回显都需要对方确认 rlogin 每次只发送一个字节到服务器,而Telnet 可以选择发送一行 数据确认是通过期望数据序号 Nagle算法 rlogin发送一个字节,就产生41字节长度的分组: 20字节IP首部,20字节TCP首部,1字节数据 防止小分组拥塞 该算法要求一个 TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组.…
TCP/IP详解系列 --- 概念总结02
TCP复位报文段(RST)的用途: 1.当客户端程序访问不存在的端口时,目标主机将给它发送一个复位报文段:收到复位报文段的一端应该关闭连接或者重新连接,而不能回应这个复位报文段. 2.当客户端程序向服务器的某个端口发起连接,而该端口仍被处于TIME_WAIT状态的连接所占用时,客户端程序也将收到复位报文段. 3.异常终止连接:给对方发送一个复位报文段(使用socket选项SO_LINGER),一旦发送了复位报文段,发送端所有排队等待发送的数据都将被丢弃. 4.如果客户端(或服务器)往处于半打开状…
【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流
19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等. 一些关于通信量的研究发现: 按分组数量计算:一半的TCP报文段包含成块数据(FTP,电子邮件,Usenet新闻),另外一半则包含交互数据(Telnet和Rlogin). 按字节计算:90% : 10%.这是因为成块数据基本上都是满长…