TCP-4 prime
Ideas for faster transaction-oriented TCP variants.
Padlipsky, M.A., "TCP-4 prime", RFC 962, DOI 10.17487/RFC0962, November 1985, <https://www.rfc-editor.org/info/rfc962>.
@misc{rfc962,
series = {Request for Comments},
number = 962,
howpublished = {RFC 962},
publisher = {RFC Editor},
doi = {10.17487/RFC0962},
url = {https://www.rfc-editor.org/info/rfc962},
author = {M.A. Padlipsky},
title = {{TCP-4 prime}},
pagetotal = 2,
year = 1985,
month = nov,
} RFC text
Contents
Network Working Group M. A. Padlipsky
Request for Comments: 962 Mitre-Bedford
November 1985
TCP-4 Prime
STATUS OF THIS MEMO
This memo continues the discussion of a possible transaction oriented
transport protocol. This memo does not propose a standard.
Distribution of this memo is unlimited.
DISCUSSION
In response to Bob Braden's call for a transaction oriented
protocol (RFC-955), the following thoughts come to mind:
o The perceived problem is that connection set-up and tear-down
take too long.
o Other aspects of TCP's reliability/robustness approach are
presumably still desirable.
o We have some spare command bits in the TCP header, and I trust
that there's still a version number field.
o So why not add NYS (no-way handshake) and NIF (graceless close)
commands to TCP and leave everything else as was (except for the
version, of course)?
Philosophically, that might be somewhat at variance with "the spirit of
TCP," but pragmatically it ought to do the trick. Some careful crafting
might be required for ISN handling with NYS, but my guess is that if you
have to resend the first/possibly only segment you just pretend you're
all of a sudden in the middle of SN space (initially you start at the
bottom of it) and when it sees the funny ISN the NYS handler knows it
should dequeue anything it might have had pending for (re)transmission
and start fresh, assuming that if anything gets through to the starting
side belatedly it'll get chucked because of being well outside the left
edge of the window, if I'm remembering that part right--and please be
aware that I'm not bothering to confirm recollections because I don't
want to pretend that this is the spec: it's just meant to be the
concept, in TV talk. (On the NYS emitting side, presumably you just
drop right into ack_expected state--or whatever the right name is--after
setting an appropriate bit that'll get you to fiddle the ISN if you take
a timeout.) Maybe you even fiddle the ISNs more elaborately, to allow
for several false starts rather than "two strikes and you're out," and
maybe we take some spurious segment hits if SNs get suitably balled up,
but if you really think handshaking is too expensive then that's the way
the premise crumbles.
TCP-4 Prime
Speaking of graceless closes
AI ELI5
On this page
§1The Transaction Problem in TCP
RFC 962 is a response to RFC 955, which called for a transaction-oriented transport protocol. The author observes that the problem with TCP for transactions is that the standard three-way handshake (SYN, SYN-ACK, ACK) and the four-way close sequence consume time even for workloads that exchange only one request and one response. The RFC does not propose a standard but rather sketches ideas to stimulate discussion.
When you use TCP to ask a quick question and get a quick answer, you have to shake hands before and after. Someone suggests skipping those handshakes.
§2NYS and NIF: Faster Connections
The RFC proposes adding two command bits to TCP: NYS (no-way handshake) to begin a connection without the standard three-way handshake, and NIF (graceless close) to end a connection without the normal four-way teardown. Both would be optional flags in the TCP header. The author notes that spare command bits already exist in the TCP header, and version numbers could be incremented to signal support.
For NYS, the sender must handle the possibility of the receiver not supporting it; the rough idea is to treat a failed NYS as if you are starting in the middle of the TCP sequence number space and adjust accordingly if retransmission is needed.
NYS skips the greeting. NIF skips the goodbye. If one side doesn't get it, you reset and try again with the old way.
§3Caveats and Questions
The author acknowledges that this approach diverges from "the spirit of TCP" and notes that careful design would be needed, especially for handling Initial Sequence Numbers (ISN) in a connection without a handshake. The RFC mentions that sequence number management could be elaborate to avoid spurious segment rejection. The author is explicit that this is conceptual thinking, not a specification, and invites further discussion from the community.
The idea might work, but it's complicated. Sequence numbers need careful handling, and this is just thinking out loud, not a real design.