Я понимаю причину, по которой публичные IP-адреса необходимы для того, чтобы, если бы у нас был только MAC для перемещения данных между одним хостом и другим, весь Интернет был бы единой плоской сетью. Но зачем нужны частные IP-адреса? Почему маршрутизаторы не могут просто подключиться к локальным клиентам, используя их MAC-адрес?
8 ответов
Ответ заключается в том, что ваши программные приложения и операционная система предназначены для связи по протоколу TCP/IP, а не напрямую с MAC-адресацией Ethernet.
Таким образом, независимо от того, находится ли удаленный компьютер / узел, с которым вы хотите общаться, в вашей локальной сети или в какой-либо другой сети, расположенной на полпути по всему земному шару, эта логическая связь устанавливается с TCP / IP. Таким образом, приложения просто определяют IP-адрес назначения в IP-пакете, заполняют его данными (которые фактически упакованы в сегмент TCP / UDP) и отправляют их по пути, не беспокоясь о том, как нижележащие уровни справляются с фактической передачей. ,
Сетевой стек операционной системы определяет локальный или удаленный IP-адрес:
- Если локальная сеть, найдите MAC-адрес, соответствующий этому IP-адресу, и отправьте IP-пакет напрямую, который находится в кадре Ethernet.
- Если удаленная сеть, найдите MAC-адрес маршрутизатора шлюза по умолчанию для отправки IP-пакета, также в пределах кадра Ethernet. Маршрутизатор извлекает IP-пакет из кадра, просматривает адрес и определяет следующий узел (и его MAC-адрес), чтобы передать его, и отправляет это направление в другом кадре Ethernet.
Примечание: вполне возможно, что IP-пакеты будут доставлены в другом протоколе передачи данных, отличном от Ethernet (угадайте, что ваш модем удаленного доступа или DSL не подключен к вашему провайдеру через кабель Ethernet). И приложения не должны заботиться, пока IP-адрес назначения доступен. Также полностью возможно обернуть данные других сетевых протоколов (которые не являются IP-пакетами) в кадр Ethernet для передачи.
В конечном итоге все пакеты доставляются на MAC-адрес. Когда IP-пакет прибывает на ваш маршрутизатор и таблица NAT показывает, что он предназначен для вашего частного адреса 192.168.1.10, маршрутизатор выполнит поиск MAC-адреса 192.168.1.10 и отправит пакет на него. MAC-адрес.
Однако MAC-адрес является адресом уровня 2, и по определению разрешает связь только между элементами в локальной сети. Таким образом, вопрос «почему частные адреса, а не MAC-адреса» предполагает, что все непубличные сети являются простыми одноуровневыми сетями.
Частных корпоративных сетей, состоящих из одной локальной сети, почти нет, а во многих домашних средах есть несколько сетей. Для маршрутизации между этими сетями вам необходим протокол уровня 3, такой как IP.
Поэтому другой способ сформулировать ваш вопрос будет следующим: «Почему производители маршрутизаторов и разработчики ОС не создают локальную сеть только для уровня 2 в тех особых случаях, когда уровень 3 не является абсолютно необходимым?». И ответ на этот вопрос заключается в том, что не стоит создавать нишевое решение для сценария, в котором существующее общее решение уже работает идеально. Там не было бы никакой пользы вообще.
Если бы MAC использовался для маршрутизации, ваша таблица маршрутизации содержала бы маршруты к каждому узлу в сети, потому что MAC-адреса различны для каждого производителя.
IP подобен стандартной платформе для общения сетевых устройств разных производителей. А с использованием IP вы можете суммировать маршрут ко многим устройствам в сети, экономя пропускную способность и ресурсы. Модель OSI позволяет лучше понять, как работают сети.
Я считаю, что без этого стандарта сама сеть не будет развиваться так, как сегодня.
Для IoT использование IP-адресов обычно является большей проблемой, чем помощью. Во-первых, в сегменте доступно только 253 IP-адреса. Это было нормально, когда в типичном доме было 2 или 3 компьютера. Но теперь у него может быть 50 или 60 устройств, и к тому времени вы включите телефоны, планшеты, ноутбуки, потоковые медиа-боксы и т.д.
Когда IoT набирает обороты, и здесь я имею в виду реальные приложения, такие как сигнализация, климат-контроль и т.д., А не говорящие холодильники, вы можете легко получить несколько сотен. Это будет означать сегментные мосты и совершенно новый уровень сложности для домашней ЛВС.
Кроме того, если устройства IoT могут обмениваться данными по MAC-адресу и никогда не иметь IP-адреса, они, как было отмечено, невидимы для внешнего мира, а "I" в IP означает "Интер". Это означает, что им не нужен уровень безопасности, аутентификация, ARP/RARP и т.д. Значительно упрощает и делает устройства IoT более доступными. Вполне вероятно, что некоторые части инфраструктуры IoT, такие как, например, панель сигнализации домашней системы безопасности, должны будут получить IP-адрес, чтобы она могла взаимодействовать с внешним миром. Но только этот компонент будет обременен IP, безопасностью, DHCP и т.д.
Таким образом, возможно, ответ заключается в том, чтобы иметь устройства IoT "уровня 0" и "уровня 1" с уровнем 0, поддерживающим только обмен MAC-адресами, а уровень 1 является полноценным IP-устройством?
Мы также должны перейти от 48-битного MAC-адреса к 64-битному MAC-адресу и, возможно, расширить его до 12 ~ 18 байт. Нижние 8 байтов будут 64-битным MAC-адресом, а верхние байты будут десятичной системой функций и возможностей устройства. Это позволило бы самоорганизующимся сетям, так что расширение, скажем, системы сигнализации или добавление видеодисплея было бы прозрачным (можно сказать Plug'nPlay из-за связанной травмы) для пользователя.
Самым большим препятствием для этого является то, что коммутаторы используют MAC-адреса, но очень волнуются, если у устройства нет IP-адреса. Но у сетевых поставщиков это возможность продать нам совершенно новое поколение коммутаторов, поддерживающих устройства уровня 0 :-).
Одна из причин в том, что MAC-адреса на самом деле не являются "маршрутизируемыми". IP есть, поэтому проще хранить IP-адреса для внутренних и внешних адресов. Кроме того, вы не получаете доступ к другим компьютерам только по MAC-адресу, вы используете IP. Затем маршрутизатор решает, предназначен ли он для внутреннего или внешнего
Также обратите внимание, что MAC-адреса не используются во всех типах сетевых сред.
Например, протоколы, используемые в двухточечных соединениях, таких как T1 (PPP, HDLC), не используются.
Сетевое общение делится на несколько уровней. На рисунке здесь показана модель OSI. Каждый слой имеет свою цель. Снизу диаграммы
я. Физический уровень: этот уровень является реальной средой, которая соединяет устройства, это может быть кабель CAT5, оптоволокно и т.д.
ii) Уровень канала передачи данных: этот уровень заботится о физической адресации и коммутации пакетов, контрольной сумме и т. д.
iii) Сетевой уровень: этот уровень заботится о логической адресации и маршрутизации пакетов.
и так далее
Это помогает разделить различные функции сетевого стека. так что слои не зависят от других слоев.
Теперь перейдем к вашему вопросу.
MAC-адрес находится на канальном уровне, функция которого заключается в физической адресации. Функция сетевых уровней заключается в предоставлении логического адреса узлу связи, поэтому при обмене данными между двумя устройствами они должны быть адресованы своим сетевым адресом. Кроме того, они могут даже не иметь один и тот же канальный уровень, т. Е. Поэтому один из узлов может даже не иметь MAC-адрес.
Маршрутизаторы разрешают ip to mac на каждом шаге, потому что нам нужен mac адрес независимо от того, что отправлять пакеты. Но если мы начнем отправлять данные, используя mac-адрес получателя, нам придется искать всю сеть. IP-адреса логически находят машины в сети. Представьте себе сценарий, в котором мы находимся в подсети «B» и хотим общаться с машиной в подсети «A». При логической адресации группы машин в подсети «A» и «B» имеют IP-адреса в последовательностях. Это может быть не так с mac-адресами, машины в «A» или «B» могут иметь различные mac-адреса без связи между ними. Таким образом, Ip помогает нам решить, каким путем идти от хоста к пункту назначения, и сообщает нам, где находится пункт назначения.
Надеюсь это поможет.