くちゃさん,こんにちわ。
>スイッチにツイスト・ペア・ケーブルが接続されているものに関して言えば、 >「collision」と言っても本当に「衝突」しているわけではなく、 >「検出」しているだけなのですね。
『検出』と『衝突』という言葉を使い分ける理由がよくわからないんですが,(笑) 衝突した信号が流れてくるから,衝突を検出できるわけです。
>では、送信動作中に小さいフレームを受信したら、 >「collision」としてカウントされてしまうのですか?
送信動作中に,自分が送信した信号とは違う信号が流れてくれば, それは信号が衝突したことになりますから, 「collision」としてカウントするでしょうね。
実際には,信号が流れてきたことを検出した時点では, その信号が長いか短いかはわかりません。 (信号の最後まで行ってはじめて短かったか長かったかわかります。) 自分以外の信号が流れたきたことを検出した時点で衝突とみなすので, その信号の長さは関係ないはずです。
>runtsだと「ケーブルやNICなど物理的に何かがおかしい」と判断しますが・・・。
衝突が起こっていないのにruntを検出すれば変ですけど, 衝突が起こっていればruntを受信してもおかしくはないと思います。 言い換えると,全二重でruntがカウントされるのはおかしいですが, 半二重だったらおかしくないと思います。
>では、ACKなどの小さいフレームでは、 >ちょっと壊れて小さくなると(FCSも入れて64バイト未満になると) >runtsとしてカウントされるんですよね。
ノイズなどの影響を受けると信号は変形します。 その結果デジタルデータに戻すときに値を誤って読み取ってしまいます。 CRCエラーとかいうのがこれですね。 でも,ノイズの影響を受けたとしても,信号が消えてなくなるわけではありません。 そして,ノイズの影響で信号がメチャクチャに変形したとしても, そこに信号があれば,受信回路はそこからデジタルデータを復元しようとします。 (信号が変形すれば読み取った値は誤ったものになるでしょうけれど) だから,パケットが小さくなることはありません。 パケットが壊れるっていう現象は,物が二つに割れて壊れるのとは違うんです。
>この場合はCRCエラーではないわけですよね。
runtパケットのFCSは,多分,おかしな値になっているでしょう。 でも,それをCRCエラーとしてカウントするかどうかまでは分かりませんねぇ。 パケットの長さが足りなかったことが判明した時点で, そのパケットはエラーだということになりますから, FCSを検査する必要はないので検査しないかもしれないし, runtとFCSは全く別々に検査するかもしれません。 その辺は,イーサネットコントローラのチップがどう動くかによりますから, そこまではわからないですねぇ。
>この辺の「壊れる」ということが
電気信号は電圧ですから,信号が混ざると電圧が足し算されると思えばよいでしょう。 たとえば,+1Vと+1Vの信号が混ざったら+2Vになり, +1Vと-1Vが混ざったら0Vっていうことですね。 実際の信号は,『ネットワークはなぜ...』の90ページにあるような形ですから, それが混じって,電圧の値が足し算された波形になると思えばいいんじゃないかしら。 ノイズの場合は,こんなにきれいな四角い形ではなくて, メチャクチャな波形ですけれど,それでも電圧がありますから, それが足し算された値の波形になるっていうことです。 こんな説明でわかるかしら?
More information about text formats
信号が混じると電圧の値が足し算される
くちゃさん,こんにちわ。
>スイッチにツイスト・ペア・ケーブルが接続されているものに関して言えば、
>「collision」と言っても本当に「衝突」しているわけではなく、
>「検出」しているだけなのですね。
『検出』と『衝突』という言葉を使い分ける理由がよくわからないんですが,(笑)
衝突した信号が流れてくるから,衝突を検出できるわけです。
>では、送信動作中に小さいフレームを受信したら、
>「collision」としてカウントされてしまうのですか?
送信動作中に,自分が送信した信号とは違う信号が流れてくれば,
それは信号が衝突したことになりますから,
「collision」としてカウントするでしょうね。
実際には,信号が流れてきたことを検出した時点では,
その信号が長いか短いかはわかりません。
(信号の最後まで行ってはじめて短かったか長かったかわかります。)
自分以外の信号が流れたきたことを検出した時点で衝突とみなすので,
その信号の長さは関係ないはずです。
>runtsだと「ケーブルやNICなど物理的に何かがおかしい」と判断しますが・・・。
衝突が起こっていないのにruntを検出すれば変ですけど,
衝突が起こっていればruntを受信してもおかしくはないと思います。
言い換えると,全二重でruntがカウントされるのはおかしいですが,
半二重だったらおかしくないと思います。
>では、ACKなどの小さいフレームでは、
>ちょっと壊れて小さくなると(FCSも入れて64バイト未満になると)
>runtsとしてカウントされるんですよね。
ノイズなどの影響を受けると信号は変形します。
その結果デジタルデータに戻すときに値を誤って読み取ってしまいます。
CRCエラーとかいうのがこれですね。
でも,ノイズの影響を受けたとしても,信号が消えてなくなるわけではありません。
そして,ノイズの影響で信号がメチャクチャに変形したとしても,
そこに信号があれば,受信回路はそこからデジタルデータを復元しようとします。
(信号が変形すれば読み取った値は誤ったものになるでしょうけれど)
だから,パケットが小さくなることはありません。
パケットが壊れるっていう現象は,物が二つに割れて壊れるのとは違うんです。
>この場合はCRCエラーではないわけですよね。
runtパケットのFCSは,多分,おかしな値になっているでしょう。
でも,それをCRCエラーとしてカウントするかどうかまでは分かりませんねぇ。
パケットの長さが足りなかったことが判明した時点で,
そのパケットはエラーだということになりますから,
FCSを検査する必要はないので検査しないかもしれないし,
runtとFCSは全く別々に検査するかもしれません。
その辺は,イーサネットコントローラのチップがどう動くかによりますから,
そこまではわからないですねぇ。
>この辺の「壊れる」ということが
電気信号は電圧ですから,信号が混ざると電圧が足し算されると思えばよいでしょう。
たとえば,+1Vと+1Vの信号が混ざったら+2Vになり,
+1Vと-1Vが混ざったら0Vっていうことですね。
実際の信号は,『ネットワークはなぜ...』の90ページにあるような形ですから,
それが混じって,電圧の値が足し算された波形になると思えばいいんじゃないかしら。
ノイズの場合は,こんなにきれいな四角い形ではなくて,
メチャクチャな波形ですけれど,それでも電圧がありますから,
それが足し算された値の波形になるっていうことです。
こんな説明でわかるかしら?