В чем разница между IP-адресом и MAC-адресом в сетях?

«В чем разница между IP-адресом и MAC-адресом в сетях?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

IP-адрес (Internet Protocol) — это логический адрес сетевого уровня (L3 OSI), назначаемый устройству для идентификации в сети и маршрутизации трафика между разными сетями. Он может быть динамическим.

MAC-адрес (Media Access Control) — это физический адрес канального уровня (L2 OSI), уникальный идентификатор, «прошитый» в сетевом адаптере. Он используется для коммуникации внутри одной локальной сети (LAN).

Ключевые отличия:

Критерий IP-адрес MAC-адрес
Уровень OSI Сетевой (L3) Канальный (L2)
Назначение Глобальная маршрутизация между сетями Локальная идентификация в пределах сети
Изменяемость Динамически назначается и меняется Постоянный (физический)
Пример 192.168.1.1 (IPv4) 00:1A:2B:3C:4D:5E

Практический пример: При отправке пакета на удаленный сервер:

  1. Ваш компьютер использует IP-адрес сервера для определения маршрута через интернет.
  2. В пределах каждого сегмента локальной сети (например, в вашей домашней сети или сети провайдера) для передачи кадра следующему устройству (роутеру, коммутатору) используется его MAC-адрес.

Пример проверки формата MAC-адреса на Python:

import re

def is_valid_mac(mac: str) -> bool:
    pattern = r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$'
    return bool(re.match(pattern, mac))

print(is_valid_mac('00:1A:2B:3C:4D:5E'))  # True
print(is_valid_mac('00-1A-2B-3C-4D-5E'))  # True
print(is_valid_mac('00:1A:2B:3C:4D'))     # False