スポンサーリンク

netstatコマンドのTCPのステータスの意味について。

LISTEN

コネクションをlistenしています。

SYN_SENT

サーバに接続要求(SYNchronize)を送信し、応答(ACKnowledgement)を受けていない状態です。ACKを受け取るとESTABLIHSEDへ移行します。

SYN_RCVD

クライアントからSYN要求を受け取った直後の状態を指します。

ESTABLISHED

TCPでの接続が確率されており、現在通信が行われている状態です。

FIN_WAIT_1

サーバからFINが送信された状態で、ACKを受信するとFIN_WAIT_2へ移行し、その前にFINを受信するとCLOSINGに移行します。

FIN_WAIT_2

ACK受信状態です。次は、TIME_WAITへ移行します。

TIME_WAIT

接続終了待ちの状態です。
TIME WAITの状態は、最大パケット生存時間 MSL(Maximum Segment Lifetime)の2倍の時間、続きます。OSなどの実装によりますが、30-120秒程度で終了します。そのため、TIME_WAITのステータスの状態のコネクションがたまるケースがあります。

CLOSING

FIN_WAIT_1でFINを受け取ってコネクションが閉じられた状態です。

CLOSE_WAIT

サーバからFINを受信した状態を表します。次はLAST_ACKへ移ります。


LAST_ACK

FINに対するACK待ちの状態です。ACKを受信するとCLOSEDへ移行して終了します。

CLOSED

未使用状態のTCPポートです。

netstatコマンドは、 /usr/include/netinet/tcp_fsm.h で定義されている tcpstates の配列からステータスを表示してします。

#define TCPS_CLOSED             0       /* closed */
#define TCPS_LISTEN             1       /* listening for connection */
#define TCPS_SYN_SENT           2       /* active, have sent syn */
#define TCPS_SYN_RECEIVED       3       /* have sent and received syn */
	/* states < TCPS_ESTABLISHED are those where connections not
	   established */
#define TCPS_ESTABLISHED        4       /* established */
#define TCPS_CLOSE_WAIT         5       /* rcvd fin, waiting for close */
	/* states > TCPS_CLOSE_WAIT are those where user has closed */
#define TCPS_FIN_WAIT_1         6       /* have closed, sent fin */
#define TCPS_CLOSING            7       /* closed xchd FIN; await FIN ACK */
#define TCPS_LAST_ACK           8       /* had fin and close; await FIN ACK */
	/* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */
#define TCPS_FIN_WAIT_2         9       /* have closed, fin is acked */
#define TCPS_TIME_WAIT          10      /* in 2*msl quiet wait after close */

#ifdef  TCPSTATES
const char *tcpstates[] = {
	"CLOSED",       "LISTEN",       "SYN_SENT",
	"SYN_RCVD",
	"ESTABLISHED",  "CLOSE_WAIT",   "FIN_WAIT_1",
	"CLOSING",
	"LAST_ACK",     "FIN_WAIT_2",
	"TIME_WAIT",
};
#endif


send: FIN
FIN_WAIT_1
recv: ACK
send: nohing
FIN_WAIT_2
recv: FIN
send: ACK
TIME_WAIT
CLOSED

send: FIN
FIN_WAIT_1
recv: FIN
send: ACK
CLOSING
recv: ACK
send: nothing
TIME_WAIT
CLOSED

send: FIN
FIN_WAIT_1
recv: FIN,ACK
send: ACK
TIME_WAIT
CLOSED

SYN_RCVD から FIN_WAIT、または
ESTABLISHED から FIN_WAIT へ移行した場合、
FIN_WAIT_1 - CLOSING - TIME_WAIT - CLOSED
FIN_WAIT_1 - FIN_WAIT_2 - TIME_WAIT - CLOSED
FIN_WAIT_1 - TIME_WAIT - CLOSED
をたどる。
ESTABLISHEDからrecv: FIN、send: ACKの場合は、
CLOSE_WAIT - LAST_ACK - CLOSED
へ移行する。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー