Всеки елемент от хардуера във вашата локална мрежа има MAC адрес в допълнение към IP адреса, приписан на него от локалния рутер или сървър. За какво точно е този MAC адрес?
Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.
Reader на SuperUser Vishnu Vivek е любопитен за MAC адресите и тяхната функция:
Разбирам, че IP адресите са йерархични, така че маршрутизаторите в интернет знаят в каква посока да препратят пакета. При MAC адресите няма йерархия и по този начин изпращането на пакети не би било възможно. Така че MAC адресите не се използват за прехвърляне на пакети.
Не мисля, че седи там без причина. Така че въпросът ми е къде точно влиза MAC адреса по време на пренос на пакети?
Къде наистина? Каква е специфичната функция на MAC адреса?
Сътрудникът на SuperUser Вернер Хенце предлага известен поглед върху функцията на MAC адреса:
За какво се използват MAC адресите?
MAC адресите са базовите ниски нива, които правят вашата Ethernet-базирана мрежа да работи.
Мрежовите карти имат уникален MAC адрес. Пакетите, които се изпращат през Ethernet, винаги идват от MAC адрес и се изпращат на MAC адрес. Ако мрежовият адаптер получава пакет, той сравнява целевия MAC адрес на пакета с MAC адреса на адаптера. Ако адресите съвпадат, пакетът се обработва, в противен случай той се изхвърля.
Има специални MAC адреси, например ff: ff: ff: ff: ff: ff, който е адреса на излъчване и адресира всеки мрежов адаптер в мрежата.
Как IP адресите и MAC адресите работят заедно?
IP е протокол, който се използва на слой над Ethernet. Друг протокол, например, би бил IPX.
Когато компютърът ви иска да изпрати пакет до някакъв IP адрес x.x.x.x, тогава първата проверка е, ако целевият адрес е в същата IP мрежа като самия компютър. Ако x.x.x.x е в същата мрежа, IP адреса на целевата линия може да бъде достигнат директно, в противен случай пакетът трябва да бъде изпратен на конфигурирания маршрутизатор.
Досега нещата изглежда са се влошили, защото сега имаме два IP адреса: единият е целевият адрес на оригиналния IP пакет, другият е IP на устройството, на което трябва да изпратим пакета (следващия хоп, или окончателния дестинация или маршрутизатор).
Тъй като Ethernet използва MAC адреси, изпращачът трябва да получи MAC адреса на следващия хоп. Има специален протокол ARP (протокол за разрешаване на адреси), който се използва за това. След като подателят е изтеглил MAC адреса на следващия хоп, той пише този целеви MAC адрес в пакета и изпраща пакета.
Как действа ARP?
Самият ARP е протокол над Ethernet, като IP или IPX. Когато дадено устройство иска да знае MAC адреса за даден IP адрес, то изпраща пакет към излъчвания MAC адрес, който пита "Кой има IP адрес yyyy?" Всички устройства получават този пакет, но само този с IP адрес yyyy ще отговори с пакет "Това съм аз". Питащото устройство получава отговора и сега знае, че MAC адреса на източника е правилният MAC адрес, който да използвате. Разбира се, резултатът ще бъде кеширан, така че устройството не е необходимо да разрешава адреса MAC всеки път.
Routing
Почти забравих да спомена: няма маршрутизация на базата на MAC адреси. Етернет и MAC адресите на ниско ниво могат да достигат до всяко устройство наедин и същ мрежа (кабелна или безжична). Ако имате две мрежи с маршрутизатор между вас, не можете да имате устройство в мрежата A да изпратите пакет към MAC адреса на устройство в мрежа Б. Няма устройство в мрежата А има MAC адреса на устройството в мрежата Б, затова пакетът към този MAC адрес ще бъде изхвърлен от всички устройства в мрежата А (също от маршрутизатора).
Маршрутизирането се извършва на ниво IP. Просто е видяно, че маршрутизаторът прави това, което описах по-горе, в раздела "Как IP адресите и MAC адресите работят заедно?". Рутерът ще получава пакети за своя MAC адрес, но за различен IP адрес. След това той ще провери дали може директно да достигне целевия IP адрес. Ако е така, той изпраща пакета на целта. В противен случай самият маршрутизатор има конфигуриран рутер нагоре по веригата и ще изпрати пакета на този маршрутизатор.
Разбира се, можете да конфигурирате няколко маршрутизатора. Домакинският маршрутизатор ще има само един маршрутизатор нагоре, но в интернет гръбнакът големите маршрутизатори имат големи маршрутни таблици, така че да знаят най-добрите начини за всички пакети.
Други случаи на използване за MAC адреси
- Мрежовите комутатори съхраняват списък с MAC адреси, които се виждат на всеки порт и изпращат само пакети към портовете, които трябва да видят пакета.
- Мрежите за безжичен достъп често използват MAC адреси за контрол на достъпа. Те позволяват достъп само за известни устройства (MAC адресът е уникален и идентифицира устройства) със съответния пропуск.
- DHCP сървърите използват MAC адреса, за да идентифицират устройства и дават на някои устройства фиксирани IP адреси.
Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.