tcp 的连接队列

来源:互联网 发布:淘宝店铺logo图片尺寸 编辑:程序博客网 时间:2024/05/22 16:01

连接队列

  它指的就是tcp状态节点的队列。tcp 状态分俩种,一种是完全连接状态即(established) , 一种是半连接状态(SYN_SEND 或 SYN_RECV)。
  对于服务器来说,listen状态的节点当收到syn同步报文段后,会进行三次握手,当三次握手完成后,就生成一个 established 节点放到完全连接队列中,本质上 listen状态的节点是不负责具体的通信的,它并不接受具体的数据报文段,它只负责监听。(这就是为什么accept 系统函数,执行完毕后并不是listensocket去通信,而是accept返回的socket去通信。

完全连接队列与半连接队列

  半连接队列都是处于SYN_SEND/SYN_RCVD状态的节点,它的大小由系统参数确定,tcp_max_syn_backlog来决定默认32位下512,64位下2048,最大8192。(测试环境是 Centos 6.5 32/64位)
  完全连接队列是由listen 函数中的backlog参数决定的。它的大小在 0~/proc/net/core/somaxcon 之间(我的默认该值是128)。