Вычислительные сети подразделяются на два основных вида: локальные сети (Local Area Networks, LAN) соединяют компьютеры, расположенные в одном помещении или здании, а глобальные сети (Wide Area Networks, WAN) связывают компьютеры, находящиеся на значительном расстоянии друг от друга. Наиболее популярный тип локальных сетей называется Ethernet. Первоначально простая сеть Ethernet состояла из толстого кабеля, к которому с помощью устройства под ироничным названием зуб вампира (vampire tap) подводились провода от входящих в сеть компьютеров. В современных сетях Ethernet компьютеры подключаются к центральному коммутатору (он показан справа на рис. 8.11). В первых версиях Ethernet скорость передачи данных ограничивалась значением 3 Мбит/с, а в первой коммерческой версии она увеличилось до 10 Мбит/с. Впоследствии появились версии Fast Ethernet и Gigabit Ethernet со скоростями передачи 100 Мбит/с и 1 Гбит/с соответственно. Не так давно выпущена коммерческая версия со скоростью 10 Гбит/с, а в недалеком будущем скорость возрастет до 40 Гбит/с.

Организация глобальных сетей не столь единообразна. В таких сетях устанавливаются компьютеры, называемые маршрутизаторами, между которыми прокладываются проводные или оптоволоконные каналы. От исходного компьютера к целевому данные передаются в виде небольших блоков по 64-1500 байт, называемых пакетами. На каждом ретрансляционном участке, или хопе, пакет сначала сохраняется в памяти маршрутизатора, а затем отправляется дальше, как только освободится необходимая линия связи. Такой подход называется коммутацией с сохранением и продвижением пакетов (store-and-forward packet switching).

Хотя многим кажется, что Интернет является глобальной сетью, технически он представляет собой объединение большого числа разнообразных сетей. Впрочем, это различие для дальнейшего рассмотрения непринципиально. На рис. 8.11 структура Интернета показана с точки зрения домашнего пользователя. Компьютер такого пользователя обычно обращается к веб-серверам через телефонную линию, подключаясь к ней либо при помощи обычного модема, либо через линию ADSL (см. главу 2). Для подключения может также использоваться кабель кабельного телевидения. В этом случае правая часть рис. 8.11 будет выглядеть немного иначе, поскольку поставщиком приложений будет компания кабельного телевидения. Итак, компьютер пользователя разбивает данные на пакеты, чтобы передать их специальной компании, которая называется поставщиком услуг Интернета (Internet Service Provider, ISP). Сам поставщик услуг Интернета использует высокоскоростное соединение (обычно по оптоволокну) с одной из региональных или магистральных сетей, составляющих Интернет. Пакеты передаются между компьютерами сети, перемещаясь хоп за хопом к серверу.

В большинстве компаний, предлагающих веб-услуги, имеется так называемый брандмауэр — специализированный компьютер, фильтрующий входящие пакеты, удаляя нежелательные (например, пакеты от хакеров). Брандмауэр подключается к местной локальной сети (обычно через коммутатор), которая отвечает за доставку пакетов требуемому серверу. Естественно, реальность значительно сложнее, но основные идеи, которые иллюстрирует рис. 8.11, верны.

Сетевое программное обеспечение состоит из нескольких протоколов, каждый из которых представляет собой набор форматов, последовательностей обмена и правил, определяющих назначение пакетов. Например, когда пользователь хочет получить веб-страницу с сервера, его браузер по протоколу HTTP (Hyper-Text Transfer Protocol — протокол передачи гипертекста) отправляет пакет с запросом GET PAGE серверу, который «знает», как обрабатывать полученный пакет. В процессе передачи используются множество различных протоколов, причем зачастую совместно. Обычно они организованы в иерархическую многоуровневую структуру, в которой протоколы верхнего уровня передают пакеты протоколам нижележащих уровней, а реальной передачей данных занимается протокол самого нижнего уровня. На стороне получателя пакеты поднимаются вверх по иерархии в обратном порядке.

Раз сетевые процессоры заняты выполнением протоколов, перед изучением процессоров имеет смысл поговорить о протоколах немного подробнее. Вернемся ненадолго к запросу GET PAGE. Как именно он попадает на веб-сервер? Прежде всего, браузер устанавливает с сервером соединение по протоколу TCP (Transmission Control Protocol — протокол управления передачей). Программное обеспечение, реализующее этот протокол, следит за тем, чтобы все отправленные пакеты были доставлены, причем в правильном порядке. В случае потери пакета программное обеспечение TCP максимально быстро повторяет передачу до тех пор, пока пакет, наконец, не будет получен.

Реально происходит следующее. Браузер формирует корректное HTTP-сообщение с запросом GET PAGE, а затем передает его программному обеспечению TCP, которое и передает пакет через соединение. Программным обеспечением TCP в начало сообщения добавляется заголовок, содержащий порядковый номер и другую информацию. Этот дополнительный заголовок называется ТСР-заголовком.

Сделав свою часть работы, программное обеспечение TCP передает ТСР-за-головок вместе с полезной нагрузкой (содержащей запрос GET PAGE) еще одной программе, реализующей протокол IP (Internet Protocol — межсетевой протокол). Эта программа добавляет в начало пакета IP-заголовок с информацией об адресах отправителя (то есть машины, передающей пакет) и получателя (машины, ожидающей пакет), максимальном числе хопов, двигаясь вдоль которых пакет будет существовать (чтобы «потерявшиеся» пакеты не жили вечно, заполоняя собой весь Интернет), контрольной суммой (для обнаружения ошибок памяти и ошибок передачи) и рядом других полей.

Далее пакет (включающий в себя IP-заголовок, TCP-заголовок и сам запрос GET PAGE) передается «вниз» на уровень канала передачи данных, который добавляет к пакету свой заголовок и передает пакет по линии связи. Этот уровень также дописывает в конец контрольную сумму, называемую CRC (Cyclic Redundancy Check — циклический контроль избыточности) и позволяющую выявлять ошибки передачи. Может показаться, что две контрольные суммы, на уровне IP и на уровне канала данных — это больше, чем необходимо, но такой подход повышает надежность. На каждом хопе проверяется CRC-код пакета, после чего заголовок вместе с CRC-кодом генерируются заново, в соответствии с требованиями исходящего канала передачи данных. На рис. 8.12 показано, что представляет собой пакет в Ethernet. Случай телефонной линии отличается только тем, что вместо Ethernet-заголовка имеется заголовок коммутируемой линии. Обработка заголовков — одна из важных задач, которую призваны решать сетевые процессоры. Конечно, излишне упоминать о том, что мы лишь вскользь коснулись темы вычислительных сетей. За более детальными сведениями обращайтесь к [202].