730 likes | 834 Views
トランスポート層の役割. トランスポート層とは …. OSI 参照モデルの第4層に位置し、データ転送の信頼性を確保するための方式を定めたもの 具体的にはネットワーク層を通して送られてきたデータを、次にどこに渡すかを識別 代表的には、 TCP、UDP の2つがある. 郵便物の例. 郵便配達員→ IP 住所→宛先 IP アドレス 目的の家→コンピュータ 郵便物→ IP データグラム 家の人→トランスポートプロトコル 誰宛か→プログラム. 通信の処理. 多くのアプリケーションプロトコルは、一般にクライアント / サーバーモデルという形式
E N D
トランスポート層とは… • OSI参照モデルの第4層に位置し、データ転送の信頼性を確保するための方式を定めたもの • 具体的にはネットワーク層を通して送られてきたデータを、次にどこに渡すかを識別 • 代表的には、TCP、UDPの2つがある
郵便物の例 • 郵便配達員→IP • 住所→宛先IPアドレス • 目的の家→コンピュータ • 郵便物→IPデータグラム • 家の人→トランスポートプロトコル • 誰宛か→プログラム
通信の処理 • 多くのアプリケーションプロトコルは、一般にクライアント/サーバーモデルという形式 • コンピュータではあらかじめサーバープログラムが起動されている(デーモン)
TCPとUDP • TCP • コネクション指向 • 信頼性があるストリーム型プロトコル • 順序制御・再送制御・フロー制御・ふくそう回避制御etc • UDP • コネクションレス指向 • 信頼性がないデータグラム型プロトコル
OSI参照モデル TCP/IPモデル4階層 7 アプリケーション層 4 アプリケーション層 6 プレゼンテーション層 5 セッション層 4 トランスポート層 3 トランスポート層(TCP/UDP層) 3 ネットワーク層 2 インターネット層(IP層) 2 データリンク層 1 ネットワークアクセス層 1 物理層 OSIとTCP/IPの層モデル対応図
TCPとUDPの使い分け • トランスポート層で信頼性のある通信を実現する必要がある場合にはTCP • 同報通信、高速性やリアルタイム性重視の通信にはUDP
ポート番号とは • プログラムのアドレス • アプリケーションの識別 ホストA 172.23.12.14 宛先172.23.12.14 データ IP
IPアドレスとポート番号とプロトコル番号による通信の識別IPアドレスとポート番号とプロトコル番号による通信の識別 • 宛先IPアドレス、送信元IPアドレス、宛先ポート番号、送信元ポート番号、プロトコル番号の5つの数字を組み合わせて通信を識別 • 具体的には図6.5参照
ポート番号の決め方 • 標準で決められている番号 • ダイナミックな割り当て法
IANAからの抜粋 Port Assignments: Keyword Decimal Description References ------- ------- ----------- ---------- 0/tcp Reserved 0/udp Reserved # Jon Postel <postel@isi.edu> tcpmux 1/tcp TCP Port Service Multiplexer tcpmux 1/udp TCP Port Service Multiplexer # Mark Lottor <MKL@nisc.sri.com> compressnet 2/tcp Management Utility compressnet 2/udp Management Utility compressnet 3/tcp Compression Process compressnet 3/udp Compression Process # Bernie Volz <volz@cisco.com> # 4/tcp Unassigned # 4/udp Unassigned rje 5/tcp Remote Job Entry rje 5/udp Remote Job Entry # Jon Postel <postel@isi.edu>
ポート番号とプロトコル • ポート番号は使用されるトランスポートプロトコルごとに決定。 • データがIP層に到着すると、IPヘッダ中のプロトコル番号がチェックされそれぞれのプロトコルのルーチンに渡される。 • ウェルノウンポート番号はプロトコルに関係なく同じ番号は同じアプリケーションに割り当てられる。
6.3UDP 4402086 山口 幸司
6.3.1UDPの目的と特徴 • IPを用いてのコネクションレス的通信 • データ量の制御や、再送制御は無い • 制御に関してはユーザー(プログラマー)が作成したアプリケーションプログラムが行う • 用途 • 総パケット数が少ない通信 • 動画や音声などのマルチメディア通信 • LANなどの特定のネットワークに限定したアプリケーションの通信 • 同報性が必要な通信(ブロードキャスト・マルチキャスト)
6.4TCP(前半) 4402086 山口 幸司
6.4.1TCPの目的と特徴 • ネットワークの問題点 • データの破壊・重複・順序の入れ替わり • 信頼性の高い通信が出来る • UDPと違い、制御機能(確認応答・再送制御・コネクション管理・ウィンドウ制御)が充実している。 TCPを用いると・・・
6.4.2 シーケンス番号と確認応答 • シーケンス番号 • 再送制御・重複制御などはシーケンス番号を使って行われる。 • コネクションの確立時に乱数で初期値を決め、それ以降は送信データをオクテット単位で数え、シーケンス番号に値を加算し、送信データに付加して送信する。 • 確認応答には、次に受信すべきシーケンス番号を付加して返送する。
6.4.2 シーケンス番号と確認応答 • 受信したデータが受信ホスト(B)に到着したとき、送信ホスト(A)にデータが到着したことを知らせる。確認応答(ACK) コネクション A B 時間 データ1~1000 確認応答(次は1001~) データ1001~2000 確認応答(次は2001~)
6.4.2 シーケンス番号と確認応答 • データが喪失し、確認応答が返ってこない場合、一定時間後にデータを再送する。 コネクション A B 時間 データ1~1000 × 喪失 一定時間 データ1~1000 確認応答(次は1001~)
6.4.2 シーケンス番号と確認応答 • 確認応答が喪失し、返ってこない場合もデータを再送する。 コネクション A B 時間 データ1~1000 一定時間 × 喪失 確認応答 (次は1001~) データ1~1000 確認応答(次は1001~)
6.4.3 再送タイムアウトの決定 • 再送せずに確認応答を待つ時間(再送タイムアウト時間)を適切に設定することが必要。 • 再送タイムアウト時間 =ラウンドトリップ時間+揺らぎの時間+α • 通信の環境に応じて動的に変化する。 • データを特定の回数再送しても確認応答が無い場合、ネットワークや相手ホストの異常と判断し、強制的にコネクションを切断する。
6.4.3 再送タイムアウトの決定 揺らぎが小さい場合 時間 コネクション A B 再送タイムアウト時間 時間 データ RTT RTT 確認応答 経過時間(データ量) データ RTT 揺らぎが大きい場合 時間 確認応答 データ 再送タイムアウト時間 RTT 確認応答 RTT
6.4.4 コネクション管理 コネクション A B • TCPはコネクションを確立した上で通信を行い、終了時には切断を行う。(UDPはいきなり送信) SYN(コネクション確立要求) 時間 ACK(SYNに対する確認応答) SYN(コネクション確立要求) ACK(SYNに対する確認応答) コネクションの確立完了 データ転送を行う FIN(コネクション切断要求) ACK(FINに対する確認応答) FIN(コネクション切断要求) ACK(FINに対する確認応答)
6.4.5 セグメント単位のデータ送信 • TCPでは1回に送るデータ単位(最大セグメント長)ごとに通信を行う。 イーサネット MTU=1500 A FDDI MTU=4352 B ルーター コネクション確立要求 時間 TCPヘッダ 20+4 IPヘッダ 20 MSSは4312にしましょう コネクション確立要求 TCPヘッダ 20+4 IPヘッダ 20 MSSは1460にしましょう TCPのデータ 1460 TCPヘッダ 20 IPヘッダ 20
6.4.6 ウィンドウ制御による速度向上 • 1セグメントごとに確認応答を待つ場合、ラウンドトリップ時間が長いと通信性能が悪くなる。 コネクション A B 時間 データ1~1000 RTT 確認応答(次は1001~) データ1001~2000 RTT 確認応答(次は2001~) データ2001~3000 RTT 確認応答(次は3001~)
6.4.6 ウィンドウ制御による速度向上 • ウィンドウの概念を取り入れ、複数のセグメントごとに確認応答を制御することで、転送時間を大幅に短縮できる。 コネクション A B データ 1~1000 確認応答 1001~2000 2001~3000 次は1001~ 3001~4000 次は2001~ 次は3001~ 4001~5000 次は4001~ 5001~6000 6001~7000 次は5001~ 7001~8000 次は6001~ 次は7001~ 8001~9000 次は8001~ 9001~10000 ・・・
6.4TCP(後半) 4402090 山田浩隆
6.4.7 ウィンドウ制御と再送制御 • 確認応答が失われた場合 データは届いてるから再送する必要はない しかしウィンドウ制御をしない場合には再送をしなければならない。 ウィンドウ制御をする場合には確認応答が失われても再送する必要はない。
6.4.7 ウィンドウ制御と再送制御 データ 確認応答 1~1000 次は1001 1001~2000 次は2001 2001~3000 次は3001 3001~4000 次は4001 4001~5000 次は5001 5001~6000 次は6001
6.4.7 ウィンドウ制御と再送制御 • 送信セグメントが失われた場合 受信ホストが今までに受信したデータの確認応答を返す。 • 高速再送制御・・・一度受け取った確認応答を3回連続で受け取った場合、その確認応答が示しているデータを再送する
6.4.7 ウィンドウ制御と再送制御 データ 確認応答 1~1000 1001~2000 次は1001 2001~3000 3001~4000 次は1001 3つの重複 確認応答 次は1001 4001~5000 次は1001 5001~6000 3つの重複応答を受け取ると再送する 次は1001 6001~7000 次は1001 次は7001 1001~2000 7001~8000 8001~9000 次は8001 9001~10000 次は9001
6.4.8 フロー制御(流量制御) • ウィンドウサイズ・・・受信ホストが受信可能なデータサイズ • フロー制御・・・受信側のバッファがあふれそうな時にウィンドウの値を小さく設定して送信ホストの送信量を抑制
6.4.8 フロー制御(流量制御) データ 確認応答 ウィンドウ 1~1000 次は1001 3000 1001~2000 2001~3000 次は2001 2000 3001~4000 次は3001 1000 次は4001 0 ウィンドウロープを定期的に送信する バッファが満杯の状態 ウィンドウロープ 次は4001 0 4001~5000 次は4001 3000 5001~6000 ウィンドウ更新通知が途切れ、通信不能になるのを避けるためウィンドロープと呼ばれる小さなデータを送信する。 ウィンドウ更新通知
6.4.9 ふくそう制御 (ネットワークの混雑解消)6.4.9 ふくそう制御 (ネットワークの混雑解消) • ネットワークにいきなり大量のデータを送信するとネットワークがパンクする可能性がある • TCPでは通信開始時にスロースタートと呼ばれるアルゴリズムによりデータの送信量の制御が行われる
6.4.9 ふくそう制御 (ネットワークの混雑解消)6.4.9 ふくそう制御 (ネットワークの混雑解消) ふくそうウィンドウ データ 確認応答 1000 1~1000 次は1001 2000 1001~2000 2000 2001~3000 次は2001 次は3001 3000 3001~4000 4000 4001~5000 次は4001 4000 5001~6000 次は5001 4000 6001~7000 次は6001 次は7001
6.4.9 ふくそう制御 (ネットワークの混雑解消)6.4.9 ふくそう制御 (ネットワークの混雑解消) • パケットが往復するたびにふくそうウィンドウが1,2,4と指数関数的に大きくなる。それを防ぐためにスロースタート閾値を用意
6.4.9 ふくそう制御 (ネットワークの混雑解消)6.4.9 ふくそう制御 (ネットワークの混雑解消) ふくそうウィンドウ の大きさ タイムアウト タイムアウト ふくそう ウィンドウ 重複確認応答 半分 半分 3セグメント 時間 スロースタート閾値 指数関数的にウィンドウが増加
6.4.10 ネットワークの利用効率を高める仕組み6.4.10 ネットワークの利用効率を高める仕組み • Nagleアルゴリズム 送信すべきデータがあっても、そのデータが少ない場合には送信を遅らせる処理 ・全ての送信済みデータが確認応答されている場合 ・最大セグメント長(MSS)のデータを送信できる場合 以上の状態に当てはまる場合にTCPはデータを送信する
6.4.10 ネットワークの利用効率を高める仕組み6.4.10 ネットワークの利用効率を高める仕組み • 遅延確認応答 データを受信してもすぐに確認応答を行わないで遅らせる方法 ・2×最大セグメント長のデータを受信するまで確認応答をしない ・そうでない場合は確認応答を最大で0.5秒遅延させる
6.4.10 ネットワークの利用効率を高める仕組み6.4.10 ネットワークの利用効率を高める仕組み • ピギーバック 確認応答と返事のデータパケットを1つのパケットで送り、送受信するパケット数を減らすことができる アプリケーションがデータを処理して返事のデータを送信するまで確認応答が遅延されなければピギーバックは起こらない
6.4.11TCPを利用するアプリケーション • アプリケーションが細かい制御をしたほうがよい場合はUDPを使ったほうがよい • データの転送量が比較的多く、信頼性を非打つようとしているが、難しいことを出来るだけ考えたくない場合にTCPが有効
6.5 リアルタイム通信とRTP 4402062 原田卓郎
リアルタイム通信とは • いつまでに相手にデータを届けるかを保証することのできる通信 • 分散制御やマルチメディア伝送において非常に重要な通信技術 • ハードリアルタイム通信とソフトリアルタイム通信がある
時間制約におけるリアルタイム通信の違い(1)時間制約におけるリアルタイム通信の違い(1) • ハードリアルタイム通信 • 必ず時間制約を守らなければならない通信 • 主に制御コマンドや同期信号等に使用される • サイズは小さいがレイテンシ(遅延時間)に厳しいという特徴がある
時間制約におけるリアルタイム通信の違い(2)時間制約におけるリアルタイム通信の違い(2) • ソフトリアルタイム通信 • 時間制約を多少破ることを許容する通信 • 主にマルチメディア系のデータ通信に使用される • データ量が大きく(ストリーミング等)、レイテンシよりもスループット(単位時間当りの通信量)を重視するという特徴がある
リアルタイム通信の分類の例 • リアルタイムの双方向通信 • 会話(電話)、対戦型ゲーム • リアルタイムの片方向通信 • ライブ中継(コンサート) • リアルタイムでないデータ転送 • ホームページの閲覧
RTPとは • Real-time Transport Protocol • 音声や動画などのデータストリームをリアルタイムに配送するためのデータ転送プロトコル • パケットロス対策や伝送時間保証などは行われていないUDPタイプのプロトコル • RTCPによる通信状態レポートとセットで用いられる
RTCPとは • RTP Control Protocol • RTPと組み合わせて使う、データのフロー(送受信)制御および送信者と受信者の情報を記述するための仕様 • データストリームの受信者がRTCPパケットを定期的に送信することで、送信者の伝送レート等の調整を行なう • IPマルチキャストを用いた音声や動画通信を行なう様々なアプリケーションに実装されている
6.6 UDPヘッダフォーマット 4402002 浅野 淳一