RFC 161
Solution to the race condition in the ICP
A SOLUTION TO THE RACE CONDITION IN THE ICP π
okay bestie, title block tea first βπ
- Network Working Group πΈ
- RFC: 161 β¨
- Author: A. Shoshani, from SDC (NIC #6772) π§
- Date: 19 May 1971 π
- Category/status: not listed in the header π
- Obsoletes / updates: neither is listed in the header π«Ά
So in NWG/RFC #143, someone found a race condition in the ICP π and suggested a fix. The problem is that the Host-Host protocol doesn't say what the NCP should do when it gets more than one STR (or RTS) request for the same socket. So each implementation picks its own vibe. SDC might queue those requests, and UCLA might refuse a request if the socket is already connected. Totally different energy, and it's giving chaos π
The fix? Don't change the Host-Host protocol π ββοΈ. Instead, find a third-level ICP that doesn't care about this issue at all. The idea is that the INITs going from server to user and from user to server (the ones labelled (S5), (S6), (U5) and (U6) on page 3 of RFC #143) should use a different socket, say U+2 and U+3. Here's how the sequences from RFC #143 would look:
Server User
------ ----
(S1) LISTEN(L,32) (U1) INIT(U,L,32)
(S2) [wait for match] (U2)
(S3) SEND(L,S) (U3) RECEIVE(U,S)
(S4) CLOSE(L) (U4) CLOSE(U)
(S5) INIT(S,U+3,Bu) (U5) INIT(U+3,S,Bu)
(S6) INIT(S+1,U+2,Bs) (U6) INIT(U+2,S+1,Bs)
This solution fixes the problems pointed out in RFC #143 without making any assumptions about the NCP implementation π. That's the main slay here. The RFC #143 solution, meanwhile, assumes the NCP can notify a process when a command (e.g., close) comes in, and that part is implementation dependent π₯Ί
bestie, that implementation-dependent bit is the whole reason this fix is needed β¨
[ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Alan Ford 08/99] π¦
π¦ where this page comes from
- ietf: rfc161 1971-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms