Post

The Birth of the Internet - RFC 7, Understanding the Host-IMP Interface

In May 1969, G. Deloche published RFC 7 outlining the preliminary software design for the Host-IMP interface, a critical component of the early ARPANET. This RFC provides valuable insight into the early days of networking and the challenges faced in connecting diverse computer systems.

The Role of the Host-IMP Interface

The Host-IMP interface is responsible for connecting a host computer to an Interface Message Processor (IMP), which served as a gateway between the host and the ARPANET. The interface consists of two main programs: the Network program and the Handler program.

Network Program

The Network program handles multiplexing and output message processing. It receives requests from users to send data and breaks them down into packets, adds headers, and transcodes the data from EBCDIC to ASCII. It then fills a pool of buffers with the data and updates an interface table to inform the Handler program of the data’s location and length.

Handler Program

The Handler program controls the channel hardware unit, initiating data transmission and handling interrupts. It empties the buffers filled by the Network program and updates the interface table. It also ensures that the special channel hardware unit is notified when a message has been sent, allowing it to pad the message if necessary.

Buffers and Interface Table

The buffers store the data being transmitted, while the interface table acts as a communication channel between the Network and Handler programs. The table contains information about the location and length of the data in each buffer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
                      [Length] of the message
                           contained
                           in the buffer
                               ^
                               |
           +--------------+----------+
           | Buffer addr. | nb bytes |
           +--------------+----------+
           |              |          | <== Filling pointer
           +--------------+----------+         |
           |                         |         V
           |                         |
           //                        //
           |                         |
           |                         |
           |                         |
           +--------------+----------+
           | Buffer addr. | nb bytes | <== eEtracting pointer
           +--------------+----------+         |
           | Buffer addr. | nb bytes |         V
           +--------------+----------+

Challenges and Questions

RFC 7 raises several questions about the Host-IMP interface, including:

  1. Why is there no simple control procedure between the Host and IMP? What happens if a message sent from the Host reaches the IMP with an error?
  2. Where will the special channel hardware unit be connected? How will it be notified of an outgoing message end?
  3. When will the Gordo documentation be available to design the user-network program interface?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
HOST (Sigma 7) <--|/|--> Outside world
   Users                                     |/|
    |                                        |/|
    |                                        |/|   Special  Standard
    V                                        |/|      |       |
         +--------------+   +------------+   |/|      V   |   V
    o----|              |   |            |   |/|   +------+------+
         |   Output     |-->|   Output   |-->|/|-->|      |      |-->IMP
    . . .|              |   |            |   |/|   |             |
         |              |   |            |   |/|   |      |      |
    o----| (Multiplex)  |   |            |   |/|   |             |
         |_ _ _ _ _ _ _ |   |_ _ _ _ _ _ |   |/|   | _ _ _| _ _ _|
    o----|              |   |            |   |/|   |      |      |
         |   Input      |<--|    Input   |<--|/|<--|             |<--IMP
    . . .|              |   |            |   |/|   |      |      |
         |              |   |            |   |/|   |             |
    o----|(Distribution)|   |            |   |/|   +------|------+
         |              |   |            |   |/|       HARDWARE
         +--------------+   +------------+   |/|       Interface
             NETWORK          HANDLER        |/|
             Program          Program        |/|
                                             |/|    (Fig. 1)


                                                   +------------------+
                                                   | | |              |
                                                   | | | interface    |
                                                   | | |              |
                                                   |                  |
                                                   | ====> Data       |
                                                   |                  |
                                                   | ----- Logical    |
                                                   |       information|
                                                   +------------------+

                      + - - - - - - - - - - - - - -+
                      |                            |
                              interface table
                      |        +----------+        |               | |
        | |              +---->|          |<----+                  | |
        | |           |  |     +----------+     |  |   interrupt   | |
        | |           ^  |                      |     +----<-------| |
        | |           |  |    +-          -+    |  |  |            | |
        | |           |  V    |  _________ |    V  V  V            | |
   o----| |-+  +---------+-+  | |         ||  +-+--+--+---+        | |
        | |  \ |+---------+|  | |_________||  |+---------+|        | |
        | |   \||         ||  |            |  ||         ||        | |
        | |    +|         ||  | - - - - - -|  ||         ||        | |
        | |    ||         ||  |            |  ||         ||        | |
    - - - - - -|| NETWORK ||=>-  _________ -=>|| HANDLER ||=======>| |
        | |    +| Progr.  ||  | |         ||  || Progr.  ||        | |
        | |   /||         ||  | |_________||  ||         ||        | |
        | |  / |+---------+|  |            |  |+---------+|        | |
   o----| |-+  +-----------+  |  _________ |  +----+------+        | |
   ^    | |                   | |         ||       |               | |
   |    | |                   | |_________||       +--->---------->| |
   |     ^                    +-    ^     -+         Commands      | |
   Users |                          |                              | |
         |                    Pool of buffers                      | |
       User's                                                       ^
      Interface                                                     |
                                                              Hardware
                                                             Interface

                           (Fig. 2)

These questions highlight the complexity of connecting diverse computer systems and the challenges faced in developing a robust and reliable network.

What Else was Happening?

  • NASA’s Apollo 10 mission, which was a dress rehearsal for the moon landing, had its lunar module separated from the command module and orbited the moon. Although the lunar landing was still to come, the mission was crucial for testing the equipment and procedures that would be used in future lunar landings. Apollo 10 also transmitted the first color pictures of Earth from space.
  • Venera 5, a Russian probe, landed on Venus on May 16, 1969, and Venera 6 arrived the next day.
  • Abortion and contraception were legalized in Canada.
  • Associate Justice Abe Fortas resigned from the Supreme Court.
  • Baltimore, Cleveland & Pittsburgh agreed to move from the NFC to the AFC in the NFL.
  • US troops captured Hill 937/Hamburger Hill in Vietnam.
  • Construction began on Walt Disney World at Bay Lake and Lake Buena Vista, Florida.
  • Atlantic Records released the eponymous debut album of “Crosby, Stills & Nash,” containing hits like “Marrakesh Express” and “Suite: Judy Blue Eyes.”
  • The last Chevrolet Corvair was built on May 14, 1969.
  • Ken Wallis set a record speed for autogyros by achieving 179 kilometers per hour.
This post is licensed under CC BY 4.0 by the author.