延时确认和Nagle算法

[TOC]

减小交互式数据 延时确认;Nagle算法

延时确认

发送ack,如果没有segment要发送给对方,等待下一个200ms超时的时候发送ack;如果有segment要发送给对方,则马上

Nagle算法

该算法的优点在于它是自适应的,接收方确认的快,发送方发送的就越快

在一个tcp连接上只能有一个没有被确认的数据包,在这个确认没有收到之前,不发送任何数据报,相反,收集小的报文段以便确认到达时一起发送。

但是有一些例外情况:

  1. 如果包长度达到MSS,则允许发送;

  2. 如果该包含有FIN,则允许发送;

  3. 设置了TCP_NODELAY选项,则允许发送;

  4. 未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;

上述条件都未满足,但发生了超时(一般为200ms),则立即发送。

两种算法一起使用产生的问题

两种算法优点都有减小网络数据包的优点,但是都增加了网络通信的延时

两种算法都是为了减少网络通信包的数量的,但是结合在一起就会有问题,

例如客户端发送一个数据报,

由于延时确认,服务端不是马上确认;

若客户端启用nagle算法,要等到收到上一个数据报的确认在发送下一个数据报;

如此以来,客户端和服务端相互等待,直到超时或者其他情况

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 10,472评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,470评论 6 174
  • TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。...
    Fern16阅读 4,057评论 0 0
  • 六、TCP可靠传输的实现 首先介绍以字节为单位的滑动窗口。为了讲述可靠传输原理的方便,假定数据传输只在一个方向进行...
    dmmy大印阅读 5,903评论 0 1
  • 0. 基本要点 运输层是为相互通信的应用进程提供逻辑通信。 端口和套接字的意义 什么是无连接UDP 什么是面向连接...
    安安zoe阅读 5,285评论 0 1