にしのクエスト2

情報処理技術者試験と資格学校講師の日常

にしのクエスト2

ネスペちゃん01 「TCP」(6)質問コーナー

ここまでのまとめ。


・TCP自身はどうやって接続しているのかはわから
 ない(レイヤが違うため)が、通信を制御する仕事
 をしている。
・相互に通信を行う場合、許可・応答を一度に行う3
 WAYハンドシェイクを使う。
・許可を待たずに、送信することで効率化を図れるが
 相手の処理が間に合わない(バッファオーバーフロ
 ー)場合があるので、ウインドウサイズを確認し、
 送信するタイミングを計る。
・受取相手の処理状況は、送信側へウインドウサイズ
 を通知することで、残りを計算。連続して送る。
・とりあえず、送ってみて反応を見るやり方。それが
 スロースタートアルゴリズム

f:id:koharuwest:20190624224831p:plain

 

質問コーナーです。

Q1 データがセグメントに分けて

送信されるのはわかりました。バラバラに送信され
たデータについて。順番通り送信されなかったデー
タはどうなるんですか?

シーケンス番号をもとに、受信側が組み立て直す。
「届いたよ」の確認はシーケンス番号で行う。送信
側はシーケンス番号付きのACKが返ってこなかっ
たデータを再送するよ。

Q2 ポート番号について

TCPでポート番号とかあるけど、あれなんすか?

部屋番号みたいなものだと思ってくれ。

何でもかんでも一つのポート番号で通信を行うこと
もできんことではない。

でも、WEBは80番で仕事しようね。と、決めて
おけば、その通信が何のための通信かを区別しやす
くなる。そんだけ。

詳しくは調べてほしいけど、WellKnownPortsとして、
仕事によって番号いくつか決められているものもあ
るよ。

Q3 再送について

セグメントが送られなかった場合、再送されますよ
ね。これはどんなタイミングで行われるのでしょう
か。

RTT(往復レイテンシ)という値がある。これは
パケットが相手と往復できるであろう時間が設定さ
れていて、初期値は3秒。

これの約4倍の値がRTO(再送タイムアウト)の
時間として設定されている。

ACKが返ってこない場合、このRTOの秒数だけ
待って再送を行う。

さらに返事が帰ってこない場合は?

値を2倍して待って、再送を行う。

それでも・・・だめな場合は?

さらに2倍して・・・最大で約64秒空けて送る。

それでもだめな場合は?

大抵はそのくらいやると送信できるみたいだけど。
無理な場合は通信エラー(パケットロス)になるね
ぇ。

Q4 TCPとUDPの違いはありますか

あるよ。(某マスター風に)

一言でどうぞ。

「手順確認をせず、いきなり荷物が届く!」

それはびっくりしますね。

びっくりするけど、受け取る側は受け取るしかない。
でも、届いたかどうかの返事も基本的にしない。い
らない。

途中で届かないパケットがあったら?

再送要求もしないし再送もしない。全部届くか、い
くつか届くか、全然届かないか。そんなことはどう
でもいいという・・・

いいかげんだなあ。

でも、そういうものでしか使わないから、いいのだ。
ストリーミング配信とかで、映像がちょっとカクつ
いてもフレームがとんでもまあ、味わいというか問題
はないでしょう?

なるほど。

映像配信の他にSNMP、DNS、DHCPなんかで使われる。

再送が必要だったり、補完が必要な場合は使うソフト
が(アプリケーション層)でやりゃいいという。そう
いう側面もある。

最近は回線の速度や信頼性が上がって、再送がほとん
ど起こらないので今後はUCPがメインになると思う
よ。

以上です。