6章まとめ 4406011 岩瀬彰宏 6.1 トランスポート層の役割 トランスポート層とは・・・ 次にどのアプリケーションにパケットを渡せばよいか識別する 通信をする「プログラム」を指定する役割 この役割を実現する手法 -ポート番号という識別子 宛先の判断 通信の処理(1) クライアントがサーバにサービスなどを要求 サーバーが要求を処理してサービスを提供 この際に、サ-バープログラムが起動されて いる必要がある 通信の処理(2) サーバープログラム ・UNIX・・・デーモン(Demon) HTTPでは、httpd(HTTPデーモン) TELNETでは、telnetd(テルネットデーモン) さらに、この代表として、inetdというスーパーデーモンも 存在 通信の処理(3) 要求がどのパケットに向けられたものかは宛先ポート番号で識 別 ex)TCPの接続要求パケット受信 ポート番号が23番 telnetd 80番 httpd TCP、UDPのトランスポートプロトコルは、受信したデータの宛 先をポート番号で特定 HTTPの接続要求 TCPとUDP(1) 代表的なトランスポートプロトコルには、 「TCP」と「UDP」が存在 TCPはTransmission Control Protocol UDPはUser Datagram Protocol の略 TCPとUDP(2) TCP -コネクション志向で、信頼性のある ストリーム(切れ目がないデータ構造)型 プロトコル -送信した順に相手にデータが届く だが、データの切れ目が不明 TCPとUDP(3) TCPでは、信頼性の提供 ・順序制御 ・再送制御 ・フロー制御(流量制御) ・ふくそう回避制御 このほかに、ネットワークの利用効率を向 上させる仕組みなど、多機能 TCPとUDP(4) UDP -信頼性のないデータ型プロトコル -細かい処理は上位層のアプリケーションが決定 -データの大きさは保たれるが、パケットが到達 する保障はない 再送処理が必要な場合もある ソケット(1) TCPやUDPを利用する時に使われるAPI (Application Programming Interface)の名称。 アプリケーションはソケットを利用して、通信相手のIP アドレスやポート番号を設定したり、データの送受信 の要求をする。 ソケット(2) TCPとUDPの使い分け トランスポート層で信頼性のある通信を実現する必 要がある場合にはTCP 同報通信、高速性やリアルタイム性重視の通信には UDP 6.2 ポート番号 16 ポート番号とは トランスポートプロトコルにおけるアドレス 同一コンピュータ内で通信を行っている複数のプロ グラムを識別する 17 ポート番号によるアプリケーションの識別 トランスポートプロトコルは、ポート番号を使って、 通信しているプログラムを識別する ホストA 172.23.12.14 TELNET FTP SMTP HTTP FTP HTTP サーバー サーバー サーバー サーバー サーバー サーバー ポート番号 TCP21 ポート番号 TCP23 ポート番号 TCP25 ポート番号 TCP80 ポート番号 TCP2000 ポート番号 TCP2001 どの処理にデータを渡すのかな? データ & IP 18 宛先172.23.12.14 IPアドレスとポート番号とプロトコル番号による通信の識別 宛先IPアドレス、送信元IPアドレス、宛先ポート番号、 送信元ポート番号、プロトコル番号の5つの数字を組み 合わせて通信を識別 19 20 ポート番号の決め方 静的な割り当て方法 アプリケーションごとに、ポート番号を固定的に割り 当てる方法。(ウェルノウンポート番号) 動的な割り当て方法 サービスを受ける側のアプリケーションが、自分のポー ト番号を決定せずに、OSが割り当てる方法。 21 ポート番号とプロトコル ポート番号は使用されるトランスポートプロトコルごとに決定。 ex)TCPとUDPで同じポート番号を使用可能 データがIP層に到着すると、IPヘッダ中のプロトコル番号がチェックされ、 それぞれのプロトコルのルーチンに渡される。 ウェルノウンポート番号はプロトコルに関係なく同じ番号は同じアプリ ケーションに割り当てられる。 22 6.3.1 UDPの目的と特徴 ネットワークが混雑していたとしても、送信量 を制御しない。 パケットが失われても、再送制御はしない。 これらの制御が必要なら、UDPを利用する アプリケーションプログラムが制御しなければ ならない。 23 UDPの用途 総パケット数が少ない通信 動画や音声などのマルチメディア通信 LANなどの特定のネットワークに限定したア プリケーションの通信 同報性が必要な通信(ブロードキャスト、マ ルチキャスト) 24 TCP TCPの目的と特徴 伝送、送信、通信を制御するプロトコル。 送信時の制御機能が充実。 IPというコネクションレス型のネットワーク上で 高い信頼性。 シーケンス番号と確認応答 受信ホストが送信ホストに到達 したことを知らせる。 無事に届いたときのみ応答。 A 時 間 一 定 時 間 B × 喪失 再送タイムアウト時間の決定 再送せずに確認応答を待つ時間のこと。 パケットを送信するためにラウンドリップ時間とその揺 らぎを計測し順応。 UNIXやWindowsは0.5秒単位で制御。 時 間 揺らぎが大きい場合 再送タイムアウト時間 RTT コネクション管理 TCPはコネクション指向の通信 を提供。 ヘッダの制御用のフィールドを使 用。 セグメント単位でデータを送信 コネクション確立時にデータ単位を決定。 この最大データ長でデータが区切られて送信される。 ウィンドウ制御で速度向上 1セグメントではなく大きな単位で。 6.4.8-11 TCP (TRANSMISSION CONTROL PRITICOL) 6.4.8 フロー制御(流動制御) •受信ホストが送信ホ ストに対して受信可 能なデータサイズ (ウィンドウサイズ)を 通知するようにする。 時 間 データ 1~1000 確認応答 1001~2000 2001~3000 3001~4000 •受信側のバッファが 溢れそうになるとウィ ウィンドウ ンドウの値を小さくし ロープを定期 的に送信する て送信ホストの送信 量を抑制する。このよ 4001~5000 うな処理をフロー制 5001~6000 御という。 ウィンドウ更新通知が途切れ、通信不能 になるのを避けるためウィンドロープと 呼ばれる小さなデータを送信する。 ウィンドウ 次は1001 3000 次は2001 次は3001 次は4001 2000 1000 0 バッファが満 杯の状態 次は4001 0 次は4001 3000 ウィンドウ更新通知 フロー制御の図 6.4.9 ふくそう制御(ネットワークの混雑解消) *ネットワークに、通 信開始時から大量の パケットを送信すると ネットワークがパンク する可能性がある *その危険性をな くすため、スロース タートと呼ばれるア ルゴリズムに従い 送信する ふくそう ウィンドウ 1000 データ 1~1000 2000 2000 1001~2000 3000 4000 4000 4000 3001~4000 4001~5000 5001~6000 6001~7000 確認応答 次は1001 2001~3000 次は2001 次は3001 次は4001 次は5001 次は6001 次は7001 スロースタートの図 TCPのウィンドウの変化 ふくそうウィンドウ の大きさ タイムアウト パケットが往復するたび に、ふくそうウィンドウが 1・2・4と指数関数的に 急激に大きくなってしま うのを防ぐために、ス ロースタート閾値を用意 する タイムアウト 重複確認応答 半分 1セグメント ふくそうウィンドウ ふくそう ウィンドウ 半分 1セグメント 3セグメント スロースタート閾値 指数関数的 にウィンドウ が増加 時間 6.4.10 ネットワークの利用効率を高める仕組み(1) Nagleアルゴリズム 送信すべきデータがあっても、そのデータが少ない場合には 送信を遅らせる処理 ・全ての送信済みデータが確認応答されている場合 ・最大セグメント長(MSS)のデータを送信できる場合 以上の状態に当てはまる場合にTCPはデータを送信する 6.4.10 ネットワークの利用効率を高める仕組み(2) 遅延確認応答 データを受信してもすぐに確認応答を行わないで 遅らせる方法 ・2×最大セグメント長のデータを受信するまで確認 応答をしない ・そうでない場合は確認応答を最大で0.5秒遅延さ せる 6.4.10 ネットワークの利用効率を高める仕組み(3) ピギーバック 確認応答と返事のデータパケットを1つのパケットで 送り、送受信するパケット数を減らすことができる アプリケーションがデータを処理して返事のデータを 送信するまで確認応答が遅延されなければピギー バックは起こらない 6.4.11 TCPを利用するアプリケーション ・ ・ TCPの複雑な制御は時と場合により使い分けることが必要 アプリケーションが細かい制御をしたほうがよい場合は、UDP を用いたほうがよい ・ データの転送量が比較的に多く,信頼性が必要としているが、 難しいことを考えたくない場合にはTCPを用いるのがよい 6.5.その他のトランスポートプロトコル 6.5.1.UDP-LITE (LIGHTWEIGHT USER DATAGRAM PROTOCOL) UDPではチェックサムエラーが発生すると、パケット 全体が廃棄される 映像や音声のデータフォーマットアプリケーションの 性能を低下させてしまう。 UDPでチェックサムを外すと、UDPヘッダ中のポー ト番号が壊れたパケットや、IPヘッダ中のIPアドレス が壊れたパケットを受信してしまう恐れがある。 それらの問題を解決するため、UDP-Liteでは・・・ UDP-Liteでは、チェックサムを計算する範囲をアプ リケーションで決めることができる。 パケット全体、ヘッダ、疑似ファイル、データの先頭 から途中まで、などの範囲が指定可能。 エラーの発生してはいけない部分に関してのみ、 チェックサムで検査することができる。 6.5.2.SCTP (STREAM CONTOROL TRANSMISSION PROTOCOL) TCPと同様。特徴は メッセージ単位の送受信 マルチホーミングに対応 複数のストリームの通信 メッセージの生存時間を定義できる 6.5.3.DCCP (DATAGRAM CONGESTION CONTROL PROTOCOL) UDPと同様に、データの到達性に関する信頼性は ない。 コネクション指向で、コネクションの確立と切断処理 がある。コネクションの確立と切断の処理には信頼 性がある。 ネットワークの混雑に合わせた輻輳制御を行うこと ができる。DCCPを利用するアプリケーションの特 性により、「TCPライクな輻輳制御」と「TCPフレン ドリーなレート制御」のどちらかの方法を選択できる。 輻輳制御を行うため、パケットを受信した側は確認 応答(ACK)を返す。この確認応答を使って再送 をすることも可能。 6.6.UDPヘッダのフォーマット 6.6UDPヘッダのフォーマット 16bit 16bit 送信ポート番号 Source Port 宛先ポート番号 Destination Port パケット長 Length チェックサム Checksum データ data UDP ヘッダ 送信元ポート番号(SOURCE PORT) 16ビット長のフィールドで、ポート番号を示す。 指定しないことも可能(返事を必要としない通 信で利用)。 宛先ポート番号( DESTINATION PORT ) 16ビット長のフィールドで、宛先のポート番号を示す。 パケット長( LENGTH ) UDPヘッダの長さとデータの長さの和が格納される。 単位はオクテット長。 チェックサム UDPのヘッダとデータに信頼性を提供するためのもの。 チェックサムの計算方法 ① ② ③ ④ ⑤ UDP擬似ヘッダをUDPデータグラムの前に付ける。 全長が16ビットの倍数になるようにデータの最後 に”0”を追加する。 UDPヘッダのチェックサムフィールドを”0”にする。 16ビット単位で1の補数の和を求める。 求めた和の1の補数をチェックサムフィールドに入れる。 チェックサムの計算に利用するUDP擬似ヘッダ 8bit 8bit 16bit 送信元IPアドレス 宛先IPアドレス パディング (詰め物)0 プロトコル番号 17 UDPパケット長 6.7.TCPヘッダフォーマット TCPのセグメントフォーマット 0 31ビット 伝送元ポート番号 宛先ポート番号 シーケンス番号 確認応答番号 Dat a Of f set 予約 コントロー ルフラグ チェックサム ウィンドウサイズ TCPヘッダ 緊急ポインタ オプション パディング データ TCP ペイロード 送信元ポート番号・宛先ポート番号 送信元ポート番号(Source Port) ・・16ビット長のフィールドで、送信元 のポート番号を示す。 宛先ポート番号(Destination Port) ・・・16ビット長のフィールドで、宛先の ポート番号を示す。 シーケンス番号(SEQUENCE NUMBER) 32ビット長のフィールドで示す。 送信したデータの位置を意味する。 データを送信するたびに、送信したデータのオクテット 数だけ値が加算される。 コネクションを確立する時に初期値が乱数値で決 定され、SYNパケットで受信ホストに伝えられる。 確認応答番号 (ACKNOWLEDGEMENT NUMBER) 32ビット長のフィールドで、確認応答番号を示す。 確認応答番号は、次に受信すべきデータのシーケ ンス番号になっている。 送信側では、返された確認応答番号より前の データまでは正常に通信が行われたと判断できる。 データオフセット(Data Offset) 4ビット長のフィールド、で単位は4バイト長である 予約(Reserved) 将来の拡張のために用意されている4ビット長の フィールド ”0”にしておく必要があるが、0になっていないパ ケットを受信したとしても破棄してはいけない コントロールフラグ(CONTROL FLAG) 8ビット長のフィールドで、制御ビットと呼ばれる。各ビットは 左からCWR,ECE,URG,ACK,PSH,RST,SYN,FINと名づけ られる。 CWR:ECEフラグが1のパケットを受け取り、ふくそうウィンド ウを小さくしたことを相手に伝える。 ECE:通信相手に、相手側からこちら側へのネットワーク がふくそうしていることを伝える。 コントロールフラグ(CONTROL FLAG) URG:このビットが”1”の場合は、緊急に処理 すべきデータが含まれていることを意味する。 ACK:このビットが”1”の場合は、確認応答番 号のフィールドが有効であることを意味する。 コントロールフラグ(CONTROL FLAG) PSH:このビットが”1”の場合は、受信したデータを すぐに上位のアプリケーションに引き渡す。 “0”の 場合は、バッファリングが許される。 RST:このビットが”1”の場合は、コネクションが強 制的に切断される。 コントロールフラグ(CONTROL FLAG) SYN:このビットが”1”の場合は、コネクションの確 立したい意思表示を表し、シーケンス番号の初 期化が行われる。 FIN:このビットが”1”の場合は、今後送信する データがないことを意味し、コネクションを切断した いと意思表示を意味する。 ウィンドウサイズ(WINDOW) 16ビット長のフィールドで、受信可能なデータのサ イズを通知するのに使われる ・・・データのサイズはオクテット ここに示されているデータ量を超えて送信すること は許されない チェックサム(CHECKSUM) 途中のルーターのメモリの故障やプログラムの バグなどによるデータの破壊がないことを保障 するためのもの チェックサムを含むすべてのデータを足した結 果が0になると正しい値となる 緊急ポインタ(URGENT POINTER) 16ビット長のフィールドで、 “1”の場合に有効となる 緊急を要するデータの格納場所を示すポインタとし て扱われる 一般には、通信を途中で中断したり、処理を中断 する場合に使われる オプション(OPTIONS) TCPによる通信の性能を向上させるために利用される データオフセットフィールドによる制限のため、最大で40 オクテット オプション(OPTIONS) オプション(OPTIONS) タイプ2は、コネクションの確立時に最大セグメント 長の決定で利用される タイプ3は、TCPのスループットを改善するためのオ プションである タイプ8は、高速通信時のシーケンス番号の管理 に利用される タイプ4と5は、選択確認応答に利用される
© Copyright 2024 ExpyDoc