TCPの信頼性の高い通信を実現するための制御

TCPの信頼性の高い通信を実現するための制御

信頼性の高い通信を確保する(データの分割をしながらも、確実にデータを送るため)ためにTCPでは以下のような制御を取り入れています。

順序制御

分割したデータを元のデータに組み立てる制御方式

再送制御

データの未達を防ぐための制御方式

ウィンドウ制御

順序制御や再送制御によりデータの到達が遅くならないよう、TCP通信を効率的にするための制御方式

フロー制御

ウィンドウ制御に対し負荷の重い受信を防ぐための制御方式

輻輳制御

送信サイズを徐々に増やしていくことで輻輳を防ぐための制御

順序制御

分割したデータを元のデータに組み立てる制御

一度に送れるデータのサイズには上限があるため、
TCPでは一度にデータを全部送らず、分割して送る仕組みになっています。

しかし、宛先がデータを受け取る際には、分割したデータが元の状態に戻っている必要があり、
分割したデータを元の状態に戻すための制御を「順序制御」と呼びます。

TCPを介して送られるデータには当然「TCPヘッダ」が付与されており、
TCPヘッダには「分割データの順番」を示す「シーケンス番号」が含まれています。

シーケンス番号を元にデータを(分割前の)元の状態に戻します。

再送制御

データの未達を防ぐための制御

TCPにおけるデータ通信では、 「データの到達を知らせる」ために
データが宛先に届く度に宛先から送信元へ「ACK(確認応答)」が行われます。

一定時間、このACKが宛先から届かない場合、無事にデータが届かなかったと考えることができ、
データを再度送信する仕組みになっています。

この一連の再送までの仕組みを「再送制御」と呼びます。

ウィンドウ制御

TCP通信を効率的にするための制御

TCPにおけるデータ通信では、データが宛先に届く度に、
「データの到達を知らせる」ために
宛先から送信元へACK(確認応答)が行われますが、

データを分割して送る度に、確認応答の受け取りを
待っていたら、通信が非効率になってしまいます。
そこで、TCPでは確認応答を待たずに、一定の上限を
超えない範囲で、複数の分割して送るデータを
まとめて送ることができます。

確認応答を待たずに送ることができるデータのサイズを
「ウィンドウサイズ」と呼び、この送ることができる仕組みを
「ウィンドウ制御」と呼びます。

フロー制御

「ウィンドウ制御」では、ACKを待たずにデータを送ることができましたが、
多数の送信者が一斉にデータを送った場合、受信者がデータを処理しきれない場合があります。

そのため、受信者側が受信状況を踏まえ、ウィンドウサイズを小さくしたり、大きくしたり、
適宜調整することができ、変更の度にその旨を送信者に伝えます。

このような処理を「フロー制御」と呼びます。

輻輳制御(スロースタート)

ウィンドウ制御に対し負荷の重い受信を防ぐための制御②

受信者のウィンドウサイズを超えたサイズでデータを送ると、
「輻輳(データの衝突により通信が混み合う状況)」が発生する可能性があります。

そのため、送信者側で受信者の受信状況に考慮して、
一度にまとめて送る送信データのサイズを徐々に増やしていくように調整することを
「輻輳制御(スロースタート)」と呼びます。


NEXT>> ネットワーク基礎Ⅱ