TCP/IP backlog
linuxでは、アプリケーションがlisten状態のsocketを作成すると、このsocketに2つのキューが指定されます.SYN queue:syn_に格納rec状態のsocket、カーネルパラメータtcp_max_syn_backlog指定. accept queue:ESTABLISHED状態にあるsocketを格納し、カーネルパラメータsomaxconnとアプリケーション自体で指定します.例えば、redis:tcp-backlog、somaxconnとtcp-backlogの最小値を取ります. accept queueのsocketはアプリケーションによって消費されます.
syn queueが満たされていないのにaccept queueが満たされている場合:
1)tcpが3回目に握手したACKがserverに到達し、accept queueが満たされると、カーネルはこのACKパケットを失う.
2)TCPの再送メカニズムにより、sever側はタイムアウト時間内にACKを受信せず、server側はSYN+ACKを再送し、client側はACKパケットを再送する.
3)/proc/sys/net/ipv 4/tcp_synack_retriesが設定した再試行回数が超えた後も正常にACKパケットを受け取っていない場合は、再試行しません.
リスニング状態でのsocket
非傍受状態のsocket
参考記事:
http://veithen.github.io/2014/01/01/how-tcp-backlog-works-in-linux.html
http://blog.itpub.net/15480802/viewspace-1399303/
syn queueが満たされていないのにaccept queueが満たされている場合:
1)tcpが3回目に握手したACKがserverに到達し、accept queueが満たされると、カーネルはこのACKパケットを失う.
2)TCPの再送メカニズムにより、sever側はタイムアウト時間内にACKを受信せず、server側はSYN+ACKを再送し、client側はACKパケットを再送する.
3)/proc/sys/net/ipv 4/tcp_synack_retriesが設定した再試行回数が超えた後も正常にACKパケットを受け取っていない場合は、再試行しません.
リスニング状態でのsocket
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 *:7000 *:*
LISTEN 0 100 *:7800 *:*
LISTEN 0 50 *:58201 *:*
LISTEN 0 50 *:44761 *:*
LISTEN 0 100 *:7001 *:*
LISTEN 0 512 *:6265 *:*
LISTEN 0 50 *:60026 *:*
Recv-Q: accept queue
Send-Q:accept queue
非傍受状態のsocket
State Recv-Q Send-Q Local Address:Port Peer Address:Port
CLOSE-WAIT 1 0 10.11.11.66:45694 10.11.11.227:8800
TIME-WAIT 0 0 10.13.13.66:9800 10.13.13.23:46128
ESTAB 0 0 10.13.13.66:39618 10.13.13.82:6380
ESTAB 0 0 10.13.13.66:7800 10.13.13.24:45343
ESTAB 0 0 10.13.13.66:8201 10.13.13.24:54330
ESTAB 0 0 10.13.13.66:9800 10.13.13.23:44531
ESTAB 0 0 10.11.11.66:43312 10.11.11.183:6001
ESTAB 0 0 10.13.13.66:45206 10.13.13.83:6380
CLOSE-WAIT 1 0 10.11.11.66:52191 10.11.11.227:8800
Recv-Q:The count of bytes not copied by the user program connected to this socket.
Send-Q:The count of bytes not acknowledged by the remote host.
参考記事:
http://veithen.github.io/2014/01/01/how-tcp-backlog-works-in-linux.html
http://blog.itpub.net/15480802/viewspace-1399303/