TCP/UDP - ACK による到達確認

 

信頼性を高めるための方法

TCP では信頼性を向上させるために以下の 3 つの技術を採用しています。

  • 相手が通信可能かどうかを確認する機能
    仮想コネクションの確立
  • 相手にパケットが届いたかどうかを確認する機能
    ACK による到達確認
  • 相手の処理能力に合わせてデータサイズを調整する機能
    ウインドウサイズを利用したフロー制御

前回、「仮想コネクションの確立」について解説しましたので、
今回は「Ack によるコネクションの確立」について書いていきます。

 

相手にパケットが届いたかどうかを確認する機能(Ack による到達確認)

仮想コネクションが確立し、実際にデータのやり取りをしているときも、
データの到達性を高めるために、そのデータが宛先にちゃんと
届いているかどうかを常に確認しています。

どのように確認しているのかといいますと、3 ウェイハンドシェイクに
よるやり取りでも出てきた、Ack パケットというパケットを利用します。

受信側ノードは、送信側ノードからデータを受け取ると、
Ack パケットを返します。

送信側ノードは Ack パケットを受信することで、データがちゃんと
相手に届いた事を認識することが出来ます。

 

Ackによる到達確認

 

このように送信したデータごとに Ack パケットを送信する事で、
すべてのデータが送られることを確認する事ができます。

 

さて、ここでもし Ack パケットが返ってこなかったらどうなるでしょう?

TCP の動作では、データ送信後に一定時間経っても Ack パケットを
受信出来なかった場合、同じデータをもう一度送信します。

 

Ackが返ってこなかったら?

 

再送後に Ack を受信すれば次のデータを送る動作に移るわけですが、
もしそれでも Ack を受信出来ない場合は、再送が繰り返されます。

そして、あらかじめ決められた回数や時間が経過しても Ack を受信出来ない
場合は、TCP コネクションが切れたと判断し、上位のアプリケーションに
エラー通知を行います。

再送処理を何回まで行うか、どれぐらいの時間までガマンするかといった値は、
プロトコルとして決まられているわけではなく、 TCP/IP の実装に
依存しています。

また、再送が繰り返される場合は、途中の経路が混雑している場合が
考えられるために、再送を行うたびに再送する時間を増やしていきます。
たとえば、最初の再送が 2 秒後、次の再送が 4 秒後、その次は 8 秒後、
といった具合に増やしていき、最大で 64 秒まで増えて行きます。

 

関連記事

トランスポート層(レイヤ 4)の役割
トランスポート層(レイヤ 4)の役割について

ポート番号
ポート番号について

コネクションとコネクションレス
コネクションとコネクションレスについて

UDP
UDPについて

TCP ヘッダ
TCP ヘッダについて

仮想コネクションの確立
TCP ヘッダについて

ACK による到達確認
TCP ヘッダについて

ウインドウサイズを利用したフロー制御
TCP ヘッダについて

TCPウインドウ制御
TCPウインドウ制御とスライディング・ウインドウについて

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: