In TCP, an ACK number of 1000 always means that ______.
2015
In TCP, an ACK number of 1000 always means that ______.
- A.
999 bytes have been successfully received
- B.
1000 bytes have been successfully received
- C.
1001 bytes have been successfully received
- D.
None of the above
Attempted by 340 students.
Show answer & explanation
Correct answer: D
In TCP, the acknowledgement (ACK) number is the next sequence number the receiver expects — a cumulative pointer into the connection's sequence-number space, not a literal count of bytes received. TCP numbers a connection's stream starting from its Initial Sequence Number (ISN), a value each endpoint picks essentially unpredictably per connection (RFC 9293); the SYN itself consumes exactly one sequence number, so the first data byte sits at ISN + 1.
Applying this here: if ACK = 1000, the number of data bytes received so far — counted modulo 2^32, i.e. before the connection's sequence-number space has wrapped around — works out to (1000 − ISN − 1), i.e. 999 − ISN. Because ISN can be any 32-bit value and is not guaranteed to be 0 (or any other fixed number), this expression can equal 999, 1000, 1001, or a value entirely different from all three, depending on the connection.
"999 bytes" is the (modulo-2^32) count only when ISN = 0 for that connection.
"1000 bytes" is the (modulo-2^32) count only when ISN = −1 (mod 2^32) for that connection.
"1001 bytes" is the (modulo-2^32) count only when ISN = −2 (mod 2^32) for that connection.
Since TCP never fixes the ISN to any one of these particular values for every connection, none of the three specific byte counts is entailed by ACK = 1000 in every case — hence the correct choice is that none of the above always holds.
A video solution is available for this question — log in and enroll to watch it.