Where are IPv3 and IPv5?

When IPv4 was released, it was known as Internet Protocol. The name IPv4 came later to distinguish it from IPv6, which was the new version of the Internet Protocol. But where are IPv3 and IPv5? This article shows the version history of the Internet Protocol.

The history of the Internet Protocol starts with a research paper published by Vint Cerf and Bob Kahn in May 1974 called “A Protocol for Packet Network Intercommunication.” The paper describes a Transmission Control Program (TCP), which enables the transmission of a data stream between processes beyond network boundaries. The first complete protocol specification follows with RFC 675 in December 1974. At this point, TCP specifies both, host-to-host and proces-to-process network communication. A separation of the network format into the Internetwork Packet Format and the Transmission Control Block gives an indication of two different layers. The internetwork packet format reserves 2 bits for the header format and 4 bits for the protocol version number.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Format |Version| Header Length |          Payload Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Packet Sequence Number                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgement Number                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Window Size          |    Flags    | Reserved  | OD  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Control Data  |  Len  |DstNet |    Destination TCP Address    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Padding     |  Len  |SrcNet |       Source TCP Address      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Destination Port Address            |   Source ...  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     ... Port Address          |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Transmission Control Block ...               |

                  Figure 1: RFC 675 (December 1974)

IPv0

Various protocol revisions follow. The series of Internet Experiment Notes (IEN) lets us reproduce the progress. In 1977, IEN 5 describes TCP Version 2. There is a 4-bit format field at the end of the internet header, followed by a 4-bit version field at the beginning of the TCP header. RFC 755 will later assign version number 0 to this protocol.

IPv0 Header
Figure 2: IEN 5 (March 1977)

IPv1

IEN 21 describes TCP Version 3 in January 1978. The 4-bit version field has moved to the beginning of the internetwork packet format, while the TCP packet format carries no version field. Although the header clearly differs from the earlier protocol version, IEN 21 specifies the version field to be 0. However, RFC 755 will later assign version number 1.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  TOS  |    Format     |          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  IH Length=20 | DAL=5 | SAL=3 |           Destination         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Destination continued            |    Source     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Source continued       |        Internet Options       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Internet Options continued            |   Padding     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Figure 3: IEN 21 (January 1978)

IPv2

In February 1978, the Internet Protocol separates from TCP. Jon Postel publishes a Draft Internetwork Protocol Specification as IEN 28, which uses version number 2.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Format     |  DAL  |  SAL  |          Destination          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Destination continued     |             Source            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Source cont. |             Options             |   Padding   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Figure 4: IEN 28 (February 1978)

IPv3

In the same month, Vint Cerf publishes new proposals for the Internet Header (IEN 26) and TCP Version 3.1 Header (IEN 27). The version field is reduced to 1 bit, which is assumed to be “sufficient to deal with any reasonable transition period during which one header is being phased out”. In retrospect, this statement is debatable. We’re currently in a transition, where we only have two different headers in use. However, this transition takes decades. It’s wise to keep the old version number reserved for legacy systems, even if IPv6 ever gets a sucessor. RFC 755 will later assign version number 3 to this protocol header.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V|             |O|D|////|      |                               |
|E| Protocol    |P|F|////| TOS  |         Packet Length         |
|R|             |T| |////|      |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Internet              |M|    Fragment         | Data  |
|            Packet ID          |F|       Number        |Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destin. Net   |               Destination Host                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Destination Port                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Source Net   |                  Source Host                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Source Port                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Options . . .                  |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Data . . .                         |

                 Figure 5: IEN 26 (February 1978)

IPv4

IP version 4 appears in June 1978 (IEN 41) along with TCP version 4 (IEN 40). Despite carrying version number 4, this internet protocol header has several compatibility-breaking changes to the final IPv4: header checksum and type of service are at different positions, identification has a different length, source and destination addresses are interchanged and have a variable length. RFC 755 will later ignore this protocol revision and instead declare IEN 80 as IPv4.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Header Checksum|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Type of Service| Identification|Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |      DAL      |      SAL      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                   Figure 6: IEN 41 (June 1978)

IEN 54 introduces the final internet header format in September 1978. Several revisions follow (IEN 80, IEN 111, IEN 123, RFC 760, RFC 791), which change the semantics but not the syntax of the internet protocol.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |         Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 7: IEN 51 (September 1978), identical with RFC 791

RFC 791 is released in September 1981 and becomes the final Internet Protocol, known today as IPv4. However, it’s not used in practice until January 1, 1983, when TCP/IP replaces the Network Control Program (NCP) in the ARPANET. At that time, ARPANET consists of a few hundred hosts and uses a transition plan (RFC 801), whose implementation takes several months. This gives us a foretaste of the effort of the IPv4-to-IPv6 transition, when the Internet consists of more than a billion hosts.

IPv5

The experimental Internet Stream Protocol is developed from 1979 to 1995 (IEN 119, RFC 1190, RFC 1819). It’s intended to supplement the Internet Protocol, not to replace it. The Internet Stream Protocol (ST) uses a 4-bit version field with version number 5 to clearly discriminate between IP and ST packets. ST will be abandoned later in favor of UDP-based streaming protocols.

IPv6

IPv6 is the successor to IPv4 and increases the address size from 32 bit to 128 bit. Its first specification is released in 1995 (RFC 1883). In 1998, the packet header is slightly revised to its final format (RFC 2460). RFC 8200 updates the specification without changes to the header.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class |           Flow Label                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Payload Length        |  Next Header  |   Hop Limit   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                         Source Address                        +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                      Destination Address                      +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Figure 8: RFC 2460 (December 1998), identical with RFC 8200

IPv7, IPv8 and IPv9

During the development of IPv6 in the early 1990th, alternative protocol proposals emerge. Two different proposals TP/IX and CATNIP both claim version number 7 (RFC 1475 and RFC 1707), while Pip claims version number 8 (RFC 1621, RFC 1622). Another proposal (RFC 1347) is assigned version number 9 by IANA. These proposals are obsoleted by IPv6.

Later, IANA reserves IP version numbers 5, 7, 8 and 9 with reference to these historic proposals (IANA Version Numbers, SC589H).

Conclusion

Despite carrying version 4 in the header, IPv4 was the first Internet Protocol in use. The Internet Stream Protocol (IPv5) was orthogonal to IP, but did not gain momentum in practice. IPv6 is the new version of the Internet Protocol. IP versions 7 to 9 were proposed as alternative successors to IPv4, but could not compete with IPv6.