TCP
トランスミッションコントロールプロトコル
Transmission Control Protocol
https://plantuml-proxy.vercel.app/svg/https://scrapbox.io/api/code/suto3/TCP/tcpstd.pu#.svg
code:tcpstd.pu
@startdot
digraph std {
size ="8.5, 11";
rankdir = TD;
ratio=auto;
label="TCPの状態遷移図";
node
fontsize = 12, shape = box, style=rounded
;
edge
fontsize = 10
;
"CLOSED"->"LISTEN"
label="パッシブオープン(TCB生成)"
;
"CLOSED"->"SYN_SENT"
label="アクティブオープン(TCB生成とSYNの送信)"
;
"LISTEN"->"SYN_RECEIVED"
label="SYNの受信(SYN/ACKの送信)"
;
"LISTEN"->"CLOSED"
label="クローズ(TCB削除)"
;
"LISTEN"->"SYN_SENT"
label="SENT(SYNの送信)"
;
"SYN_RECEIVED"->"ESTABLISHED"
label="ACKの受信"
;
"SYN_RECEIVED"->"FIN_WAIT_1"
label="クローズ(FINの送信)"
;
"SYN_SENT"->"ESTABLISHED"
label="SYN/ACKの受信(ACKの送信)"
;
"SYN_SENT"->"SYN_RECEIVED"
label="SYNの受信(ACKの送信)"
;
"ESTABLISHED"->"FIN_WAIT_1"
label="クローズ(FINの送信)"
;
"FIN_WAIT_1"->"FIN_WAIT_2"
label="ACKの受信"
;
"FIN_WAIT_1"->"CLOSING"
label="FINの受信(ACKの送信)"
;
"FIN_WAIT_1"->"TIME_WAIT"
label="FIN ACKの受信(ACKの送信)"
;
"FIN_WAIT_2"->"TIME_WAIT"
label="FINの受信(ACKの送信)"
;
"CLOSING"->"TIME_WAIT"
label="FIN ACKの受信"
;
"TIME_WAIT"->"CLOSED"
label="タイムアウト待ち(TCB削除)"
;
"ESTABLISHED"->"CLOSE_WAIT"
label="FIN ACKの受信"
;
"CLOSE_WAIT"->"LAST_ACK"
label="クローズ(FINの送信)"
;
"LAST_ACK"->"CLOSED"
label="FIN ACKの受信"
;
}
@enddot