TCP

(2016/09/13〜2016/09/19)
  • トランスポート層のプロトコル

  • Transmission Control Protocol
  • まずコネクションを確立する
  • 3ウェイハンドシェイク

  • 流れ
  • 1. 通信先にSYN(コネクション確立要求)を送る
  • 2. 1に対しACK(確認応答)とSYNを送る
  • 3. 2に対しACKを送る
  • コネクション切断時にもこの3ウェイハンドシェイクを行う
  • MSS

  • コネクション確立時に互いのノードが接続する下位ネットワークのMTUを交換する
  • 小さいMTUに合わせて最大セグメント長, MSSを決める
  • MTUが大きい方がヘッダによるオーバヘッドが減るがMTUを超えるとフラグメント処理が入ってスループットが悪くなる
  • セグメント通信

  • 1セグメントのデータを送る毎にACKを返す
  • データが伝送されたという信頼性を担保する
  • ACKが返信されたなかった場合
  • 一定時間が経ってもACKが返ってこなかったらセグメントの再送処理を行う
  • TCPヘッダに含まれるシーケンス番号でフロー制御を行う
  • このシーケンス番号は乱数生成で初期値が決まる
  • 1になることは無いらしい
  • スライディングウィンドウ
  • 1セグメントで毎回ACKを待つと効率が悪い
  • ウィンドウという概念で一気に複数セグメントを送信し、スループットの向上を図ることができる
  • ウィンドウサイズは動的に変更される
  • ウィンドウサイズ分、複数セグメント送れる
  • スライディングウィンドウだと再送処理が速い
  • 送る際にデータが失われたら伝送が失われる直前のACK番号と同じものを返し続ける
  • 送信ノードは同じACKが3回以上来たら再送処理が必要と検知できる
  • ACKが失われた場合でも再送処理がいらない
  • 1, 2, 4, 5となってても3が届いたことがわかる
  • 3が届いていなければ1, 2, 2, 2,となるはずのため
  • ネットワーク TCP/IP

general(396)