В этой главе вы познакомитесь с основными концепциями компьютерных сетей и сетевых протоколов TCP/IP. Понимание данной темы является обязательным для эффективного использования сокетов интернет-домена, описанных в следующей главе.
Здесь мы начнем упоминать различные RFC-документы (от англ. Request for Comments — «рабочие предложения»). В них находится формальное описание каждого сетевого протокола, который будет обсуждаться в данной книге. Больше о них можно узнать в разделе 54.7; там же перечислены RFC-документы, имеющие особую важность с точки зрения представленных здесь тем.
Несмотря на существование множества межсетевых протоколов, именно технология TCP/IP стала доминирующей, вытеснив даже коммерческие решения, которые когда-то применялись в локальных и глобальных сетях. Интерсеть на основе протокола TCP/IP, соединяющая миллионы компьютеров по всему миру, называется
Первая широко распространенная реализация TCP/IP была разработана для системы 4.2BSD в 1983 году. Непосредственно из данного кода происходит несколько других реализаций, хотя некоторые версии TCP/IP, в том числе и та, что применяется в Linux, были созданы с нуля, а код системы BSD использовался в качестве эталонного образца.
Начало стека TCP/IP было положено в проекте, спонсируемом Управлением перспективных исследовательских проектов Министерства обороны США (англ. US Department of Defense Advanced Research Projects Agency — ARPA, а позже DARPA), целью которого являлась разработка сетевой компьютерной архитектуры для одной из первых глобальных сетей под названием ARPANET. Если быть точным, используемая там технология называлась пакетом межсетевых протоколов DARPA, но широкой публике она известна как семейство протоколов TCP/IP, или просто TCP/IP.
Краткая история Интернета и TCP/IP приведена на веб-странице http://www.internetsociety.org/internet/what-internet/history-internet/brief-history-internet.
Простая интерсеть представлена на рис. 54.1. На этой диаграмме компьютер tekapo играет роль
Маршрутизатор имеет несколько сетевых интерфейсов, по одному для каждой подсети, к которой он подключен. Такие компьютеры (это могут быть не только маршрутизаторы) называются
Рис. 54.1.
Семейство протоколов TCP/IP представляет собой многоуровневый протокол (рис. 54.2). Он состоит из протокола IP (от англ. Internet Protocol) и разных других протоколов, функционирующих поверх него (код, реализующий эти уровни, обычно называют
На рис. 54.2 нет целого ряда протоколов, основанных на TCP/IP, поскольку они не имеют отношения к данной главе. Протокол ARP (от англ. Address Resolution Protocol) предназначен для связывания интернет-адресов с физическими адресами (например, Ethernet). Протокол ICMP (от англ. Internet Control Message Protocol) служит для уведомления об ошибках и управления информацией внутри сети (он применяется в программе ping, с помощью которой обычно проверяют работоспособность и доступность узла в сети TCP/IP, а также в утилите traceroute, которая отслеживает путь, проделанный IP-пакетом внутри сети). Протокол IGMP (от англ. Internet Group Management Protocol) используется в обычных узлах и маршрутизаторах для поддержки многоадресной передачи IP-датаграмм.