[ih] Internet Protocol Implementation Guide

David Finnigan df at macgui.com
Thu Aug 21 06:34:58 PDT 2025


That's close. Let me explain with a scenario. Imagine 3 segments: 1, 2, 
and 3 all fit within a TCP host's receive window. All 3 have controls 
and text. For some reason, the host receives segment 2 first, then 3, 
then 1.

Let's say that segment 2 has an URG flag and pointer. Segment 3 has a 
FIN. And Segment 1 has a window update. All 3 have text too.

 From my understanding of reading the source of some of these TCP 
implementations, they will process these segments in order received, 
out-of-sequence. So the urgent pointer will be updated and the segment 
text queued from segment 2. Then the FIN flag is noted (but not acted 
upon immediately), and text queued from segment 3. And finally, the 
window update is noted and text queued from segment 1.

RFC 793 states that segments in their entirety should be queued and 
processed in sequence, but it looks like some implementors noticed that 
in practice, you can process some controls out of sequence.

I was wondering who was first to notice this possibility?


-David Finnigan


On 21 Aug 2025 8:21 am, Vint Cerf wrote:
> David, it was always believed that segments might have to be decrypted
> out of order if they were encrypted - that was an important design
> criterion for packet cryptography but maybe you are thinking of
> something else? We assumed the reassembly would take place within a
> buffer window so they could be placed in the right part of the buffer
> before assembly was completed and the result delivered to the next
> layer up.
> 
> v
> 
> On Thu, Aug 21, 2025 at 9:09 AM David Finnigan via Internet-history
> <internet-history at elists.isoc.org> wrote:
> 
>> On 20 Aug 2025 4:17 pm, Barbara Denny via Internet-history wrote:
>>> Quite some time ago I sent email out with links to the handbooks
>>> produced by the NIC at SRI. I don't remember if that email also
>>> included the Internet Protocol Implementation Guide.  Sending this
>>> message in case this document wasn't included.
>>> https://apps.dtic.mil/sti/tr/pdf/ADA153624.pdf
>>> The end of the document has an interesting snapshot of the status
>> of
>>> TCP/IP implantations as of June 8, 1982.
>>> barbara
>> 
>> While looking at the sources for some early TCP implementations, I
>> noticed that some of them will process most TCP controls out of
>> order
>> (except FIN), so long as the segment sequence fits within the
>> receive
>> window. Segment text is always kept in sequence to be delivered to
>> the
>> user in correct order, of course.
>> 
>> Who was the one to notice that this was possible, when RFC 793
>> states
>> that segments "are generally queued and processed in sequence number
>> 
>> order" ?


More information about the Internet-history mailing list