勉強前イメージ
コネクション型のプロトコル
調査
TCP とは
Transmission Control Protocol の略で、トランスポート層で伝送を管理するプロトコルです。
1対1の通信で、相手に都度確認を取りながら行う信頼性のある通信です。
TCPの特徴
コネクション管理
- コネクションの確立
TCPは全二重の通信のプロトコルなので、
送信・受信の双方から接続の確立を行う必要があります。
コネクションの確立としては以下になります。
- 送信側→受信側 に コネクションの確立要求(SYN) を送ります。
- 受信側→送信側 に コネクションの確立要求(SYN) と 確認応答(ACK) を送ります。
- 送信側→受信側 に 確認応答(ACK) を送ります。
この流れを 3ウェイハンドシェイク
と呼びます。
- コネクションの切断
接続の時同様、送信側・受信側の双方から切断を行うことが必要です。
コネクションの切断は以下になります。
- 送信側→受信側 に コネクションの終了要求(FIN) を送ります。
- 受信側→送信側 に 確認応答(ACK) を送ります。
- 受信側→送信側 に コネクションの終了要求(FIN) を送ります。
- 送信側→受信側 に 確認応答(ACK) を送ります。
片方ずつコネクションを切断するということで ハーフクローズ
と呼ばれます。
フロー制御・ウィンドウ制御
- フロー制御
フローとは流量という意味で、流量の制御になります。
データはバッファに一旦置いてからアプリケーションに渡しますが、
多い量を渡しすぎると取りこぼすので、
受信側は送信側に受信できるデータサイズを通知することで、送信側が送信量を調整できます。
- ウィンドウ制御
TCPの送信側で、1回で転送できるデータ量を表す ウィンドウサイズ
が定義されています。
ウィンドウの範囲内にあるセグメントは受信側のACKを待たずに送信できます。
ウィンドウサイズは輻輳の状態でアルゴリズムで決められます。
ただ、ウィンドウサイズが受信側より多い場合は受信側の容量を優先します。
輻輳制御・再送制御
- 輻輳制御
大量のデータを送り続けるとパンク状態になってしまいます。
それが輻輳状態になります。
セグメントがなくなったら基本的にはパンク状態と判断し、制御がされます。
- 再送制御
受信側は送信側にデータが到着するとACKします。
しかし、データが到着しないと受信側は送信側にACKを送らないので、パケットが破棄されたと判断して
送信側は再度同様のデータを送ります。
これが再送制御と言います。
勉強後イメージ
コネクションの切断あんまり知らなかった。
お互いにおわりね、って言い合うのか。
あと輻輳制御おもあまり知らなかった。
結構送る量は変化しながら送ってるのか・・・まぁそうか・・・・
行けるとこまで行ってあかんかったら減らすね!ってことかな?