Timeout と再送 往復時間 – 予知が困難 – 他のトラフィックに依存 適応再送アルゴリズム – データの採取 Round Trip Sample の計測 再送に伴う ack-ambiguity – 最初の伝送からの時間 • 1回おきに紛失 → 徐々に長くなり発散 – 最後の再送からの時間 • 遅延の急増で徐々に短縮し,収束先は 正しい往復時間 k RTT Round trip time Karn のアルゴリズム あいまいな ack での RTT の更新をしない 遅延の急増 – いつまでも適応しない. – Timer の backoff RTT の変動(分散) RTT の変動 1 /(1 L) L はネットワークの負荷 – たとえば 2 L 0.3 – を推定して として用いる. 新しいアルゴリズム Diff Sample Old_RTT RTT Old_RTT Diff D D h ( Diff D) RTO RTT 4 D 0.125 h 0.25 輻輳に対する対応 Congestion collapse – 輻輳→遅延→再送→輻輳の悪化 congestion window allowed_window = min(受信公告, cong-win) – multiplicative decrease (×0.5) • window size が1 segment長になるまで減らす. – timer backoff – slow-start • Ackがきたらもう1セグメント広げる. コネクションの確立 一般には一方が listen – 双方から同時にでもよい. 一度の双方向のコネクションを合意 正しい同期のための必要十分条件 – 3-way handshake – timeout で再送,初期seq# の合意(必ずしも 1ではない) 3-way handshake コネクションの close Fin を送る.これを受け取るとEOFを応用 プログラムに渡す. 両方がcloseになるとコネクションは解放 その他の操作 コネクションのリセット – 異常事態にRSTビットを立てる – Abort,切断 Push – telnet バッファの flush – ユーザにも通知される. Urgent – ^S, ^C 予約済みTCPポート UDPとは独立であるが,TCP/UDP両方の サービスを持つものには同じ番号 – たとえば, • DNS 53 TCP/UDP /etc/services を見よ. まとめ – Reliable, stream, 全2重コネクション – 大量データの高速高効率転送(sliding window) – Flow control 広範なネットワークに適用可能 – セグメント単位 – 相乗りで制御情報を運ぶ • window advertise, バッファ量 • push, urgent, out-of-band message
© Copyright 2025 ExpyDoc