LoginSignup
0
1

TCP/IP階層モデルの概要

Posted at

はじめに

 プロトコルを体系的に理解するための記事。
 TCP/IPモデルに準拠して記述してある。



階層モデル

 プロトコルを役割毎にレイヤーとして分類したもの。

 階層モデルには、TCP/IPモデルとOSI基本参照モデルがある。
 現在は、TCP/IPモデルがデファクトスタンダードである。



TCP/IPモデル

 プロトコルを4層に分類している。

    TCP/IP Model

 各層のプロトコルは、データ本体にヘッダーやトレーラを付加する。
 ヘッダーに自身の役割を果たすために必要な情報を格納して通信を行っている。

 例えば、インターフェース層ならIPアドレスを、
 ネットワークインターフェース層ならMACアドレスの情報を格納している。

    paket


アプリケーション層

 サーバとクライアント間でやりとりする、
 メッセージや命令の形式を取り決めたプロトコル群。

 つまり、送受信するデータ本体を記述するためのルールである。

・HTTP

 webサーバとwebブラウザがやりとりする、HTTPメッセージの形式を定めたプロトコル。
 HTTPメッセージは、リクエストとレスポンスの2つに分類される。

 HTTPリクエスト
 webブラウザ側が送信するメッセージのこと。
 URLが示すドメインにあるサーバに対して、
 閲覧したいファイル名と自身の情報を添えてメッセージを送信する。

 HTTPレスポンス
 webサーバ側が送信するメッセージのこと。
 HTTPリクエストに対して送信される。
 ファイル本体やその情報が含まれている。

 ステートレス型
 HTTPはステートレス型のプロトコルである。
 そのため、クッキーを利用してセッションを維持している。

クッキー:
 サーバがクッキーを発行し、レスポンスヘッダに埋め込む。
 クライアントはそれを保存し、
 以後同じドメインと通信する際にヘッダーに追加して通信する。
 クッキーには期限があり、それを過ぎると自動的に削除される。
 内容は、セッションIDなど見られても問題ないもの。

 webサービス、webアプリ
 webページ用のHTTPを利用したサービスのこと。
 検索エンジンやショッピングサイト、IP電話、動画共有サービスなど。

 webページとの違いは元々あるHTMLファイルを返すか、
 サーバ内プログラムが生成したHTMLを返すかである。

背景:
 従来まではサービス毎にアプリケーション層プロトコルや、
 サーバクライアント用プログラムを用意していた。
 新しいサービスを提供する際に、新しいプロトコルを作成し普及させるより
 既存のHTTPを利用することで費用や労力を抑えることができる。


メール用プロトコル

 ステートフル型なので、終了コマンドが送られるまで通信は継続する。

・SMTP
 送信用プロトコル。
 メールソフトとサーバ、サーバとサーバ間で使用されている。

・POP
 受信用プロトコル。
 サーバからメールをダウンロードし、メールソフト側で管理する。

・IMAP
 受信用プロトコル。
 サーバ側がメールを保管する。

・MIME
 電子メールでASCII以外のデータを扱えるようにする拡張機能。
 MIMEタイプでデータ型を指定する。


ファイル共有/転送プロトコル

・SMB/AFP
 LAN内でファイルやプリンタを共有する時に使用する。

・FTP
 インターネット上で、サーバなどにファイルを転送する時に使用する。
 コマンドで操作する。

 コネクション
  FTPは、コントロールコネクションとデータコネクションの
  2つの回線に分かれて通信を行う。
  コントロールコネクションは、認証やコマンド送信、
  データコネクション接続のための通信を行う。
  一方データコネクションは、ファイルを転送する。

なぜコネクションを分ける?:
 データ転送中でもコマンドを送ることができるため、
 効率化を図ることができる。

 モード
  データコネクションをサーバとクライアントのどちらから接続を開始するかによって、
  アクティブモードとパッシブモードにわかれる。
  アクティブはサーバから、パッシブはクライアントから開始する。

アクティブモードの注意点:
 ファイアウォールやルータは、外部から開始される通信を拒否してしまう。
 そのため、アクティブモードでは接続できない可能性がある。

遠隔操作プロトコル

・Telnet
 遠隔地にあるコンピュータをコマンドを送って操作する。

・SSH
 データを暗号化して、遠隔地にあるコンピュータを操作する。
 暗号化には、ハイブリッド暗号方式が採用されている。

デフォルトでは、利便性を考慮して電子証明書は利用しない。


DHCP

 LAN内のコンピュータに、プライベートIPアドレスを割当てる時に使用するプロトコル。
 DHCPサーバ機能を持った機器(家庭ではルータ)が、
 自身と接続したコンピュータに一意のIPアドレスを割り振る。


トランスポート層

 データを適切なアプリケーションに届けるためのプロトコル群。
 ポート番号によってアプリケーションを識別している。

ポート番号:
 サーバが利用する各アプリケーション層プロトコルには、
 予め決められたウェルノウンポートが割り当てられている。
 一方クライアント側は、毎回ランダムなダイナミックポートが、
 割り当てられて通信を行う。

 トランスポート層プロトコルは、TCPとUDPの2つ。

・TCP

 転送速度を重視して、データを転送するプロトコル。
 IP電話や動画配信などリアルタイム通信が必要な時に使用される。

・UDP

 確実性を重視して、データを転送するプロトコル。
 そのため、通信はコネクション確立から始まるし、
 データが届かない場合は再送も行う。

コネクション確立は、3ステップで行われるため
3ウェイハンドシェイクと呼ばれている。


データ形式

 トランスポート層が扱うデータは、
 TCPヘッダーが付くとセグメント、UDPヘッダーが付くとデータグラムと呼ばれる。

 TCPヘッダーにはコントロールフラグがあり、
 これによって回線の混雑状況やデータが正しく届いたかなど、
 通信を制御している。


インターネット層

 異なるネットワーク間の機器が通信を行う際の、
 ルールを定義したプロトコル群。

・IP

 ネットワークの中核を担うプロトコル。
 主に以下3つが定義されている。

 IPアドレスによる識別
  ネットワーク上の機器にIPアドレスを割り当てることで、
  各機器を識別する。

 データのパケット化
  転送するデータを分割し、パケット単位で通信する。
  フラグメンテーションもしくは、パケット交換方式と呼ばれる。

 ルーティング
  ルータが持つルーティングテーブルを元にして、
  適切な経路を選択する。

・ICMP

 IPによる通信状況を確認するためのプロトコル。
 使用例は以下である。

 宛先の存在確認
  エコーメッセージによって宛先と通信可能か確認する。

 通信制御
  通信回線が混雑しているかや経路が適切かなどを確認する。

 ルータ探索
  自身が所属しているネットワークのルータを探す。

 TTL(Time To Live)
  パケットが生存期間を超え消滅したことを知らせる。

・IPsec

 IPに認証と暗号化を追加したプロトコル。
 主にVPNで使用される。


データ形式

 インターネット層が扱うデータは、パケットと呼ばれる。
 IPヘッダーには、送信元や宛先IPアドレス、
 パケットを1つのデータに復元するための情報などが格納されている。


ネットワークインターフェース層

 隣接する機器間が通信を行う際のルールを定義したプロトコル群。

・イーサネット

 有線LANで接続された機器間が使用するプロトコル。
 ソフトウェアとハードウェア仕様を定義している。

・PPP

 コンピュータが1対1で通信する際に、
 仮想的な専用回線を構築するためのプロトコル。
 仕組みは、セッション確立や認証を経て通信を開始する。

・PPPoE

 イーサネットにPPPを組み合わせたプロトコル。
 イーサネットにはPPPの持つ仕組みがないため、
 PPPoEによってそれらを実現して通信する。

プロバイダとのアクセス回線で使用されている。

・WiFi

 無線LANで使用するプロトコル。

・ARP

 宛先のIPアドレスを元にMACアドレスを調べるためのプロトコル。
 仕組みは、ARPパケットをブロードキャストする。


データ形式

 ネットワークインターフェース層が扱うデータをフレームという。
 フレームヘッダーには、
 プリアンブルやMACアドレスなどが格納されている。
 また、データ末尾にエラーチェック情報が格納されたトレーラも付加する。

プリアンブルとは?:
 データの先頭を知らせるため、フレームの先頭にある情報。
 ネットワークカードは、電圧を受け取ってそれをデジタルデータに変換する。
 電圧の始まりを知らせるためにプリアンブルが必要である。

・ヘッダーは付け替えられる
 宛先までに経由する機器にデータが着くたびに、
 フレームヘッダーは付け替えられる。
 例えば、あるルータにデータが到着すると、
 そのルータはフレームヘッダーを取り外し、宛先IPアドレスを確認する。
 次に、隣接するルータのMACアドレスをARPによって調べる。
 そしてデータにフレームヘッダーを付け直しデータを転送する。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1