Могу ли я создать сеть Ethernet без использования IP

14

Как я понимаю из модели ISO-OSI, MAC-адреса работают на другом уровне, чем IP-адреса. Это ясно для меня.

Я могу согласиться с тем, что Ethernet (LAN) просто не использует IP-адреса для связи, но использует MAC-адреса. Я понимаю, что эти MAC-адреса нельзя использовать для маршрутизации за пределы локальной сети, поскольку они не определены иерархически. Я также понимаю, что IP - это лучший способ маршрутизации через большой Интернет. В чем я не совсем уверен, так это в том, что MAC-адреса - лучший способ общения в локальной сети.


Мои вопросы следующие:

  1. Разве Ethernet не может использовать IP-адреса для отправки сообщений? Я не говорю, что должен, я просто спрашиваю, мог ли он сделать это.
  2. Поскольку Ethernet использует для связи MAC-адреса, могу ли я создать сеть Ethernet, в которой у устройств не будет IP-адреса, только MAC-адрес?
Майкл
источник
По определению, сеть Ethernet - это сеть, где устройства не имеют IP-адресов. Как вы указываете, сеть TCP / IP - это совсем другое, и IP не заботится о том, работает ли он по IEEE 802.3, 802.11 или 802.5.
miken32

Ответы:

5

Может ли Ethernet использовать IP-адреса вместо своих собственных адресов канального уровня? Конечно, нет, если он хотел быть независимым от того, какой протокол уровня 3 он использовал.

Мы разрабатываем сетевые протоколы в слоях, чтобы мы могли смешивать и сочетать слои.

Первоначально Ethernet был разработан Бобом Меткалфом (Bob Metcalfe) и его коллегами из Xerox PARC, чтобы быть независимым от сетевого уровня, поскольку их целью был не только доступ по протоколу TCP / IP, но и собственный проприетарный стек / набор сетевых протоколов Xerox Xerox.

DEC (Digital Equipment Corporation) стала еще одним первопроходцем, использовавшим его главным образом для своего стека / набора протоколов DECnet.

В конце 80-х и начале 90-х годов в корпоративных локальных сетях Ethernet работало множество конкурирующих наборов протоколов ЛВС (все они полностью независимы от TCP / IP). Помимо XNS и DECnet, были AppleTalk Apple (EtherTalk), IPX Novell, Banyan VINES, NetBEUI, DLC / LLC, IBM SNA, OSI / ISO и другие, которые я забыл.

Итак, да, вы можете использовать Ethernet без IP. Многие корпоративные сети сделали это в 80-х и 90-х годах.

Поскольку Ethernet был разработан так, чтобы не заботиться о том, какой протокол Layer-3 (Network Layer) выполнялся на нем, корпоративным локальным сетям было относительно легко поддерживать наборы оборудования различных поставщиков, и этим локальным сетям было относительно легко добавить IPv4. поддержка, когда Интернет заработал в середине-конце 90-х годов, и для нас было относительно легко добавить поддержку IPv6 сейчас.

Spiff
источник
1
Спасибо, что дали ответ, в котором вы помещаете вещи в контекст! Хотелось бы, чтобы вы немного расширили и вторую часть вопроса. Можно ли создать работающую локальную сеть на основе Ethernet без использования протоколов сетевого уровня? Если я настраиваю кроссовое соединение Ethernet с другим хостом, зачем мне использовать IP для связи с этим хостом? Возможно ли использовать TCP через MAC вместо TCP через IP?
JJ_
4

Поскольку Ethernet использует для связи MAC-адреса, могу ли я создать сеть Ethernet, в которой у устройств не будет IP-адреса, только MAC-адрес?

Если бы вы писали все свое собственное программное обеспечение с нуля, то вы наверняка могли бы сделать это. Просто попросите программное обеспечение принять MAC-адрес в любом месте, где обычный аналог этой программы принял бы IP-адрес. Используйте все системные вызовы для отправки сырых пакетов Ethernet, а не IP-адреса, и это будет работать - но это будет огромной проблемой.

Как правило, MAC-адреса в вашей сети не соответствуют какой-либо схеме. Они сожжены в аппаратные средства изготовителем. Они длинные и громоздкие. Мой прямо сейчас это C8-60-00-CA-4B-9A. Рядом со мной компьютер 00-40-F4-48-1B-88.

Чтобы машины могли общаться друг с другом, вы могли бы дать каждой машине жестко запрограммированный список всех MAC-адресов всех других машин в сети, чтобы он знал, куда отправлять пакеты. Это много ошибок при наборе текста, и каждый раз, когда вы меняете любое сетевое оборудование, вам придется обходить и изменять все списки, чтобы отразить новые MAC-адреса.

Это огромная проблема, так что вы, вероятно, в конечном итоге придете к тому, что машины в сети автоматически обнаружат MAC-адреса друг друга с помощью широковещательных пакетов. Затем вы дадите им способ идентифицировать себя по какому-то значимому адресу, поэтому вам придется вводить команды, такие как «telnet C8-60-00-CA-4B-9A».

Оказывается, что это именно то, что делает IP - это способ использовать значимые числа для адресации хостов в сети, а не жестко кодировать MAC-адреса. Добавьте DNS поверх IP, и вы можете ввести команду, например, «telnet webserver».

Разве Ethernet не может использовать IP-адреса для отправки сообщений? Я не говорю, что должен, я просто спрашиваю, мог ли он сделать это.

MAC-адреса представляют собой 6 байтов информации, а IP-адреса - только 4 байта, поэтому вы не можете выполнять какое-либо сопоставление от 1 до 1. Вам нужен какой-то способ нахождения MAC-адреса (для помещения в пакет) по IP-адресу (предоставленному программным обеспечением, которое хочет связываться с другим хостом в сети).

Один (жесткий основной) способ сделать это состоит в том, чтобы перейти на каждую машину в сети и изменить ее аппаратный MAC-адрес, чтобы он выглядел как IP-адрес, сделав верхние два байта равными нулям (или некоторому другому фиксированному числу, которое является таким же для каждой машины в сети) и установите нижние четыре байта на «IP-адрес», который вы хотите иметь в сети. (Большинство сетевых карт позволят вам войти и изменить назначенный поставщиком MAC-адрес)

Чтобы это действительно работало, затем вам также придется взломать код в сетевом стеке, чтобы фактически использовать эту систему. По сути, вы бы потеряли все, что связано с ARP (метод, который IP использует для преобразования IP-адресов в MAC-адреса). Вы извлекли бы части, которые строят / читают заголовки IP. Вместо этого вы бы заменили все это на очень простой код, который, учитывая IP-пакет для отправки на хост по адресу wxyz, создает кадр Ethernet с адресом DEST, установленным в 00-00-wxyz.

Вам также потребуется способ указать получателю пакета, для какого протокола (UDP, TCP) он предназначен. Возможно, вы могли бы вставить это где-нибудь в заголовок Ethernet, переопределив существующее поле. Может быть, использовать один из двух верхних байтов адреса источника? Это не повлияет на способность получателей получать, но может испортить некоторые коммутаторы. Вы также можете добавить протокол в начало или конец кадра Ethernet и увеличить размер полезной нагрузки на единицу - но это начинает пахнуть как заголовок IP.

Итак, что бы ты купил всю эту работу?

Во-первых, это сэкономит вам издержки поиска в таблице ARP для каждого исходящего пакета. Это, вероятно, порядка только микросекунд.

Вы сохраняете работу по вычислению контрольных сумм заголовков IP и памяти, необходимой для их хранения. Это, вероятно, не важно для современного оборудования.

Вы сохраняете 16 байтов в каждом пакете в сети, поскольку не было бы заголовков IP. Это может сложиться в зависимости от приложения.

Самым большим преимуществом будет то, что вам не придется выполнять запросы ARP. Отправка стандартного IP-пакета на новый хост запускает обмен ARP, который может занять миллисекунды и является непредсказуемым. Это может быть огромным преимуществом для некоторых приложений, которые очень чувствительны к задержке и дрожанию.

Для некоторых очень специализированных приложений это действительно имеет смысл. Однажды я работал с системой реального времени, которая использовала только широковещательные UDP-пакеты для всех коммуникаций между хостами, по единственной причине, что она избегала включения этих последовательностей ARP и непредсказуемо добавляла задержку и дрожание. Я также однажды работал над встроенной системой с ограниченными ресурсами, которая работала, отправляя полезные нагрузки UDP внутри IP-пакетов напрямую (без заголовка IP), потому что это сохраняло всю сложность и память, необходимые для реализации всего ARP и маски масок и дополнительных контрольных сумм.

bigjosh
источник
1

Разве Ethernet не может использовать IP-адреса для отправки сообщений? Я не говорю, что должен, я просто спрашиваю, мог ли он сделать это

Я предполагаю, что Ethernet мог бы использовать четырехбайтовые адреса, такие как IPv4, вместо шестибайтовых адресов. Наверное, хорошо, что они этого не сделали, потому что у них уже не осталось чисел.

Поскольку Ethernet использует для связи MAC-адреса, могу ли я создать сеть Ethernet, в которой у устройств не будет IP-адреса, только MAC-адрес?

Вы можете, если у вас есть программы, которые будут работать с MAC-адресами вместо IP-адресов. Конечно, вы застрянете в этой сети и не сможете связаться с другими без какой-либо хакерской атаки.

Уровень IP вам действительно нужен только в том случае, если вы планируете выполнять маршрутизацию, особенно если другая сеть может использовать технологию уровня 2, отличную от Ethernet, например, Token Ring, что было реальной возможностью, когда большая часть этого была разработана. Кто знает, может ли другая технология уровня 2 стать повсеместной в будущем, если это так, то IP не зависит от нее.

LawrenceC
источник
0
> Couldn't Ethernet make use of IP addresses to send messages? I'm not
> saying it should, I'm just asking if it could have chosen to do so.

Если вы называете Ethernet сетевым уровнем, то нет, это невозможно. Сетевой уровень требует физического адреса сетевого устройства. IP-адрес - это произвольное число, назначаемое MAC-адресу для простоты. IP-адреса являются программным решением, а не частью сетевой карты - аппаратным решением. Вот почему IP-адреса могут быть легко изменены, в то время как MAC-адреса жестко запрограммированы на карту и не могут быть изменены (несмотря на программу подделки MAC-адресов, которая даже до сих пор не меняет адрес так сильно, как ложь о том, что адрес является )

> As Ethernet uses MAC addresses for communication, could I create an
> Ethernet network where devices would not have an IP address, just a
> MAC address?

Да, вы можете, но вам не понравится его использовать, поскольку функциональность будет очень ограниченной и совсем не удобной для пользователя. Существует причина, по которой транспортный уровень был реализован.

Из WikiPedia , транспортный уровень контролирует надежность данного канала с помощью управления потоком, сегментации / десегментации и контроля ошибок. Некоторые протоколы ориентированы на состояние и соединение. Это означает, что транспортный уровень может отслеживать сегменты и повторно передавать те, которые выходят из строя. Транспортный уровень также обеспечивает подтверждение успешной передачи данных и отправляет следующие данные, если ошибок не было.

Таким образом, без использования транспортного уровня, который в настоящее время означает протокол TCP / IP, у вас не было бы возможности гарантировать, что ваши данные достигли места назначения, или у вас была бы возможность автоматического сброса недостающих фрагментов.

Кристофер Н. Буайоли
источник
MAC-адрес, безусловно, может быть изменен. Мой (давно умерший) ПК годами использовал MAC из сломанной карты Ethernet, так как мой провайдер ADSL связывал его и взимал плату за его замену (и это тоже заняло несколько дней).
vonbrand
0

Разумеется, компьютеры локальной сети могут обмениваться данными без уровня маршрутизации. Вы просто встраиваете сообщение в кадр Ethernet и надеетесь на лучшее. Это немного похоже на то, что вы помещаете заметку на открытку и надеетесь, что почтовое отделение выполнит свою работу.

Вы должны надеяться, что получатель слушает, и внимательно слушать ответное сообщение (потенциально среди множества других сообщений от других узлов). Вы будете нести ответственность за сортировку всех этих сообщений самостоятельно.

Если вы хотите что-то вроде обмена сообщениями 1: 1, вам понадобится другой протокол поверх фреймов Ethernet для обработки всего этого прослушивания для вас. Для этого часто используется двухточечный протокол (PPP), по Ethernet это называется PPPoE. PPPoE предоставляет вам аутентификацию и шифрование, и это очень хорошая идея для вещательной сети.

Но без какой-либо информации о маршрутизации вы можете общаться только с узлами в локальной сети. Как только вы начнете использовать информацию о маршрутизации для ретрансляции сообщений (например, в Интернет), вы захотите использовать протокол маршрутизации в той или иной форме, такой как IP или IPX. И вам, вероятно, также понадобится управление передачей (TCP) ...

david25272
источник
0

IP-сети - это абстракция, уровень косвенности, то есть они являются виртуальной сетью, не связанной с каким-либо конкретным физическим способом или устройством связи.

Узел Ethernet имеет один MAC-адрес (для каждой сетевой карты), который однозначно идентифицирует его глобально. Однако этот хост может одновременно принадлежать многим IP-сетям с разными IP-адресами для каждой, при этом всегда использовать один MAC-адрес.

Такое разделение физической и логической адресации или виртуализация адресации обеспечивает определенную гибкость, такую ​​как перемещение IP-хоста (например, сервера) с одного физического компьютера на другой, с другим MAC-адресом, но без необходимости перенастройки других хостов. (например, клиентское программное обеспечение).

IP, или Интернет-протокол, и Ethernet решают различные проблемы: Ethernet обеспечивает связь на уровне локальной сети и только в одной локальной сети, ему не важно, к каким другим сетям локальная сеть может быть подключена через маршрутизатор. Принимая во внимание, что IP касается межсетевого взаимодействия и, таким образом, не зависит от локальной сети. Итак, мог ли Ethernet использовать IP-адреса вместо MAC-адресов? Конечно, но это ничего не даст вам, так как эти сообщения будут по-прежнему ограничены локальной сетью.

Как ответ на ваш второй вопрос, такая ситуация существует в разное время в локальной сети Ethernet, которая использует протокол динамической конфигурации хоста (DHCP) для распределения IP-адресов. Когда новый хост подключается к локальной сети, у него нет IP-адреса, поэтому он отправляет широковещательный кадр Ethernet всем устройствам и ожидает ответа от DHCP-сервера. В этот момент клиент не знает ни MAC-адреса DHCP-сервера, ни его IP-адреса, следовательно, широковещательную рассылку. Получив запрос, сервер теперь знает MAC-адрес клиента и может правильно адресовать ответ.

chritohnide
источник