TCP/IPとは?

TCP/IP

インターネットプログラムが通信をするにあたって、HTTP、SFTP、FTPなど様々なプロトコルがあります。 インターネットプロトコルで最も多く使用される代表的なプロトコルは、皆さんご存知の通りIPです。 ここで重要なことはTCPIPは階層ではなくプロトコルであることです。
TCPIPはOSI7 階層とは少し異なるTCPIPの構造的な階層の上で動作します。
tcpip
OSI7階層とは少し異なる様子です。
階層の個数も違って OSI は7 階層であるのに対し、TCPIP 階層は4階層全てであることが分かります。

1. ネットワークインタフェース階層 (Network Interface Layer)

この階層は、Node-To-Node間の信頼性のあるデータ伝送を担う階層です。
OSI7階層の物理階層とデータリンク階層の役割を、同ネットワークインタフェース階層が担っています。
したがって、MACアドレスがこの階層で使用されます。
ネットワークインタフェース階層がデータリンク階層まで担当するので、MACアドレスが使用されます。
LANカード
上の装備はランカードです。 正確な名称はNICといいNetwork Interface Cardです。
LANカードがないとネットワーク通信はできません。ネットワークインタフェース階層で動作するデバイスです。

LAN上ではEthernet、TokenRing、FDDIなどがあり、WAN上ではX.25、FrameRelay、PPPなどがあります。

2. インターネット階層 (Internet Layer)

OSI7階層のネットワーク階層を担う階層です。 OSI7階層のようにホスト間のルーティングを担当することになります。
インターネット階層で動作するプロトコルは以下の通りです。

  • IP(Internet Protocol):非信頼性、非連結指向データグラムプロトコル

  • ARP(Address Resolution Protocol):アドレス変換プロトコルです。 IPアドレスをMACアドレスに変換するプロトコル

  • RARP(Reverse ARP):逆にMACアドレスでIPアドレスを探すプロトコル

  • ICMP(Internet Control Message Protocol):状態診断メッセージプロトコル。 このプロトコルを利用する代表的なプログラムがping

  • IGMP(Internet Group Message Protocol):マルチキャスト用プロトコル

3. 伝送階層 (Transport Layer)

OSI7階層の伝送階層と同じです。 プロセス間の信頼性のあるデータ伝送を担う階層です。
process-to-process転送を担当するためには論理的アドレスが必要ですが、processが使用するポート番号をその論理的アドレスとして使います。
転送階層で動作するプロトコルは下記の通りです。

  • TCP (Transmission Control Protocol):信頼性のある接続指向型プロトコル。 信頼性があるというのは、そのペケットのエラー処理や再送信などでエラーを復旧することです。 そのためTCPのヘッダーに付く情報が多いです。

  • UDP (User Datagram Protocol):非信頼性非接続型プロトコルです。 ペケットを失ったりエラーがあっても対処しないことです。 したがって、UDPヘッダーは簡単な構造を持っています。

4. 応用階層 (Application Layer)

ユーザーと最も近い階層です。 OSI7階層の5階層から7階層までの機能を担っています。
サーバやクライアントアプリケーションがこの階層で動作します。 私たちが知っているブラウザやテルネットのようなサービスがこの階層で動作し、動作するためには転送階層のアドレス、つまりポート番号を使用します。 例えば、httpが88番ポートを使用することと同じです。
応用階層で動作するプロトコルは以下の通りです。

  • HTTP(Hyper-Text Transfer Protocol):TCPベースのプロトコルでポート番号80番を使用

  • Telnet :TCP ポート番号23番を使用します。 遠隔ターミナルを接続する際にこのプロトコルを使用

  • SSH(Secure Shell):テルネットのようなサービスはセキュリティに脆弱。 パスワードが暗号化されていないため、そのまま表示されます。 これを補完したものがSSHです。 ポート番号22番を使用します。 SFTP のようなプロトコルも22 番ポートで主要使用します。

  • FTP(File Transfer Protocol): ファイル転送プロトコル。 ファイルのダウンロードやアップロードにFTPを使用。 FTPは、ファイルのアップロードやダウンロードの際、信頼性を重要視するため、TCPで動作します。 2 つのポートを使用します。

TCPポート20番はデータ転送のための用途、TCPポート21番は制御用として使用します。

  • SMTP (Simple Mail Transfer Protocol):メール転送プロトコルです。 TCP 上で動作し、ポートは 25 番を使用します。

  • POP3(Post Office Protocol Version 3):メール受信用プロトコルです。 アウトルックのようなプログラムはPOP3というプロトコルを使って動作します。 TCP ポート110番を使用します。

  • DNS (Domain Name System):ドメイン名に対するホスト情報を提供します。 基本的にUDP 上で動作します。 基本的に失敗したらもう一度要請すればいいですし、それほど重要な情報ではないからです。 しかし、信頼性を要する場合にはTCP上でも動作します。 データが長い場合、同じ時にTCPベースで動作できます。

UDP、TCP ポート53番を使用します。

このように、ポート番号が特定のプロトコルが使用していては使えないポートがあります。 このようなポートをwell-known portといいます。

Share