LoginSignup
16
29

More than 5 years have passed since last update.

TCPの仕組み

Last updated at Posted at 2017-08-27

コネクション確立

  • 3 way handshake
  • まず先にサーバ側(サービスを提供する側)がListen状態に入ってクライアントからのオープン要求を待ち、クライアント側が接続要求を送信することによって、TCP接続が確立される

コネクション状態遷移

  • 接続種別
    • オープン(確立)
      • Active Open:自分から相手方に先にオープン要求を送信すること
      • Passive Open:相手からのオープン要求を待ち受けしてオープンすること
    • クローズ
      • Active Close:先にクローズ処理を開始すること。Active Close完了後は送信はできないが、受信はできる
      • Passive Close:Active Close処理開始後に、Active Closeの逆側()がクローズ処理を開始すること。Passive Close処理の完了をもって、接続が完全に切れる。
  • 状態一覧
    • LISTEN
      • Passive Openで、待ち受け状態。
    • SYN_RECEIVED
      • Active OpenのSYNに対してACKとSYNで応答し、それに対するACKを待っている状態。
    • SYN_SENT
      • Active Openで、SYNを送信した状態。
    • ESTABLISHED
      • TCP接続が確立した状態。データの送受信を行うことができる。
    • FIN_WAIT_1
      • Active Closeの最初の段階。FINを送信して、それに対する応答を待っている状態。
    • FIN_WAIT_2
      • 送信したFINに対するACKを受け取った状態。送信側のクローズ処理が終了し、相手からのFINを受信するのを待っている状態。
    • CLOSING
      • Active CloseでFINを送信した後、ACKが戻ってくるよりも先に、相手からもFINを受けた状態。
    • TIME_WAIT
      • CLOSING状態でACKを受けた状態。Active Close後のタイムアウト待ち状態。同じシーケンス番号やポート番号などを再利用しないように、パケットが受信しきるのを待つ。
    • CLOSE_WAIT
      • Passive Closeの状態。送信側にFINを送信したあとの状態。
    • LAST_ACK
      • CLOSE_WAITで送信したFINに対するACKを待つ状態。
    • CLOSED
      • 未使用もしくは使用済みでTCB(Transmission Control Block)の状態。netstatで表示されない。
  • 状態遷移図

    tcp.gif

ここから転載

TCPの性能を実現する特徴

  • シーケンス番号
    • シーケンス番号によって、分割されたパケットのどの部分(パケット)まで受信したかを指し示している。
  • 再送機能
    • 送信に対するACKが返ってこない場合に、送信側が再度同じパケットを送信する機能。全く同じパケットを再送することによってどこでパケットが消失してもデータの整合性を担保できる
  • フロー制御/ウィンドウ制御
    • スライディングウィンドウ方式:パケット送信に対するACKの受信を待つことなく、連続してパケットを送信し、待ち時間を短縮する技術。

GoogleのBBRについて

https://cloudplatform.googleblog.com/2017/07/TCP-BBR-congestion-control-comes-to-GCP-your-Internet-just-got-faster.html
https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwiCs5mqqvjVAhVFjpQKHSZ7B_gQFggvMAE&url=http%3A%2F%2Fwww.publickey1.jp%2Fblog%2F17%2Fgoogletcptcp_bbrgoogle_cloud.html&usg=AFQjCNE03mObETnRbVJQD_YzVXtzBoa1IQ

参考

RFC793
TCPの状態遷移
信頼性のある通信を実現するTCPプロトコル

16
29
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
16
29