tcp会无限次重传吗

tcp作为面向连接的,可靠的,字节流。最终要的特点就是可靠,其中重传又是保证可靠的重要前提。那么当tcp发送数据之后,收不到ack的情况下,会无限次重传吗。不会

cat /proc/sys/net/ipv4/tcp_retries1

3

cat /proc/sys/net/ipv4/tcp_retries2

15

root@tegra-ubuntu:/xdata/wyl#

tcp_retries1和tcp_retries2,类似于一次警告,二次罚款。重传次数超过tcp_retries1时不会放弃重传,直到超过tcp_retries2时,才会真正放弃重传。

/proc/sys/net/ipv4/tcp_retries1:

超过这个次数,tcp会将信息报告给网络层,网络层会进行一些操作,比如缓存的更新等。

/proc/sys/net/ipv4/tcp_retries2:

超过这个次数,tcp会放弃重传,然后通过函数tcp_write_err将套接字的状态置错误。socket状态置为错误之后,针对这个socket的阻塞调用,比如read,epoll_wait等便会返回,但是返回值表示错误。

cpp 复制代码
static void sock_def_error_report(struct sock *sk)
{
	struct socket_wq *wq;

	rcu_read_lock();
	wq = rcu_dereference(sk->sk_wq);
	if (skwq_has_sleeper(wq))
		wake_up_interruptible_poll(&wq->wait, EPOLLERR);
	sk_wake_async_rcu(sk, SOCK_WAKE_IO, POLL_ERR);
	rcu_read_unlock();
}

在代码中,用tcp_retries1和tcp_retries2来判断是否超时,在函数retransmits_timed_out中判断是否超时。

/proc/sys/net/ipv4/tcp_syn_retries:

在建立连接的阶段,syn报文的重传次数。

/proc/sys/net/ipv4/tcp_synack_retries:

在建立连接阶段,syn-ack报文的重传次数。

相关推荐
盟接之桥3 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网3 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1214 小时前
已有安全措施确认(上)
大数据·网络
ManThink Technology5 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技6 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt6 小时前
未授权访问漏洞
网络·安全·web安全
半壶清水6 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
JMchen1237 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
yuanmenghao7 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
那就回到过去7 小时前
MPLS多协议标签交换
网络·网络协议·hcip·mpls·ensp