Стек протоколов TCP/IP был разработан по инициативе Министерства обороны США (Department of Defence, DoD) более 20 лет назад для связи экспериментальной сети ARPAnet с другими сателлитными сетями как набор общих протоколов для разнородной вычислительной среды.
Сеть ARPA поддерживала разработчиков и исследователей в военных областях. В сети ARPA связь между двумя компьютерами осуществлялась с использованием протокола IP (Internet Protocol), который и по сей день является одним из основных в стеке TCP/IP и фигурирует в названии стека.
При разработке стека протоколов TCP/IP разработчики выделили четыре уровня передачи информации между процессами:
— канальный уровень (передача данных между сетевыми адаптерами в одном сегменте сети);
— сетевой уровень (протокол IP, передача данных между компьютерами в разных сегментах сети);
— транспортный уровень (передача данных между процессами на разных компьютерах; обеспечивает передачу данных с установкой соединения (протокол TCP) или без нее — протокол UDP);
— прикладной уровень («полезные» протоколы, ради которых создавалась сеть, например, протокол http).
Сетевой и канальный уровни обычно реализованы программно на уровне операционной системы, канальный — на уровне сетевого оборудования (адаптеры, коммутаторы, точки доступа). Прикладной уровень реализован прикладными программами.
Сообщения сетевого уровня принято называть пакетами. Сообщения протокола TCP называют сегментами, сообщения протокола UDP — датаграммами.
Стандарты большинства протоколов опубликованы в серии документов, названных Request for Comment (RFC).