您的位置 首页 java

Tcp参数 tcp_nodelay tcp_quickAck

1.Nagle算法

例子:使用telnet的时候,可能发送的字节只有1,但是在网络传输中还是要加上tcp header,ip header(20B)

如下,为了发送1个字节,要多加上40字节.

小报文

因此为了避免发送小数据包.出现了nagle算法.

算法定义:任意时刻,最多只能有一个未被确认的小的分组,在该分组的ack收到前,会收集其他的小分组,然后收到ack后,一起发过去.

伪代码:

解释下就是:

1.如果发送内容>=MSS,立即发送

2.如果没有未被ack的包,立即发送

3.如果有包未被ack,那么缓存起来,当收到ack后,立即发送缓存的内容

tcp默认会开启Nagle算法,因此对小包的发送,有时候会延迟严重.

我们可以使用参数tcp_nodelay=true,关闭nagle算法

2.tcp_quickAck

同样,为了避免每次传输都回复ack.如果是这样的话,一个包就是为了告诉发送方我已经收到了,有点浪费的.

那么tcp协议就有了以下优化.

1.把ack尽可能搭乘别人的返回包返回.

2.等待顺风车的时间为40ms.

so,如果抓包看到耗时40ms,一定要注意,是不是没有打开 tcp_quickAck参数.

默认的,不会开启.

文章来源:智云一二三科技

文章标题:Tcp参数 tcp_nodelay tcp_quickAck

文章地址:https://www.zhihuclub.com/179379.shtml

关于作者: 智云科技

热门文章

网站地图