@@ -9,6 +9,13 @@ Obsoletes: 165, 636, 6529 J. Postel
9
9
10
10
Abstract
11
11
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
+
12
19
This document reproduces the Host/Host Protocol developed by the ARPA
13
20
Network Working Group during 1969, 1970, and 1971. It describes a
14
21
protocol used to manage communication between processes residing on
@@ -304,6 +311,15 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
304
311
In addition to the above, several minor editorial changes have been
305
312
made.
306
313
314
+ | This document supersedes RFC 6529 of the same title. Principal
315
+ | differences between the documents include:
316
+ |
317
+ | - clarifies non-control messages also have the header,
318
+ | - a brief description of the Initial Connection Protocol
319
+ | from RFC 165,
320
+ | - addition of the RAR, RAS, RAP, NXR, and NXS opcodes from
321
+ | RFC 636.
322
+
307
323
Although there are many individuals associated with the network who
308
324
are knowledgeable about protocol issues, individuals with questions
309
325
pertaining to Network protocols should initially contact one of the
@@ -622,7 +638,8 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
622
638
that byte size, then the outer layer of protocol will not be
623
639
implementable on that Host.
624
640
625
- The IMP sub-network requires that the first 32 bits of each message
641
+ | The original protocol on the IMP sub-network requires that the first
642
+ 32 bits of each message
626
643
(called the leader) contain addressing information, including
627
644
destination Host address and link number. The second level protocol
628
645
extends the required information at the beginning of each message to
@@ -631,9 +648,15 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
631
648
conveniently with 8-bit units of data or have word lengths of 18 or
632
649
36 bits; 72 is the least common multiple of these lengths. Thus, the
633
650
length chosen for the message header should reduce bit-shifting
634
- problems for many Hosts. In addition to the leader, the message
651
+ problems for many Hosts.
652
+ | In 1976, the leader was extended to 96 bits, and the host was
653
+ | allowed to specify some number of 16-bit padding words between the
654
+ | leader and the message data portion.
655
+ In addition to the leader, the message
635
656
header includes a field giving the byte size used in the message, a
636
657
field giving the number of bytes in the message, and "filler" fields.
658
+ | Note that the message header applies to both control messages and
659
+ | regular messages containing data.
637
660
The format of the message header is fully described in Section IV.
638
661
639
662
Another major concern of the second level protocol is a method for
@@ -804,6 +827,68 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
804
827
_queueing_facility._ This is not, however, an absolute requirement
805
828
of the protocol.
806
829
830
+ | _Initial Connection Protocol_
831
+ |
832
+ | RFC 165 specifies a procol that allows a server to listen to some
833
+ | particular well-known socket number, and then establish two
834
+ | connections for full-duplex communication between the server and
835
+ | user processes. To do this, first a temporary simplex connection
836
+ | is opened for the server to transfer a new socket number to the
837
+ | user. Then this socket is the basis for opening two new
838
+ | connections between the two processes, and the first connection is
839
+ | closed.
840
+ |
841
+ | Below, the well-known socket is called L. The temporary connection
842
+ | is initiated by the user from socket U. The new socket number is
843
+ | S, and the full-duplex connections are between S and U+3, and S+1
844
+ | and U+2.
845
+
846
+ Server User
847
+
848
+ S1: listening on socket L. U1: RTS (U, L, _l1_)
849
+
850
+ S2: Wait for match. U2: Wait for match.
851
+
852
+ S3: STR (L, U, _s1_)
853
+
854
+ S4: Wait for allocation. U3: All (_l1_, _m1_, _b1_)
855
+
856
+ S5: Send data S in_s1_ bit U4: Receive data S in s1 bit bytes.
857
+ bytes as allowed by _s1_ bit bytes.
858
+ allocation m1_, _b1_).
859
+
860
+ S6: CLS (L, U) U5: CLS (U, L)
861
+
862
+ S7: RTS (S, U+3, _l2_) U6: STR (U+3, S, _s2_)
863
+
864
+ S8: STR (S+1, U+2, _s3_) U7: RTS (U+2, S+1, _l3_)
865
+
866
+ The labels here imply no ordering except that ordering required by
867
+ the Host-Host Protocol. Note that steps S7 and S8 can be reversed as
868
+ can U6 and U7. Also, notice that at any time after S2 the server
869
+ could initiate steps S7 and S8 in parallel with steps S3 through S6,
870
+ and that at any time after U4 the user could initiate steps U6 and U7
871
+ in parallel with step U5.
872
+
873
+ Following the above, exchanges ALL commands would be exchanged and
874
+ data transfers could begin.
875
+
876
+ At this level the parameters of the above ICP family are L, _m1_,
877
+ _b1_, _s1_, _s2_, _s3_, _l1_, _l2_, _l3_.
878
+
879
+ L is a well known socket number and will be specified for each type
880
+ of service.
881
+
882
+ m1 and b1 are allocation quantities for the transfer of a socket
883
+ number.
884
+
885
+ _m1_ is specified to be 1.
886
+ _b1_ is specified to be 32.
887
+ _s1_, _s2_, and _s3_ are byte sizes. Only _s1_ is to be specified
888
+ as _s2_ and _s3_ are to be left to the process involved.
889
+ _s1_ is specified to be 32.
890
+
891
+ _l1_, _l2_, and _l3_ are links and are not specified.
807
892
808
893
Connection Termination
809
894
======================
@@ -1357,12 +1442,38 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
1357
1442
1358
1443
2-71 Available for connections
1359
1444
1360
- 1, 72-190 Reserved - not for current use
1445
+ 1, 72-149 Reserved - not for current use
1446
+
1447
+ | 150 Xerox NS IDP
1448
+ |
1449
+ | 151 Unassigned
1450
+ |
1451
+ | 152 PARC Universal Protocol
1452
+ |
1453
+ | 153 TIP Status Reporting
1454
+ |
1455
+ | 154 TIP Accounting
1456
+ |
1457
+ | 155 Internet Protocol [regular]
1458
+ |
1459
+ | 156-158 Internet Protocol [experimental]
1460
+ |
1461
+ | 159 Figleaf Link
1462
+ |
1463
+ | 160 Blacker Local Network Protocol
1464
+ |
1465
+ | 161-190 Unassigned
1361
1466
1362
1467
191 To be used only for measurement work under the
1363
1468
direction of the Network Measurement Center at UCLA
1364
1469
1365
- 192-255 Available for private experimental use.
1470
+ | 192-194 Unassigned
1471
+ |
1472
+ | 195 ISO-IP
1473
+
1474
+ 196-247 Available for private experimental use.
1475
+
1476
+ | 248-255 Network Maintenance
1366
1477
1367
1478
1368
1479
Control Messages
@@ -1543,6 +1654,60 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
1543
1654
allocations in response to a GVB command. This command may be sent
1544
1655
only while the connection is established.
1545
1656
1657
+ | RAR - Reset allocation by receiver
1658
+ | ==================================
1659
+ |
1660
+ | 8 8
1661
+ | +------------+
1662
+ | | RAR | link |
1663
+ | +------------+
1664
+ |
1665
+ | Sent in reply to RAS to acknowledge allocations have been reset.
1666
+ | The RAR command is sent from the Host receiving on "link" to the
1667
+ | Host sending on "link" in response to an RAS. It marks the
1668
+ | completion of the connection resynchronization. When the RAR is
1669
+ | returned the connection is in the known state of having no messages
1670
+ | in transit in either direction and the allocations are zero. The
1671
+ | receiving Host may then start afresh with a new allocation and
1672
+ | normal message transmission can proceed. Since the RAR may be sent
1673
+ | ONLY in response to an RAS, there are no races in the
1674
+ | resynchronization. All of the initiative lies with the sending
1675
+ | Host.
1676
+ |
1677
+ | RAS - Reset allocation by sender
1678
+ | ================================
1679
+ |
1680
+ | 8 8
1681
+ | +------------+
1682
+ | | RAS | link |
1683
+ | +------------+
1684
+ |
1685
+ | Tells the receiver to clear allocations for the specified link.
1686
+ | The RAS command is sent from the Host sending on "link" to the Host
1687
+ | receiving on "link". This command may be sent whenever the sending
1688
+ | Host desires to resynch the status information associated with the
1689
+ | connection (and doesn't have a message in transit through the
1690
+ | network).
1691
+ |
1692
+ | RAP - Reset allocation please
1693
+ | =============================
1694
+ |
1695
+ | 8 8
1696
+ | +------------+
1697
+ | | RAP | link |
1698
+ | +------------+
1699
+ |
1700
+ | Sent from receiver to sender to ask it to send an RAS. If the
1701
+ | receiving Host detects an anomalous situation, the RAP command is
1702
+ | provided. It constitutes a "suggestion" on the part of the
1703
+ | receiving Host that the sending Host resynchronize; the sending
1704
+ | Host is free to honor it or not as it sees fit. Since there is no
1705
+ | obligatory response to a RAP, the receiving Host may send them as
1706
+ | frequently as it chooses and no harm can occur. For example, if a
1707
+ | message in excess of the allocate arrives, the receiving Host might
1708
+ | send RAPs every few seconds until the sending Host replies with no
1709
+ | fears of races if one or more RAPs pass a RAS in the network.
1710
+
1546
1711
INR - Interrupt by receiver
1547
1712
===========================
1548
1713
@@ -1690,6 +1855,28 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
1690
1855
field are the message header followed by the first eight bits
1691
1856
of text (if any) or zeros.
1692
1857
1858
+ | NXR - Non-existent receive link
1859
+ | ===============================
1860
+ |
1861
+ | 8 8
1862
+ | +------------+
1863
+ | | NXR | link |
1864
+ | +------------+
1865
+ |
1866
+ | Tells sender the link it used is non-existant. On receipt of an
1867
+ | NXR, the sender should close the connection.
1868
+ |
1869
+ | NXS - Non-existent send link
1870
+ | ============================
1871
+ |
1872
+ | 8 8
1873
+ | +------------+
1874
+ | | NXS | link |
1875
+ | +------------+
1876
+ |
1877
+ | Tells receiver the link it used is non-existant. On receipt of an
1878
+ | NXS, the receiver should close the connection.
1879
+
1693
1880
Opcode Assignment
1694
1881
=================
1695
1882
@@ -1710,6 +1897,11 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
1710
1897
ERR = 11
1711
1898
RST = 12
1712
1899
RRP = 13
1900
+ RAR = 14
1901
+ RAS = 15
1902
+ RAP = 16
1903
+ NXR = 17
1904
+ NXS = 18
1713
1905
1714
1906
1715
1907
Control Command Summary
@@ -1803,6 +1995,30 @@ RFC XXXX Host-Host Protocol for the ARPA Network April 2012
1803
1995
| RRP |
1804
1996
+-----+
1805
1997
1998
+ 8 8
1999
+ +------------+
2000
+ | RAR | link |
2001
+ +------------+
2002
+
2003
+ 8 8
2004
+ +------------+
2005
+ | RAS | link |
2006
+ +------------+
2007
+
2008
+ 8 8
2009
+ +------------+
2010
+ | RAP | link |
2011
+ +------------+
2012
+
2013
+ 8 8
2014
+ +------------+
2015
+ | NXR | link |
2016
+ +------------+
2017
+
2018
+ 8 8
2019
+ +------------+
2020
+ | NXS | link |
2021
+ +------------+
1806
2022
1807
2023
1808
2024
0 commit comments