Книга: Алгоритмы для жизни: Простые способы принимать верные решения
Назад: 10. Взаимодействие в сетях Как мы устанавливаем связи
Дальше: Признание

Пакетная коммутация

То, что мы привыкли называть интернетом, на самом деле – набор протоколов, но главным среди них (настолько, что он уже стал плюс-минус синонимом слова «интернет») является управляющий протокол передачи, или TCP (Transmission Control Protocol). Его «родителями» в 1973–1974 годах стали Винтон (Винт) Серф и Роберт (Боб) Кан, которые предложили ввести язык – как им хотелось назвать его – межсетевого общения.
Для TCP изначально использовались телефонные линии, но целесообразнее было бы воспринимать это как эволюцию почты, а не телефона. В телефонной связи используется так называемая коммутация каналов: система открывает канал между отправителем и получателем, который поддерживает постоянную ширину полосы частот между сторонами в обоих направлениях все время, пока длится разговор. Коммутация каналов играет большую роль в человеческих взаимоотношениях, но уже в 1960-х годах стало ясно, что для межкомпьютерных коммуникаций она работать не будет.
Как вспоминает Леонард Клейнрок из Калифорнийского университета в Лос-Анджелесе:
Я знал, что компьютеры «говорят» не так, как я сейчас, – непрерывно. Происходит выброс, и затем на какой-то период наступает затишье. Спустя некоторое время – вдруг снова выброс. И вы не можете позволить себе обеспечить коммуникационное соединение с чем-то, что почти никогда не разговаривает, но если вдруг хочет поговорить, то требует немедленного доступа. Поэтому нам пришлось использовать не телефонную сеть, созданную для непрерывных продолжительных разговоров, – сеть с коммутацией каналов, а нечто иное.
Телефонные компании, в свою очередь, не горят желанием что-то кардинально менять в своих протоколах. Отойти от коммутации каналов казалось безумием, «полнейшей ересью», как выразился сетевой исследователь Ван Якобсон. Клейнрок вспоминает собственное столкновение с телекоммуникационной отраслью:
Я обратился в AT&T, крупнейшую сеть того времени, и попытался объяснить им: мол, парни, вам бы следовало обеспечить нам хорошую передачу данных! И они такие: «Ты вообще о чем?! Штаты – это медный рудник, у нас полно телефонных проводов, вот и пользуйтесь ими!» Я им: «Нет-нет, вы не понимаете! Чтобы установить вызов, требуется 35 секунд, вы даете мне минимум 3 минуты, а мне нужно отправить 100 миллисекунд данных!» Ответ был: «Мальчик, иди отсюда». Ну, мальчик ушел и вместе с другими мальчиками разработал эту технологию, пока они жевали свой обед.
Технология, пришедшая на смену коммутации каналов, получила название пакетной коммутации. В сети с коммутацией пакетов, в отличие от выделенного канала для каждого соединения, отправители и получатели дробят свои сообщения на мелкие частицы, называемые пакетами, и сливают их в общий поток данных. Получаются своего рода открытки, движущиеся со скоростью света.
В такой сети «то, что вы называете соединением, является согласованной иллюзией между двумя конечными точками», объясняет сетевой эксперт Apple Стюарт Чешир. «В интернете не существует соединений. Говорить о соединениях в интернете – все равно что говорить о соединениях в американской почтовой системе. Вы посылаете людям письма, и каждое письмо идет независимо друг от друга. Вы можете иметь многолетнюю непрерывную переписку с кем-то, но почте США нет до этого никакого дела… Они просто доставляют письма».
Эффективное использование полосы пропускания было не единственным фактором продвижения исследований пакетной коммутации в 1960-х годах; другим стала ядерная война. Пол Баран из корпорации RAND пытался решить проблему устойчивой работы сети, чтобы военные коммуникации могли пережить ядерный удар, который разрушил бы бóльшую часть сетей. Вдохновленный алгоритмами, разработанными в 1950-х годах для навигационных комплексов, Баран придумал модель, в которой каждая частица информации могла бы независимо двигаться к пункту своего назначения, даже когда сеть динамично меняется – или вовсе рвется в клочья.
Это был еще один дефект коммутации каналов и их узкоспециализированных устойчивых соединений: столь высокая устойчивость означала, что сброшенный вызов так и останется сброшенным. Коммутация каналов просто не была гибкой или достаточно адаптируемой, чтобы быть надежной. И в этом случае пакетная коммутация снова могла предложить то, что было востребовано временем. В сетях с коммутацией каналов вызов прекращается, если разрушается одно из звеньев цепи, и это значит, что надежность падает в геометрической прогрессии по мере того, как расширяется сеть. С другой стороны, в пакетной коммутации увеличение числа путей в растущей сети становится положительной чертой: появляется так много путей передачи данных, что надежность сети растет в геометрической прогрессии по мере ее расширения.
Тем не менее, даже когда пакетная коммутация была разработана, это не впечатлило телефонные компании. «Все специалисты из отрасли телекоммуникаций громко говорили, что это не сеть! Это убогая попытка использовать нашу сеть! Вы берете наши провода, вы посылаете данные по каналам, которые мы создали! Вы нагромождаете столько всякой дряни, что даже не можете эффективно их использовать!» Но с точки зрения пакетной коммутации телефонные провода являются лишь средством достижения цели; отправителю и получателю, в сущности, все равно, каким образом доставляются пакеты. Способность агностически оперировать любым количеством различных носителей – вот огромное достоинство пакетной коммутации. После того как в конце 60-х – начале 70-х годов первые сети, такие как ARPANET, доказали свою жизнеспособность, сети всех мастей накрыли страну, осуществляя пакетную коммутацию не только по медным телефонным проводам, но и с помощью спутников, и даже радио. В 2001 году компьютерщики из норвежского города Бергена на короткое время даже внедрили сеть пакетных коммутаций «птичья почта», когда пакеты писались на бумаге и привязывались к лапкам голубей.
Разумеется, в сфере пакетных коммутаций есть свои проблемы. В первую очередь один из основных вопросов любого протокола – человеческого или компьютерного – довольно очевиден: как узнать, что ваше сообщение дошло до адресата и было понято?
Назад: 10. Взаимодействие в сетях Как мы устанавливаем связи
Дальше: Признание