Я запутался из-за коллизий в CSMA/CD Ethernet. Когда будет отправлен сигнал о пробке? Почему сигналы джема отправляются? Если две одновременные передачи пакетов мешают друг другу, два передающих узла могут знать, что напряжение превышено, чтобы они могли завершить свои передачи и затем передать 32-битный сигнал помех, но почему? Может ли кто-нибудь записать все события одно за другим во временной последовательности?
1 ответ
Во-первых, имейте в виду, что современные коммутируемые локальные сети Ethernet больше не являются CSMA/CD. CSMA/CD был техникой, которая применялась к Ethernet 10 Мбит / с и 100 Мбит / с, которые использовали концентраторы, а не коммутаторы. И, честно говоря, вокруг никогда не было много концентраторов 100BASE-TX; все ходили в это время. Для спецификации Gigabit Ethernet (1000BASE-T) требуются коммутаторы; нет такого понятия, как концентратор GigE.
В современных коммутируемых сетях Ethernet у вас больше нет общей среды. Когда вы подключены к коммутатору, "домен коллизий" находится только между вами и вашим портом коммутатора. И если вы находитесь в полнодуплексном режиме, что почти всегда верно для коммутаторов, то у вас вообще нет возможности столкновения. Если вы не можете столкнуться, вы никогда не обнаружите столкновение, поэтому у вас никогда не будет причин передавать сигнал о пробке.
Итак, еще во времена концентраторов (и общих кабелей, таких как thinnet/ cheapnet / 10BASE-2 коаксиальный и thinnet 10BASE-5), вот как это работает:
Представьте, что у вас есть большая локальная сеть 10BASE-T с множеством концентраторов и кабелей максимальной длины, максимально увеличивая "правило ретранслятора", состоящее из максимум 4 повторителей (концентраторов) между любыми двумя устройствами в локальной сети. Из-за задержек распространения сигнала через концентраторы может потребоваться максимум 232 бита для спецификации IEEE, чтобы сигнал, передаваемый от хоста A, достигал самого дальнего хоста в сети (хост B).
Теперь представьте, что хост A начинает передачу кадра, и, к несчастью, хост B, находящийся на другом конце сети, в 232 битах, начинает передавать кадр всего через 231 бит бит после того, как хост A начал передачу. Из-за задержек распространения в сети узел B не знал, что узел A уже отправил 231 бит, когда узел B отправил первый бит своей преамбулы. Теперь хост B обнаружит это столкновение в течение первых, скажем, 32 битов передачи хоста B, что может быть примерно на 232–264 битрейта раньше, чем хост A обнаружит его. Если хост B обнаружил его при первом бите передачи и просто прекратил передачу в тот момент, когда обнаружил это столкновение, возможно, он не оставался на носителе достаточно долго, чтобы хост A мог также обнаружить его и понять, что произошло столкновение ( Вы не можете гарантировать, что получатель обнаружит столкновение по самому первому биту столкновения). Это будет означать, что узел A не будет знать, как правильно выполнять процедуру обработки столкновений. Поэтому вместо того, чтобы просто прекратить передачу, хост B передает сигнал Jam так, чтобы он оставался на носителе достаточно долго, чтобы убедиться, что хост A осознает, что произошло столкновение.
Это также причина того, что кадры Ethernet имеют минимальную длину 64 байта. Это гарантирует, что Хост A остается на носителе достаточно долго, чтобы коллизия могла быть обнаружена на другой стороне сети, а сигнал Jam от Хоста B может пройти весь путь назад по сети, так что Хост При поступлении сигнала Jam A все еще находится в среде, поэтому он может понять, что кто-то столкнулся с его передачей.