はじめに
Where are IPv3 and IPv5?という記事を見かけたので読んでみました。自分で調べた情報も付加しながら、学んだ内容をメモとして残しておきます。IPv5 が一般的でない理由については、過去に小川晃通氏の You Tube チャンネルでも取り上げられていたので、興味がある方はそちらも合わせて見てみてください。
忙しい人のためのサマリ
- IPv0 ~ IPv3 は IPv4 に至るまでの試行錯誤の歴史
- IPv5 はストリーミングプロトコルとして開発されたが、UDP ベースのストリーミングプロトコルに敗北
- IPv6 は IPv4 からの移行先
- IPv7 ~ IPv9 は IPv6 の対抗馬だったか IPv6 に敗北
- IPv15 はプロトコル仕様として存在するわけではないが、IP ヘッダーフィールドの 4 bit すべてに 1 が立つようなパケットが作成されないように予約されている(と思われる)。
前提知識
TCPの誕生
1974 年 5 月、論文 "A Protocol for Packet Network Intercommunication" (Vint Cerf and Bob Kahn) が発表されたことで TCP の存在が世間に知れ渡りました。
続く 1974 年 12 月には、RFC 675 "SPECIFICATION OF INTERNET TRANSMISSION CONTROL PROGRAM" が公開され、ホスト間およびプロセス間のネットワーク通信についてプロトコル仕様がまとまりました。
Internet Experiment Notes
Internet Experiment Note(IEN)は、Vint Cerf や Bob Kahn など、インターネットの前身の開発に携わった人々が発行した技術出版物のことです。同じくインターネットの前身となる ARPANET の技術仕様をまとめるものとして RFC(Requests for Comments)が存在していましたが、ARPAET ではまだ採用前だった TCP/IP の開発に精を注いでいたことから IEN という別文書を出版したそうです。IEN は 1977 年 3 月から 1982 年 9 月までの間に 206 本発行されました。
そのため、初期の TCP/IP については IEN にそのプロトコル仕様の変遷が詳細に書かれることとなったそうです。
とはいえ、RFC と IEN はセットで扱われることもあったようで、初期の RFC を眺めていると、ヘッダに IEN の番号も併記されていることがありました。
Network Working Group J. Postel Request for Comments: 755 USC-ISI IEN: 93 3 May 1979
引用:RFC 755
IPv4 に至るまでの変遷
IPv4 が 2021 年の現代においても一般的な Internet Protocol のバージョンですが、v4 に至るまでに v0 から v3 までのプロトコル仕様が存在しました。各バージョンが発行された時期は、RFC 755 に記載されています。
ASSIGNED INTERNET MESSAGE VERSIONS In the internetwork protocols there is a field to identify the version of the internetwork general protocol. This field is 4 bits in size. Assigned Internet Message Versions Decimal Octal Version References ------- ----- ------- ---------- 0 0 March 1977 version [35] 1 1 January 1978 version [36] 2 2 February 1978 version A [42] 3 3 February 1978 version B [43] 4 4 February 1979 version 4 [44] 5-14 5-16 Unassigned 15 17 Reserved
引用:RFC 755
IPv0
IPv0 モデルは 1977 年 3 月に発行された IEN 5 に掲載されました。IEN 内では TCP Version 2 と表現されていますが、1979 年 5月 3 日に発行された RFC 755 "ASSIGNED NUMBERS" で 1977 年 3 月に発表された Internet Protocol が Version 0 であると定義されています。
IPv1
1978 年 1 月に発行された IEN 21 で、TCP Version 3 が掲載されました。IEN 21 内では、この時点の仕様を IP Version 0 と表現していたようですが、RFC 755 では IEN 21 時点の仕様を IP Version 1 と定義しています。
IPv0 と IPv1 の主な違い
- Version Field(4 bit)が Internet Header の先頭に移動
- TCP Header から Version Field が消失
IPv2
1978 年 2 月に発行された IEN 28 で、IP と TCP が明確に分離して表現されるようになりました。そして、この時点での IP 仕様を IEN 内で IP Version 2 と定義しました。
IPv1 と IPv2 の主な違い
- Type of Service (TOS) Field が 4 bit から 8 bit に拡張
- Format Field と IP Header Length (IHL) Field の位置が交替し、8 bit から 4 bit に縮小
- Destination Field が 40 bit から 32 bit に縮小
IPv3
IPv2 の発表と時を同じくして、1978 年 2 月に IEN 26 および 27 で IP と TCP の新しいヘッダフォーマットが発表されました。後の RFC 755 でこの時点のプロトコル仕様が IP Version 3 であると定義されます。
IPv2 と IPv3 の主な違い
- Version Field は 4 bit から 1 bit にまで削減
- Destination Net 、Destination Host、Destination Port と Source Net 、Souce Host、Source Port がそれぞれ Field として新規独立
IPv4
1978 年 6 月、IEN 40 にて TCP Version 4 が発表されました。しかしながら、この時点での IP ヘッダには TCP との互換性を欠く変更が加えられており、RFC 755 ではこの変更を無視しています。その後の IEN 54 で IP ヘッダのフォーマットは概ね最終形態となり、いくつかの改訂(IEN 80、IEN 111、IEN 123、RFC 760、RFC 791)を経て、現在でも使用される IPv4 ヘッダのフォーマットが確定しました。最終形は 1981 年 9 月に発行された RFC 791 "INTERNET PROTOCOL" に定義されています。
その後、1983 年 1 月 1 日から ARPANET の NCP(Network Control Program)に代わって TCP/IP が使用されることとなりました。当時の移行計画は RFC 801 "NCP/TCP TRANSITION PLAN" で覗き見ることができ、数百台のホストを数ヶ月の期間をかけて NCP から TCP/IP へと切り替えていったことがわかります。
IPv3 と IPv4 の主な違い
- Source Address と Destination Address が 32 bit 長に変更
- DAL や SAL が Header Checksum として集約され、16 bit 長に
- TTL(Time to Live) field が導入される
- Version Field が 1 bit から 4bit に増加
IPv5
1979 年から 1995 年にかけて、Internet Stream Protocol が実験的に開発されました。これは Internet Protocol の置き換えを目的としたものではありませんでしたが、IPv4 と明確に区別するために IP Version 5 と定義されました。今日では、UDP ベースのストリーミングプロトコルが発達しているため、残念ながら IPv5 は日の目を見ていません。
IPv6
IPv6 は、1995 年 12 月に RFC 1883 内で最初の仕様が発表されました。IPv4 ではアドレス数が足りなくなったために、現在も IPv6 への移行が日夜行われています。
- アドレスサイズが 32 bit から 128 bit に増加
IPv7、IPv8、IPv9
IPv6 以外にも、IPv4 に代わるプロトコル仕様が策定され、それぞれ IPv7、IPv8、IPv9 のプロトコル番号が割り当てられました。これらは IPv6 の採用によって廃止されましたが、歴史的意義の観点から IANA によって予約されたままとなっています。
version | name | reference |
---|---|---|
IPv7 | TP/IX | RFC 1475, RFC 6814 |
IPv8 | Pip | RFC 1621, SC589H |
IPv9 | TUBA (TCP & UDP with Bigger Addresses) | RFC 1347, SC589H |
IPv15
IANAによると、IPv15 は予約済みになっています。RFC 等にも記載は見つけられず、なぜだろうと考えていたのですが、IP ヘッダのバージョンフィールドは 4 bit なので、2 進数の 1111 は 10 進数表記で 15 となります。なので、何かしらの理由(不正なパケットをみつけるなど)で 1111 を使用しているのかもしれません。
stack overflow で疑問を投げかけてみたところ、上記の回答が得られました。
以上