TCP では信頼性を向上させるために以下の 3 つの技術を採用しています。
前回、「仮想コネクションの確立」について解説しましたので、
今回は「Ack によるコネクションの確立」について書いていきます。
仮想コネクションが確立し、実際にデータのやり取りをしているときも、
データの到達性を高めるために、そのデータが宛先にちゃんと
届いているかどうかを常に確認しています。
どのように確認しているのかといいますと、3 ウェイハンドシェイクに
よるやり取りでも出てきた、Ack パケットというパケットを利用します。
受信側ノードは、送信側ノードからデータを受け取ると、
Ack パケットを返します。
送信側ノードは Ack パケットを受信することで、データがちゃんと
相手に届いた事を認識することが出来ます。
このように送信したデータごとに Ack パケットを送信する事で、
すべてのデータが送られることを確認する事ができます。
さて、ここでもし Ack パケットが返ってこなかったらどうなるでしょう?
TCP の動作では、データ送信後に一定時間経っても Ack パケットを
受信出来なかった場合、同じデータをもう一度送信します。
再送後に Ack を受信すれば次のデータを送る動作に移るわけですが、
もしそれでも Ack を受信出来ない場合は、再送が繰り返されます。
そして、あらかじめ決められた回数や時間が経過しても Ack を受信出来ない
場合は、TCP コネクションが切れたと判断し、上位のアプリケーションに
エラー通知を行います。
再送処理を何回まで行うか、どれぐらいの時間までガマンするかといった値は、
プロトコルとして決まられているわけではなく、 TCP/IP の実装に
依存しています。
また、再送が繰り返される場合は、途中の経路が混雑している場合が
考えられるために、再送を行うたびに再送する時間を増やしていきます。
たとえば、最初の再送が 2 秒後、次の再送が 4 秒後、その次は 8 秒後、
といった具合に増やしていき、最大で 64 秒まで増えて行きます。
トランスポート層(レイヤ 4)の役割
トランスポート層(レイヤ 4)の役割について
ポート番号
ポート番号について
コネクションとコネクションレス
コネクションとコネクションレスについて
UDP
UDPについて
TCP ヘッダ
TCP ヘッダについて
仮想コネクションの確立
TCP ヘッダについて
ACK による到達確認
TCP ヘッダについて
ウインドウサイズを利用したフロー制御
TCP ヘッダについて
TCPウインドウ制御
TCPウインドウ制御とスライディング・ウインドウについて
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓