美文网首页
Nagle算法与delay-ack

Nagle算法与delay-ack

作者: kindol | 来源:发表于2018-07-22 23:15 被阅读0次

tcp数据传输分为两种:

  • 交互数据传输

    交互数据就是发送控制命令的数据流,如telnet、ftp等;利用Nagle算法与delay-ack进行拥塞避免

  • 块数据传输

    块数据是用来发送控制命令的包;利用滑动窗口进行流控、利用“慢启动与拥塞避免算法、快速重传算法”进行拥塞避免

为何Nagle算法和delay-ack可以使交互数据避免拥塞

交互数据流属于多而小的数据流,如果是在局域网内则没什么问题,但如果是在广域网上,时刻充斥着大量TCP小分组,那么可能会造成网络的拥塞。此二算法就是为了减少TCP小分组而产生的,目的即是为了提高网络效率。

Nagle算法

Nagle要求一个TCP连接上最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他小分组。TCP会搜集这些小的分组,然后在之前小分组的确认到达后将刚才搜集的小分组合并发送出去。

该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发送的越快;而在希望减少微小分组数目的低速广域网上,则会发送更少的分组。

当然,有些时候是需要禁用Nagle算法的,如远程连接时的鼠标移动操作

delay-ack

通常Server在接收到从Client发送过来的数据时,并不马上发送ACK,而是等一个规定时延,看看本机是否有数据要反馈给Client,如果有,就将数据包含在此ACK包中,以前发送给Client。一般情况下这个时延为200ms。

好处:

  • 避免糊涂窗口综合症
  • 捎带ack,减少小分组

当Nagle遇上延迟ACK

试想:通过多个写小片数据向对端发送单个逻辑的操作,两次写数据长度小于MSS,当第一次写数据到达对端后,对端延迟ack,不发送ack,而本端因为要发送的数据长度小于MSS,所以nagle算法起作用,数据并不会立即发送,而是等待对端发送的第一次数据确认ack;这样的情况下,需要等待对端超时发送ack,然后本段才能发送第二次写的数据,从而造成延迟

相关文章

  • Nagle算法与delay-ack

    tcp数据传输分为两种: 交互数据传输交互数据就是发送控制命令的数据流,如telnet、ftp等;利用Nagle算...

  • 详解Socket编程---TCP_NODELAY选项

    Nagle算法描述 Socket编程中,TCP_NODELAY选项是用来控制是否开启Nagle算法,该算法是为了提...

  • TCP之Nagle、Cork、Delay ACK(延迟确认)

    [TOC] 参考资料 TCP协议中的Nagle算法 TCP中的Nagle算法 Linux下TCP延迟确认(Dela...

  • Nagle算法

    Nagle's algorithm, is a means of improving the efficiency...

  • nagle算法

    选自:www.cnblogs.com/wanpengcoder/p/5366156.html blog.csdn....

  • Nagle算法

    TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。...

  • TCP协议灵魂12问(第十一问)

    011: 能不能说说 Nagle 算法和延迟确认? Nagle 算法 试想一个场景,发送端不停地给接收端发很小的包...

  • TCP的Nagle算法与ACK延滞算法

    ACK延滞算法 TCP协议规定在接受到数据段时需要向对方发送一个确认ACK,但如果只是单纯的发送一个确认ACK,代...

  • Nagle算法在TCP

    使用 Nagle 可以尽可能发送大块数据的包,从而减少发包个数,以此降低网络负载。 如果调试过 telnet 之类...

  • TCP之Nagle算法

    [TOC] Small Packet Problem 在使用一些协议通讯的时候,比如Telnet,会有一个字节字节...

网友评论

      本文标题:Nagle算法与delay-ack

      本文链接:https://www.haomeiwen.com/subject/mbormftx.html