ITに関わる人であれば誰もが基礎として学ぶTCP/IPですが、何となくの知識で理解している方も多いのではないでしょうか。
コンピュータネットワークにおける標準化された通信プロトコルで階層構造があって~…というざっくりとした理解でこれまで過ごしてきてしまったので改めて整理しておきたくこの記事にまとめます。
TCP/IPとは
TCP/IPとは世界規模で標準化されたコンピュータネットワークの通信ルールや手順のことを指します。「インターネット・プロトコル・スイート」とも呼ばれています。
- TCP:Transmission Control Protocol
- IP:Internet Protocol
日々、我々が利用するチャット、メール、ホームページの閲覧など他のコンピュータデバイスと通信するための基盤技術として組み込まれています。

この技術がなければ、各企業がそれぞれの最適な方法でデバイスを開発し、利用する我々は「あの人のデバイスとはチャットやメールができるけど、この人のデバイスとはメールができない」という事態になります。これでは非常に不便です。
または各企業でデバイス開発時に別デバイスと通信ができるような仕組みを開発工程に組み込むという方法も考えられますがこれも非効率です。
そのため、コンピュータネットワークの通信規約が標準化されています。
TCP/IPの基本構造
例えば、自身の端末から相手の端末に何らかの通信を実行したい場合、データは物理的な光や電気の信号に変換して相手のデバイスに送信する必要があります。信号を受け取ったデバイスは人間が理解できる形式に変換します。そして相手はデータが送られてきたことを認識できます。
このような手順の処理を4つのレイヤーに分けたモデルがTCP/IPの階層モデルです。
| 4層 | アプリケーション層 |
| 3層 | トランスポート層 |
| 2層 | インターネット層 |
| 1層 | ネットワークインターフェース層 |
4層がそれぞれ異なる処理を担当し、データが正しく送受信できる仕組みを構築しています。
この4階層は上位層(アプリケーション層)ほど抽象的、つまりユーザーに近い役割を担当し、下位層(ネットワークインターフェース層)ほど具体的、つまり電気や光などの物理的な役割を担当します。
送信側が何らかのデータ通信を開始すると下記のような送信側から受信側へ階層をたどるフローで通信されるという仕組みです。

なぜ階層構造なのか
階層化すると下記のようなメリットがあるためです。
- 各層が独立して機能することで一部の層の通信プロトコルに追加/編集があった場合に、他の層を修正する必要がない
- 障害発生時にどの層のどの機能が原因かを特定し易い
アプリケーション層
4階層目に位置するアプリケーション層はユーザーが利用するアプリケーション間(メールの送受信、Webページの表示など)が通信するためのプロトコルが定義されています。

例えば、Webページでユーザーが認識できる形式でデータを表示するHTTP(HyperText Transfer Protocol)、ファイルのアップロードやダウンロードを実現するFTP(File Transfer Protocol)、メール送信を実現するSMTP(Simple Mail Transfer Protocol)などがこの階層で定義されており、データのフォーマット変換、通信の確立、ユーザー認証やデータの暗号化などの役割を担当します。
トランスポート層
3階層名に位置するトランスポート層はデータの送受信における信頼性および効率性を確保する役割を担っています。

通信相手とのコネクションの確立、どのアプリケーションに接続するかを識別するためのポート番号の管理、データ送信時の欠落を検知し必要に応じて再送するなどの機能があります。
主に下記の2つのプロトコルが使用されています。
- TCP:Transmission Control Protocol
- UDP:User Datagram Protocol
TCPはコネクション型のプロトコルと呼ばれており、相手と確実に通信できるかどうかを重視しています。ただし、相手と対話するように通信するため、通信速度はUDPに比べて遅いという特徴があります。

逆に通信速度が速いUDPはコネクションレス型のプロトコルとも呼ばれており、相手と対話するような通信を行いません。送ったら送りっぱなしという一方的な通信方法のおかげで速度を担保できますが、通信が必ず届いているかの保証ができません。

インターネット層
2層名に位置するインターネット層はデータを宛先まで届ける役割を担っています。

データを送り届ける宛先(IPアドレス)の識別やネットワーク上の宛先までの最適なルート決定を行います。
主にIP(Internet Protocol)が広く使われており、IPv4やIPv6がそれにあたります。よくインターネット上の住所として紹介されるIPアドレスはこの階層で識別されています。
ネットワークインターフェース層
最下層に位置するネットワークインターフェース層はデータを物理的に送受信するための役割を担っています。リンク層とも呼ばれています。

データをケーブルや無線通信で送受信できるように光信号や電気信号に変換します。また、MACアドレスを用いて同一ネットワーク内のデバイスを識別することができます。
主に下記2つのプロトコルが使用されています。
- Ethernet
- Wi-Fi
Ethernetは優先LAN接続で使用されるプロトコルで、Wi-Fiは無線LAN接続で使用されるプロトコルです。
まとめ
以上がTCP/IP全体のざっくりとした概要でした。
今後は各層をより深掘りした内容を記事にまとめ、この記事にも反映したいと思います。