Причина как для MAC, так и для IP-адреса

25

Если у моего компьютера есть IP-адрес, зачем ему MAC-адрес?

user1369975
источник
2
Чтобы дать вам лучший ответ, не могли бы вы расширить свой вопрос и указать, почему вы считаете, что вам не нужен MAC-адрес, если у вашего компьютера есть IP-адрес?
Бретт Ликинс,
1
Я бы порекомендовал взять хорошую базовую книгу по сетевым технологиям и прочитать ее; будет стоить того. Он будет отвечать на этот вопрос и многие другие: amazon.com/Computer-Networking-Top-Down-Approach-Edition/dp/...
Манодж Pandey
4
Это звучит, возможно, странно, но это самый простой способ уменьшить путаницу. Почему вы вставили сетевой адаптер Ethernet в свой компьютер? Ответьте на этот вопрос, и он ответит на вопрос о необходимости MAC-адреса.
Майк Пеннингтон,
4
@Reprovo, единственное место, где комментарии / ответы действительно делают это утверждение, - это когда ФП отвечает на ответ Теун Винк с желанием избежать сетевых моделей в ответах. Если вы не знаете, почему и как сетевые модели, вы действительно не понимаете свою сеть, и «выполнение работы» будет гораздо более болезненным или создаст дополнительные проблемы. Есть много вещей, которые вам действительно не нужно знать как профессионал сети (например, как биты помещаются в провод и т. Д.), Но сетевые модели не являются чем-то, что они могут избежать, по крайней мере, получить базовое понимание.
YLearn
2
@ user1369975, я думаю, что вы упускаете суть. Мы не говорим, что вопрос недействителен, и не говорим, что людям не нужно учиться. Тем не менее, это сайт для сетевых инженеров / профессионалов, и просить обрисовать здесь ответ, игнорируя основные принципы организации сети, нецелесообразно. Если вы хотите получить ответ, не предназначенный для других сетевых специалистов, вы должны задать его на одном из других сайтов, таких как SuperUser .
YLearn

Ответы:

13

не вдаваясь в модель OSI, уровень TCP и т.д .:

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

(Хорошо, определите каждую сетевую карту, но в то время вы могли подумать один MAC-адрес для каждого компьютера).

Не было уникальной спецификации того, как компьютеры будут общаться друг с другом: появилось много протоколов: TCP / IP, IPX / SPX и так далее. Каждый протокол будет определять вещи, как они думали, было в порядке. Например, IPX / SPX будет обращаться к каждому компьютеру, используя MAC-адрес и некоторую дополнительную информацию.

Но протокол TCP / IP был разработан немного по-другому: они решили, что иметь виртуальный адрес, состоящий из 4 байтов (от 0.0.0.0 до 255.255.255.255), было достаточно, и им было еще проще управлять: не имеет значения, все ваши сетевые карты имеют одинаковый MAC-адрес или нет, мы сгруппируем наш компьютер так, чтобы все TCP / IP-адреса, которые начинались с 10.0.xx, были частью технической группы, а те из 10.1.xx - принтерами, и. ..

Таким образом, если TCP / IP-адрес должен соединяться с другим, он просто использует TCP / IP-адрес. Но сетевые устройства должны знать, на какую сетевую карту отправляется это сообщение, поэтому они каким-то образом преобразуют адрес TCP / IP в MAC-адрес.

Почему бы просто не устранить MAC и использовать только TCP / IP?

несколько причин:

  • легко группировать адреса TCP / IP,
  • все устройства созданы для того, чтобы заботиться о MAC-адресе, в соответствии с этим требованием низкого уровня, и должны быть изменены
  • несмотря на подавляющее большинство (я думаю :-P), некоторые другие протоколы все еще используются, и они полагаются на MAC-адрес
woliveirajr
источник
25

MAC-адреса и IP-адреса работают на разных уровнях набора интернет-протоколов . MAC-адреса используются для идентификации машин в одной широковещательной сети на уровне 2, а IP-адреса используются на уровне 3 для идентификации машин в разных сетях.

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

Теун Винк
источник
Спасибо большое за ваш ответ, но было бы лучше, если бы кто-то мог дать ответ, не вдаваясь в спецификации OSI Layer или TCP Layer
user1369975
11
Если это слишком сложно, это действительно не сайт для вас. Вы можете утверждать, что этот вопрос не по теме, поскольку он считается общеизвестным для сетевых инженеров.
Теун Винк
11
@ user1369975, модели, на которые вы ссылаетесь, являются основой для работы сетей (как аппаратных, так и программных). Без этого базового понимания не было бы значимого ответа на ваш вопрос. Это было бы похоже на вопрос (о гражданине США), «если у них есть имя, почему им нужен номер социального страхования», без упоминания правительства в ответе.
YLearn
5
Представьте себе MAC-адрес как описание дома на вашей улице. Для ваших соседей все они будут понимать «зеленый дом» или «дом мистера Джонсона» или «дуплекс на углу» - это сопоставимо с MAC-адресом, описательным только локально. IP-адрес является публично маршрутизируемым, так что это будет похоже на использование полных адресов: 123 Main St, Somewhere, CA 92069. Тогда я думаю, что IP to MAC будет как почтальон, выходящий на улицу и кричащий «КТО НА 123 ГЛАВНАЯ? !?!?» и мистер Джонсон услышал его и сказал: «Вот, зеленый дом!» Похоже? Ужасная аналогия.
Дэвид Хоуд
3
Это объясняет, почему это необходимо, учитывая текущую архитектуру. Но почему архитектура была спроектирована таким образом? Я легко мог представить себе мир, в котором есть только локальные IP-адреса и WAN-IP-адреса. Это технически возможно.
Привет, мир,
17

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

IP-заголовок пакета, покидающего вашу рабочую станцию ​​и предназначенный для IP-адреса в другой подсети, будет поддерживать исходный IP-адрес и IP-адрес назначения, на данный момент забывая о NAT. [Позже я расскажу о том, что происходит, когда пункт назначения находится в той же подсети.] Заголовок Ethernet содержит ваш MAC-адрес источника и MAC-адрес назначения вашего шлюза по умолчанию. С вашей точки зрения нет никаких сведений о конечном MAC-адресе назначения. Этот первый маршрутизатор будет перезаписывать исходный MAC-адрес для себя, а конечный MAC-адрес - для следующего перехода маршрутизатора и т. Д. До тех пор, пока пакет не поступит на последний маршрутизатор, который напрямую подключен к подсети назначения.

Чтобы сделать простую иллюстрацию, рассмотрим заголовки L2 / L3, когда пакет перемещается из исходного IP (sIP) в IP назначения (dIP), а MAC источника и назначения перезаписываются по пути - fs = first-source и ld = last-destination, а r1-r3 - маршрутизаторы:

fsMAC-r1MAC / sIP-dIP 
r1MAC-r2MAC / sIP-dIP
r2MAC-r3MAC / sIP-dIP
r3MAC-ldMAC / sIP-dIP

Любые задействованные коммутаторы L2 не будут изменять MAC-адреса.

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

generalnetworkerror
источник
3
Таким образом, чтобы подвести итог, MACэто то , что передает сообщение от одного прыжка к другому, в то время как IP отслеживает исходный источник и назначение. Это похоже на почтовое отделение, где я адресую свое письмо бабушке в Фениксе, но почтальон, который забирает его из почтового ящика, заботится только о том, чтобы доставить его в почтовое отделение, а почтовое отделение - только о том, чтобы доставить его в сортировку. центр и т.д ...
CodyBugstein
3
Мой вопрос, однако, почему отдельный протокол для MAC? Почему бы просто не определить следующий IP-адрес для перехода и сохранить текущие IP-адреса источника / назначения вместе с исходными IP-адресами источника / назначения?
CodyBugstein
@Imray: Первая проблема с устранением протокола MAC требует изменения / переписывания стандартов Ethernet и TCP / IP. Во-вторых, IP не является единственным протоколом в L3, который использует MAC-адреса в L2 для связи. В-третьих, MAC-адреса обычно привязаны к аппаратным (сгоревшим) адресам на сетевых картах, в то время как IP на более высоком уровне могут быть несколько произвольными для гибкости. В-четвертых, MAC-адреса актуальны только локально, в то время как IP-адреса актуальны в глобальном масштабе (не считая более недавних изменений с NAT'ом и частными адресами, которые не были частью первоначального проекта).
generalnetworkerror
14

Ничто не мешает вам спроектировать сеть, в которой есть только IP-адреса для L2 и L3. Затем «коммутатор Ethernet» изучит SIP-адрес входящих пакетов и перенаправит его на DIP-адрес.

Однако эта сеть будет поддерживать IP только тогда, когда появится следующее поколение IPvX, оно не будет работать, так как «коммутатор Ethernet» не может поддерживать этот протокол. Вы также не могли запускать различные другие протоколы, такие как IPX и AppleTalk, или какой-то новый протокол, который вы разрабатываете и тестируете у себя дома.

Уровни абстракции увеличивают скорость разработки и стимулируют инновации, поскольку вам не нужно перестраивать весь дом, чтобы изменить окно.

Теперь вы могли бы запустить те же коммутаторы Ethernet и перенести вашу сеть между IPX на IPv4 на IPv6, не затрагивая вашу локальную сеть.

ytti
источник
Ничто физически не мешает вам проектировать эту сеть, кроме этих компонентов, которые существуют только в вашем воображении: A) коммутатор Ethernet, который изучает IP-адреса источника B) сетевой адаптер Ethernet без MAC-адреса
Майк Пеннингтон,
3

IP-адрес и MAC-адрес служат различным (но важным) целям:

MAC-адрес получает кадр от одного сетевого адаптера к следующему. IP-адрес получает пакет с одного компьютера на сервер

Итак, учитывая следующее:

Source Computer  <--->  RouterA  <--->  RouterB  <--->  Destination Server

То, что направляет пакет от «источника» к «месту назначения», - это IP-адрес. Но то, что получает пакет от исходного компьютера к RouterA, а затем от RouterA к RouterB, а затем от RouterB к месту назначения, это MAC-адреса.

Вы можете видеть отношения на этой иллюстрации:

Пакетные путешествия - Как пакеты перемещаются через Интернет - pracnet.net/pt

Эдди
источник
Конечно, очень часто для соединений между маршрутизаторами используется протокол, который не имеет MAC-адресов.
Рон Мопин
@RonMaupin Да. Конечно. Но ... насколько это актуально, учитывая вопрос, заданный конкретно о MAC-адресах =)?
Эдди
Просто кажется, что ваш ответ подразумевает, что на каждом прыжке будет назначаться MAC-адрес, что может вводить в заблуждение. Это также работает, если ваша диаграмма показывает MAC-адреса только в первом и последнем прыжках. Это немного неполно, поэтому я сделал комментарий.
Рон Мопин
1

Протокол IP обеспечивает основу для поддержки понятия подсетей и маршрутизации . Это означает, что IP не предполагает, что ваш пункт назначения находится в той же сети - если это не так, ваш трафик должен быть перенаправлен через промежуточное устройство, такое как маршрутизатор. IP имеет поля TTL / Hop Limit и такие, которые поддерживают это.

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

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

LawrenceC
источник
0

Чтобы быть максимально простым:

Mac Address является физический или виртуальный адрес вашей сетевой карты или сетевого интерфейса. С точки зрения компьютера, это физический адрес сетевой карты этого компьютера. Он используется для передачи информации на этот компьютер на уровне 2 модели OSI.

IP - адрес требуется на уровне 3. Вы требуете , чтобы взаимодействовать с компьютерами в разных подсетях и devices.The IP Address проверяет « где» устройство находится в сети.

В IP - адрес и MAC - адрес используются в тандеме. Протокол разрешения адресов используется, чтобы связать их вместе путем преобразования IP-адресов в адреса Mac на канальном уровне в одной сети.

Вы также можете проверить здесь для более подробного объяснения.

HAL
источник
1
Сохраняя это простым: если у вас есть Имя, вы идентифицируете себя в местности. Вам нужно иметь SSN, чтобы вас идентифицировали на глобальном уровне
pulsarjune
-2

MAC-адрес представляет собой аппаратные единицы, которые он собрал, он постоянен, и различные системы в нашей сети, изготовленные различными поставщиками, имеют очень разный диапазон адресов Mac, поэтому их трудно организовать как сеть. Но используя IP-адреса, мы можем расположить устройства в нашем сеть в arange, которая является одновременными адресами. Также мы не можем отправлять наши MAC-адреса во внешние сети

sunnychen
источник
-2

Начнем с того, что это очень хороший вопрос, затрагивающий основные основы сети. Суть в том, что нам не нужен MAC-адрес для обеспечения возможности подключения. Теоретически, сеть может быть построена с использованием только IP-адресов! Однако некоторые практические трудности могут возникнуть из-за использования такой схемы. Если вы планируете вручную назначить IP-адрес каждому сетевому устройству, вы можете избежать основных ловушек. Однако, если вам нужно автоматически назначать IP-адреса, например, когда слишком много сетевых узлов для администрирования вручную, нет никакого способа убедиться, что каждому узлу присвоен только один IP-адрес или заранее определенное их количество, потому что вы не может отличить одно от другого, если только объект распределения адресов не может однозначно и однозначно идентифицировать запрашивающее устройство, например по его MAC-адресу, который считается уникальным для любого устройства в локальной сети. Такое неидентифицируемое устройство может многократно запрашивать дополнительные IP-адреса и, в конечном итоге, наносить ущерб жизнеспособности сети. Возвращаясь к этой теме, все, что вам нужно для создания сети, работающей только по IP, - это позволить канальному уровню адаптера сетевого интерфейса проходить через любой фрейм данных, который он получает, непосредственно к сетевому уровню, независимо от типа сопоставимого MAC-адреса, где он может фильтроваться по IP-адресу назначения, а не на уровне данных. Просто чтобы проиллюстрировать концепцию, предположим, что сеть создается путем соединения портов UART RS-232: в этом случае устройства UART не имеют MAC-адресов или каких-либо других уникальных идентификаторов, однако вы можете построить локальную сеть, используя UART и IP-адреса. в одиночестве, при условии установки соответствующих драйверов UART. Надеюсь, что этот отрывок дал вам некоторое представление о предмете.

Тьюринг
источник