RFC 147
Definition of a socket
The Definition of a Socket π
okay bestie, welcome to RFC 147 π¦ it's giving early ARPANET history and I'm obsessed. this one is NIC 6750 and it's RFC 147 from the Network Working Group. it was written by Joel M. Winett at Lincoln Laboratory (360/67), dated 7 May 1971. the category is C1, C3, D1, H. it obsoletes nothing and updates nothing, and it's related to RFC-129 (NIC-5845). no cap this is the main character of socket history π
The Fine Print π
heads up: this material hasn't been reviewed for public release and it's only meant for use with the ARPA network π it should not be quoted or cited in any publication that isn't related to the ARPA network β
MASSACHUSETTS INSTITUTE OF TECHNOLOGY
LINCOLN LABORATORY
TO: Network Socket Committee and Network Community 7 May 1971
FROM: J. M. Winett (LL)
SUBJECT: The Definition of a Socket
What Even Is a Socket? π¦
okay so a socket is basically the unique ID for where information gets sent to or from on the network π¬ it's a 32 bit number, and the rule is: even sockets are receiving sockets, odd sockets are sending sockets π§ a socket is also identified by the host where the sending or receiving processor lives π
Ports, Ports Everywhere πΈ
earlier network papers said a process running under the host's operating system would have access to a bunch of ports. a port could be a physical input or output device, or a logical I/O device supported by system calls to the host's operating system. the logical kind includes:
- a) I/O aimed at a physical device that's being spooled by the operating system
- b) a physical device whose basic characteristics haven't been altered but whose access has been limited and possibly transformed by a mapping algorithm (e.g. device address mapping or cylinder relocation as in virtual mini disks)
- c) access to a file system through a directory and access method maintained by the operating system
- d) a procedure for process to process communications
- e) a procedure for machine to machine communication (such as defined by the network protocol.)
Socket Rules π§
a socket was defined as the identification of a port for machine to machine communication through the ARPA network π°οΈ sockets allocated to each host must be uniquely associated with a known process or be undefined. some sockets have to be universally known and tied to a known process running a specified protocol (e.g. a logger socket, RJE socket, or file transfer socket) π other sockets might not be universally known, and are instead given in a transmission over a universally known socket (e.g. the socket pair specified by the transmission over the logger socket under the Initial Connection Protocol (ICP)). either way, communication over the network goes from one socket to another socket, each one identified with a process running at a known host. slay π
The Transparency Question π€
the big question is whether socket names must be known to users of network programs, or whether the specification of sockets can be made transparent to the user. also, should the socket a process used at one time be the same socket that same process uses later for the same purpose? if sockets aren't transparent to the user, then the sockets used must not depend on the order in which network connections are made π
page break alert π the original repeats its little page header here: Network Socket Committee and Network Community 7 May 1971
Accounting Vibes πΈ
the definition of a socket is also related to the accounting procedures for network usage. Network Control Programs (NCPs) should log each connection made, and record the time the connection was made, the time it was closed, the number of messages and number of bits transmitted over the connection, the sending and receiving hosts, and the sockets at the sending host and receiving host that took part in the connection. for those sockets to be meaningful, they should be identifiable with the user, account, or process name each socket is associated with π
Users Who Travel π
it's been suggested that the sockets a network user uses be identified with that user no matter which host they used for network communications. users would be registered at some host and be identified as a user from that host, even if they used the system as a second host to communicate with the system at a third host. main character energy for sure π
The 32-Bit Recipe π
to fit all of those requirements inside the name space of a 32 bit socket, the following procedure is suggested β¨ it's been implemented with the NCP on the Lincoln Laboratory 360/67 system and is used by all processes making use of network facilities. a 32 bit socket is divided into:
- an 8 bit "home" field
- a 16 bit "user" field
- an 8 bit "tag" field
the tag is made of a 7 bit "plug" and a one bit "polarity", where a "0" polarity means receive socket and a "1" polarity means send socket. so a user on one host system can run processes with up to 128 send sockets and 128 receive sockets π this allows for 256 hosts and 65,536 users per host π₯
the only difficulty is mapping user or process identifiers at a host into a 16 bit user number. this may be done through a table lookup, possibly using a hash coding technique. though many systems have a unique run time index associated with each process, if that index were used as the user number, the user number wouldn't be the same each time the process was used for network activity π what's required is a unique mapping from a process identifier (usually a character string) into a 16 bit binary number π«Ά
The Logger Socket Example π§
the sockets used for facilities following a common network protocol, such as the ICP, should also follow this socket definition. so the logger socket at the Lincoln Laboratory 360/67 would be, and is, x'0A0000 01, ', i.e. home 10, user 0, and tag 1 πΈ
Wrap-Up π
this procedure for defining sockets enables an accounting procedure for identifying users of network facilities and for measuring network usage. literally iconic, periodt π
the end β¨
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by BBN Corp. under the ]
[ direction of Alex McKenzie. 12/96 ]
π¦ where this page comes from
- ietf: rfc147 1971-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms