システムプログラム(第6回): TCP/IPのプロトコルスタック

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2022/2022-06-29/tcpip.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2022/
http://www.coins.tsukuba.ac.jp/~yas/

層(プロトコル・スタック)

TCP/IPによる通信では、図2に示すように、4つのプロトコル(規約、約束事) の層が使われる。TCP/IP自身は、TCP層と IP層という2つのプロトコルに分解 される。このようにさまざまなプロトコルが決められ、全体として層をなして いる。この様子を、プロトコル・スタックと呼ぶ。

図2 TCP/IPにおけるプロトコル・スタック

図2 TCP/IPにおけるプロトコル・スタック

IPアドレス

TCPで通信をする時に、通信相手を識別するには IPアドレスポート番号が必要になる。 IPアドレスとしては、IPv4 では、32ビットの整数が 使われてる。IPv6 では、128 ビットの整数が使われる。

IPアドレスの表記(IPv4)

例: これは、10進数でいくつになるかを計算したい時には、次のようにして計算 する。

IPアドレスの表記(IPv6)

例:

ポート番号

TCPで通信をする時に、通信相手を識別するにはIPアドレスと ポート番号(port number) が必要になる。ポート番号は、同じホストの中で提供されている様々なサービスを 区別するために使われる。 ポート番号は、16ビットの整数であり、よく使われる アプリケーション では、あらかじめどの番号を使うかが決められている。これを well-knownポート番号(well-known port number) という。Unix では、1024 番より小さいポート番号を使うには、 特権ユーザ(スーパー・ユーザ、管理者)の権限が必 要であり、このようなポート番号は、 特権ポート番号(privileged port number) と呼ばれる。

応用層

TCP層の上には、応用層が定義されている。この層では、ftp, ssh, Firefox, Thunderbird などの、TCP/IP を利用するプログラムの間の会話の方法が定 義される。

TCP/IPを使った通信は、まるでプロセス同士が電話で会話するよう に進められる。普通の電話では、日本語を話す人と英語を話す人は、電話で情 報交換を行うことができない。同様に、同じTCP/IPを使っていても、会話の方 法が違うと、まったく情報交換を行うことができない。ゆえに、TCP/IPの上に さらに、情報交換のためにさまざまなプロトコルが取り決められている。

TCP/IPの上に構築されているプロトコルの例を、表1に示す。

表1 TCP/IPの上に構築されているプロトコルの例

TCP/IPの上に構築されているプロトコルの例
ポート番号 プロトコルの名前 目的
21 FTP(File Transfer Protocol) ファイル転送
22 SSH (Secure Shell) 暗号通信路によるログイン
23 Telnet 遠隔ログイン(telnet)
25 SMTP(Simple Mail Transfer Protocol) 電子メールの転送
79 finger finger name の取得
80 HTTP(HyperText Transfer Protocol) WWWのデータ転送
110 POP(Post Office Protocol) 電子メールのアクセス
119 NNTP(Network News Transfer Protocol) ネットワーク・ニュースの記事の転送
143 IMAP(Internet Message Access Protocol) 電子メールのアクセス
513 login 遠隔ログイン(rlogin)

/etc/services に、他のポート番号が掲載されている。

物理層

IPのデータグラムを転送するためには、さまざまな物理的な媒体が使われる。 物理媒体は、IP層と同様にデータグラム転送サービスを提供するものが多い。 ただし、アドレスとしては、IPアドレスではなく、それぞれの物理層に 独自のものを用いる。

現在LANでは、イーサネットがよく使われいる。イーサネットは、同軸 ケーブル、より対線(Twisted Pair Cable)、または、光ファイバ を使ってデータグラムを転送する。 無線LAN (IEEE 802.11b/g/a) も、データグラムを転送する。

IPのデータグラムを転送する時に、物理的なデータグラム転送サービスではな く、他のプロトコルが使われることもある。 モデムなどを使ったシリアル回線では、PPP(Point to Point Protocol)というプロトコルの上に、IPデータグラムが流される。

IP上に構築された UDP (User Datagram Protocol, UDP/IP) も、IPとほとんど同じ機能を提供する。 UDP では、TCP と同様に、ポート番号が使える。

ホストとルータ

ネットワークに接続されている計算機の中で、ネットワークに1ヵ所の出入り 口(インタフェース)を持っているものは、ホストと呼ばれる。2ヵ所以上の 出入り口を持っている計算機は、ルータと呼ばれる。ルータは、ネットワーク とネットワークを接続するための計算機である。ルータは、入ってきたIPのパ ケットのIPアドレスを見て、どのネットワークに送ればよいかを判断する。

図1で、左端と右端にあり、4層全てそろっている部分がホストである。 TCP/IPの通信は、ホストとホストの間で行われる。中央の、2層しかない部分 は、ルータである。ルータの仕事は、IP層において行われる。

OSI 7層参照モデル

TCP/IP は、OSI参照モデルよりも古い。OSI参照モデルでは、プロトコル・ス タックは 7層からなるが、TCP/IPでは 4 層しかない。

IP層

TCP は、IP という通信プロトコルを利用して実現されている。

IPのデータグラム

IPは、(信頼 性がない)データグラム(datagram)転送サービスを提供する通信プロトコル である。データグラムとは、次のような性質を持つ。

図? 結合が作られる通信プリミティブでのメッセージの配送

図? 結合が作られる通信プリミティブでのメッセージの配送

図? 結合が作られない通信プリミティブでのメッセージの配送

図? 結合が作られない通信プリミティブでのメッセージの配送

データグラムは、書留めではない郵便に似ている。 データグラムは、 パケット と呼ばれることもある。(パケットという言葉は、データの送り手と受けての 間に結合が作られる作られる時にも使われることがある。データグラムは、結 合が作られない通信で使われるひと固まりのデータで、電報(telegram)との類 推から名前が付けらた。)

IPアドレス

IPのデータグラムが配達されるときに使われる番号が、 IPアドレス である。IPアドレスとしては、IPv4 では、32ビットの整数が 使われてる。IPv6 では、128 ビットの整数が使われる。
Last updated: 2022/06/09 17:25:36
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>