Различают два типа адресов. На канальном уровне используют адреса, называемые физическими, локальными или MAC-адресами. Это шестибайтовые адреса сетевых плат, присваиваемые изготовителем контроллеров (каждый изготовитель вместе с лицензией на изготовление получает уникальный диапазон адресов). MAC-адреса компактны, но неудобны для восприятия человеком. Кроме того, при смене сетевой платы меняется и MAC-адрес, но для пользователя желательно иметь адрес, не зависимый от подобных замен.
Поэтому на сетевом уровне используют сетевые адреса, иначе называемые виртуальными, или логическими. Кадр, поступивший на сетевой уровень, инкапсулируется в пакет с заголовком, в котором указываются сетевые адреса отправителя и получателя. Эти адреса имеют иерархическую структуру, для них существуют цифровое и буквенное выражения. В Internet эти выражения называют IP-адресом и IP-именем соответственно.
IP-адрес в четвертой версии протокола IP (IPv4) — уникальная совокупность чисел: адреса сети и адреса компьютера (хоста — узла в сети), которая указывает их местоположение. Имя характеризует пользователя. Оно составляется в соответствии с доменной системой имен. Соответствие между IP-адресом и IP-именем хоста устанавливается специальной службой имен. В Internet это DNS (Domain Name Service), в ISO — стандарт X.500.
Рис. 1.  Определение IP-адреса с помощью DNS
IP-имя, называемое также доменным именем, — удобное для человека название узла или сети. Имя отражает иерархическое построение глобальных сетей и потому состоит из нескольких частей (аналогично обычным почтовым адресам). Корень иерархии обозначает либо страну, либо отрасль знаний, например: ru — Россия, us — США, de — Германия, uk — Великобритания, edu — наука и образование, com — коммерческие организации, org — некоммерческие организации, gov — правительственные организации, mil — военные ведомства, net — служба поддержки Internet и т.д. Корень занимает в IP-имени правую позицию, левее записываются локальные части адреса и, наконец, перед символом @ указывается имя почтового ящика пользователя. Так, запись norenkov@rk6.bmstu.ru расшифровывается, как пользователь norenkov в подразделении rk6 организации bmstu в стране ru.
IP-адрес в протоколе IPv4 — 32-битовое слово, записываемое в виде четырех частей (побайтно), разделенных точками. Каждые сеть и узел в сети получают свои номера, причем для сети может использоваться от одного до трех старших байтов, а оставшиеся байты — для номера узла (отметим, что узлы сети, имеющие IP-адреса, называют хостами).
Используются классы адресов A,B,C,D, различающиеся значениями старших битов (рис. 2). В классе A старший бит равен 0, под номер сети отведены оставшиеся биты старшего байта. Следовательно, число различных адресов сетей в классе A равно 27 = 128. В классе B старшие биты равны 10, под адрес сети отведено 14 битов в двух старших байтах, т.е. здесь имеем 214 = 16384 адресов сетей. В классах C и D старшие биты равны 110 и 1110 соответственно. В классе C имеем наибольшее адресное пространство для сетей — 221, но под адрес узла отведен лишь один байт. Класс D введен для адресации при групповой рассылке. Младшие байты используются для адресации подсетей и узлов в подсетях. Какая часть IP-адреса относится к подсети и какая к узлу определяется маской, выделяющей соответствующие биты в IP-адресе. Тем самым описывается иерархия сетей.
Рис. 2.  Структура адресов в IP-сетях
Нужно отметить, что не в каждой сети используются все относящиеся к ней адреса. Так, если в сети с адресом класса C имеется узлов, то 256 адресов не используется. Поэтому разрешено отводить под адрес сети число битов, не кратное 8. В этом случае часть IP-адреса, отведенная под адрес сети, определяется с помощью маски, и в современных маршрутизаторах предусмотрена представление этой маски в таблицах маршрутизации. Этот прием позволяет не только экономить адресное пространство, но и уменьшать размеры таблиц маршрутизации.
Адреса при включении новых хостов в сеть выдает организация, предоставляющая телекоммуникационные услуги и называемая провайдером. Провайдер, в частности, обеспечивает включение IP-адреса и соответствующего ему IP-имени в сервер службы адресов DNS. Это означает запись данных о хосте в DIB (Directory Information Base) локального узла DNS.
При маршрутизации имя переводится в адрес с помощью серверов DNS. Поскольку маршрутизация в сети осуществляется по IP-адресам, то перевод указанного пользователем IP-имени в IP-адрес с помощью DNS обязателен.
Маршрутизация в Internet организована по иерархическому принципу. Имеются уровни ЛВС и корпоративных сетей; маршрутных доменов, в каждом из которых используются единые протоколы и алгоритмы маршрутизации; административных доменов, каждый из которых соответствует некоторой ассоциации и имеет единое управляющее начало. В маршрутных доменах имеются внешние маршрутизаторы для связи с другими маршрутными или административными доменами.
Обращение из некоторого узла к другому узлу в Internet (например, из wwwcdl.bmstu.ru по адресу http://www.intel.com) происходит следующим образом.
Сначала IP-имя переводится в IP-адрес. Для этого происходит обращение к местному серверу (bmstu), и если там сведений о сети назначения нет, то происходит переход к серверу следующего, более высокого уровня (ru) и далее по иерархии вниз до получения IP-адреса хоста назначения. Корневых серверов в Internet сравнительно немного, а число уровней может быть большим. В каждой зоне (поддереве) сервер дублируется, его содержимое реплицируется через определенные промежутки времени. В местном DNS-сервере могут быть сведения об IP-адресах хостов из удаленных доменов, если к ним происходят достаточно частые обращения из данного домена.
После получения IP-адреса узел-отправитель сравнивает номер своей сети (подсети) с номером сети, указанным в IP-адресе получателя в заголовке пакета.
Если номера совпадают, то узел-отправитель с помощью имеющейся в его памяти ARP-таблицы переводит IP-адрес в MAC-адрес, по которому и доставляется пакет средствами канального уровня. Если в ARP-таблице строки с нужным MAC-адресом не оказалось, то по сети широковещательно, т.е. по всем узлам данной сети, распространяется ARP-запрос. Все узлы вскрывают этот запрос, но только узел, имеющий указанный в запросе IP-адрес откликается своим MAC-адресом. После этого пакет отправляется адресату, одновременно строка с найденным MAC-адресом заносится в ARP-таблицу узла-отправителя.
Если номера сетей не совпадают, то пакет пересылается маршрутизатору — устройству, обеспечивающему связь с сетями, внешними по отношению к данной подсети. Маршрутизатор с помощью своей таблицы маршрутизации определяет, через какой из своих портов направлять пакет дальше.
Следует отметить, что каждый порт маршрутизатора имеет свой IP-адрес и принадлежит некоторой сети, каковой может быть ЛВС или соединение с портом другого маршрутизатора. В таблице маршрутизации некоторого маршрутизатора обычно указывается адрес сети назначения и адрес следующего маршрутизатора (точнее, адрес его порта). Адрес выходного порта маршрутизатора может быть указан непосредственно либо вычислен по адресу , так как адреса и относятся к одной и той же сети.
Как отмечено выше, продолжающийся рост числа узлов в Internet привел к появлению версии IPv6 протокола IP (сеть TCP/IP с протоколом IPv6 называют Internet-2).
В протоколе IPv6 размер адреса увеличен до 128 бит. Адреса отражают иерархическую структуру сети и могут быть индивидуальными или групповыми. Индивидуальный адрес имеет следующую структуру (в скобках указан размер соответствующего поля в битах):
Групповые адреса присваиваются группам узлов. Сообщение, адресованное группе, будет доставлено каждому члену группы.
Совместное использование протоколов IPv6 и IPv4 возможно в течение переходного периода. В частности, адреса IPv4 помещаются в заголовке IPv6 на место последних 32 бит, а предыдущие 96 бит заполняются нулями.
В целом IP-заголовок в протоколе IPv6 состоит из 40 байт и включает следующие поля:
За основным заголовком в IPv6-пакете могут следовать дополнительные, используемые для указания пользователю той или иной служебной информации, например, способа шифрования или способа фрагментации. Лимит числа переходов — это максимально допустимое число маршрутизаторов на пути дейтаграммы. Превышение этого числа приводит к ликвидации пакета.