TCP延迟确认定时器

TCP延迟确认机制旨在减少传输消耗,但可能导致延迟增加。在Linux内核中,tcp_delack_timer作为延迟确认定时器处理函数,通过tcp_send_delayed_ack启动,以发送延迟ACK。
摘要由CSDN通过智能技术生成
TCP延迟确认定时器
TCP延迟确认定时器是指在一个TCP连接中,当一方收到另一端的数据之后,并不是立马返回ACK进行确认。而是等待200ms(在linux-2.6.38内核实现中应该是40ms),如果这段时间内有新的数据要发往对方,本地将ACK和数据封装在一个数据包中一起发送,称作捎带确认机制。超时后即使没有新数据的话也要将ACK发给对方。

这样做的好处是减少了一次数据传输带来的消耗,但是在另一方面增加了延迟。可以通过设置快速确认模式关闭该定时器。

sock结构在初始化时将tcp_delack_timer注册为延迟确认定时器的处理函数。tcp_send_delayed_ack函数会启动延时确认定时器发送延迟ACK,主要的代码如下:


	/* Stay within the limit we were given */
	timeout = jiffies + ato;					//超时时间根据ato设置
	/* ...... */
	icsk->icsk_ack.pending |= ICSK_ACK_SCHED | ICSK_ACK_TIMER;	//设置ICSK_ACK_SCHED和ICSK_ACK_TIMER标志位
	icsk->icsk_ack.timeout = timeout;
	sk_reset_timer(sk, &icsk->icsk_delack_timer, timeout);		//重设延迟确认定时器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值