インターネットの基礎知識 その3 ~TCP・UDP層編~
アウトライン 階層構造の復習 トランスポート層 TCP UDP
復習 3
OSIモデルとインターネットアーキテクチャ インターネットでは、上3層は全てアプリケーションに任されている アプリケーション層 Application Layer プレゼンテーション層 Presentation Layer セッション層 Session Layer トランスポート層 Transport Layer ネットワーク層 Network Layer データリンク層 Data Link Layer 物理層 Physical Layer Web XML Webサービス メール ニュース ・・・ メッセージング ファイル共有 ファイル転送 ・・・ 今回はここのお話 TCP UDP IP イーサネット xDSL 光ファイバ 無線LAN 4
OSI参照モデルとTCP/IP アプリケーション層 Application Layer トランスポート層 Transport Layer ネットワーク層 Network Layer データリンク層 Data Link Layer 物理層 Physical Layer アプリケーション層 Application Layer プレゼンテーション層 Presentation Layer セッション層 Session Layer トランスポート層 Transport Layer ネットワーク層 Network Layer データリンク層 Data Link Layer 物理層 Physical Layer 5
ネットワーク層のデータ送受信 ベストエフォート 最大限の努力はするが、保証はしない
トランスポート層
トランスポート層の役割 アプリケーション間(プロセス間)の通信を規定 送信元から宛先までのデータ転送を制御・調整(TCP, UDP) →データの最終的なやり取りを行う(End to End) 送信元から宛先までのデータ転送を制御・調整(TCP, UDP) Port番号とSocket 応答確認 フロー制御 シーケンス番号の付与
port番号とSocket Port番号 Socket コンピュータ上で動いている複数のプログラムのうちの1つを通信相手として指定するために使用 IPアドレスを住所に例えるなら、Port番号は部屋番号に相当 Socket プログラムでPortを用いるために使用 PC間通信路の両端 部屋のドア(Socket) 部屋のドア(Socket) イメージ 部屋番号(Port番号) 部屋番号(Port番号)
TCP (Transmission Control Protocol ) データを正確・確実に伝送するプロトコル 特徴 コネクション型通信 3way handshakeによる確立 パケットロスに対する再送信 フロー制御 一回で行う送受信量(ウィンドウサイズ)の設定 輻輳制御 スロースタート 輻輳回避 使用例 HTTP (Web) FTP SSH インターネットサービスの全般
コネクション コネクションとは 仮想的にアプリケーション同士を結ぶ通信路 特徴 相手に確実にデータを送信する制御が可能 双方向の通信が可能
コネクションの確立 (3Way Handshake) 双方でコネクション確立の確認をし合う SYN, ACKを用いた応答確認 PC1 PC2 イメージ(初対面の挨拶) パケットの流れ はじめまして SYN こちらこそ、はじめまして よろしく ACK SYN こちらこそ、 よろしく ACK time
コネクションの終了 双方で終了の確認をし合う FIN, ACKを用いた終了確認 PC1 PC2 イメージ(別れの挨拶) パケットの流れ ありがとう ございました FIN こちらこそ、 ありがとう ございました お疲れ様です ACK FIN ACK お疲れ様です time
再送信 一定時間ACKが帰ってこない場合は該当するデータを再び送信 PC1 PC2 パケットの流れ PC1からPC2へSYNを送信 パケットロス発生 一定時間待機した後、ACKを受信しないため、PC2へSYNを再度送信 PC1よりSYNを受信した後、PC1へACKを返信 SYN Packet Loss SYN ACK time
TCPのフロー制御ウィンドウサイズが 3の場合 受信者のウィンドウサイズに合わせて複数のデータをまとめて送信 ウィンドウ バッファ(受信側がメモリ上に一時的に蓄積するデータ)内でデータの読み書きを行ったり、格納してあるデータの管理を行ったりする領域 ウィンドウサイズの記述 3WayHandshake時のACKに記述 PC1 PC2 PC1 PC2 TCPのフロー制御ウィンドウサイズが 3の場合 前節までの フローの流れ SYN1 SYN1 SYN2 ACK1 ACK1 SYN3 ACK2 SYN2 ACK3 time time ACK2
TCPのフロー制御ウィンドウサイズが 3の場合 受信者のウィンドウサイズに合わせて複数のデータを一括して送信 ウィンドウ バッファ(受信側がメモリ上に一時的に蓄積するデータ)内でデータの読み書きを行ったり、格納してあるデータの管理を行ったりする領域 PC1 PC2 PC1 PC2 TCPのフロー制御ウィンドウサイズが 3の場合 前節までの フローの流れ 相手のウィンドウサイズ分まとめて送信 SYN1 SYN1 SYN2 ACK1 ACK1 SYN3 ACK2 SYN2 ACK3 time time ACK2
TCPのフロー制御ウィンドウサイズが 3の場合 受信者のウィンドウサイズに合わせて複数のデータを一括して送信 ウィンドウ バッファ(受信側がメモリ上に一時的に蓄積するデータ)内でデータの読み書きを行ったり、格納してあるデータの管理を行ったりする領域 PC1 PC2 PC1 PC2 TCPのフロー制御ウィンドウサイズが 3の場合 前節までの フローの流れ SYNを受け取った順にACKを返す SYN1 SYN1 SYN2 ACK1 ACK1 SYN3 ACK2 SYN2 ACK3 time time ACK2
放っておくと悪化してパケットロスが大量に 輻輳制御(1/2) 輻輳 パケットが集中して混雑している状態 玉突き事故発生 放っておくと悪化してパケットロスが大量に
輻輳制御(2/2) スロースタート 輻輳回避 送信パケット量を制御 輻輳発生時は送信パケット量を半分に落とす 最初は2のべき乗に増える ある程度増えると一次関数的に増える 輻輳回避 輻輳発生時は送信パケット量を半分に落とす スロースタートのアルゴリズム 輻輳回避のアルゴリズム
UDP (User Datagram Protocol) データを素早く伝送するプロトコル 特徴 コネクションレス型通信 到達保証性なし 再送信なし ネットワーク帯域も通信相手も考慮しない フロー制御、輻輳制御を一切しない TCPより速い 使用例 IPマルチキャスト通信 RTP DHCP DNS
UDP派生プロトコル RTP/RTCP (Real Time Protcol / RTP Control Protocol) リアルタイムな伝送を行うプロトコル 特徴 UDPの上位プロトコルだが、TCPチックな動作をする シーケンス番号 パケットロスの検知 一応UDP以外でも使用可能 使用例 ストリーミングアプリケーション VoIP(Voice over IP): SIPなど VOD(Video On Demand): NHKオンデマンドなど Live Streaming: 生中継のストリーミング
まとめ
トランスポート層のプロトコルのまとめ End to Endの通信を行う 送信元から宛先までのデータ転送を制御・調整 TCP UDP コネクション型通信 パケットの到達保証性がある パケットロスに対する再送信 ネットワークと通信相手に優しい フロー制御 輻輳制御 UDP コネクションレス型通信 パケットの到達保証性がない ネットワークも通信相手も関係なし TCPより速い