令和6年度 春期 午前Ⅱ 問9
通信プロトコル
TCPに関する問題
ホストAからホストBにTCPを用いてデータを送信するとき,TCPセグメントのシーケンス番号と受信確認番号(肯定応答番号)に関する記述のうち,適切なものはどれか。
- アAがBからの応答を待たずに,続けて送信する場合のシーケンス番号は,直前に送信したTCPセグメントのシーケンス番号と送信データのオクテット数の和である。
- イAは,送信するTCPセグメントのシーケンス番号と受信確認番号を0から1ずつ増加させ,最大値65,535に達すると0に戻す。
- ウBが受信したTCPセグメントにおいて,受信確認番号がシーケンス番号より小さい場合は,そのTCPセグメントはエラー後に再送されたものである。
- エBは,受け取ったTCPセグメントのシーケンス番号を受信確認番号として応答する。
答えと解説を見る
✓ これが正解アAがBからの応答を待たずに,続けて送信する場合のシーケンス番号は,直前に送信したTCPセグメントのシーケンス番号と送信データのオクテット数の和である。
解説
次のシーケンス番号は、直前の番号に送ったオクテット数を足した値です。
TCP のシーケンス番号は、セグメントの個数ではなく、送るデータの1オクテットごとに振られる通し番号です。セグメントのシーケンス番号は、その中のデータの先頭オクテットの番号を表します。たとえば番号1,000から始まるセグメントで500オクテット送ったなら、続けて送る次のセグメントは1,500から始まります。応答を待たずに続けて送る場合でも、この足し算で番号が決まります。受信側は、次に受け取りたいオクテットの番号を受信確認番号として返します。シーケンス番号はオクテット単位で進む、と押さえておけば、ほかの記述の誤りも見抜けます。
ほかの選択肢はなぜ違うのか
- イAは,送信するTCPセグメントのシーケン…:シーケンス番号はオクテット数ずつ進むので、1ずつ増やすわけではありません。また番号の欄は32ビットあり、最大値は65,535ではなく、最初の番号も0とは限らず接続ごとに決めた値から始まります。
- ウBが受信したTCPセグメントにおいて,受…:受信確認番号は相手から受け取ったデータの続きを示す値で、自分が送るデータのシーケンス番号とは別々に数えます。二つの大小を比べても、再送されたものかどうかは判断できません。
- エBは,受け取ったTCPセグメントのシーケ…:受信側が返すのは、受け取ったセグメントのシーケンス番号に、そのデータのオクテット数を足した値です。つまり次に欲しい位置を伝えるので、受け取った番号をそのまま返すという記述は誤りです。
この問題の用語
- TCP相手に届いたかを確かめながら送る、信頼性を重んじた通信の約束事です。ポート番号でアプリを見分け、届かない分は送り直します。
出典:令和6年度 春期 ネットワークスペシャリスト試験 午前Ⅱ 問9
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)