Во втором же случае физическое соединение присутствует постоянно, просто связующая аппаратура перебрасывает не все «электрончики» от одной соединённой точки к другой, а ещё и пытается решить на основе дополнительных данных, что несут эти самые «электрончики», в какое соединение их бросать. Это локальная сеть; и занимаются описанным делом маршрутизаторы. Ethernet Switch'и тоже в какой-то мере, так как они анализируют ethernet frame'ы для выбора порта, куда выкидывать полученный frame.
Для работы пакетной коммутации соединения уже дожны быть скоммутированы, то есть пакетная коммутация работает поверх коммутации соединений. Что означает, что ваш ethernet провод должен быть воткнут в концентратор/коммутатор (hub/switch), в другую сетевую карту; АТС должна соеденить ваши модемы; etc.
Блок данных, что содержит коммутационную информацию я обзываю пакетом. Оффициально в Cтек OSI пакетом зовётся блок tcp/ip данных. Мне же проще всё считать пакетами, кроме случаев, когда необходимо их отличать.
Как пакеты передаются в физической среде: телефонной линии, xDSL соединении, ethernet – нас не интересует. Нас интересует, что происходит в между приходом пакета на аппаратуру компьютера и выходом. То есть место <физическая линия> --> компьютер --> физическая линия.
И наконец, рассматривается только Tcp/Ip протокол. С остальными не работал, хотя давно хочу изучить netbios/smb.
Как это происходит в ppp соединениях? И вообще в point-to-point соединениях ещё на физическом уровне?
То есть железка принимает нолики-единички до тех пор, пока пакет не кончится. Определяет она это, анализируя заголовок – в ethernet, например, сетевая карта анализирует первые – чтоб не соврать – 20 байт, откуда берёт адрес, кому предназначался пакет (в данном случае его зовут frame) и длину пакета. Затем считывает остальные нолики-единички, пока длина не кончится. В случае же с ppp я точно сказать не могу.
Опять вопрос: а считывает именно чипсет сетевухи или её драйвер?
Суть их в том, что пакет (последовательность ноликов-единичек, электрических импульсов) доходят до всех подключенных в сеть (правильнее было бы сказать коммутируемые. Потому что, например, switch не пропустит пакет машине, которой он не предназначался. По крайней мере на это хочется надеятся :). И уже сетевое устройство решает, что с ним делать. Решает оно на основе физического адреса (метки?), что в таком случае обязательно сопровождает каждый пакет. В ethernet этот адрес обзывают MAC-адресом (от англ. Media Access Control — управление доступом к носителю). Если адрес не совпадает с указанным в памяти чипсета, то пакет игнорируется; если да, то пропускается дальше на следующий уровень обработки.
Исключая один режим – promisc (promiscuous – безалаберный, беспорядочный, неразборчивый, разнородный, разношерстный, смешанный). В этом режиме устройство пропускает всё, что только видит.
тут всё проще. Так как мы имеем лишь одно физическое соединение, и на другом конце гарантировано находится нужный peer (одно из значений слова peer – «равный, ровня», предлагаю переводить, как «напарник, партнер»), то данные просто сбрасываются в физическую среду; причём я даже не уверен, что они имеют хоть какой-нибудь заголовок физического уровня. Поэтому ни в телефонной линии, ни в туннелях не существует физического адреса. Хотя нет, существует: в туннеле это ip peer'а, а ppp – телефонный номер :) То есть эти адреса характеризуют предшествующую маршрутизации коммутацию соединений.
В ethernet frame, как я помню (надо уточнить) заголовок содержит ещё и протокол, что идёт на следующем уровне. Как ip заголовок содержит, кто идёт за ним – udp, tcp, gre. На основе того номера определяется, кто будет анализировать всё это дело дальше.
На данном этапе пакет анализируется целиком, часто вплоть до прикладного уровня – сокетов. Исключения raw sockets, что читают сразу из интерфейса. Происходит это следущим образом
Pppd понимает только tcp/ip пакеты.
Анализ tcp/ip: после расшифровки ip заголовка, запускается анализ следующего в зависимости от указанного протокола. Как происходит анализ tcз, udp, icmp нас сейчас не волнует, интересен анализ 47 (gre) и 98 (ipip). Это туннели. Здесь данные после ip заголовка просто напросто передаются заново вниз, только от имени другого интерфейса, и происходит уже анализ как бы с нуля.
Так что, если у кого-то будут затыки со связью, проверьте и этот момент, какой именно протокол нужно разрешить в вашем случае...