When One Message Needs Many Packets
And why TCP loss underneath is invisible above
Step 1 of 2 — understand the idea. Read this first and the packet trace will confirm what you already expect, instead of teaching you two things at once.
What you'll be able to do
- ▸Show a single message split across several segments
- ▸Explain why the split falls where it does
- ▸Explain why a retransmission changes nothing the application sees
✗ Common misunderstanding: One packet carries one HTTP request or response.
Why that's wrong: TCP is a byte stream with no message boundaries. It splits by size and coalesces by buffer state, neither of which knows anything about HTTP.
Correct model: A message is a RANGE in a byte stream. Reassemble the stream first, then find messages in it by their framing.
The packets prove it: The persistent-connection trace carries three complete requests in one packet; the large-response trace splits one response across several.
Watch these fields in the lab: tcp.sequenceNumber
- 1The server writes one response. TCP cuts it into segments — the cut falls wherever the size limit lands, usually mid-word.
- 2One segment is lost. Nobody is told: not the server, not the client, not either application.
- 3Later segments arrive. The client's TCP has them, but they sit after a gap, so it cannot pass them up.
- 4The client keeps acknowledging the last byte before the gap. The server's timer eventually fires (or duplicate acknowledgements give it away sooner).
- 5The server resends the missing segment.
- 6It arrives, the gap closes, and TCP delivers everything at once — the recovered segment and all the bytes that were waiting behind it.
- 7HTTP reads one complete, correct message. It has no way of knowing any of this happened.
Watch these fields in the lab: tcp.sequenceNumber · tcp.ackNumber
✓ Concept check — before you open the packets
These test the idea, not the trace. You should be able to answer them from the explanation above.
Now that you understand the concept, observe how it appears in the packet exchange.
The lab runs a real simulated capture — pause, step, click any packet, and inspect every byte.