プロトコル
機器のメーカーやOSが異なっていても通信できるようにするための共通の約束事です。HTTPやFTP等があります。
TCP/IPとは?
個々にTCPやIPというプロトコルもあるのですが、一般的にTCP/IPとは「インターネットを構築、運用する上で必要なプロトコル群の総称」を指します。
TCP/IPの階層モデル
各階層が独立していてわかりやすいです。各階層には階層を識別するヘッダ情報を含んでおり、送信側と受信側のやり取りはルーターが受け持ちます。
アプリケーション層(アプリケーションプロトコル)
コンピューター上のアプリケーション同士がやりとりする。
プロトコル例
- HTTP
- SMTP
- FTP
- SSH
- DNS
- SMTP
用途
- Web
- メール
- ファイル転送
- IP電話
- 名前解決
- IPアドレス自動割り当て
HTTPのTCP/IPの処理の流れ
各層がそれぞれの役割をこなし、次の層に依頼をすることでWebアクセスは実現されています。
HTTPはTCPに通信依頼する。
TCPは依頼を受けて「通信の保証」や、「データの分割」、「通信速度の調整」などを行います。
TCPはIPに配送依頼する。
IPは依頼を受けて、「通信相手に対してどういう経路で送るべきか」を決定します。
IPはイーサネットに実際の通信を依頼する。
イーサネットは、依頼を受けて「実際に物理的な通信」を行います。イーサネットは、アプリケーション同士のプロトコルは意識しない。通信に有線か無線を使うかなどのみを意識する。
トランスポート層(トランスポートプロトコル)
データ転送を制御する。具体的にはアプリケーション同士の通信のコネクション確立や切断、転送に失敗した場合の再送処理等を行います。
- TCP
- UDP
ネットワーク層(インターネットプロトコル)
IPアドレスを管理し、経路選択する。具体的には、コンピュータがネットワークでつながっている環境で宛先IPを参照して次にデータを渡すルータを決定します。
- IP
- ICMP
- ARP
ネットワークインターフェイス層
直接接続された機器同士で通信する。具体的には、実際にデータを通信します。NICを動かすためのデバイスドライバです。
- Ethernet
- PPP
用途
- イーサネット
- 無線LAN
- フレームリレー
TCPコネクション
OSI参照モデルのレイヤ4に該当して、3Way-Handshakeによってパケットを送信元から送信先に送付します。双方のノードがESTABLISHEDになった状態のことをTCPコネクションの確立と呼びます。
TCPコネクションの例
ブラウザがWebページを表示させて画像をダウンロードする際に確立します。同時並行で複数画像をダウンロードする場合は複数のTCPコネクションを確立します。
TCPコネクションの確立手順(3Way-Handshake)
- 要求元から要求先に対してSYNパケットを送信
- SYNパケットを受信し要求先は、要求者の接続を許可することを表すSYN/ACKパケットを送信(接続許可)
- SYN/ACKパケットを受信した要求元は接続開始を表すACKパケットを要求先に送信し、相手との通信を開始する(コネクション確立)
通信の状態
TIME_WAIT
接続終了待ちの状態です。タイムアウト値を設定しておくことでどれくらい接続の終了を待つかを指定できます。使用済みのTCPポートの開放を早くすることも可能です。
ソケットについて
ソケットはTCP通信をプログラミングで利用するためのインターフェイスです。TCPコネクションを一つ確立すると一つソケットを消費します。
この記事へのコメントはありません。