RFC 1180 - TCP/IP tutorial

RFC 1180 - TCP/IP tutorial のメモです

Abstract

TCP/IPの概要の説明。"TCP/IP" とは…TCPとIPに関係するすべてである。 関係するプロトコルUDP, ARP, ICMP で、関係するアプリケーションは TELNET, FTP, rcp などが該当する。 もっと正確には “internet technology” であり、internet technology が使われているネットワークのことを “internet” と呼ぶ。

Terminology

Internet を通るデータはどのプロトコルスタックにあるかで呼び方が変わる。

  • Ethernet flame
  • IP packet
  • UDP diagram
  • TCP segment
  • Application message

driver はネットワークハードウェアインターフェースに直接通信するソフトウェア。 module は driver やアプリケーションと通信するソフトウェア。

Basic Structure

インターネット上のコンピュータの内部のレイヤー構造を論理的に表した図。 module は、データを下流に運ぶ時はヘッダーを加えるマルチプレクサとして動作し、上流に運ぶ時はヘッダーを取り除いてデマルチプレクサの役割を果たす。 6バイトの Ethernet アドレスは Ethernet でユニークであり、Ethernet module から下側のインターフェースに紐付いている。 4バイトのIPアドレスは、internet でユニークであり、IP module の下側のインターフェースに紐付いている。

                     ----------------------------
                     |    network applications  |
                     |                          |
                     |...  \ | /  ..  \ | /  ...|
                     |     -----      -----     |
                     |     |TCP|      |UDP|     |
                     |     -----      -----     |
                     |         \      /         |
                     |         --------         |
                     |         |  IP  |         |
                     |  -----  -*------         |
                     |  |ARP|   |               |
                     |  -----   |               |
                     |      \   |               |
                     |      ------              |
                     |      |ENET|              |
                     |      ---@--              |
                     ----------|-----------------
                               |
         ----------------------o---------
             Ethernet Cable

IP アドレスによって、複数の物理ネットワークを1つの論理ネットワークとして扱える。 “interconnection of physical networks” が internet の起源である。IP はアプリケーションからネットワークハードウェアを隠蔽する。 新しい物理ネットワークを発明したとしても、IP module との driver さえ実装すればよい。

2つのコンピュータが internet で通信できるならば、それは “interoperability” である。interoperability こそが internet の核である。

Ethernet

Ethernet フレームは、宛先アドレス、送信元アドレス、type field、そしてデータから成る。すべてのインターフェースは、"FF-FF-FF-FF-FF-FF" をリッスンしており、これをブロードキャストアドレスと呼ぶ。 EthernetCSMA/CD (Carrier Sense and Multiple Access with Collision Detection) を使っている。これは、2つのデバイスが1つの通信路で通信する際、片方だけが送信でき片方だけが受信できる事を意味する。同時に送信し collision が起きた場合はランダム時間待った後、再送する。

ARP

IP packet を送信する時、IP アドレスを Ethernet アドレスに変換するプロトコルARP (Address Resolution Protocol) である。 受信の際はヘッダーに Ethernet アドレスと IPアドレスが付いているので、変換は必要ない。

変換は、ARP テーブルというコンピュータが持っている変換表で行う。ARP テーブルが必要な理由は、IP アドレスと Ethernet アドレスは独立しているからである。IP アドレスは管理者から割り当てられており、変わることもある。一方で、Ethernet アドレスは製造者がライセンスしていて、これもまた変わることがある。

変換表に対象のIPアドレスが無かった場合、ARP request をブロードキャストし、IPパケットはキューイングする。 それぞれのコンピュータは、Ethernet インターフェースで Ethernet flame を受信する。Ethernet driver は、type field で ARP と判断し ARP module に送る。ARP request は、「もしこのIPアドレスなら、Ethernet アドレスを教えてください」というものである。 もし自分のIPアドレスとマッチしていれば、Yes と返信する (ARP response)。 同様に ARP module で受信し、IPアドレスを見て、ARP テーブルを更新する。 その後、Ethernet module で キューイングされた IP packet にIPアドレスを書き込み、送信する。

もし該当IPアドレスを持つコンピュータがいなかった場合、パケットは破棄される。 この時、Ethernet より上位層は、Ethernet が壊れているのか、そのコンピュータが不在なのかは区別できない。

Internet Protocol

routing

routing は、direct routing と indirect routing の2つがある。 direct routing は、1つの物理ネットワーク上で、送信元IPアドレス/Ethernetアドレスが送信ホストのものであり、宛先IPアドレス/Ethernetアドレスが宛先ホストの場合である。この場合、Ethernetアドレスだけでホストを特定できるため、IP 自体はオーバーヘッドになる。 indirect routing は、複数のネットワークをまたぐ場合に起こる。direct routing が複数回発生し、Ethernet ヘッダーが変化する。

IP Address

IPアドレスネットワーク管理者によって割り振られる。4バイトのIPアドレスは network number と、host number に分かれている。上位側がネットワークの方である。クラスCの分け方では、上位3ビットによって、ネットワーク数が21ビット、ホスト数が8ビットという意味になる。IPアドレス空間は NIC (Network Information Center) によって管理されている。"Internet" ではNICによって割り当てられたアドレス使用が必須である。

IP Route Table

IP では、パケット送信の際、下位のインターフェースを知るために route table を使う。route table の1行は、IP network number, direct/indirect flag, router IP address, interface number の基本要素から成る。

User Datagram Protocol

UDP は、コネクションレス型データグラムデリバリーサービスである。

UDP はデリバリーを保証しない。UDP が提供すること:

  • ポート番号ベースでアプリケーションを多重化する
  • チェックサムで完全性を保証

Transmission Control Protocol

TCP はコネクション指向バイトストリームデリバリーサービスである。

  • ストリーム:始点と終点の境界がないデータ

TCPは通信状態を管理し、全二重の仮想回線を定義する。 送信する場合、受信側の確認応答を必須とする。 エンドのバッファ溢れを防ぐフロー制御を、スライディングウィンドウプロトコルによって行う。

感想

98%ぐらいは知ってる内容だった。次:RFC 826 - Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware