コンピュータ同士が通信を行うために決められた規約のこと。
プロトコルは当初、メーカごとに異なったものを開発していた。しかしコンピュータやネットワークの技術が広まるにつれて異なったメーカ同士のコンピュータを接続し通信するための仕組み(互換性)が重要であると認識され、標準化が行われるようになった。また、プロトコルに多くの役割を詰め込みすぎると複雑になりすぎるため、機能ごとに分割して階層化するという考えが広まっていった。階層化されたプロトコルのまとまりをプロトコルスイートという。標準化された代表的なプロトコルスイートがOSI参照モデルとTCP/IPである。
2つは別物のプロトコルスイートであるが、互いに共通点も多い。
階層 | OSI参照モデル | TCP/IP |
---|---|---|
第7層(レイヤ7/L7) | アプリケーション層 | アプリケーション層 |
第6層(レイヤ6/L6) | プレゼンテーション層 | |
第5層(レイヤ5/L5) | セション層 | |
第4層(レイヤ4/L4) | トランスポート層 | トランスポート層 |
第3層(レイヤ3/L3) | ネットワーク層 | インターネット層 |
第2層(レイヤ2/L2) | データリンク層 | ネットワークインタフェース層 |
第1層(レイヤ1/L1) | 物理層 |
OSI参照モデルはそのまま現在のネットワークに実装されているわけではないが、理論的な面で優れているためネットワークの説明などでよく用いられているモデルである。7階層に分ける。
TCP/IPは現在のネットワークにおいてデファクトスタンダートとして実装されている技術である。IETFによって標準化されている。主にインターネット層のIPとトランスポート層のTCPの2つのプロトコルを使用して通信を行う。
TCP/IPのインターネット層、OSI参照モデルのネットワーク層で動作するプロトコル。IPアドレスでコンピュータ同士の通信を実現する。現在のインターネットの通信の基本となる重要なプロトコルの一つである。IPは次の特徴がある。
IPヘッダには大きくIPv4ヘッダとIPv6ヘッダの2種類がある。次に示す図はIPv4ヘッダである。
できればすべて覚えておきたいが、余力があったらでよい。以下のポイントはおさえる。
IPアドレスはIPにおいて相手先ホストを特定し、通信をするために使用されるアドレス体系である。IPアドレスは32ビットからなり、8ビットごとに4等分して10進数で表記される。IPアドレスを理解し、問題を解くためには2進数と10進数の相互変換を覚える必要がある。
例:
・2進数 :1100000 10101000 00000000 00000001
・10進数:192. 168. 0. 1
IPアドレスにはネットワークアドレス部とホストアドレス部がある。
ネットワークアドレス部とホストアドレス部を分けるときの考え方は次の2方式ある。
IPアドレスをクラスに分ける方式で、IPが開発された当初に使われていた考え方である。IPアドレスとクラスA~Dの4つのクラスに分割して付与していく。
クラス | ネットワークアドレスのビット数 | 先頭ビット/IP | 範囲 | 割り当てられる目安台数 |
---|---|---|---|---|
A | 8ビット | 0 | 0.0.0.0~127.0.0.0 | 1677万台 |
B | 16ビット | 10 | 128.0.0.0~191.255.0.0 | 6万5千台 |
C | 24ビット | 110 | 192.0.0.0~223.255.255.0 | 254台 |
他に、クラスD,Eの2つの特殊なクラスが存在する。
クラス | ネットワークアドレスのビット数 | 先頭ビット/IP | 範囲 | 用途 |
---|---|---|---|---|
D | 32ビット | 1110 | 224.0.0.0~239.255.255.255 | マルチキャスト用 |
E | 32ビット | 1111 | 240.0.0.0~255.255.255.255 | IETFによる実験用 |
ネットワークアドレス部を可変とする方式。サブネットマスクやCIDR表記を用いてネットワークアドレス部を表す。
TCP/IP、OSI参照モデルともにトランスポート層のプロトコル。IPとともに現在のインターネット通信の基本となる重要なプロトコルの一つである。TCPは次の特徴がある。
ポート番号は通信相手のアプリケーションを識別するための番号で、16ビットの整数で定義される。次の3種類がある。
アプリケーションごとに使うために予約されているポート。インターネット標準としてIANAによって管理されている。代表的なウェルノウンポートは以下。
ポート番号 | プロトコル | TCP/UDP | 説明 |
---|---|---|---|
20 | FTP(データ転送用) | TCP | サーバとクライアント間のデータ転送を行うプロトコル。 |
21 | FTP(コントロール用) | ||
22 | SSH | TCP | コンピュータを安全に遠隔操作するためのプロトコル。 |
23 | Telnet | TCP | コンピュータを安全に遠隔操作するためのプロトコル。 |
25 | SMTP | TCP | メール転送プロトコル。 |
53 | DNS | TCP/UDP | ドメインとIPアドレスを紐づける仕組みを提供するプロトコル。 |
67 | DHCP(サーバ) | UDP | 自動でIPアドレスを付与するための機能を提供する。 |
68 | DHCP(クライアント) | ||
80 | HTTP | TCP | インターネット通信で広く使われているプロトコル |
110 | POP3 | TCP | メール受信用プロトコル。取得後はメールサーバから削除される。 |
123 | NTP | UDP | 正確な時刻を取得するためのプロトコル。 |
143 | IMAP | TCP | メール受信用プロトコル。取得後もメールサーバ上に保存される。 |
161 | SNMP | UDP | ネットワーク監視を行うためのプロトコル。 |
162 | SNMP(トラップ) | ||
443 | HTTPS | TCP | HTTP通信を安全に行うためのプロトコル。 |
IANAが管理しているポートだが、ウェルノウンポートほどよく使われているものはなく厳密でもないため、非公式で使われているポート番号も存在する。
だれでも自由に使えるポート。OS側で動的に割り当てる場合に使われるポート。
データを転送する際に一度に送れるデータ量は限られている。そのため、TCPでは送信可能なデータ量に分割して送信し、送信先で再構成する必要がある。分割したデータの単位をセグメント、分割・送信・再構成の仕組みをTCPセグメンテーションという。
宛先・送信元のポート番号とともに、TCPセグメンテーションや後述するTCPコネクションを確立するための仕組みを提供するためのデータをTCPヘッダという。
また、TCPヘッダと上位プロトコルのヘッダとデータを足したものをTCPセグメントと呼ぶ。
次に示す図がTCPヘッダとなる。
この中のSYNとACKは次で説明するコネクションの確立で使用され、特に重要なフラグである。
TCPは信頼性を確保するためにコネクションを確立してデータ通信を行うコネクション型の通信である。コネクションは3ウェイハンドシェイクという方法で行う。例えば、PC1とPC2が通信を行う場合、TCPヘッダを利用して次のような応答が行われる。
3ウェイハンドシェイクによって確立したコネクションによってデータの送信が行われる。このときTCPセグメンテーションが行われる。データ転送の信頼性を確保しながら効率性を向上させる仕組みとして順序制御、再送制御、ウィンドウ制御、フロー制御、輻輳制御といった制御が行われる。
コネクションの開放は送信するデータがなくなった側からコネクション切断要求(FIN)を送ることで行われる。PC1が最初に送信データがなくなった場合、次の図のような手順で行われる。
トランスポート層のプロトコル。IPと組み合わせて、TCPかUDPを選択して使用する仕組みになっている。UDPはTCPで行っていた順番制御や再送制御などを一切行わず、代わりにシンプルで高速な仕組みを提供する。UDPを使用するプロトコルとしてDNS、SNMP、NTP、DHCPなどがある。