LoginSignup
2
2

More than 5 years have passed since last update.

TCPの信頼性について

Posted at

■初めに

TCPはOSI参照モデルのトランスポート層にあたるプロトコルであり、他にはUDPなどがある。

  • TCP.... 送信したデータを相手が受け取った事を確認する仕組みがある。
  • UDP.... 送信したデータを相手が受け取ったかは確認しない。

今回はTCPの信頼性の要と言える機能として、確認応答と再送制御に関して考察してみました。

■確認応答とはデータの到達確認

正常時の通信フローが下記になります。

【ホストA】      【ホストB】
 データ送信→データ受信       
 確認応答受信←確認応答送信

データを受信した、ホストBは確認応答をホストAへ送信する。
ホストBから送信された、確認応答をホストAが受信する。

確認応答の事を、Ackパケットとも言う。

■再送制御

送信中のデータが喪失した場合や、確認応答が喪失した場合には、再送処理をする仕組みがある。

【データ喪失パターン】

【ホストA】      【ホストB】
 データ送信→喪失.....

 一定時間待っても確認応答が来ない.....
 
 データ再送→データ受信
 確認応答受信←確認応答送信

一定時間を待ってもホストBから確認応答が来ない場合はホストAがデータを再送する。

【確認応答喪失パターン】

【ホストA】      【ホストB】
 データ送信→データ受信
       喪失←確認応答送信

 ホストBはデータを受信していて
 確認応答も送信しているが、ホストAから見ると
 データが届いてないのか、データが届いてないのか確認応答が来てないのかはわからない。

 一定時間を待ってもホストBから
 確認応答が来ない場合はデータを再送する。

 データ再送→データ受信
 確認応答受信←確認応答送信

再送されたデータに関しては受信済みの為、厳密には下記の様な挙動となる。
受信済みのデータの識別にはシーケンス番号を使用している。

【ホストA】      【ホストB】
  データ送信(シーケンス番号:1)→データ受信
  喪失←応答確認送信

  データ再送(シーケンス番号:1)→既に受信しているので、破棄
  確認応答受信←確認応答送信

■まとめ

簡単ではありますが、確認応答と再送制御に関してまとめました。

2
2
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
2
2