Содержание курса
Лекции Московского государственного университета имени М.В. Ломоносова
0/2
ОП.11 Компьютерные сети
Содержание урока:
Лекция 2.Основные принципы построения Интернета
Сегодня компьютерные сети пронизывают нашу жизнь, и эта тенденция продолжает усугубляться. Без понимания того, как устроены компьютерные сети, как они функционируют, многие вещи понять будет невозможно.
Технологический разрыв между поколениями можно измерить следующим экспериментом. Смогут ли полноценно функционировать ваши дедушка и бабушка, если попадут в современный мир? Они могут не знать, как работает мобильный телефон, что такое кредитная карта, как всё это организовано, что такое виртуальная реальность.
Пример. Есть голограмма танцующего Майкла Джексона вместе с реальными актёрами. Её уникальность заключается в том, что мы имеем дополненную виртуальную реальность, 3D-изображение в развёртке 180 градусов, и огромный зал, который смотрит с разных ракурсов на то, что происходит на сцене. Поскольку это голограмма, задники меняются за доли секунды. Голограмма непрозрачная. Майкл проходит перед живыми актёрами и сзади них, словно реальный человек. Потрясающий технологический прорыв.
Другой пример. Визит Путина в другую страну стоит огромных денег. Всё потому, что на сегодняшний день нет формы коммуникации, которая позволила бы людям почувствовать друг друга. В общении чрезвычайно большое значение имеет не только и не столько то, что мы говорим, но и то, как мы говорим, как мы себя ведём, как мы выглядим, как мы себя держим. Всё это очень важно при личном общении.
Та технология, которая впервые была продемонстрирована в Лос-Анджелесе в 2015 году, является огромным технологическим прорывом, поскольку позволяет вести коммуникации новым способом. В лучшем случае сегодня мы можем воспользоваться видеоконференцсвязью, когда на плоском экране появляется плоское изображение. Но в случае голограммы в пространстве создаётся 3D-изображение, которое во всех подробностях передаёт поведение человека при коммуникации.
Сетевые приложения: абстракция
Рассмотрим организацию приложений в компьютерных сетях. Квинтэссенция тех методов, на которых основаны все приложения в Интернете, – это некая абстракция, которая лежит в основе всех моделей приложений Интернета.
Если у нас есть два компьютера A и B, и мы хотим обеспечить взаимодействие между ними через сеть, то основная модель, абстракция реальных механизмов, которые используются в Интернет-приложениях, – это упорядоченный поток байтов на транспортном уровне, который направлен от компьютера A к компьютеру B.
При этом возникает множество вопросов. Мы используем в Интернете пакетную коммутацию, то есть весь передаваемый объём данных режется на маленькие кусочки, и эти кусочки передаются в Интернет, причём каждый кусочек идёт своим маршрутом. Образно говоря, в Интернете не работают очень многие законы физики. Например, нельзя ожидать, что ранее посланный пакет придёт раньше позднее посланного. Здесь всё может произойти наоборот. Многие законы времени в сети подвергнуты искажениям.
Вообще «программа и время» – огромная тема. Мы говорим о программах реального времени. Программа – сущность логическая. Откуда в ней появляется время? Нужно уметь каким-то образом оценивать, сколько времени потребуется созданной вами программе на отработку того или иного события. Бытовая электроника, все технически сложные объекты (самолёты, пароходы, ракеты, спутники, здания, всё, что угодно), управляются компьютерными сетями, но в этих компьютерных сетях нужно уметь писать программы так, чтобы работа этих программ укладывалась в жёстко определённые временные рамки.
Модель «Поток байтов». Экономические рамки компьютерной
сети. NAT
На рисунке изображена модель потока байтов (Рис. 2.1). Все байты пронумерованы. Тот же порядок нумерации должен получиться на стороне B.
Рис. 2.1. Модель «Поток байтов»
Тот факт, что коммуникация внутри сети не упорядоченная, в том смысле, что пакеты идут каждый своим путём, вызывает целый ряд вопросов: как восстанавливать этот порядок, как узнать, что какие-то пакеты не дошли, потому что в компьютерных сетях нет никаких гарантий. Это сети, которые работают по принципу «best effort» – по мере возможностей. Сеть делает всё, чтобы передать информацию, но не даёт гарантий успеха всех операций. Это означает, что само приложение должно позаботиться о том, чтобы восстановить порядок и попросить у отправителя повторно переслать не полученную информацию.
Компьютерная сеть – это общественное достояние. Если поместить в эту сеть слишком много сервисов, то она станет очень дорогой, а значит, не все смогут позволить себе ею пользоваться. Поэтому сеть стараются держать в экономически разумных рамках. А значит, количество сервисов, которое поддерживается сетью, относительно невелико. Это нужно, чтобы сдерживать стоимость сети. Тем не менее, эта стоимость огромная.
NAT (Network Address Translation) – технология, которая возникла из-за нехватки IP-адресов в протоколе IPv4. Внутри некого офиса программы и приложения взаимодействуют с помощью неких локальных адресов, а при выходе в глобальный Интернет они временно получают глобальный IP-адрес. Эта технология выполняет роль транслятора. Для Москвы такой сервис как NAT должен уметь одновременно поддерживать не менее 8 миллионов соединений – активно используемых адресов. В зависимости от количества сервисов, которые поддерживает NAT, стоимость одного соединения колеблется от 8 до 15 долларов. Если перемножить эти числа, получится стоимость только одного сервиса, – NAT, без которого очень трудно обойтись. Однако это касается только Москвы. По всей России и по всему миру числа будут гораздо больше.
Если через сеть работают только два приложения, пакеты нумеруются, и всё
отлично. Если работает много приложений, различать пакеты с номерами одного
приложения от пакетов с номерами другого приложения уже сложнее.
Domain Name Service (DNS)
Идея интернет-приложения Domain Name Service (DNS) заключается в том, что для того чтобы обратиться к какой-то машине или какому-то приложению, удобнее использовать их имена. Имя – это сущность, которая идентифицирует, с кем мы общаемся. «Смелянский Руслан Леонидович» – эти три слова говорят «кто», но не отвечают на вопрос «где?». На этот вопрос отвечает адрес. Необходимо чётко осознавать различия между именем и адресом. Для того чтобы уметь отображать имя
на адрес, используется система доменных имён – Domain Name Service (DNS).
Пример. Клиент хочет связаться с машиной с именем «TITAN.cs.msu.ru». Чтобы узнать её IP-адрес, клиент обращается к своему ближайшему DNS-серверу (Рис. 2.2). Если открыть на компьютере учётную запись, то можно увидеть довольно много записей с IP-адресом, а среди них – строку с названием DNS Server. Как только компьютер включается в сеть, ему сообщают IP-адрес ближайшего DNS-сервера. Этот DNS-сервер обслуживает тот домен, в котором находится данный компьютер. Все устройства, которые имеют имена в Интернет-сети, разбиты по доменам. Это не означает, что все они географически должны быть локализованы в одном и том же месте. Они локализованы в одном домене и имеют некую общую часть в своём имени.
Рис. 2.2. Domain Name Service (DNS)
После того, как клиент обратился к DNS-серверу, тот проверяет, обращался ли кто-нибудь к компьютеру с именем «TITAN.cs.msu.ru», в своих кэшах. DNS-сервер – это, по сути, база данных – таблица, куда занесены имена и какие-то атрибуты, характерные для объектов с этими именами. Если локальный DNS-сервис не находит в своих кэшах нужной записи, то он обращается к DNS-серверу домена ru. В этом домене он ищет, где располагается DNS-сервер домена msu. Дойдя до домена msu, он ищет DNS-сервер домена cs, потому что TITAN и присвоенный ему IP-адрес находятся в этом домене. Если такой записи в домене cs не будет обнаружено, то по цепочке пойдёт сообщение о том, что имя неизвестно, в сети нет устройства с таким именем, оно не зарегистрировано. А если такая запись обнаружена, то клиенту передаётся IP-адрес. Побайтно идёт текстовая строка, где в ASCII-коде кодируются символы, и шлётся запрос (Request). DNS-сервер – программа, которая стоит на компьютере и реализует некую базу данных. Происходит поиск в этой базе данных с помощью SQL-запросов. Получаем ответ. Если ответ негативный, то мы получаем IP-адрес DNS-сервера домена ru. Тот же самый SQL-запрос, – получаем IP-адрес DNS-сервера домена msu. Снова запрос, – и мы попадаем в cs и в результате ещё раз получаем IP-адрес. Все эти коммуникации происходят через поток упорядоченных байтов. Никаких исключений в этом случае нет.
e-Почта (SMTP)
Электронная почта – тоже приложение. В DNS-сервере домена находится список имён всех компьютеров, которые зарегистрированы в данном домене, в том числе почтовые сервера, веб-сервера и т. д. Поэтому когда, например, клиент A хочет послать письмо клиенту B, происходит следующее (Рис. 2.3).
Рис. 2.3. e-Почта (SMTP)
Клиент A формирует письмо: пишет «кому», тему и тело. В тело он может включить аудиофайл, видеофайл, набрать некий текст. При этом, когда клиент набрал имя абонента, например, [email protected], при отправке письма он преобразует это имя в IP-адрес через DNS-службу. Клиент знает, где находится его mail-Server, поскольку в своём локальном DNS он всегда знает IP-адрес сервера электронной почты домена cs, если находится в этом домене. Затем сервер ищет IP-адрес почтового сервера в домене клиента B. Найдя этот IP-адрес, он в виде упорядоченной последовательности байтов передаёт всё письмо вместе с заголовком, адресом, телом на почтовый сервер, ближайший к клиенту B. В определённое время, либо в автоматическом режиме, либо по инициативе пользователя, почтовый клиент на компьютере клиента B инициирует обмен между сервером и почтовым клиентом и перекачивает всю накопленную на сервере почту, адресованную ему, к себе на локальный компьютер.
World Wide Web (HTTP)
Всемирная паутина (World Wide Web). Протокол HTTP. В случае HTTP в запрос на доступ к какой-то странице входит команда GET и адрес этой страницы на веб-сервере. Причем веб-сервера зарегистрированы в DNS-домене, том, в котором они находятся. Клиент отправляет запрос с командой PUT, если нужно положить какую-то информацию на веб-сайт, и GET – если нужно получить её (Рис. 2.4).
Рис. 2.4. World Wide Web (HTTP)
Это ASCII-текст, алфавитно-цифровой текст, который может включать ссылки на графические файлы, которые будут динамически подкачиваться. Всё это в виде упорядоченной последовательности байтов перекачивается от клиента на сервер либо, если реализуется команда GET, с сервера на машину клиента. А дальше с помощью соответствующего браузера происходит визуализация страницы, записанной на языке HTML, размеченной специальными тегами, которые позволяют управлять размещением изображений, видеофайлов, шрифтами, цветом, и так далее.
Skype. Случаи нахождения одного или обоих клиентов за NAT
Skype. Взаимодействие по Skype (Рис. 2.5).
Рис. 2.5. Взаимодействие по Skype
В самом простом случае, если A и B знают свои имена, то с помощью DNS-службы они могут получить IP-адреса. Клиент A может запросить клиент B на готовность провести сессию. Клиент B, зная адрес IP A, который указывается при этом взаимодействии, связывается с клиентом A, при этом подтверждая свою готовность установить такую сессию. Затем в виде последовательности байтов начинает передаваться информация от A к B.
Если клиент B находится за NAT, у него нет глобального IP-адреса. В этом случае нет никакой возможности связаться с клиентом B, если он сам не проявит инициативу. Если клиент B сам проявит инициативу, то произойдёт следующее (Рис. 2.6).
Рис. 2.6. Взаимодействие по Skype через сервер Randezvous
Есть некий сервер, который называется Randezvous. После включения компьютера можно получать сообщения по Skype о том, что один из контактов находится в сети. Это означает, что клиент Skype вышел на сервер Randezvous и там зарегистрировался. Клиент B знает IP-адрес сервера Randezvous, который устанавливается при инициализации клиента. Как только клиент B выходит со своим локальным IP-адресом, на выходе через NAT ему будет присвоен глобальный IP-адрес. С помощью глобального IP-адреса, зная IP-адрес сервера Randezvous, он зайдёт на этот сервер и произведёт процедуру регистрации. В ходе этой процедуры он зафиксирует свой глобальный IP-адрес. Теперь если клиент A зайдёт на сервер Randezvous, то сможет запросить IP-адрес клиента B (а он там есть), и получить его. Если клиент A его знает, то он инициирует сессию к IP по IP-адресу B. NAT, получая глобальный IP-адрес B, осуществляет трансляцию в локальный IP-адрес, и клиент B получает соответствующую информацию.
Если сервера Randezvous нет, то единственная возможность взаимодействовать A и B заключается в том, что если B сам выйдет на A, тогда A узнает его глобальный IP-адрес и сможет взаимодействовать с клиентом B. Если клиент B не проявит инициативу, то никакой возможности для взаимодействия A и B не будет. Но в любом случае взаимодействие между A и B происходит в виде упорядоченной последовательности байтов, которые передаются между машиной A и B.
Рис. 2.7. Взаимодействие по Skype через сервер Rely
Если обе машины находятся за NAT, взаимодействие происходит через сервер, аналогичный Randezvous, но несколько иначе организованный (Рис. 2.7). Клиент B выходит на сервер Rely и фиксирует свой глобальный адрес. Клиент A тоже выходит на этот сервер и в нём регистрируется. Затем A и B через сервер Rely могут устанавливать сессию между собой и передавать данные в виде упорядоченного потока байтов.
Bit Torrent
Bit Torrent. Быстрая передача больших файлов. Каждый большой файл (например, фильм) режется на несколько частей и разбрасывается между клиентами. Это так называемые пиринговые сети. Все машины здесь равны, нет сервера, и
нет клиентов. Среди них выделяется один так называемый трекер машины, который хранит файл, где записано, какие части большого файла хранят у себя машины, и адреса этих машин. Группа этих машин вместе с трекером образует так называемую swarm-группу, по-русски «рой» (Рис. 2.8).
Рис. 2.8. Bit Torrent
Если клиент A хочет скачать себе какой-то фильм, он закачивает с трекера трекер файл, узнаёт swarm-группу, он знает, кто какую часть файла хранит, и параллельно инициирует сессии скачивания с нескольких машин разных частей одного и того же файла. А поскольку у этого клиента есть трекер-файл, то он знает, в каком порядке нужно компоновать эти части. Преимущества такой технологии в том, что: а) существенно ускоряется перекачка файлов (она идёт параллельно, а не последовательно); б) нет необходимости в одном большом хранилище, поскольку для передачи большого файла можно использовать небольшие хранилища, которые находятся на каждом из этих клиентов.
Модель «Поток байтов»: TCP, UDP и их различия
Основная модель, которая используется на сегодняшний день для взаимодействия в Интернете, – это модель «трубы», когда есть упорядоченная последовательность байтов, которая передаётся между двумя приложениями. Эта «труба» прокладывается поверх ненадёжного протокола IP. Внизу, под этой «трубой», находится протокол, который не гарантирует передачи всех пакетов. Этот протокол работает по принципу «best effort».
Для организации упорядоченной последовательности байтов используется TCP протокол (Transmission Control Protocol) – протокол управления передачей. Это протокол, который гарантирует получателю, что все посланные пакеты будут доставлены получателю в надлежащем порядке, и если какой-то из них будет пропущен, то это будет обнаружено, и отправителю поступит запрос повторно передать пропущенный фрагмент.
Существует более простой аналог протокола TCP, который не создаёт надёжного сервиса. Надёжный сервис означает, что передача происходит с подтверждением получения каждого посланного пакета, порядок гарантируется, и гарантируется, что
в случае если какой-то пакет будет потерян, то он будет передан повторно. Если столь сложный сервис не требуется, то можно воспользоваться протоколом UDP, который посылает каждый пакет как бы по отдельному соединению и не гарантирует успешной передачи.
Рекомендуемая литература
• Salam Baset, Henning Schulzrinne ”Skype: An Analysis of the Skype Peer-to-
Peer Telephony Protocol.”

• Смелянский Р. Л. Компьютерные сети, т.1, гл.1-2, т.2, гл.1
• Куроуз Дж., Росс К. Компьютерные сети. Многоуровневая архитектура Интернет, Питер, 2004, гл.1-2

Организация компьютерной сети с точки зрения приложения
Рис. 2.9. Организация компьютерной сети с точки зрения приложения
Абонентские машины – машины, на которых работают приложения, и за которыми работают люди. Эти машины с помощью так называемой системы передачи данных (СПД) подключены к транспортной среде (Рис. 2.9). Важным элементом
транспортной среды в традиционной компьютерной сети являются маршрутизаторы. Когда компьютер подключается через систему передачи данных, он попадает к маршрутизатору. Это машина, которая выстраивает маршрут следования для каждого полученного пакета. Она определяет, куда этот пакет должен быть передан. При этом все эти маршрутизаторы, или коммутационные машины, независимы. Каждый из них, взаимодействуя между собой через специальные служебные сообщения, формирует представление о глобальной конфигурации этой сети.
Сети могут соединяться между собой через шлюзы. Если сети работают по одним и тем же протоколам, то в принципе можно соединить системы передачи данных, образно говоря, проводом, и данные «побегут» из одной сети в другую. Хуже будет, если эти сети работают по разным протоколам. В этом случае потребуются устройства, которые называются шлюзами. Это специальные компьютеры, которые берут протокольные единицы данных одной архитектуры, сети, переформатируют в протокольные единицы данных другой сети и передают в соответствующую сеть.
Примерами систем передачи данных могут служить телефонная сеть, сотовая сеть, сеть Wi-Fi, Ethernet. На самом деле таких систем намного больше.
Проблемы, возникающие при передаче файла
При передаче файла от машины A к машине B прежде всего необходимо обеспечить сохранение формата передаваемого файла. Это можно сделать двумя способами. Первый способ – использование некоторого общего языка разметки файла,
который знает и понимает как машина A, так и машина B. Тогда, используя специальный язык разметки (примером такого языка является HTML), можно передавать этот файл и правильно воспроизводить его структуру на прикладном уровне.
Следующая проблема – как разбить файл на маленькие пакеты. Насколько пакет маленький, определяется тем, какого размера данные можно прокачать в определённый интервал времени через физическую среду – систему передачи данных. Каждый из названных протоколов (Ethernet, Wi-Fi, и т. д.) ограничивает максимальную длину пакета. Например, в IP-протоколе максимальный размер пакета – 64 Кб. Меньшие размеры пакетов допустимы. При передаче от A к B