内核参数
本文总结Linux内核中关于TCP协议相关的内核参数含义及其相关配置。目的是指出可能在某些情况下提高TCP网络性能的潜在内核可调参数,请确保在进行调整之前和之后进行测试以获得可测量的定量结果。
TCP状态转移图
TCP连接的任意一端,在任一时刻都处于某一状态,当前状态可以通过netstat命令查看。上图中的粗虚线表示典型的服务器端的状态转移图,粗实线表示典型客户端连接的状态转移图。
建立连接相关选项
TCP连接建立需要3次握手,对于服务器侧来说,其维护一个内部的SYNC队列,加大队列长度为可以容纳更多等待连接的网络连接数:
net.ipv4.tcp_max_syn_backlog = 131072
客户端发起SYNC连接,如果超时会进行重传,重传次数会由下列参数进行设置:
net.ipv4.tcp_syn_retries = 2
当服务器接收到客户端发送的SYNC连接请求报文后,回应SYNC+ACK报文,并等待客户端的ACK确认,如果超时会进行重传,重传次数由下列参数设置:
net.ipv4.tcp_synack_retries = 2
TCP进行相应次数的重连操作均失败的情况下,将通知应用层。
预防半连接攻击,SYN-Cookie是一种有效的机制