Linux系统tcp连接设置

本文详细介绍了Linux系统中与TCP/IP协议栈相关的若干关键参数,包括net.ipv4.tcp_syn_retries、net.ipv4.ip_local_port_range、net.core.somaxconn、net.ipv4.tcp_max_syn_backlog、net.core.netdev_max_backlog、net.ipv4.tcp_synack_retries、net.ipv4.tcp_abort_on_overflownet.ipv4.tcp_syncookies以及net.ipv4.tcp_fastopen。这些参数直接影响网络连接的性能、安全性和稳定性,通过调整它们可以优化服务器的网络性能,防止SYN洪水攻击,并控制半连接队列的大小。同时,文章提到了TCP快速打开(TCP Fast Open, TFO)特性,讨论了其优缺点和应用场景。

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

  • net.ipv4.tcp_syn_retries

    • 主动建立链接时发SYN的重试次数。
    • 修改方式:echo 6 > /proc/sys/net/ipv4/tcp_syn_retries

  • net.ipv4.ip_local_port_range

    • 建立连接是本地端口可用范围
    • 修改方式: echo "32768 60999" > /proc/sys/net/ipv4/ip_local_port_range

  • net.core.somaxconn

    • 全连接队列长度 = min(backlog, 内核参数 net.core.somaxconn)
      backlog 由int listen(int sockfd, int backlog)传入。
    • 修改方式:`echo 1024 > /proc/sys/net/core/somaxconn

  • net.ipv4.tcp_max_syn_backlog

    • SYN_RCVD状态连接的最大数(半连队列长度)
      半连接队列长度 = min(backlog, 内核参数 net.core.somaxconn,内核参数 tcp_max_syn_backlog)
      backlog 由int listen(int sockfd, int backlog)传入。
    • 修改方式:echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog

  • net.core.netdev_max_backlog

    • 接收自网卡,但未被内核协议栈处理的队列长度。表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包最大数。
    • 修改方式:echo 1000 > /proc/sys/net/core/netdev_max_backlog

  • net.ipv4.tcp_synack_retries

    • 被动建立连接时,发送SYN/ACK的重试次数。
    • 修改方式:echo 5 > /proc/sys/net/ipv4/tcp_synack_retries

  • net.ipv4.tcp_abort_on_overflow

    • 超出处理能力时,对新来的SYN直接回RST,丢弃连接。
      0:关闭,1:开启。
    • 修改方式:echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow

  • net.ipv4.tcp_syncookies

    • 将连接信息编码在ISN(initialsequencenumber)中返回给客户端,这时server不需要将半连接保存在队列中,而是利用客户端随后发来的ACK带回的ISN还原连接信息,以完成连接的建立,避免了半连接队列被攻击SYN包填满。
      0:不启用,1:半连接队列(SYN queue)满时启用,2:永久启用。
    • 修改方式:echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
    • 由于cookie占用序列号空间,导致此时所有TCP可选功能失效,例如扩充窗口,时间戳等。

  • net.ipv4.tcp_fastopen

    • TFO(TCP fast open)是TCP协议的experimental update,它允许服务器和客户端在连接建立握手阶段交换数据,从而使应用节省了一个RTT的时延。但是TFO会引起一些问题,因此协议要求TCP实现必须默认禁止TFO。需要在某个服务端口上启用TFO功能的时候需要应用程序显示启用
      0:关闭,1:作为客户端是可使用TFO,2:作为服务器时可使用TFO,3:无论作为客户端还是服务器都可使用TFO。
    • 修改方式:echo 3 > /proc/sys/net/ipv4/tcp_fastopen
    • TFO仅对优化短连接有帮助,且安全性不高,建议关闭,内部网络中可以考虑开启。
      请添加图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高晓伟_Steven

相逢即是有缘,动力源于金钱。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值