在应用层协议的tcp流中,Len=0的[ACK]数据包的作用?

新手上路,请多包涵

image.png
个人理解:上图中数据包1(TCP)如果只是用进行来确认的,那么数据包2(MySQL)中携带的tcp信息也可以起到相同的作用,那么数据包1存在就显得冗余。

PS:理解可能存在偏差,烦请各位大佬不吝赐教,指出我理解中存在的问题,谢谢大家!

阅读 4.4k
1 个回答

你说的那种情况是延迟回复+捎带数据,然而并不是所有情况都可以延迟回复的,以下三种情况就需要立即回复:

  • 如果接收到了大于一个frame 的报文,且需要调整窗口大小
  • 处于 quickack 模式(tcp_in_quickack_mode)
  • 收到乱序包(We have out of order data.)

同时延迟回复也是有时间限制的,超过了一定的时间后如果依然没有数据可以捎带,则必须回复一个空的ack

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进