In TCP, an ACK number of 1000 always means that ______.

2015

In TCP, an ACK number of 1000 always means that ______.

  1. A.

    999 bytes have been successfully received

  2. B.

    1000 bytes have been successfully received

  3. C.

    1001 bytes have been successfully received

  4. 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.

Explore the full course: Isro

Loading lesson…