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报文的重传次数。

相关推荐
darkb1rd1 分钟前
四、PHP文件包含漏洞深度解析
网络·安全·php
迎仔1 小时前
02-网络硬件设备详解:从大喇叭到算力工厂的进化
网络·智能路由器
嘿起屁儿整1 小时前
面试点(网络层面)
前端·网络
serve the people1 小时前
python环境搭建 (十二) pydantic和pydantic-settings类型验证与解析
java·网络·python
_运维那些事儿2 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
云小逸2 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
Trouvaille ~3 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
咖丨喱3 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
那就回到过去4 小时前
交换机特性
网络·hcip·ensp·交换机
lpruoyu4 小时前
【Docker进阶-05】Docker网络
网络·docker·容器