network
last update:
2013/05/06
Search :
: 0 results
OSI参照モデル
OSI(Open Systems Interconnection)
ISO(国際標準化機構)により制定
ネットワークシステムの様々な仕様を標準化する
第7層(アプリケーション層) = アプリケーションとサーバの通信に関する規定(HTTP、FTPなど)
第6層(プレゼンテーション層) = データの意味に関する規定(文字コード、圧縮、暗号など)
第5層(セッション層) = 送受信の同期に関する規定
第4層(トランスポート層) = 通信の信頼性に関する規定(TCP、UDP、再送制御など)
第3層(ネットワーク層) = ルーティングに関する規定(IP、ルータなど)
第2層(データリンク層) = 隣接する通信機器間の送受信に関する規定(MACアドレス、ハブ、ブリッジなど)
第1層(物理層) = 物理的な接続に関する規定(コネクタ、ケーブルなど)
IP(Internet Protocol)
IPネットワークの定義
IETF(標準化団体)が仕様を決める
ルーターやレイヤー3スイッチなどのネットワーク機器が中継しデータを送受信
// IPパケット
伝送するデータの最小単位
IPv4(IPヘッダー(諸情報96bit|送信元IPアドレス32bit|宛先IPアドレス32bit)|データ部)
IPv6(IPヘッダー(諸情報64bit|送信元IPアドレス128bit|宛先IPアドレス128bit)|(拡張ヘッダー)データ部)
バージョン = IPv4かIPv6か
TOS = 優先度
TTL = パケットの寿命
パケット長 = IPパケット全体のバイト数
プロトコル = TCP(途中で失われたデータを再送する)かUDP(再送せずに速度を上げる)か
IPアドレス
// IPv4
32bit
192.168.10.1 の場合
11000000 10101000 00001010 00000001
192.168.10.0/24 = ネットワーク部(11000000 10101000 00001010) + ホスト部(00000001〜11111110) = 192.168.10.1〜192.168.10.254 = 254個のホスト・アドレス
192.168.10.0 はネットワーク・アドレスのため端末に割り当て不可
192.168.10.255 はブロードキャスト・アドレスのため端末に割り当て不可
192.168.10.0/28 = ネットワーク部(11000000 10101000 00001010 0000) + ホスト部(0001〜1110) = 192.168.10.1〜192.168.10.14 = 14個のホスト・アドレス
192.168.10.0 はネットワークアドレスのためホストとしては使用不可
192.168.10.15 はブロードキャストアドレスのためホストとしては使用不可
24や28はサブネット・マスク(ネットワーク部のビット数の長さ)
ホスト部の一部をネットワーク部として拡張することで複数のネットワーク(サブネット)を作成可能
ユニキャスト・アドレス = 1対1でデータを送受信
マルチキャスト・アドレス = 特定グループの端末に同じデータを同時に送信
ブロードキャスト・アドレス = LAN内の全ての端末に同じデータを同時に送信
ループバック・アドレス = 自分自身を示す
// IPv6
128bit
fe80::718d:8f5:eab2:4a26 の場合
fe80:0000:0000:0000:718d:8f5:eab2:4a26
11111110 10000000 00000000 00000000 00000000 00000000 00000000 00000000 01110001 10001101
00001000 11110101 11101010 10110010 01001010 00100110
プレフィックス(64bit) + インターフェースID(64bit)
プレフィックス = ISPへの分配(32bit) + ISPからUserへの分配(32bit-n) + サブネットID(n)
インターフェースID = MACアドレスから自動生成するか、ランダム生成
DHCPサーバーを必要としない
グローバル・ユニキャスト・アドレス = 1対1でデータを送受信
リンクローカル・ユニキャスト・アドレス = IPv6の制御通信用
マルチキャスト・アドレス = 特定グループの端末に同じデータを同時に送信
エニーキャスト・アドレス = 特定グループ内の一番近い端末だけに送信
// IPv4とIPv6の共存
デュアル・スタック = 両方のプロトコルを機器に共存させる
トンネリング = IPv4ネットワークを伝達する際は、IPv6パケットはIPv4パケットで内包する
TCP(Transmission Control Protocol)
TCPスタックプログラムがIPネットワーク上にTCPコネクションを確立しデータを確実に送り届ける
TCPパケット(TCPヘッダー(コネクション情報|伝達情報|オプション|その他)|データ) -> IPパケットのデータ部に入る
コネクション情報 = 送信元ポート番号、あて先ポート番号、制御ビット
伝達情報 = シーケンス番号、確認応答番号、ウインドウ・サイズ(連続して受信できるデータ量)、チェックサム
オプション = 最大セグメント・サイズ、ウインドウ・スケール、SACKなど
// TCPコネクション
C = クライアント
S = サーバー
1) 確立(スリーウェイ・ハンドシェイク)
C -------------- SYN -------------> S
C <---------- SYN + ACK ----------- S
C -------------- ACK -------------> S
2) データ転送(1個のパケットで100バイトの場合)
C ----- SEQ:101,data:101-200 -----> S
C <----------- ACK:201 ------------ S
C ----- SEQ:201,data:201-300 --X S
C ----- SEQ:301,data:301-400 -----> S(201が未転送)
C (Timeout) S
C ----- SEQ:201,data:201-300 -----> S
C ----- SEQ:301,data:301-400 -----> S
C <----------- ACK:401 ------------ S
2-a) エラー時の機能(高速再転送:抜けがあれば要求を3回送る)
C ----- SEQ:201,data:201-300 --X S
C ----- SEQ:301,data:301-400 -----> S(201が未転送)
C <----------- ACK:201 ------------ S
C <----------- ACK:201 ------------ S
C <----------- ACK:201 ------------ S
C ----- SEQ:201,data:201-300 -----> S
C ----- SEQ:301,data:301-400 -----> S
2-b) エラー時の機能(SACK:未転送のものをピンポイントで要求)
C ----- SEQ:201,data:201-300 --X S
C ----- SEQ:301,data:301-400 -----> S(201が未転送)
C <---- ACK:201,SACK:301-400 ------ S
C ----- SEQ:201,data:201-300 -----> S
3) 切断
C ----------- FIN + ACK ----------> S
C <------------- ACK -------------- S
C <---------- FIN + ACK ----------- S
C -------------- ACK -------------> S
UDP(User Datagram Protocol)
TCPと対になるもので、UDPスタックがIPネットワーク上でデータを転送する
ポート番号の管理以外は何もしないことが特徴
コネクションを作らないため信頼性が低いが、速く、スタックにかかる負荷が小さい
再送制御はアプリケーションが行なう
ブロードキャストやマルチキャストはTCPでは実現不可能
IP電話や映像配信のアプリケーションはUDPを使うメリットが大きい
UDPパケット(UDPヘッダー(コネクション情報|伝達情報|長さ)|データ) -> IPパケットのデータ部に入る
コネクション情報 = 送信元ポート番号、あて先ポート番号
伝達情報 = チェックサム(パケットが壊れていないか検証するためのデータ)
ICMP(Internet Control Message Protocol)
エラーや通信状態を知らせるプロトコル
IPパケットのデータ部分にICMPメッセージ(タイプ|コード|チェックサム|データ)が入る
IPヘッダーにTTLとプロトコル番号が入る
tracerouteコマンドやpingコマンドで状態を参照できる
MACアドレス
イーサネットでLANポートを識別するための番号
LANカードやルータなどのLAN機器に出荷時点で設定されている
イーサネットを越えたインターネット(IPネットワーク)で通信相手を識別するためにはIPアドレスが必要
ルーターはあて先IPアドレスを持つ機器のMACアドレスを探し(ARP)データを転送する
48bit(24bit(OUI=ベンダー識別(8bit(6bit|G/L(1bit)|I/G(1bit))|8bit|8bit))|24bit(ベンダーが使用))
G/Lビット = MACアドレスがグローバル・アドレスかローカル・アドレスかを示す
I/Gビット = Individual/Group = あて先がユニキャストかマルチ/グローバルキャストかを示す
イーサネット・フレーム
パケットを内包し、特定のルーターまで運ぶ
ルーターを越えるとイーサネットフレームは別のものを使う
長さは64~1518バイト(その内18バイトはMACアドレスなどの制御情報)
|FCS(4Bite)|データ(46-1500Bite)|MACヘッダー(タイプ(2Bite)|送信元MACアドレス(6Bite)|あて先MACアドレス(6Bite))|プリアンブル(8Bite)|
FCS = データやMACヘッダーに誤りが無いか検査するための値
タイプ = データに入るものの種類を示す
プリアンブル = フレームの先端を表す
ARP(Address Resolution Protocol)
IPアドレスを元にMACアドレスを取得する
// ARP要求
MACフレーム(ARPパケット(目標IPアドレス|目標MACアドレス|送信元IPアドレス|送信元MACアドレス|コード|制御情報)|送信元MACアドレス|あて先MACアドレス)
目標IPアドレス = 相手のIPアドレス
目標MACアドレス = 不明(全て0)
送信元IPアドレス = 自分のIPアドレス
送信元MACアドレス = 自分のMACアドレス
コード = 要求(1)
送信元MACアドレス = 自分のMACアドレス
あて先MACアドレス = ブロードキャスト(FF-FF-FF-FF-FF-FF)
// ARP応答
MACフレーム(ARPパケット(目標IPアドレス|目標MACアドレス|送信元IPアドレス|送信元MACアドレス|コード|制御情報)|送信元MACアドレス|あて先MACアドレス)
目標IPアドレス = 自分のIPアドレス
目標MACアドレス = 自分のMACアドレス
送信元IPアドレス = 相手のIPアドレス
送信元MACアドレス = 相手のMACアドレス
コード = 応答(2)
送信元MACアドレス = 相手のMACアドレス
あて先MACアドレス = 自分のMACアドレス
DHCP(Dynamic Host Configuration Protocol)
IPアドレス、サブネット・マスク、デフォルト・ゲートウェイなどの設定を自動で行なう
DHCPクライアント = DHCPサーバーから設定情報を取得
DHCPサーバー = 設定情報の配布や管理
サブネット・マスク = 伝送がルーターを越えるか否かの境界を示す
デフォルト・ゲートウェイ = 転送を依頼する最寄りのルーターのIPアドレス
// クライアントとサーバーのやりとり
1) DHCPディスカバー = DHCPクライアントがブロードキャストで設定情報を要求
2) DHCPオファー = DHCPサーバーが設定情報を提供
3) DHCPリクエスト = DHCPクライアントが採用する設定情報を決めブロードキャストで連絡
4) DHCPアック = 採用されたDHCPサーバーが要求を確認したことを連絡
リース = 設定情報の割当期間で、半分減ったら延長要求を送る
リース期間延長 = ネットワークが繋がったままならユニキャストで延長要求を送り、再起動した場合はネットワークが変わっている可能性があるためブロードキャストで延長要求を送り、ネットワークが変わっていた場合はサーバが否定応答(DHCPナック)を送るので、クライアントはDHCPディスカバーから再度始める
// 設定情報
|IPヘッダー(20bite)|UDPヘッダー(4bite)|DHCPメッセージ(本体)(236bite)|DHCPメッセージ(オプション)(可変長)|
DHCPメッセージ(本体)には、割り当てるIPアドレスやサーバーのIPアドレスなどが入る
DHCPメッセージ(オプション)には、ドメイン名・サブネットマスク・デフォルトゲートウェイ・DNSサーバアドレス・リース期間、などが入る
// DHCPリレー・エージェント
DHCPクライアントからの情報を別のネットワークにあるDHCPサーバに中継する
DNS(Domain Name System)
アドレスとドメイン名を対応付けるシステム
ドメインを元にDNSサーバに問い合わせると対応したIPアドレスを教えてくれる
リゾルバ = WebブラウザやDNSサーバに含まれるプログラムで、IPアドレスを問い合わせる
HTTP(Hypertext Transfer Protocol)
Webブラウザによる要求(HTTPリクエスト)とWebサーバーによる応答(HTTPレスポンス)
// HTTPリクエスト
1) リクエスト行 = [メソッド] [データのパス] [バージョン]
GET /index.html HTTP/1.1
2) メッセージ・ヘッダー = 対応言語やエンコード方式など
3) メッセージ・ボディ = データ送信時に使う
- メソッドの種類
CONNECT = プロキシ経由のSSL通信を要求
DELETE = データの削除を要求
GET = データを要求
HEAD = データに関する情報を要求
OPTIONS = オプション機能の問い合わせ
POST = データを送信
PUT = データファイルをアップロード
TRACE = 経由マシンが返答するよう要求
// HTTPレスポンス
1) ステータス行: [バージョン] [ステータス・コード] [説明]
HTTP/1.1 200 OK
2) メッセージ・ヘッダー = 対応言語やエンコード方式など
3) メッセージ・ボディ = 要求されたデータなど
- ステータス・コードの種類
100 Continue = データに続きがある
101 Switching Protocols = 指定したプロトコルで再接続を要求
200 OK = 処理成功
201 Created = ファイル作成成功
301 Moved Parmanently = データは移動
302 Moved Temporary = データは一時的に移動
401 Unauthorized = 認証が必要
403 Forbidden = アクセス不可
404 Not Found = データが無い
500 Internal Server Error = サーバーエラー
503 Servive Unavailable = 処理不能
SMTP(Simple Mail Transfer Protocol) / POP3(Post Office Protocol version 3)
メールの送受信に使用(SMTP = 送信に使用 / POP3 = 受信に使用)
相手のメールサーバーはDNSが探す
1) 自分のメーラーがSMTPで自分のメールサーバーにメールを送信
2) メールサーバーがSMTPで相手のメールサーバーに転送
3) 相手のメールサーバーは、相手のメーラーから要求が来たらPOP3でメールを転送
///