インターネットとTCP/IPの基礎


インターネット

インターネットを英語で表記すると、internet と The Internet の二つがあります。 前者は internetworking ともいい、network と network を繋ぐことを言います。 そして The Internet は、世界で唯一の、internetworking の結果生まれた、 巨大なコンピュータネットワークを意味します。以降インターネットと書いた場合は、 The Internet を意味するものとします。

インターネットの特徴として、End-to-end 原理というものがあります。 インターネットでは、データを中継する装置をルータ (router) と呼びますが、 ルータの仕事は低機能で、 届いたデータを正しい宛先に届けさせることがほとんどすべてであり、 それ以外の高度な仕事をほとんどしません。 高度な仕事は、末端 (end) 任せであり、ネットワークの変更なしに、 末端の拡張だけで様々なアプリケーションに対応することが可能です。 これは、電話網が、高機能な中継装置(交換機)と低機能な末端(電話機)で 構成されることとは対象的です。

なお、インターネット上で末端にあたるものを、ホストと呼びます。


IP (Internet Protocol)

IP (Internet Protocol) とは ineternetworking のためのプロトコル(通信規約、通信手順)です。 インターネットは IP プロトコルに従って運用されています。 なお、IP プロトコルを用いて運用される、 プライベートネットワーク (企業内ネットワークなど) をイントラネット (intranet) と呼びます。

学生実験室はイントラネットになっています。


IP アドレス

IP プロトコルでは、電話番号のように、末端を識別する番号として、 IP アドレスを使います。 IP アドレスは 32bit の数であり、x.x.x.x のように、8bit ずつドットで区切り、 10進数で表記します。

例)

	130.54.23.2
	192.168.1.1
    

インターネットを利用するには、世界で一意に識別される番号が必要です。 そのようなアドレスをグローバルIPアドレスと呼びます。

この他、前述したイントラネットのためのアドレスをプライベートIPアドレスと いうものもあります。範囲は、

	10.0.0.0        -   10.255.255.255
	172.16.0.0      -   172.31.255.255
	192.168.0.0     -   192.168.255.255
    

です。


IPv6

現行の IP プロトコルは、バージョン4 と呼ばれています。 アドレス空間は 232 = 約40億であり、 開発された 1970年ごろは、十分広い空間だと思われていたのですが、 インターネットの普及に伴ない、アドレスが不足することが確実となってきました。

そこで、より広いアドレス空間を持つ、IPv6 (IP Version 6) が策定され、 普及が望まれています。 IPv6 のアドレス 128bit で表現されるため、2128、 実際には 64bit で端末を識別することが推奨されているため 264 = 約 1800京の端末を識別することができます。

IPv6 にはアドレス空間が広くなったという特徴の他に、 始めからセキュリティ機能が強化されているといった特徴もあります。


DNS

通信相手をいちいちIPアドレスで指定していたのでは入力するのも覚えるのが 大変です。

そこで、より人間に分かりやすい表現として、アルファベットと数字と「-」「.」 で記述する、ドメイン名という表記方法があります。 例えば、

	nwse2.isle.kuis.kyoto-u.ac.jp
	www.yahoo.co.jp
    

などがドメイン名です。ドメイン名もIPアドレスと同じく世界で一意に識別され、 またドメイン名をIPアドレスに変換する仕組みを DNS (Domain Name System) といいます。

DNSでドメイン名を検索するコマンドとして、 nslookup コマンドがあります。


TCP (Transmission Control Protocol)

IPプロトコルは、末端から末端にデータを、 パケットという単位で転送するという単純な仕組しかありません。 パケットの最大長は 1500バイト程度であり、 IPプロトコルだけではより大きなサイズのファイルを転送することができません。 また IPプロトコルでは、ルータが処理できない場合は、 適宜パケットを破棄してもよいことになっているため、 パケットが確実に相手に届くことも保証されていません。 (よってしばしばインターネットでの通信方式をベストエフォート(最善努力)と呼ばれます)

そこで TCP (Transmission Control Protocol) は、 大きなデータのパケットへの分割及び、 経路上のルータでパケットが破棄された場合にはパケットの再送を行い、 信頼性の高い通信を可能とします。

多くのインターネット上のアプリケーションが TCP を用いて通信を行います。


ポート番号

一つのホストで複数のアプリケーション (WWWサーバ(HTTPサーバ)、メールサーバ等) を起動している場合などには、接続要求に対して、 どのアプリケーションに対する要求なのかを識別する必要があります。

そこで TCP や UDP には、ポート番号という、 接続すべきアプリケーションを識別するための番号が用意されています。 例えば、あるホストのポート番号 80 に対して TCP で接続しにいくということは、 そのホストの HTTPサーバに接続しにいくことを意味します。

なお、一応、80番は HTTP に使われるということになっていますが、 必ずしもその規則に従う必要はないことに注意して下さい。


ネットワーク階層

ネットワークは階層構造になっているとして理解すると、理解が早まります。


RFC

RFC (Request For Comments) とは、 インターネットの様々なとりきめが書かれた文章です。 IPプロトコルや TCPプロトコル、HTTPプロトコルなどもこれがもとになっています。

RFC はIETF (Internet Engineering Task Force) という機関で仕様が策定されます。 RFC はテキスト形式で記述され、ftp.ietf.org などから取ってこれますが、 Hyperlink 化されたものも、Web上から探すこともできます。


telnetによるTCP接続の実演

telnet コマンドは、telnet プロトコルを利用して、 遠隔のPCにloginする機能だけでなく、 単純に標準入出力とTCP接続とを直結させるという機能があります。

例えば、

	% telnet nwse2.isle.kuis.kyoto-u.ac.jp 80     

とすることで、上記ホストの80番ポート、すなわち HTTPサーバに TCP接続をし、 TCP接続と標準入出力を直結させることを意味します。

その後、

	GET /

と入力することでこのサーバのトップページを入手することができます。

なお、telnet のエスケープシーケンスは CTRLキー + 「]」キーです。