Hi all, I'm looking at the RFC, and I am having trouble understanding this example in 7.5.6: >>>>> The final example demonstrates recovery from a half-open connection. DCCP A DCCP B (GSS=1,GSR=10) (GSS=10,GSR=1) (Crash) CLOSED OPEN REQUEST --> DCCP-Request(seq 400) --> ??? !! <-- DCCP-Sync(seq 11, ack 400) <-- OPEN REQUEST --> DCCP-Reset(seq 401, ack 11) --> (Abort) REQUEST CLOSED REQUEST --> DCCP-Request(seq 402) --> ... >>>>> The RFC mandates that sequence invalid packets (in this case, the Request), do NOT update GSR, but cause a Sync asking about that same sequence number. In this case, wouldn't "DCCP B" ignore the reset, because it has a bad sequence number? Additionally, won't the Reset cause "DCCP B" to go into TIMEWAIT, and not CLOSED? The best flow I can see for this is the following: DCCP A DCCP B (GSS=1,GSR=10) (GSS=10,GSR=1) (Crash) CLOSED OPEN REQUEST --> DCCP-Request(seq 400) --> ??? !! <-- DCCP-Sync(seq 11, ack 400) <-- OPEN REQUEST --> DCCP-Reset(seq 401, ack 11) --> ??? (GSR=1) ===== as mandated for bad sequence Resets, a Sync is sent with the real GSR ==== !! <-- DCCP-Sync(seq 11, ack 1) <-- OPEN ackno out of range; ignore ... Now what? Am I misunderstanding something? - Oded