Работа по заказу Пентагона велась одновременно в 4 научных центрах – Калифорнийском университете (Лос-Анджелес), Стэнфордском исследовательском центре, Университете Юты и Университете штата Калифорния в Санта-Барбаре. Координатором работ было созданное при Пентагоне Агентство передовых исследовательских проектов в области обороны (DARPA).
Основной проблемой, с которой столкнулись исследователи, была невысокая скорость передачи данных. Дело в том, что первоначально для связи применялась так называемая канальная коммутация. Ее суть заключалась в том, что между двумя устройствами налаживается коммуникационный канал путем прямого соединения. Другие линии отсутствуют, поскольку в них нет необходимости – информационный обмен осуществляется по одному и тому же закрепленному каналу. Первый относительно удачный опыт состоялся в 1965 г., когда сотрудники Массачусетского Технологического университета Томас Меррил и Лоуренс Робертс смогли связать компьютер TX-2, расположенный в Массачусетсе, с ЭВМ, находившейся в Калифорнии[32]. Во время сеанса связи оператор одной из машин обрабатывал данные, находящиеся на другой машине, при этом использовалось находящееся на последней же программное обеспечение. С одной стороны, эксперимент показал, что компьютеры могут работать совместно даже будучи территориально отдаленными друг от друга. С другой стороны, стало ясно, что существующие способы связи не могут обеспечить такую скорость обмена данными, которая была бы приемлемой для решения крупных задач.
Выход удалось найти Леонарду Клейнроку из того же Массачусетского университета, который выдвинул принцип пакетной коммуникации. В отличие от канальной коммуникации (когда данные загружаются в одну линию связи последовательно непрерывным потоком), по замыслу Клейнрока ряд данных разбивается на небольшие фрагменты (пакеты), каждому из которых присваивается свой порядковый номер. Эти информационные единицы отправляются в сеть общего пользования не по одному каналу, а по различным линиям в зависимости от их загруженности. Одновременная, а не последовательная передача данных, сразу вывела скорость связи на новый качественный уровень. Также одна линия связи могла обслуживать сразу несколько компьютеров, ибо по ней можно было в порядке очередности слать пакеты, созданные разными пользователями. Концепция информационных пакетов и сделала возможным появление современного Интернета.
По своей структуре информационные пакеты напоминают письма. Роль адреса выполняет идентификатор приемника – это индивидуальный или групповой номер, присвоенный каждому принимающему абоненту в сети. Благодаря идентификатору компьютер может «опознавать», который направлен именно для него, либо для группы, в которую он входит. Идентификатор передатчика – это аналог обратного адреса, он позволяет установить, от какого компьютера пришел данный пакет. Управляющая информация играет роль почтового штемпеля – она указывает тип пакета, его номер, размер, формат, маршрут его доставки, и то, что с ним надо делать получателю. Основное значение управляющей информации – указать, к какому сообщению относится данный пакет, и каково его место в этом сообщении. Данные – это само содержание послания, то есть та информация, которая пересылается по сети. Контрольная сумма – это конверт, гарантирующий целостность сообщения. Контрольная сумма представляет собой краткое описание данные пакета, его объем и пр. Благодаря сравнению содержания полученного пакета с контрольной суммой можно судить о том, было ли полученное сообщение повреждено, изменено и пр. Стоповая комбинация является сигналом о том, что получение пакета закончено.
Основой функционирования пакетной связи является устройство, которое осуществляет распределение пакетов по доступным каналам – IP-маршрутизатор. Оно является своеобразным «перевалочным пунктом» для данных. К нему присоединяются линии связи от нескольких компьютеров, по которым движутся пакеты данных. Задача маршрутизатора заключается в том, чтобы получить пакет, прочитать идентификатор получателя и переслать информацию получателю (промежуточному или конечному).
Точное распознание получателя осуществляется за счет присвоенного ему уникального кода – IP-адреса. IP-адрес состоит из нескольких разделов, каждый из которых содержит все более и более подробные сведения о маршруте пакета.
Например, если адрес имеет следующий вид:
425.38.72.245
то, 425 – это номер сети, а 38 – это номер определенного узла в ней. Число 72 – адрес конкретного провайдера, а 137 – адрес компьютера.
Соответственно, идентификатор приемника в каждом пакете данных содержит сведения об IP-адресе получающего компьютера. Считывая эти данные в пакете, IP-маршрутизатор может переслать пакет именно в ту сеть, где находится компьютер получателя. Если номер сети в пакете совпадает с номером сети, который закреплен в самом маршрутизаторе, то считывается следующий номер в идентификаторе, и пакет направляется в узел данной сети, который соответствует считанному номеру. То же самое делает маршрутизатор узла, и так далее, пока пакет не доходит до компьютера получателя.
Когда пакет попадает к конечному получателю, компьютер определяет код сообщения, к которому относится данный пакет, и его порядковый номер в данном сообщении. С помощью соблюдение порядковых номеров осуществляется процесс, именуемый «реконструкцией».
Впервые принципы, задуманные Л. Клейнроком, были реализованы на практике в 1969 г. Под его руководством группа студентов Калифорнийского университета соединили два компьютера кабелем длиной около 4,5 м. Так возникла первая сеть, построенная на принципе пакетной передачи.
Идея Л. Клейнрока была оценена экспертами DARPA. С точки зрения военных, ее основное достоинство заключалось в том, что возможность «распыления» информации позволяла построить систему связи, работа которой не зависит от какого-то единого центра, и даже в случае уничтожения центра NORAD и подведенных к нему линий связи оборона страны сохраняла устойчивость.
Для практической отработки принципов Л. Клейнрока было решено попытаться объединить в сеть компьютеры всех четырех университетских центров, занятых изысканиями по теме. Получившаяся система стала именоваться ARPANET, и она послужила принципиальной основой для создания современного Интернета. Первый компьютер, обеспечивающий коммуникацию данных между пользователями ARPANET, был установлен 2 сентября 1969 года в Калифорнийском университете. Объем его оперативной памяти составлял 25 Кбайт.
Однако для работы компьютеров в сети было необходимо создать определенный стандарт их взаимодействия. Этот стандарт получил наименование «сетевой протокол» (Internet Protocol, IP).
Простейший протокол включает в себя следующие компоненты: запрос, получение подтверждения о готовности принять информацию, отправка пакета, подтверждение получения пакета. Сам запрос о передаче, а также ответ на него, также представляют собой отдельные информационные пакеты. В рамках одного IP может быть переслано несколько пакетов.
Таким образом, сетевой протокол можно охарактеризовать как сеанс обмена данными между компьютерами.
Протокол начинается с запроса передатчиком готовности приемника принять данные. Для этого используется управляющий пакет "Запрос". Если приемник не готов, он отказывается от сеанса специальным управляющим пакетом. В случае, когда приемник готов, он посылает в ответ управляющий пакет "Готовность". Затем начинается собственно передача данных. При этом на каждый полученный информационный пакет приемник отвечает управляющим пакетом "Подтверждение". В случае, когда пакет данных передан с ошибками, в ответ на него приемник запрашивает повторную передачу. Заканчивается сеанс управляющим пакетом "Конец", которым передатчик сообщает о разрыве связи. Существует множество стандартных протоколов, которые используют как передачу с подтверждением (с гарантированной доставкой пакет), так и передачу без подтверждения (без гарантии доставки пакета).
Первоначально все компьютеры ARPANET работали в стандарте протокола NCP (Network Control Protocol). Однако данный протокол позволял работать только в том случае, если все соединенные компьютеры обладали идентичным программным обеспечением. Со временем к ARPANET пытались присоединиться все новые и новые пользователи. Инициаторами роста сети были американские университеты, которые пытались создать свою систему обмена данными. Ведь именно университетские научные центры стояли у истоков ARPANET, и они продолжали играть в ее развитии слишком заметную роль, чтобы их можно было исключить из процесса. В 1973 г. через трансатлантический телефонный кабель к сети подключились пользователи из Великобритании и Норвегии, после чего ARPANET стал международным.