通信レイヤとは
通信レイヤとは、一言でいえば、複雑な通信の仕組みを、役割ごとに分けた段組みのことです。インターネットで私たちがメッセージを送るという一つの動作の裏側では、「電気を流す」「宛先を探す」「エラーを直す」といった全く種類の違う仕事が同時に行われています。これを一つのプログラムでやろうとすると無理があるため、仕事を階層(レイヤー)ごとに分担させています。
「送信側」は上の層から下の層へ向かってデータを作り、「受信側」は下の層から上の層へ向かってデータを解析していきます。OSI参照モデルを例に取ると、以下のようになります。
送信側の動き:カプセル化(上から下へ)
あなたがメールを送ったりWebサイトを見たりするとき、データは上の層から順に「荷札(ヘッダー)」を貼られて包まれていきます。
アプリケーション層(L7) でデータを作成。
トランスポート層(L4) で「TCP」の荷札を貼る。
ネットワーク層(L3) で「IPアドレス」の荷札を貼る。
データリンク層(L2) で「MACアドレス」の荷札を貼る。
物理層(L1) で「電気信号」にして送り出す。
受信側の動き:非カプセル化(下から上へ)
データを受け取った側は、下の層から上の層へとバウムクーヘンの皮を剥くように進めていきます。
物理層(L1) で電気信号をデジタルデータに戻す。
データリンク層(L2) で自分のMACアドレス宛か確認し、L2の荷札を剥がす。
ネットワーク層(L3) で自分のIPアドレス宛か確認し、L3の荷札を剥がす。
トランスポート層(L4) でポート番号を見てどのアプリに渡すか決め、L4の荷札を剥がす。
アプリケーション層(L7) でついに、中身のデータ(メッセージや画像)が表示される。
代表的なモデル
OSI参照モデル
OSI参照モデル(Open Systems Interconnection reference model)とは、国際標準化機構(ISO)によって策定された、コンピューターが通信するための機能を7つの階層に分類したモデルのことです。下から順に、物理的な「線」の話から、一番上の「人間が触れるアプリ」の話へと積み上がっています。
第7層 アプリケーション層
役割: 「人間(ユーザー)が操作するアプリケーション」と「ネットワーク」をつなぐ窓口。人間の操作(入力)をネットワーク形式のデータにする。
主なプロトコル/技術: HTTP(Webブラウザとサーバー間の通信プロトコル)、SMTP(メールを送信・転送するための通信プロトコル)、FTP(ファイルを送受信するための通信プロトコル)
第6層 プレゼンテーション層
役割: データの翻訳と整形。文字コードの変換、データの圧縮・解凍、データの暗号化・復号など異なるコンピュータ間でも同じ内容を正しく読み書きできるよう、データの「形」を整える。
主なプロトコル/技術: SSL/TLS(データの暗号化)
第5層 セッション層
役割: 対話の管理。通信の開始から終了までの一連の流れ(セッション)を管理します。
主なプロトコル/技術: RPC(プログラムの遠隔実行)、NetBIOS(コンピュータの名前解決・対話管理)
第4層 トランスポート層
役割: 確実なデータ転送の保証。ポート番号によるアプリの識別、データの分割・再構築、フロー制御などデータがエラーなく、正しい順番で相手に届くように制御します。
主なプロトコル/技術: TCP(確実にデータが届くことを保証する)、UDP(到達保証なし、リアルタイム性重視)
第3層 ネットワーク層
役割: 目的地への経路選択(ルーティング) 。異なるネットワーク間をまたいで、IPアドレスが指す宛先までデータを運びます。
主なプロトコル/技術: IP(ネットワーク上の機器を見つけるための通信規格)、ルーター(IPアドレスを見て、データをどの方向に転送すべきかを判断する仕組み)
第2層 データリンク層 :
役割: 隣接する機器との通信。直接つながっている機器(スイッチ、PC間など)でのデータ転送を制御します。
主なプロトコル/技術: イーサネット(線LANで最も普及している通信規格)、スイッチ(どのポートにデータを転送するかを判断する仕組み)
第1層 物理層
役割: 電気信号の伝送 データを「0」と「1」の電気信号、光信号、または電波に変換して物理的な媒体に流します。
主なプロトコル/技術: LANケーブル、光ファイバー、ハブ、無線電波
TCP/IPモデル
OSI参照モデルは理想的な教育用のモデルですが、実際のインターネットの実装では、よりシンプルなTCP/IP階層モデルが使われています。OSI参照モデルが7階層だったのに対し、TCP/IPモデルはより実用性を重視して4つの階層で構成されています。
アプリケーション層: OSIの5~7層を統合したもの
トランスポート層: TCP, UDP
インターネット層: IP
ネットワークインターフェース層: OSIの1~2層を統合したもの
備考
TCPとは
TCPは、データの信頼性を何よりも大切にするプロトコルです。「確実に、順番通りに」届けることを保証します。
1. TCPコネクション(通信前の「儀式」)
TCPは、いきなりデータを送り始めることはしません。まず、送信側と受信側の間で専用の「通り道(土台)」を作ります。これをコネクションと呼びます。このコネクションを作る際に行われるのが、「スリーウェイ・ハンドシェイク」です。
SYN(接続依頼): クライアント「通信を始めたいです。いいですか?」
SYN-ACK(許可と依頼): サーバー「いいですよ!私も準備ができました。そちらもいいですか?」
ACK(確認): クライアント「了解しました!では始めましょう」
この3ステップを経て、初めて「通信の準備が整った状態(コネクション確立)」になります。
2. TCPパケットの「荷札」による管理
コネクションができたら、データを小さな塊(パケット、またはセグメント)に分けて送ります。このとき、TCPはパケットの頭に特別な「荷札(TCPヘッダー)」を貼り、以下の情報を管理します。
-
① シーケンス番号(パケットの番号)
パケットに「これは1番目の欠片」「これは2番目」と番号を振ります。インターネットではパケットがバラバラの順序で届くことがありますが、受信側はこの番号を見て、元のデータに正しく並べ直すことができます。 -
② 確認応答番号(ACK:届いたよ!の返事)
パケットを受け取った側は、「次は〇番のパケットをください」という返事(ACK)を返します。送信側は、一定時間返事が来なければ「途中でパケットが消えた(パケットロス)」と判断し、自動的に同じパケットを送り直し(再送)ます。
3. フロー制御と混雑制御
TCPはただ送るだけでなく、相手の状況も見ています。
フロー制御: 相手のメモリがいっぱいになりそうなら、送るスピードを落とします。
混雑制御: ネットワーク全体が混んでいることを察知すると、パケットを送る量を少しずつ増やしたり減らしたりして、パンクを防ぎます。
UDP(User Datagram Protocol)とは
UDPは、余計な確認を一切せず、一方的にデータを送り続けるプロトコルです。
1. UDPの最大の特徴:コネクションレス
UDPには、TCPのような「スリーウェイ・ハンドシェイク(事前の挨拶)」がありません。
いきなり送信: 相手が準備できているか確認せず、いきなりデータを送り始めます。
返事不要: 相手が受け取ったかどうかの確認(ACK)も求めません。
再送なし: 途中でデータが消えても(パケットロス)、送り直すことはしません。
2. なぜ「投げっぱなし」が良いのか?
一見すると不誠実な通信に見えますが、これには大きなメリットがあります。
リアルタイム性: 確認や再送の待ち時間がないため、データが届くまでの遅延(レイテンシ)が最小限に抑えられます。
ネットワーク負荷が低い: 余計なやり取り(荷札の情報の少なさ)がないため、効率よくデータを流せます。
3. UDPが活躍する場面
「少しぐらいデータが抜けても、最新の情報を早く届けてほしい」という用途で使われます。
動画配信・テレビ会議: 一瞬画像が乱れたり音声が途切れたりしても、それより「今の動き」を映し続けることが重要です。
オンラインゲーム: キャラクターの現在位置が1秒遅れて届くと、ゲームが成立しません。