ネットワーク コミュニケーション トランスポート層 TCP/UDP 6/28/07
5/24のスライド No.3 基 本 機 能 (2) 4つの機能がモジュール化され,右図のように層をなしている (階層化) これで通信が行われる 今回はトランスポート層の話
トランスポート層のプロトコル TCPとUDPのふたつのプロトコル ポートの管理 データの信頼性 パケットの到達性 信頼性のない IP を使って,信頼性のある通信を行うものがTCP IPを下請けに使って,ホスト間で通信する 途中のルータでは利用されない アプリケーションにより,TCPとUDPを使い分ける
ポート番号とポートによる通信
ポ ー ト 番 号 (1) 1台のホストで,複数のアプリケーション メール,WWWなど異なるアプリケーション 複数の同じアプリケーション どのアプリケーションが送り出したパケットなのか,どのアプリケーションあてのパケットなのか区別する IPアドレスだけでは不可 そのためのものがポート番号
ポ ー ト 番 号 (2) 実際にはポート番号だけでなく, 終点IPアドレス 始点IPアドレス 終点ポート番号 始点ポート番号 終点ポート番号 始点ポート番号 プロトコル番号(TCP・UDP) で,通信(パケット)を区別する この組合せをアソシエーション(association)
ポ ー ト 番 号 (3) 0~65535 (2オクテット) 0 ~ 1023 (教科書 p.341-342) Well Knownポート番号 1024 ~ 49151 予約済みポート番号 49152 ~ 65535 動的割当て又はプライベート用ポート番号
ポ ー ト 番 号 (4) Well Knownポート番号 代表的なアプリケーションは使用するポート番号が決められている サーバの管理者が勝手に決めると,クライアント側は困る(意識的に変える場合もある) 20,21 ftp 25 smtp 80 http 110 pop
ポ ー ト 番 号 (5) 参照サイト http://www.iana.org/assignments/port-numbers http://www.vwnet.jp/mura/tcpip-port.htm http://www.mm-labo.com/computer/tcpip/ipaddress/portsort.html
ポ ー ト に よ る 通 信 (1) 教科書 p.187 サーバ(例えばwebサーバ)は リクエスト受け付けるポート番号(80) プロトコル(TCP) を決め,クライアント(利用者)からのリクエストを待つ
ポ ー ト に よ る 通 信 (2) クライアント(利用者)は 自分が通信に使うポート番号(49152~)* を決め,サーバのポート番号あてに送る サーバは,クライアントのポート番号あてに返事を送る *実際には,1024~を使っていることもある模様 もちろん,そのポート番号は別のアプリケー ションが使っていないものである
ポ ー ト に よ る 通 信 (3) サーバのポート番号は,あらかじめ決まっている クライアントのポート番号は,適当に決められる
ポ ー ト に よ る 通 信 (4) 実際にはポート番号だけでは,複数のクライアントからのリクエストを区別できないので,IPアドレスを含む5つのデータ(アソシエーション)を用いる
T C P と U D P
T C P と U D P
データの信頼性 IPとは異なり,データもチェックサムの対象としている(p.191,204)
U D P データが壊れていないことは保証 データ部分もチェックサムの対象 データの到達性は保証されない 送りっぱなし
TCPでのパケットの到達保証
TCP(到達性の保証 1) 交信するホスト間で,データが届いたかどうかの確認をすることにより,データの到達性の保証をする 確認応答 ACK(アック,ACKnowledgement) 教科書p.193~
TCP(到達性の保証 2) TCPヘッダ(p.192)
TCP(到達性の保証 3) シーケンス番号 送信するデータに付ける連続番号 1オクテットごとにつける データの大きさが1000オクテットの時, 最初のシーケンス番号が3001なら, 次のシーケンス番号は4001となる この番号でパケットの順序が分かる
TCP(到達性の保証 4) 確認応答番号 受信側で,次に受け取るべきシーケンス番号を返答する シーケンス番号3001の大きさ1000オクテットのデータを受け取ると,確認応答番号4001の返事を送る
TCP(到達性の保証 6) 再送処理 ー 送信側は,一定時間内に確認応答のないパケットを再度送る このためには,パケットのコピーを残しておかなければならない
コ ネ ク シ ョ ン(1) 教科書 p.198 通信相手が確実に応答するか確認するためなど データ送信の前に, 通信相手とコネクション(接続?)を確立し, 送信が終わるとコネクションを切断する
そ の 他
ウィンドウフロー制御 パケットごとに確認応答をしていると,効率が悪い 確認応答を待たずにパケットを送ることができる 受信側で,まとめて受け取ることのできるデータの大きさがウィンドウサイズ
輻 輳 制 御 確認応答が来なくなると,ネットワークが混んでいるとみなして,送信するデータ量を減らす
ストリーム型・データグラム型 UDPは,アプリケーションから渡されたデータにヘッダを付けて,そのまま送る データグラム型 TCPは,データを加工してから送る ストリーム型
即 時 性 TCPは,到達性を保証するためなどのために,即時性は低い UDPは,即時性が高い
通 信 相 手 の 数 TCPはユニキャストのみ UDPはユニキャスト,マルチキャスト,ブロードキャスト
フ ロ ー 制 御 ・ 輻 輳 制 御 TCPは行うが,UDPは行わない
と り あ え ず ま と め(1) ポート番号とは,パケットを送り・受け取るアプリケーションを区別するためのもの と り あ え ず ま と め(1) ポート番号とは,パケットを送り・受け取るアプリケーションを区別するためのもの ポート番号がなく,IPアドレスだけしかなかったらどうなるのか? パケットのデータが正しいものであることをチェックできる
と り あ え ず ま と め(2) TCP 時間がかかっても,確実に相手に届けたい と り あ え ず ま と め(2) TCP 時間がかかっても,確実に相手に届けたい IPというあまり当てにならないものを使って,信頼性のある通信を実現する どうやって? UDP 確実性を欠いても,直ぐに相手に届けたい ライブ中継 少ないデータ
フ ァ イ ア ウ ォ ー ル
ファイアウォール(1) 外部との境界に置き,外部からの不正アクセスを防ぐ “5分で絶対に分かるファイアウォール” http://www.atmarkit.co.jp/fsecurity/special/17fivemin/fivemin00.html
ファイアウォール(2) IPアドレスやポート番号でパケットを制限する Webサーバを設置していなければ,外部から80番ポートへのアクセスはありえない 通常,アクセスを認めるポート番号以外のパケットを規制(廃棄)する Webサーバがなければ80番ポートへのパケットは捨ててかまわない
ファイアウォール(3) 外から内への制限だけでなく,内から外への制限を課す場合もある 実際には,もっと複雑
ファイアウォール(4) 専用のハードウェア ルータにその機能が含まれるの ソフト
ファイアウォール(5) 破棄したパケットの記録 こちらが受け付けるポートを調べている ポートスキャン
ファイアウォール(6) ポートスキャン(port scan)とは 攻撃・侵入の前段階に行われる標的サイトの各ポートにおけるサービスの状態の調査 http://www.ipa.go.jp/security/ciadr/word_idx.html より 定点観測 http://www.jpcert.or.jp/isdas/ http://isc.sans.org/
次 回 (予 定) アプリケーションの代表例 DNSの仕組み NATとDHCP