【ネットワークスペシャリスト試験 令和6年度 春期 午前Ⅱ 問9】

ネットワークスペシャリスト試験 令和6年度 春期 午前Ⅱ 問9

【出典:ネットワークスペシャリスト試験 令和6年度 春期 午前Ⅱ(一部、加工あり)】

ホストAからホストBにTCPを用いてデータを送信するとき、TCPセグメントのシーケンス番号と受信確認番号(肯定応答番号)に関する記述のうち、適切なものはどれか。

ア AがBからの応答を待たずに、続けて送信する場合のシーケンス番号は、直前に送信したTCPセグメントのシーケンス番号と送信データのオクテット数の和である。
イ Aは、送信するTCPセグメントのシーケンス番号と受信確認番号を0から1ずつ増加させ、最大値65,535に達すると0に戻す。
ウ Bが受信したTCPセグメントにおいて、受信確認番号がシーケンス番号より小さい場合は、そのTCPセグメントはエラー後に再送されたものである。
エ Bは、受け取ったTCPセグメントのシーケンス番号を受信確認番号として応答する。

ア AがBからの応答を待たずに、続けて送信する場合のシーケンス番号は、直前に送信したTCPセグメントのシーケンス番号と送信データのオクテット数の和である。

 シーケンス番号(Sequence Number)受信確認番号(ACK番号、肯定応答番号)は、TCP(Transmission Control Protocol)において信頼性の高いデータ通信を実現するための重要な仕組みです。
 具体的には、データの順序や欠落を管理し、確実にデータを届けるための根幹となる仕組みです。

  • シーケンス番号
    • シーケンス番号は、TCPセグメント内の各バイト(オクテット)に割り当てられる連番
    • 送信側はデータを一定のサイズで分割し、それぞれのセグメントに「このデータの先頭バイトが全体の何番目か」を示すシーケンス番号を付与する。
    • 例えば、最初のセグメントがシーケンス番号1000で100バイト送信された場合、次のセグメントのシーケンス番号は1100(1000+100)となる。
    • シーケンス番号は0や1から始まるとは限らず、セキュリティ上の理由からランダムな値(初期シーケンス番号、ISN)が選ばれる。
  • 受信確認番号(ACK番号、肯定応答番号)
    • 受信確認番号(ACK番号)は、受信側が送信側に「どこまでのデータを正しく受信したか」を伝える番号
    • 具体的には「次に受信したいシーケンス番号」を示す。
    • 例えば、シーケンス番号1000から100バイトを受信した場合、受信側はACK番号1100(1000+100)を送信する。これは「1000番から1099番までのデータは受信済み。次は1100番から送ってほしい」という意味。
    • 送信側はACK番号を受け取ることで、どこまでのデータが相手に届いたかを把握し、必要に応じて未達データの再送制御を行う。
  • シーケンス番号と受信確認番号(ACK番号、肯定応答番号)のやり取りの例
    • 送信側がシーケンス番号1000で100バイトのデータを送信
    • 受信側は100バイト分のデータを受信し、ACK番号1100で応答
    • 送信側はACK番号1100を受け取り、次はシーケンス番号1100からデータを送信
  • シーケンス番号と受信確認番号(ACK番号、肯定応答番号)の仕組みの役割
    • データの順序が保証される(順序制御)。
    • パケットの欠落や重複を検知し、再送制御ができる(信頼性保証)。
    • 通信経路上でパケットが分割・結合されても、正しく元のデータに復元できる。

 他の選択肢については以下のとおりです。

  • 「イ Aは、送信するTCPセグメントのシーケンス番号と受信確認番号を0から1ずつ増加させ、最大値65,535に達すると0に戻す。」
    • シーケンス番号と受信確認番号は32ビット(0〜4,294,967,295)の範囲で、増加幅は送信データのバイト数に応じて変わります(1バイト送れば+1、100バイト送れば+100)。
  • 「ウ Bが受信したTCPセグメントにおいて、受信確認番号がシーケンス番号より小さい場合は、そのTCPセグメントはエラー後に再送されたものである。」
    • 受信確認番号は「次に受け取りたいバイトのシーケンス番号」を示し、通常、相手から受信したシーケンス番号 + データ長(正常に届いた最後のバイトの次)です。
      シーケンス番号と受信確認番号は独立しており、大小関係だけでは再送かどうかを判断できません。
  • 「エ Bは、受け取ったTCPセグメントのシーケンス番号を受信確認番号として応答する。」
    • Bは受信したデータを元に「次に期待するシーケンス番号」を受信確認番号として返します。