• 締切済み

パケットロスについて

ネットワークの勉強をしています。そこで1つ疑問に思うことがあります。ネットワークではパケットロスが発生しますよね。受信側では受け取ったパケットがトークスパートの最初のパケットであることをどうやって知ることができるのですか?どなたか詳しい方教えてください。

みんなの回答

  • ShaneOMac
  • ベストアンサー率39% (356/898)
回答No.2

TCPの場合はまずコネクションを確立しないといけません。コネクションの始まりについてはフラグ列中の1bitで管理されています。同様にそれに対する応答も適切なフラグを設定して送信しなければなりません。接続要求を意味する最初のパケットには同期フラグ(Synchronize Flag)を設定するためSYNパケットと呼ばれます。SYNパケット以外のTCPパケットをいきなり送っても相手は接続を受け付けないので通信は成立しません。接続要求以降のパケットには確認応答フラグ(Acknowledgment Flag)が設定されます。 そしてその応答用(Acknowledgment)パケットである限りは、確認応答番号(Acknowledgment Number)という番号が添えられます。これは相手から送られたパケットの連続番号(Sequence Number)に受信データバイト数(データオクテット長)を足した数字です。相手から送られるシーケンス番号を元に応答番号を生成するのですから、データ受信側はきちんとパケットを受けない限り確認応答が返せません。なおシーケンス番号はゼロから始まるわけではありません。送信側は確認応答が正しく送られてきた場合に、相手がロスなく受け取ったことを知ることができます。確認が取れない場合は再送します。 パケットヘッダの構成についての解説をどこかで読めば分かると思いますが。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

シーケンス番号を見て判断してるのではないのでしょうか? シーケンス番号が0を最初のパケットというふうに。

参考URL:
http://www.datamagic.co.jp/data/inteinst/async.html