Closed4
TCPについて知らないところを調べてまとめる
輻輳とは
輻輳(ふくそう)とは、物が1か所に集中し混雑する様態をいう。医学、生物学領域では「輻湊」と表記する例もある。
ふむ。なるほど。
ネットワークだと通信パケット過多により通信できなくなる(パケットが破損する)ことを輻輳と呼ぶようですね。
次のような例があるようです。
- ルーターのバッファを超える量のデータを受け取る
- 複数のルーターから同時にデータを受信したとき一部のデータが破損する(コリジョン)
TCP/UDPの違い
あんま分かってなかったところをまとめる。
TCPだとユニキャスト(1対1の通信)
UDPだとユニキャスト、マルチキャスト、ブロードキャストが出来る。
TCPはストリーム型と呼ばれるらしい。上のレイヤー(httpなど)が送信したいデータをTCP側で分割して送信する。
UDPはデータグラム型を呼ばれ、上のレイヤーのデータをそのまま送信する。
通信の信頼性云々はまあ知っているので省略
再送制御
キモはどのようにデータの消失を判定するかということ。
1つ目の方法は再送タイマー。
TCPは送信後にACKが帰ってくるまでの時間を計測している(RRT, Round Trip Timeというらしい)
このRRTより大きい時間を再送タイムアウトとして算出しておき、これを超過した場合にはデータが消失したと判定して再送している。
2つ目は送信後に返ってくるACKを利用する方法。
受信側のACKは「次は〇〇をよこせ!」というメッセージになっている。(次に受け取るべきシーケンス番号を返す)
途中のデータが消失した場合には受信側は抜けているシーケンス番号でACKを返すため、送信側には複数回抜けているシーケンス番号が届くことになる。
3回同じシーケンス番号を送信側が受け取った時にデータが消失したと判定して再送している。
他にも色々アルゴリズムがあるらしいがこの2つでイメージつかめた気がする。
このスクラップは2023/01/28にクローズされました