OSI参照モデル ネットワーク/トランスポート層

概要

OSに組み込まれたTCP/IPソフト等により、
TCP/UDPプロトコル
IPプロトコル
ARPプロトコル
ICMPプロトコル
を利用して通信制御を行う層。
具体的には、
・コネクションの確立
・エラー制御
・フロー制御
・順序制御
を行う。
これらの情報はソケットに保存しておき、随時参照しながら処理を行われる。
OSI参照モデル セッション層」参照

ソケットの情報

・自IPアドレス
・自ポート番号
・通信先IPアドレス
・通信先ポート番号
・状態(接続待ち等)
・プログラムID
コマンド:netstatでソケットの内容を確認可能

TCPプロトコル

・接続フェーズ
・送受信フェーズ
・切断フェーズ
から成る。
相手にメッセージを送った後、
相手からその指示が届いた事を示す確認メッセージを受信するまでが1セット。
確認メッセージが届かなければ、こちらのメッセージが届いていないと見なして再送する。
指定の回数、送信した結果全て確認メッセージが届かなければ通信失敗として上位層にその結果を返す。

TCPヘッダー

TCPプロトコルで利用されるデータ
主な項目は以下の通り
・送信元ポート番号
・宛先ポート番号
・シーケンス番号:送信データの連番
・ACK番号:受信済みデータの連番
・チェックサム:送信完了後の誤り検知用数値
・コントロールビット:状態を表す数字。各桁(ビット)のフラグのON/OFFで状態を伝える。
 ACK:TCPヘッダー内の「ACK番号」フィールドが有効である事を示す。
 RST:障害発生時に強制的に通信を終了する際に使用。
 SYN:TCPヘッダー内の「シーケンス番号」フィールドが有効である事を示す。
 FIN:通信終了を表す。
作成後、ヘッダーをIPプロトコルに渡して後の処理は任せる。

UDPプロトコル

TCPプロトコルと違い、送信後に確認メッセージを受け取らない通信方式。
受信した側も確認メッセージを送らない。
不確実だが高速にデータを送信したい時に利用。
DNSへの問い合わせ、時刻サーバーへの問い合わせ、リアルタイムでの動画や音声のストリーム再生時等。

UDPヘッダー

・送信元ポート番号
・宛先ポート番号
・パケット長
・チェックサム:送信完了後の誤り検知用数値
から成る。
作成後、ヘッダーをIPプロトコルに渡して後の処理は任せる。

IPプロトコル

異なったネットワーク間で、指定された宛先(IPアドレス)までデータを送る為のプロトコル
・アドレッシング(住所付け)
・ルーティング(通信経路の選定)
を行う事でネットワークを超えてデータを転送できる。
アドレッシング(住所付け)
ネットワークに接続しているノードの中から、通信を行う宛先(アドレス)を指定する
ルーティング
アドレッシングで決まった宛先のまでパケットを届けるのにどのような経路を使うか決める
IPヘッダー
MACヘッダー
を付与し、LANアダプタ(LANカード、イーサネットコントローラー)に渡す。
受信時は、宛先IPが自分宛てか否か?を判定して取捨選択、
分割されていれば結合等の処理を行う。

IPヘッダー

IPプロトコルで利用されるデータ
主な項目は以下の通り
・IPヘッダー長
・データ長
・ID:個々のパケットを区別する通し番号。IPフラグメントにより分割されても全て同じID。
・生存期間(TTL)
・プロトコル番号:TCP(06)/UDP(11)/ICMP(01) ※16進数
・宛先IPアドレス
・送信元IPアドレス

MTU

MaximumTransmissionUnit
送信可能なパケットの最大サイズ
・IPプロトコルで規定されているパケットの最大サイズ
・イーサネットで規定されているパケットの最大サイズ
・ケーブルで規定されているパケットの最大サイズ
はそれぞれ違う。
物理的なネットワーク機器(ハブ、ルーター等)毎に数値を持っている。

IPフラグメンテーション

IPプロトコルの機能
MTUに合わせてパケットを分割する
分割するパケットサイズは均等になる様には分けず、
先頭のパケットサイズがMaxになる様に分ける。
分割対象はTCPヘッダー以降のデータ。
結果的に分割した場合、
・先頭パケットにはTCPヘッダー+データの一部
・次パケットにはデータの一部
という構成になる
分割を行うのはIPソフトウェアを持つ機器。
具体的にはコンピューター、ルーター、サーバー等に限定される。
分割されたパケットはバッファメモリに保持され、
・フラグメントフラグ
・フラグメントオフセット
の値を参照の上、IPソフトウェアによって結合される。

MACヘッダー

イーサネットはIPアドレスではなく、MACアドレスで宛先を判断している為、
イーサネットの仕様に合わせた情報を付与する必要がある。
イーサネット上の通信に必要な情報は以下の通り。
・宛先MACアドレス:ARPで調べて付与する。
・送信元MACアドレス:自LANカードのROMから読みだして付与する。
・イーサネットタイプ:IP/ARP等

ARPプロトコル

宛先IPアドレスだけを指定してネットワーク全体にMACアドレスを問い合わせるプロトコル。
受け取った端末は、宛先IPが自分ならMACアドレスを返信する。
宛先IP外の端末はパケットを捨てる。

ICMPプロトコル

・問い合わせ機能(ping/traceroute)
・エラー通知機能
から成るプロトコル。
エラー通知機能においては、
宛先IPアドレスを元にデータが届いた後、
TCP/IPソフトウェアにおけるIP処理部でチェックサムの判定を行い、
データの欠損があった場合等に送信元にエラー通知を出す。

tracerouteコマンド

宛先IPまでに経由するルーターのIPを調べるコマンド
TTL:1でIPを送信→1つ目のルーターでTTL:0になるのでICMPメッセージが返ってくる。
その際、ICMPメッセージのIPヘッダーを見ると、1つ目のルーターのIPアドレスが分かる。
TTL:2でIPを送信→2つ目のルーターでTTL:0になるのでICMPメッセージが返ってくる。
その際、ICMPメッセージのIPヘッダーを見ると、2つ目のルーターのIPアドレスが分かる。
という仕組みで、宛先IPに到達するまで順にTTLを増やして送信し、それまでのルーターIPを表示する。