TCPは常に“全2重型”なのですか?
はじめまして。最近「ネットワークはなぜつながるのか」を読み、ネットワークの勉強をしています。第2章のTCPの部分で分からない点があったので、教えていただけると幸いです。
1.p70で、“TCPは全2重型”とありますが、TCPは常に“全2重型”なのですか?
リピータやハブを用いた場合は、TCPのデータの送受信も半2重になるのでしょうか?
2.p106で、TCPはピンポン方式(仮名)よりも効率的な伝送が行えるウィンドウ制御方式であると書かれています。実際に、TCPでピンポン方式のようなデータの送受信が行われることもあるのでしょうか?
イーサネットで全2重の送受信が可能でないと、ウィンドウ制御方式は成り立たないのではないかと思ったのですが。
ご返答よろしくお願いします。
日時:
03/02/03 22:30
コメント
アプリケーションからみるとTCPは全二重に見えます
Tommyさん,はじめまして
>1.p70で、“TCPは全2重型”とありますが、TCPは常に“全2重型”なのですか?
>リピータやハブを用いた場合は、TCPのデータの送受信も半2重になるのでしょうか?
この質問に答える前に,
全二重という言葉の意味を説明しておいた方が良さそうですね。
データを送受信するときに,通信の進行状態を気にせず,
いつでもデータを送信できるものを全二重といいます。
これに対して,送信できない状態があるため,
何らかの方法でタイミングを計って送信動作を行わなければいけないものを
半二重といいます。
では本題ですが,TCPを利用した送受信動作は,
アプリケーションから見ると,タイミングを計ることなく,
いつでもデータ送信動作を実行できます。
だから,アプリケーションから見ると,TCPは全二重に見えます。
これが,TCPは全二重だという意味です。
しかし,見かけ上全二重だからといって,
実際の送受信動作が本当に全二重で実行されるとは限りません。
実際の動作は半二重なのに,全二重に見せかける,ということがあるからです。
送信データをメモリに溜めておいて,タイミングを計って
送信動作を実行すれば,半二重を全二重に見せかけることができるからです。
リピータハブを用いた場合がこれに該当します。
なお,リピータハブを用いる場合は,イーサネットコントローラが
半二重を全二重に見せかける役割を担っています。
>2.p106で、TCPはピンポン方式(仮名)よりも効率的な伝送が行えるウィンドウ制御方式であると書かれています。実際に、TCPでピンポン方式のようなデータの送受信が行われることもあるのでしょうか?
ウインドウサイズをパケットのサイズ(正確にはMSS)より小さく設定すると,
一つ送信パケットを送る都度,受信確認の到着を待つ格好になります。
これだとピンポン方式と同じですね。
でも,実際には,そんなにウインドウサイズを小さく設定することはありません。
『ネットワークはなぜ...』には書いてありませんが,
TCPは,受信確認パケットの数を減らすために,
パケットを一つ受信してもすぐに受信確認を返さないようにできているので,
ウインドウサイズがパケットのサイズより小さくなると,
速度が極端に低下するからです。
>イーサネットで全2重の送受信が可能でないと、ウィンドウ制御方式は成り立たないのではないかと思ったのですが。
半二重動作のイーサネットでも,ウインドウ制御は働きます。
全二重だと,送信側から送るパケットと,
受信側から返す受信確認パケットが同時に流れますが,
半二重の場合は,同時にLANを流れるパケットは一つだけなので,
同時には流れず,タイミングがずれるというだけのことです。