LoginSignup
0
0

More than 1 year has passed since last update.

3ウェイ・ハンドシェイクについて

Last updated at Posted at 2022-02-14

3ウェイ・ハンドシェイク

TCP通信を行う際に接続を確立する為に用いられる手段

相手と自分の双方が通信が可能である事を認識するのがゴール

3ウェイ・ハンドシェイクの手順

  1. 通信要求者(クライアント)が相手(サーバ)に対して、通信を要求するSYNパケットを送信する
  2. SYNパケットを受け取ったサーバはクライアントに対して、通信を許可するSYN ACKパケットを送信する
  3. SYN ACKパケットを受け取ったクライアントはサーバに対して、接続開始をするACKパケットを送信する

TCPプロトコルの内部ステート

TCPではオープン/クローズ、通信が確立する状態を持っている。

TCPの状態や状態遷移は上記の記事の通りである。

Linuxでは、include/net/tcp_states.hにステートが定義されている

3ウェイ・ハンドシェイクとステート

  1. 初期状態
    • クライアント: CLOSED
    • サーバ: LISTEN
  2. 通信要求者(クライアント)が相手(サーバ)に対して、通信を要求するSYNパケットを送信する
    • クライアント: SYN_SENT
    • サーバ: LISTEN
  3. SYNパケットを受け取ったサーバはクライアントに対して、通信を許可するSYN ACKパケットを送信する
    • クライアント: SYN_SENT
    • サーバ: SYN_RECEIVED
  4. SYN ACKパケットを受け取ったクライアントはサーバに対して、接続開始をするACKパケットを送信しコネクションを確立する
    • クライアント: ESTABLISHED
    • サーバ: SYN_RECEIVED
  5. ACKパケットを受け取ったサーバは、コネクションを確立する
    • クライアント: ESTABLISHED
    • サーバ: ESTABLISHED

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0