Skip to content

Commit b38ee4e

Browse files
committed
Updates for new RFC.
1 parent f05d9d5 commit b38ee4e

File tree

1 file changed

+238
-11
lines changed

1 file changed

+238
-11
lines changed

doc/rfc-new.txt

Lines changed: 238 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ Obsoletes: 165, 636, 6529 J. Postel
99

1010
Abstract
1111

12+
| The Internet community is challenged by ever changing protocols of
13+
| increasing complexity. The authors suggest the community might be
14+
| better served by switching to a protocol that is simple and
15+
| unlikely to ever change again. Thus we present what is believed to
16+
| be the last and final edition of the ARPA Network Host/Host
17+
| Protocol.
18+
1219
This document reproduces the Host/Host Protocol developed by the ARPA
1320
Network Working Group during 1969, 1970, and 1971. It describes a
1421
protocol used to manage communication between processes residing on
@@ -140,6 +147,8 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
140147
curious gap in the historical record. It is to fill that gap that
141148
this RFC is offered.
142149

150+
| Maybe add more here.
151+
143152
In 1972, most ARPA Network documents, RFCs and others, were prepared
144153
and distributed in hard copy. The Host/Host Protocol document was
145154
typed on a typewriter (probably an IBM Selectric), which had
@@ -304,6 +313,16 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
304313
In addition to the above, several minor editorial changes have been
305314
made.
306315

316+
| This document supersedes RFC 6529 of the same title. Principal
317+
| differences between the documents include:
318+
|
319+
| - clarifies non-control messages also have the header,
320+
| - a brief description of the Initial Connection Protocol
321+
| from RFC 165,
322+
| - addition of the RAR, RAS, RAP, NXR, and NXS opcodes from
323+
| RFC 636,
324+
| - assigned link numbers from RFC 1060.
325+
307326
Although there are many individuals associated with the network who
308327
are knowledgeable about protocol issues, individuals with questions
309328
pertaining to Network protocols should initially contact one of the
@@ -404,7 +423,7 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
404423
through wideband communications lines supplied by the telephone
405424
company. Each IMP is programmed to store and forward messages to the
406425
neighboring IMPs in the network. During a typical operation, a Host
407-
passes a message to its local IMP; the first 32 bits of this message
426+
| passes a message to its local IMP; the first 32 or 96 bits of this message
408427
include the "network address" of a destination Host. The message is
409428
passed from IMP to IMP through the Network until it finally arrives
410429
at the destination IMP, which in turn passes it along to the
@@ -451,6 +470,8 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
451470
1) An _Initial_Connection_Protocol_ (ICP) which provides a convenient
452471
standard method for several processes to gain simultaneous access
453472
to some specific process (such as the "logger") at another Host.
473+
| This protocol has since been adopted as the method to initiate
474+
| a communication path for all application protocols.
454475

455476
2) A _Telecommunication_Network_ (TELNET) protocol which provides for
456477
the "mapping" of an arbitrary keyboard-printer terminal into a
@@ -478,7 +499,9 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
478499
over Hosts which provide batch processing facilities.
479500

480501
The remainder of this document describes and specifies the Host/Host,
481-
or second level, protocol as formulated by the Network Working Group.
502+
or second level, protocol as formulated by the Network Working Group,
503+
| as well as the Initial Connection Protocol that is now integral to the
504+
| Host/Host protocol.
482505

483506

484507

@@ -622,7 +645,8 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
622645
that byte size, then the outer layer of protocol will not be
623646
implementable on that Host.
624647

625-
The IMP sub-network requires that the first 32 bits of each message
648+
| The original protocol on the IMP sub-network requires that the first
649+
32 bits of each message
626650
(called the leader) contain addressing information, including
627651
destination Host address and link number. The second level protocol
628652
extends the required information at the beginning of each message to
@@ -631,9 +655,15 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
631655
conveniently with 8-bit units of data or have word lengths of 18 or
632656
36 bits; 72 is the least common multiple of these lengths. Thus, the
633657
length chosen for the message header should reduce bit-shifting
634-
problems for many Hosts. In addition to the leader, the message
658+
problems for many Hosts.
659+
| In 1976, the leader was extended to 96 bits, and the host was
660+
| allowed to specify some number of 16-bit padding words between the
661+
| leader and the message data portion.
662+
In addition to the leader, the message
635663
header includes a field giving the byte size used in the message, a
636664
field giving the number of bytes in the message, and "filler" fields.
665+
| Note that the message header applies to both control messages and
666+
| regular messages containing data.
637667
The format of the message header is fully described in Section IV.
638668

639669
Another major concern of the second level protocol is a method for
@@ -804,6 +834,68 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
804834
_queueing_facility._ This is not, however, an absolute requirement
805835
of the protocol.
806836

837+
| _Initial Connection Protocol_
838+
|
839+
| RFC 165 specifies a procol that allows a server to listen to some
840+
| particular well-known socket number, and then establish two
841+
| connections for full-duplex communication between the server and
842+
| user processes. To do this, first a temporary simplex connection
843+
| is opened for the server to transfer a new socket number to the
844+
| user. Then this socket is the basis for opening two new
845+
| connections between the two processes, and the first connection is
846+
| closed.
847+
|
848+
| Below, the well-known socket is called L. The temporary connection
849+
| is initiated by the user from socket U. The new socket number is
850+
| S, and the full-duplex connections are between S and U+3, and S+1
851+
| and U+2.
852+
853+
Server User
854+
855+
S1: listening on socket L. U1: RTS (U, L, _l1_)
856+
857+
S2: Wait for match. U2: Wait for match.
858+
859+
S3: STR (L, U, _s1_)
860+
861+
S4: Wait for allocation. U3: All (_l1_, _m1_, _b1_)
862+
863+
S5: Send data S in_s1_ bit U4: Receive data S in s1 bit bytes.
864+
bytes as allowed by _s1_ bit bytes.
865+
allocation m1_, _b1_).
866+
867+
S6: CLS (L, U) U5: CLS (U, L)
868+
869+
S7: RTS (S, U+3, _l2_) U6: STR (U+3, S, _s2_)
870+
871+
S8: STR (S+1, U+2, _s3_) U7: RTS (U+2, S+1, _l3_)
872+
873+
The labels here imply no ordering except that ordering required by
874+
the Host-Host Protocol. Note that steps S7 and S8 can be reversed as
875+
can U6 and U7. Also, notice that at any time after S2 the server
876+
could initiate steps S7 and S8 in parallel with steps S3 through S6,
877+
and that at any time after U4 the user could initiate steps U6 and U7
878+
in parallel with step U5.
879+
880+
Following the above, exchanges ALL commands would be exchanged and
881+
data transfers could begin.
882+
883+
At this level the parameters of the above ICP family are L, _m1_,
884+
_b1_, _s1_, _s2_, _s3_, _l1_, _l2_, _l3_.
885+
886+
L is a well known socket number and will be specified for each type
887+
of service.
888+
889+
m1 and b1 are allocation quantities for the transfer of a socket
890+
number.
891+
892+
_m1_ is specified to be 1.
893+
_b1_ is specified to be 32.
894+
_s1_, _s2_, and _s3_ are byte sizes. Only _s1_ is to be specified
895+
as _s2_ and _s3_ are to be left to the process involved.
896+
_s1_ is specified to be 32.
897+
898+
_l1_, _l2_, and _l3_ are links and are not specified.
807899

808900
Connection Termination
809901
======================
@@ -932,7 +1024,10 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
9321024
============
9331025

9341026
After a connection is established, the sending Host sends messages
935-
over the agreed-upon link to the receiving Host. The receiving NCP
1027+
over the agreed-upon link to the receiving Host.
1028+
| Those messages use the Host/Host header, and the byte size field must
1029+
| match the one from the STR used to set up the link.
1030+
The receiving NCP
9361031
accepts messages from its IMP and queues them for its various
9371032
processes. Since it may happen that the messages arrive faster than
9381033
they can be processed, some mechanism is required which permits the
@@ -1239,11 +1334,12 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
12391334
==============
12401335

12411336
All Host-to-Host messages (i.e., messages of type zero) shall have a
1242-
header 72 bits long consisting of the following fields (see Figure
1243-
1):
1337+
| header that 72 bits long if 32-bit leaders are in use, or 136 bits
1338+
| plus padding if 96-bit leaders are in use.
1339+
The header consists of the following fields (see Figure 1):
12441340

1245-
Bits 1-32 Leader - The contents of this field must be
1246-
constructed according to the specifications contained
1341+
Bits 1-32, Leader - The contents of this field must be
1342+
| or 1-96 constructed according to the specifications contained
12471343
in BBN Report Number 1822.
12481344

12491345
Bits 33-40 Field M1 - Must be zero.
@@ -1357,12 +1453,38 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
13571453

13581454
2-71 Available for connections
13591455

1360-
1, 72-190 Reserved - not for current use
1456+
1, 72-149 Reserved - not for current use
1457+
1458+
| 150 Xerox NS IDP
1459+
|
1460+
| 151 Unassigned
1461+
|
1462+
| 152 PARC Universal Protocol
1463+
|
1464+
| 153 TIP Status Reporting
1465+
|
1466+
| 154 TIP Accounting
1467+
|
1468+
| 155 Internet Protocol [regular]
1469+
|
1470+
| 156-158 Internet Protocol [experimental]
1471+
|
1472+
| 159 Figleaf Link
1473+
|
1474+
| 160 Blacker Local Network Protocol
1475+
|
1476+
| 161-190 Unassigned
13611477

13621478
191 To be used only for measurement work under the
13631479
direction of the Network Measurement Center at UCLA
13641480

1365-
192-255 Available for private experimental use.
1481+
| 192-194 Unassigned
1482+
|
1483+
| 195 ISO-IP
1484+
1485+
196-247 Available for private experimental use.
1486+
1487+
| 248-255 Network Maintenance
13661488

13671489

13681490
Control Messages
@@ -1543,6 +1665,60 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
15431665
allocations in response to a GVB command. This command may be sent
15441666
only while the connection is established.
15451667

1668+
| RAR - Reset allocation by receiver
1669+
| ==================================
1670+
|
1671+
| 8 8
1672+
| +------------+
1673+
| | RAR | link |
1674+
| +------------+
1675+
|
1676+
| Sent in reply to RAS to acknowledge allocations have been reset.
1677+
| The RAR command is sent from the Host receiving on "link" to the
1678+
| Host sending on "link" in response to an RAS. It marks the
1679+
| completion of the connection resynchronization. When the RAR is
1680+
| returned the connection is in the known state of having no messages
1681+
| in transit in either direction and the allocations are zero. The
1682+
| receiving Host may then start afresh with a new allocation and
1683+
| normal message transmission can proceed. Since the RAR may be sent
1684+
| ONLY in response to an RAS, there are no races in the
1685+
| resynchronization. All of the initiative lies with the sending
1686+
| Host.
1687+
|
1688+
| RAS - Reset allocation by sender
1689+
| ================================
1690+
|
1691+
| 8 8
1692+
| +------------+
1693+
| | RAS | link |
1694+
| +------------+
1695+
|
1696+
| Tells the receiver to clear allocations for the specified link.
1697+
| The RAS command is sent from the Host sending on "link" to the Host
1698+
| receiving on "link". This command may be sent whenever the sending
1699+
| Host desires to resynch the status information associated with the
1700+
| connection (and doesn't have a message in transit through the
1701+
| network).
1702+
|
1703+
| RAP - Reset allocation please
1704+
| =============================
1705+
|
1706+
| 8 8
1707+
| +------------+
1708+
| | RAP | link |
1709+
| +------------+
1710+
|
1711+
| Sent from receiver to sender to ask it to send an RAS. If the
1712+
| receiving Host detects an anomalous situation, the RAP command is
1713+
| provided. It constitutes a "suggestion" on the part of the
1714+
| receiving Host that the sending Host resynchronize; the sending
1715+
| Host is free to honor it or not as it sees fit. Since there is no
1716+
| obligatory response to a RAP, the receiving Host may send them as
1717+
| frequently as it chooses and no harm can occur. For example, if a
1718+
| message in excess of the allocate arrives, the receiving Host might
1719+
| send RAPs every few seconds until the sending Host replies with no
1720+
| fears of races if one or more RAPs pass a RAS in the network.
1721+
15461722
INR - Interrupt by receiver
15471723
===========================
15481724

@@ -1690,6 +1866,28 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
16901866
field are the message header followed by the first eight bits
16911867
of text (if any) or zeros.
16921868

1869+
| NXR - Non-existent receive link
1870+
| ===============================
1871+
|
1872+
| 8 8
1873+
| +------------+
1874+
| | NXR | link |
1875+
| +------------+
1876+
|
1877+
| Tells sender the link it used is non-existant. On receipt of an
1878+
| NXR, the sender should close the connection.
1879+
|
1880+
| NXS - Non-existent send link
1881+
| ============================
1882+
|
1883+
| 8 8
1884+
| +------------+
1885+
| | NXS | link |
1886+
| +------------+
1887+
|
1888+
| Tells receiver the link it used is non-existant. On receipt of an
1889+
| NXS, the receiver should close the connection.
1890+
16931891
Opcode Assignment
16941892
=================
16951893

@@ -1710,6 +1908,11 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
17101908
ERR = 11
17111909
RST = 12
17121910
RRP = 13
1911+
RAR = 14
1912+
RAS = 15
1913+
RAP = 16
1914+
NXR = 17
1915+
NXS = 18
17131916

17141917

17151918
Control Command Summary
@@ -1803,6 +2006,30 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
18032006
| RRP |
18042007
+-----+
18052008

2009+
| 8 8
2010+
| +------------+
2011+
| | RAR | link |
2012+
| +------------+
2013+
|
2014+
| 8 8
2015+
| +------------+
2016+
| | RAS | link |
2017+
| +------------+
2018+
|
2019+
| 8 8
2020+
| +------------+
2021+
| | RAP | link |
2022+
| +------------+
2023+
|
2024+
| 8 8
2025+
| +------------+
2026+
| | NXR | link |
2027+
| +------------+
2028+
|
2029+
| 8 8
2030+
| +------------+
2031+
| | NXS | link |
2032+
| +------------+
18062033

18072034

18082035

0 commit comments

Comments
 (0)