TCP 接收连接及消息的收发

本文详细介绍了TCP连接的建立过程,包括内核中的SYN和ACCEPT队列,以及backlog参数的作用。同时,解释了TCP发送数据的步骤,如MSS、慢启动和拥塞窗口的概念。在接收方面,讨论了内核处理TCP报文的四个队列,以及接收阙值和用户进程读取数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在网络编程时,一般过程是创建套接字,然后绑定端口,然后开始监听,那么这个所谓的监听数量为什么一般很小,但是能接收很多连接,恩,后来才知道不在一个过程上,下面先从listen函数看起。

listen(socket, backlog);

socket backlog定义内核监听队列的最大长度。

内核为任何一个给定的监听套接字维护两个队列:
1) 未完成连接队列。每个这样的SYN分节对应其中一项:已由某个客户端发送到服务器,服务器等待完成三次握手过程。这些套接字处于SYN_RECV状态。
2) 已完成连接状态队列。处于ESTABLISHED状态。

查看listen监听队列内容 netstat -nt | grep 端口号

syncookies功能,它控制着系统内核ipv4参数修改是否生效。如果启动,那么内核参数修改无效。

$cat /proc/sys/net/ipv4/tcp_syncookies  查看是否开启
$echo 0 > /proc/sys/net/ipv4/tcp_syncookies 通过echo禁用syncookies
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值