Адрес IPv4 представляет собой 32-разрядное число, идентифицирующее сеть, в которой находится хост, а также уникально идентифицирующее сетевой интерфейс на этом хосте с маской сети. Отсюда следует, что хост с сетевыми интерфейсами, подключенными к нескольким сетям, имеет несколько адресов. Сетевые адреса назначаются блоками Региональными регистратурами Интернета (Regional Internet Registries - RIR) провайдерам служб Интернета (Internet Service Provider - ISP).
Затем раздают адреса IPv4 небольшими порциями компаниям и отдельным пользователям. Если бы назначение адресов IPv4 не осуществлялось таким централизованным способом, в сети возникли бы конфликтующие адреса и было бы невозможно правильно маршрутизировать пакеты.
Исторически адреса IPv4 были жестко поделены на три класса (А, В и С) для обеспечения потребностей больших, средних и малых сетей. Три класса оказались слишком ограничивающими, а также слишком расточали адресное пространство. Современная схема адресации IPv4 называется бесклассовой междоменной маршрутизацией (Classless Inter-Domain Routing - CIDR). В схеме CIDR каждой организации предоставляется непрерывная группа адресов, описываемых одним значением и маской сети. Например, у ISP могла бы быть группа адресов, определенная 18-разрядной маской сети. Это означает, что сеть определяется первыми 18 битами, а оставшиеся 14 битов потенциально могут использоваться для идентификации хостов в сети. На практике число хостов меньше, поскольку ISP разделяет это пространство дальше на более мелкие сети, которые уменьшают число битов, которые можно эффективно использовать. Именно благодаря этой схеме в элементах маршрутизации вместе с маршрутами хранятся произвольные маски сетей.
Каждый адрес IPv4 Интернета, назначенный сетевому интерфейсу, хранится в структуре in_ifaddr, которая содержит независимую от протокола структуру адреса интерфейса и дополнительную информацию об использовании в домене Интернета. Когда указана маска сети интерфейса, она записывается в поле iasubnetmask структуры адреса. Маска сети, ianetmask, по-прежнему вычисляется по основе типа номера сети (класс А, В или С), когда назначается адрес интерфейса, но она больше не используется для определения того, находится ли место назначения внутри или вне локальной подсети. Система интерпретирует локальные адреса IPv4, используя значение iasubnetmask. Адрес считается локальным для подсети, если поле под маской сети (подсети) соответствует полю подсети адреса интерфейса.