TCP/IPとは、
インターネットなどで標準的に用いられる通信プロトコルのセットで、
TCP(Transmission Control Protocol)とIP(Internet Protocol)を組み合わせたもの。
また、TCPとIPを含む、インターネット標準のプロトコル群全体の総称でもある。
TCP/IPは機器やOSが異なっても共通のプロトコルを用いて通信を成立させている。
インターネット・プロトコル・スイート(Internet protocol suite)と呼ばれることもある。
IPは複数のネットワークを繋ぎあわせて相互に通信可能にするプロトコルで、 これを用いて世界的に様々な組織の管理するネットワークを相互接続してできたオープンなネットワークをインターネットと呼んでいる。
TCPはIPを基盤にその上層で利用されるプロトコルで、
IPネットワーク上の2地点間で信頼性の高い通信を可能にする。
TCPのさらに上層では、
用途やソフトウェアに応じて様々なプロトコルが規定されている。
例えば、
WebではHTTP(HyperText Transfer Protocol)が用いられるが、
HTTPはTCPを、
TCPはIPをそれぞれ利用してデータを転送している。
インターネットなどのIPネットワークではIPと組み合わせて、 TCPではなくUDPなどが用いられることもあるが、 「TCP/IP」という呼称はTCPとそれ以外を区別するという意味合いは薄く(「UDP/IP」という言い方はほとんどしない)、 「IPを中心とする標準的な通信プロトコルの総称」を表すことが多い。
歴史的な経緯からそのような用法が定着しているが、 今日ではそのような総称的な意味は「インターネット・プロトコル・スイート」(Internet Protocol Suite)のような用語で表すべきとされることもある。
インターネット・プロトコル・スイートに対応している機器同士であれば、 下記のような違いがあっても、 相互に通信することが可能となる。
プロトコルの仕様は公開されており、 西暦1980年代から西暦1990年代に業界の標語となった「ネオダマ」の「オ」にあたる「オープン」とある程度関連している。
TCP/ipの階層モデルの前に「OSI参照モデル」を解説しておく。
「OSI参照モデル」とは、
国際標準化機構(ISO)によって取り決められた7階層からなる、
通信機能の分割モデルである。
層の番号が大きくなればなるほど、
ソフトウェア的になっていき、
番号が小さいほど物理的になって行く。
基本的に送信時には上から下に下がって行き、
受信側のときは下から上がってくるイメージである。
層 | 規格(プロトコル) | 名称 | 概要 | 例 |
---|---|---|---|---|
7層 | アプリケーション層 | HTTP,FTP,DNS,SMTP,POPなど | 個々のアプリケーション | www,メール |
6層 | プレゼンテーション層 | SMTP,FTP,Telnetなど | データの表現形式 | HTML |
5層 | セッション層 | TLS,NetBIOSなど | 通信手段 | HTTPS |
4層 | トランスポート層 | TCP,UDP,NetWare/IPなど | エンド間の通信制御 | TCP,UDP |
3層 | ネットワーク層 | IP,ARP,RARP,ICMPなど | データを送る相手を決め最適な経路で送信 | IP |
2層 | データリンク層 | PPP,Ethernetなど | 隣接する機器同士の通信を実現 | Ethernet |
1層 | 物理層 | RS-232,UTP,無線 | 物理的な接続、電気信号 | UTPケーブル,光ファイバーケーブル |
アプリケーション層では、 ユーザが操作するソフトウェアが提供する、 具体的な機能についての仕様や通信手順、データ形式などを定めている。
多数あるこれらはユーザの用途に合わせてアプリケーションを利用し、
そこで利用されるプロトコルはアプリケーションによって様々なものがあり、
すべて異なっている。
その他のソフトウェアやアプリケーションを通じてコンピュータ機器に接続をする際は、
異なるプロトコルが無数にあるため、
利用するソフトウェアやアプリケーションに応じてハードウェアの通信機能でプロトコルの制御を行い通信を確立している。
プレゼンテーション層の主流となっているプロトコルはSMTPとFTP。
SMTPは電子メールを伝送する際に利用されるプロトコルで、
FTPはサーバにファイル転送を行う際に利用されるプロトコルである。
どちらもファイルを転送する役目があるが、 送ったファイルがサーバで動作しているアプリケーションの形式に沿ったフォーマットでなければ思ったとおりに表示されない。
「文字化け」はよくある不具合である。
文字コードが不適切であった場合は、
WebブラウザでWebページを閲覧しても文字化けにより文章が読めなくなってしまう。
適切な文字コードや改行コードでHTMLファイルを作成しファイル転送を行うことで、
上層のアプリケーション層にデータを渡すことができる。
具体的な例としては、 Webページを表現するHTML言語は、 世界的に最もポピュラーな文字コードのUTF-8にし、 改行コードは利用しているパソコンのOSに合わせることで、 文字化けや文字の改行が正確に表示できWebページが正確に表示されるようになる。
反対に、 下層のセッション層に渡す際は、 データの「暗号化」を用いて、 TLSプロトコルで暗号化通信をするために適切な形式にする役目もある。
セッションとは通信の開始から終了までを管理する1つの単位のこと。
ホストとはサーバやパソコンなどの端末を意味する。
従ってセッション層(L5)では通信の確立、維持、終了するまでの手順を規定している。
主流となっているプロトコルはTLSである。
TLSはSSLの次世代に定義された安全に通信をするためのセキュリティプロトコルである。
SSL3.0にアップデートしてからは通信の仕方は殆ど変わらないので、
SSL/TLSと表記されることもある。
SSLサーバ証明書は「運営者の実在性を確認」し、
ブラウザとウェブサーバ間で「通信データの暗号化」を行うための電子証明書で認証局から発行される。
これにより通信中の「なりすまし」「盗聴」「改ざん」などのリスクを回避し「フィッシングサイト」による詐欺被害を防止することが出来るのである。
トランスポート層は高信頼性やリアルタイム性など目的に応じた通信品質を実現する。
代表的なプロトコルはTCPとUDPである。
TCPは機器間の接続を作り通信が終わるときに接続を切り、
確実な信号を送信するためのプロトコルである。
特に、
パケット通信の際に不具合が見つかった際に再送をし、
重複するデータを削除したり、
パケットの順序を入れ替えるなどを行う。
従ってリアルタイムの通信には不適切であるが、
Webサーバへのアクセスなどデータが抜け落ちて困るときは、
信頼性の高いTCPを利用する。
もう一つの目的に分けて使い分けるUDPプロトコルは、
TCPのように通信の信頼性を高めることはしないが、
すぐに使える身近な通信機能を提供するので、
TCPとは反対に正確性はないがリアルタイム性の高い通信が可能で、
動画ストリーミング配信やリモート会議などで使用されるライブ配信などのように、
速度を重視した通信が可能である。
複数のネットワークをつないで相互にパケットをやり取りする機能を実現することを、
インターネットワーキングと言う。
L2では直接接続された機器同士の通信だが、
機器が増えた場合はL2プロトコルではインターネットワーキングは実現でない。
ネットワーク機器の中で代表的なものはルータだ。
ルータはネットワークの中継機能の役目をし所定の方向にパケットを転送する。
これをルーティングと呼び、
中継機能のルータはルーティング機能でサーバにデータを転送する。
また、
ネットワーク層(L3)で利用されるプロトコルの代表的なものはIPである。
IPアドレスというものを、
接続するコンピュータ機器に付与し、
機器同士で通信することに用いられる。
これにより、
直接つながっていないネットワーク間でパケットをルーティングする機能を提供し、
この働きによりコンピュータ機器が直接つながっているかどうかを問わず、
任意のコンピュータとの通信が実現できる。
隣接する機器のことを「隣接するノード」と言う。
データリンク層(L2)は通信回線のことを示し、
正確に通信をする規則が定められている。
代表的な組み合わせはMACアドレスによるイーサネット接続である。
MACアドレス(Medium Access Control Address)とは、
ノード間のデータ転送を行う際の宛先として使われるアドレスで、
コンピュータ機器の製造時に割り振られたもので、
これを物理アドレスやノードIDともいう。
イーサネット(Ethernet)とは、
主に室内や建物内でコンピュータや電子機器をケーブルで繋いで通信する有線LAN(構内ネットワーク)の標準の一つで、
最も普及している規格である。
また室内でも「無線LAN」がありLANケーブルを必要としない通信技術も存在する。
要するにイーサネットの概念は、
有線でも無線でもローカルエリア(室内、企業のオフィス内)のネットワークであることである。
従ってMACアドレスで機器を識別しイーサネットで接続をすると、
隣接したノード間で通信中のデータが壊れていないかのチェックをしながら確実な通信が実現できる。
物理層(L1)は、
ハードウェアのコネクタ形状やピン数などの物理的な接続を定めるものである。
バイナリ転送とは特定の文字コードの範囲に収まらない任意のビット列を含むバイナリデータを保存したファイルを転送することで、
機器間の電気信号や光信号などを用いてビット(0と1の符号化)単位でデジタル信号の送信・受信を行う通信方法である。
一方で、
ハードウェア同士接続をするケーブルや配線では、
この信号をもとに機器同士を電気信号などで通信をしている接続線のことである。
これらの一連の流れにより、
ハードウェア同士を物理的に通信を行う方法が物理層の通信である。
ここでは、 OSI参照モデルと対比しながらTCP/IPの階層モデルを解説する。
OSI参照モデル | TCP/IPの階層モデル | TCP/IPプロトコル | 処理 |
---|---|---|---|
アプリケーション層 | アプリケーション層 | HTTP,SMTP,POP3, FTP,SSH,RIP, SNMP等 |
通信アプリケーションプログラム |
プレゼンテーション層 | |||
セッション層 | |||
トランスポート層 | トランスポート層 | TCP,UPD | OS |
ネットワーク層 | インターネット層 | IP,ARP,ICMP,OSRF等 | |
データリンク層 | ネットワーク・ インターフェース層 |
Ethernet,PPP等 | デバイスドライバ NIC |
物理層 |