LANアダプタ、TCPの全二重通信

ナイペータです。よろしくお願いします。

『ネットワークはなぜつながるのか』(日経BP社)
におけるP91、102で質問があります。

P91では、半二重通信が書かれてあり信号を送信しているときに
MAUが受信信号を感知すると衝突となるといったことが読み取れます。
(以前に全二重と半二重の質問をしました)

全二重と半二重の意味合いは、以前の戸根先生の回答で理解させていただき
ました。そこで、もう一度このページを読み返していると普通のクライアントマシーンやサーバーのLANアダプタは、全二重と半二重どっちなのか??
という疑問がでてきたので質問させていただきました。
というのも、P102で下から5行目に「TCPの送信動作は、全二重で両方向に信号を送りあう」と書かれていたので不意に不安になってきたのが
原因です。

お忙しい中、恐れ入りますがよろしくお願いします。

ナイペータ

名前: 
ナイペータ
日時: 
04/05/16 17:11

コメント

ナイペータさん,こんにちわ。

> LANアダプタは、全二重と半二重どっちなのか??

LANアダプタの動作は接続相手によって決まります。
つまり,スイッチングハブに接続するときは全二重,
リピータハブに接続するときは半二重で動きます。
144ページにオートネゴシエーションの説明がありますが,
そこに書いてあるように,パルス信号で相手がどちらなのか検出して,
動作モードを自動的に切り替えるわけです。

> 「TCPの送信動作は、全二重で両方向に信号を送りあう」

LANアダプタが全二重でも半二重でもTCPは全二重で動くのですが,
この辺を理解するには,そもそも全二重と半二重がどうちがうのか
ということを理解しておかなければいけません。

半二重というのは,信号が衝突する可能性があるので,
衝突を避けるために送信動作を見合わせたり,
衝突したら回復処置を講じる,というように,
衝突を意識して送信動作を実行することを指します。
一方,全二重というのは,衝突しないので,
衝突することを考慮せず送信動作を行います。
つまり,本当に送信動作と受信動作を同時併行して実行するかどうかではなく,
送信動作を実行するときに,
衝突を意識して動くのが半二重,衝突を意識しないのが全二重だということです。
TCPが全二重だというのは,この意味であって,
本当に全二重で動いているとは限りません。

では,LANアダプタが半二重のときは,実際にどう動くのか,
という疑問があるかもしれません。
それは,次のようになります。
LANアダプタにはパケットを一時的に格納するバッファメモリがあり,
パケットを送信するときは一旦そこにパケットを格納します。
そして,信号の状態を見て,送信可能な状態になったときに
送信動作を実行します。
つまり,TCP/IPソフトが,衝突を意識せずに送信パケットをLANアダプタに渡しても,
パケットを一旦メモリに格納して,タイミングを見計らって送信するから,
大丈夫だということです。
だから,TCPは衝突を意識する必要がないので,
全二重で動くものと見なしてよい,ということになるんです。

戸根先生 早速の回答ありがとうございました。

恥ずかしながら、二度も同じ内容に近い質問をした感じに
なってしまいました。

知識が少し甘かったように自身で思いました。
さらなる精進するのみです。
先生のおかげでイメージできました!ありがとうございます。
ナイペータ