Еще один необходимый для нормальной работы TCP/IP параметр — маска подсети (subnet mask), которая служит для определения, в какой сети находится приемник пакета — локальной или внешней. Маска подсети — это 32-битный адрес, представляющий собой последовательность битов со значением 1, который используется для выделения, или маскировки, идентификатора сети адреса назначения пакета и отделения идентификаторов сети и узла. Каждому узлу сети TCP/IP нужна маска подсети (если сеть не разбита.на подсети, т. е. состоит из одной подсети) или маска по умолчанию (в случае разбиения сети на подсети).
Например, такое 32-битное число представляет маску подсети по умолчанию для узлов с адресами класса В (например 172.20.16.200):
11111111 11111111 00000000 00000000 (255.255.0.0)
Когда TCP/IP-узел с адресом 172.20.16.200 отправляет пакет по адресу 172.21.17.201, он сначала выполняет побитовую операцию И по отношению к локальным адресу и маске подсети. Поскольку эта логическая операция в результате дает 0 во всех битах кроме тех, в который в обоих операндах стояли 1, то 172.20.16.200 И 255.255.0.0 = 172.20.0.0.
Затем узел повторяет эту операцию, но вместо адреса отправителя подставляет адрес получателя. В результате получается 172.21.0.0. Затем TCP/IP сравнивает результаты этих операций. Если они совпадают, получатель расположен в этой же подсети. Иначе приемник и получатель расположены в разных подсетях.