Рис. 1.  Протоколы стека TCP/IP
Работа программного обеспечения (рис. 1), реализующего взаимодействие процессов в сетях TCP/IP, кратко может быть охарактеризована следующим образом. При установлении соединения прикладной процесс в узле-отправителе получает номер порта (например, от операционной системы) и передает IP-имя получателя на уровень TCP. С помощью обращения к службе DNS IP-имя переводится в IP-адрес. На сетевом уровне IP-адрес должен быть переведен в MAC-адрес. Для этого используется ARP-таблица отправителя. Если в таблице есть строка с данным IP-адресом, то формируется заголовок пакета и дейтаграмма отправляется в сеть. Если искомой строки в таблице не оказалось, то отправитель формирует ARP-запрос, который широковещательно рассылается по сети. Получатель откликается на запрос, посылая ARP-ответ с указанием своего MAC-адреса. Если узла с запрошенным IP-адресом в данной сети нет, то пакет направляется по MAC-адресу порта маршрутизатора, который пересылает пакет с IP-адресом в следующую сеть и т.д., пока пакет не достигнет сети, в которой найдется MAC-адрес, соответствующий искомому IP-адресу. Аналогичные действия выполняются при установлении обратного соединения. Во время установления соединений для каждого из них в конечных узлах (см. рис. 1) создается модуль TCP, обслуживающий соответствующий прикладной процесс. Передача пакетов по установленным соединениям происходит более быстро, так как теперь не нужно обращаться к DNS и использовать ARP-запросы.