0

I am working through Kurose's book as part of a class and this particular exercise involves submitting a .txt file to the server and capturing this transfer and the server's response. In one exercise I have to choose the 1st 6 packets my pc sends, starting with the one that contains the POST. In my capture file this means frames 71 to 76.

I have to find the ACKs to these packets to get the RTT. I could find all the ACKs, except for the segment in frame 76.

Searching "This is an ACK to the segment in frame: 76" yields no results, unlike with the other packets.

Something weird happens between the ACKs to the segments in frame 75 and 77. This is segment 75 and its ACK.

enter image description here

enter image description here

If I understand right, the ACK number is the sequence number of the next packet in the sequence to the one ACKed. If the seq number of segment 75 is 5841, 76's is 7301 and 77's is 8761, then the ACK number of the packet that ACKs 75 should be 7301 and 76's should be 8761. However when I try to search tcp.ack == 8761 I get nothing.

There's only been a couple of packets that have been retransmitted and this particular one doesn't seem to be one of them. The server replied with OK.

The capture file: https://filebin.net/2thbjvqjymxurg89

Why is this happening?

1 Answers1

1

The acknowledgement number in a segment with the ACK flag acknowledges everything prior to the acknowledgement number. There does not need to a an ACK segment corresponding to each segment sent. You can have sporadic acknowledgements that encompass several segments.

If the receive window is large enough that multiple segments can be sent, then acknowledgements need only come for multiple segments sent. For example, if the receive window is large enough for 10 segments, you could have an acknowledgment after every sent segment, or every tenth segment on any combination in between, and it does not need to be regular, such as after four segments, then seven more, then 2 more, etc.

Ron Maupin
  • 3,243
  • 1
  • 12
  • 20
  • In that case the packet that ACKs the packet on frame 77 also ACKs the one in frame 76 and if yes, how do I know, and is the RTT of this ACK packet referring to the last packet ACKed? If yes, is this packet the one from frame 77? – Segmentation fault May 11 '21 at 00:27
  • The acknowledgements are on the segments (TCP) not the packets (IP). Yes, an acknowledgement of the segment in frame 77 acknowledges _everything_ prior to the acknowledgement number, including ant acknowledged or unacknowledged segment containing data prior to the acknowledgement number. You should study [RFC 793](https://datatracker.ietf.org/doc/html/rfc793). – Ron Maupin May 11 '21 at 00:34