1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TCPのことちゃんと調べてみた

Posted at

勉強前イメージ

コネクション型のプロトコル

調査

TCP とは

Transmission Control Protocol の略で、トランスポート層で伝送を管理するプロトコルです。
1対1の通信で、相手に都度確認を取りながら行う信頼性のある通信です。

TCPの特徴

コネクション管理

  • コネクションの確立

TCPは全二重の通信のプロトコルなので、
送信・受信の双方から接続の確立を行う必要があります。

コネクションの確立としては以下になります。

  1. 送信側→受信側 に コネクションの確立要求(SYN) を送ります。
  2. 受信側→送信側 に コネクションの確立要求(SYN) と 確認応答(ACK) を送ります。
  3. 送信側→受信側 に 確認応答(ACK) を送ります。

この流れを 3ウェイハンドシェイク と呼びます。

1# TCPのことちゃんと調べてみた - diagrams.net - Google Chrome 2.png

  • コネクションの切断

接続の時同様、送信側・受信側の双方から切断を行うことが必要です。

コネクションの切断は以下になります。

  1. 送信側→受信側 に コネクションの終了要求(FIN) を送ります。
  2. 受信側→送信側 に 確認応答(ACK) を送ります。
  3. 受信側→送信側 に コネクションの終了要求(FIN) を送ります。
  4. 送信側→受信側 に 確認応答(ACK) を送ります。

2# TCPのことちゃんと調べてみた - diagrams.net - Google Chrome 2.png

片方ずつコネクションを切断するということで ハーフクローズ と呼ばれます。

フロー制御・ウィンドウ制御

  • フロー制御

フローとは流量という意味で、流量の制御になります。
データはバッファに一旦置いてからアプリケーションに渡しますが、
多い量を渡しすぎると取りこぼすので、
受信側は送信側に受信できるデータサイズを通知することで、送信側が送信量を調整できます。

  • ウィンドウ制御

TCPの送信側で、1回で転送できるデータ量を表す ウィンドウサイズ が定義されています。
ウィンドウの範囲内にあるセグメントは受信側のACKを待たずに送信できます。
ウィンドウサイズは輻輳の状態でアルゴリズムで決められます。
ただ、ウィンドウサイズが受信側より多い場合は受信側の容量を優先します。

輻輳制御・再送制御

  • 輻輳制御

大量のデータを送り続けるとパンク状態になってしまいます。
それが輻輳状態になります。
セグメントがなくなったら基本的にはパンク状態と判断し、制御がされます。

  • 再送制御

受信側は送信側にデータが到着するとACKします。
しかし、データが到着しないと受信側は送信側にACKを送らないので、パケットが破棄されたと判断して
送信側は再度同様のデータを送ります。
これが再送制御と言います。

勉強後イメージ

コネクションの切断あんまり知らなかった。
お互いにおわりね、って言い合うのか。
あと輻輳制御おもあまり知らなかった。
結構送る量は変化しながら送ってるのか・・・まぁそうか・・・・
行けるとこまで行ってあかんかったら減らすね!ってことかな?

参考

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?