Как компьютерные сети пересылают данные через интернет

Обновлено: 07.07.2024

Всем привет! Сегодня мы поговорим про то, что же такое интернет и как он работает, из чего состоит и как устроен. У многих понятие «Интернет» имеет свое представление: у кого-то это бесконечное количество сайтов, кто-то сразу себе представляет игру с друзьями в онлайн игры, а кто-то любит общаться с друзьями или созваниваться в Skype.

Например, если мы подключим два компьютера с помощью провода, то у нас будет сеть из двух компьютеров. Но если подобных машин миллионы, и они будут по всему миру – это и есть интернет. Конечно, я немного утрировал, но в целом смысл должен быть понятен. Как и на почте все эти устройства общаются с помощью пакетов информации. И конечно же, как и на почте у каждого адресата (компьютера или другого устройства) должен быть свой адрес. Вот для этого и используют IP.

СОВЕТ! Далее я постараюсь кратко, но подробно рассказать принцип работы всемирной глобальной сети. Если же вы хотите понять его на все 100%, то советую читать все дополнительные ссылки. Также можете задавать свои вопросы в комментариях.

Немного истории

Изначально родоначальником интернета стало Министерство обороны США. Они поручили 4 крупнейшим университетам подключить в сеть все компьютеры, которые находились в центральном управлении оборонной организации. Начали, конечно же, с подключения кабеля. В процессе получилось подключить не только компы министерства обороны, но также все устройства 4-х университетов.

Проект стал активно развиваться, и уже в 1971 году была изобретена первая электронная почта. В 1973 году был проложен кабель в Европу, и уже к тому моменту можно считать, что сеть превратилась в глобальную. Сетка активно развивалась, и для нормальной работы и передачи информации в такой большой сети нужны были стандарты и определенные протоколы, которые помогали быстрой и слаженной работе интернета.

Принцип работы интернета

Теперь мы подобрались к вопросу – а как работает интернет? Мы уже поняли, что интернет – это по сути огромная глобальная сеть, подключенных устройств, работающих на одних стандартах и протоколах.

Для работы в интернете применяют три популярных понятия: клиент, сервер и сетевое устройство. Сейчас я покажу на примере.

Допустим у вас есть дома компьютер, телефон, планшет или даже телевизор, который подключен к интернету – все эти устройства можно назвать клиентами, так как с помощью них вы выходите в интернет.

Клиент – это устройство, с которого идет запрос в глобальное Web-пространство.

Чаще всего в домах есть так называемые Wi-Fi роутеры (они же «маршрутизаторы») – это маленькие нехитрые коробочки, которые раздают Wi-Fi, и к ним можно с помощью провода подключить тот же самый компьютер, телевизор, камеру видеонаблюдения или принтер. Роутер одновременно подключен к двух сетям:

Как устроен интернет: ответ для чайников

  • Локальная («внутренняя», или в нашем случае «домашняя») – это как раз все подключенные внутренние устройства. У них также есть свои внутренние IP адреса, которые не видны в глобальной сети.
  • Внешняя (или интернет сеть) – то есть через роутер мы и выходим в интернет.

По сути маршрутизатор помогает организовывать локальную сеть и раздавать на все внутренние устройства интернет. Вот этот самый роутер, подключается к провайдеру, и он уже является «Сетевым устройством».

Сетевое устройство – это устройство, помогающее общаться клиенту и серверу. К сетевым устройствам относят: роутеры, коммутаторы, модемы и каналы связи.

А теперь мы подошли к понятию сервер. По сути сервер – это тот же самый компьютер, на котором лежит нужная нам информацию. Например, нам нужно зайти на сайт:

  1. Мы открываем браузер и вводим адрес в браузерную адресную строку.
  2. Идет запрос через весь интернет к серверу по нужному адресу. Пакет может проходить через различные каналы связи, коммутаторы, маршрутизаторы – это нас не интересует.
  3. Сервер получает запрос и высылает ответ на наше устройство.
  4. Сайт начинает отображаться у нас в браузере.

Давайте коротко расскажу про коммутаторы, маршрутизаторы и модемы – думаю вы также слышали эти понятия.

Маршрутизатор или роутер – это устройство, которое позволяет грамотно отправлять пакеты информации. Работает он на основе таблиц маршрутизации, где записаны адреса всех подключенных устройств. Таким образом при запросах или ответах, он как грамотный почтовый сотрудник отправляет письма нужному адресату (серверу или клиенту).

Роутер

Модем – это по сути переводчик в глобальной сети. Напомню, что компьютер, а также подобные устройства, умеют воспринимать только цифровую информацию, состоящую из 0 и 1. Модем переводит аналоговый (сигнал, передающийся чаще всего волнами) в цифровой, понятный для компьютеров сигнал.

Коммутатор – он просто соединяет компьютеры и другие устройства в одну локальную сеть.

Коммутатор

Коммутация

И чуть не забыл упомянуть про коммутацию. Чаще всего используют:

Последние три варианта используются в скупе с модемами, так как передача информации идет аналоговым путем.

Про IP и адресацию

На данный момент в интернете и сетях широко используется IP версии 4. Наверное, вы уже видели цифры подобные этому:

Вот это и есть пример IP адреса, который используется в сетях для того, чтобы пакеты информации доходили туда куда нужно. По сути мы получаем очень сложное число от 0 до 255 в каждом блоке после точки. И получается, что минимальное значение:

Всего можно использовать 4,22 миллиардов адресов. На самом деле не так много, учитывая тот факт, что с каждым днем адресов становится все меньше и меньше. Плюс несколько миллионов адресов зарезервированы и используются на постоянной основе. На самом деле уже начиная с 2009 года порог в 4,22 миллиарда был достигнут.

  1. Использование ДинамическихIP адресов – провайдеры постоянно меняют адреса клиентов на новые. Работает это достаточно просто, и помогает в этом часовые пояса. Когда одна сторона земного шара спит, другая использует свободные адреса. И так по кругу. Более подробно про отличие динамического и статического адреса – читаем тут.
  2. СерыеIP адреса – мы уже ранее упоминали, что локальные адреса, например, находящиеся у вас дома, не видны в глобальной сети. Но провайдер, может устроить локальную сеть прям у вас в подъезде и подключить к одному узлу с одним адресом весь подъезд. Тогда у всех будет один внешний адрес, но вот внутри подъезда у каждого будет свой локальный. Более подробно об этом читаем тут.

Как устроен интернет: ответ для чайников

  1. Один из самых продвинутых вариантов — это использование нового протокола IP версии 6.

IPv6 – позволяет кодировать и использовать куда больше адресов за счет более длинного адреса. Посмотрите на пример представления IPv4 и IPv6 – как видите в кодировке используется куда больше символов, а также туда добавились еще и буквы. IPv6 с лихвой хватит для покрытия всего земного шара, но почему-то провайдеры не спешат переходить на адресацию шестого поколения – но почему?

Как устроен интернет: ответ для чайников

На самом деле причин может быть несколько. Во-первых, нужно будет менять все оборудование, а это стоит денег. Во-вторых, уйдет приток денег за счет продажи статических белых IP адресов. Я думаю, лет через 10 им придется это сделать, так как к тому моменту устройств в интернете будет слишком много.

Домены

Для многих первое знакомство с интернетом был вход на какой-нибудь сайт. Именно так многие проверяют первое подключение к глобальной сети. Начнем с понятия «Домен» – это выделенная область каких-то серверов в интернете, которые имеют одинаковый признак.

Домены бывают разные:

  • Географические – например, сейчас вы находитесь в России, так как в конце адреса стоит «ru» домен. Также есть США (us), Латвия (lv), Украина (ua, или укр), Япония (jr), Китай (cn) и т.д.
  • Административные – обычно принадлежащие какой-то компании.
  • Коммерческий – имеет самый известный домен: com.
  • Тематические – характеризуют принадлежность к какой-то теме: love, bar, online, today.

Чаще всего доменное имя пишется в самом конце через точку, вот как у нас:

Есть также домены разного уровня, например, если наш сайт начнет развиваться, и мы решим открыть подраздел, который будет отвечать отдельно за обзор компьютеров, то он будет называться так:

То есть сначала идет домен 2-го уровня, далее первого, и в самом конце региональный.

У многих уже, наверное, закрался вопрос – почему при адресации в интернете используется IP адреса, а мы при запросе в интернете чаще используем буквенный (URL) адрес? Действительно, в интернете и в сетях используется IP адресация. Но для того, чтобы людям было удобнее и понятнее, а также для того, чтобы не запоминать безликие цифры были придуманы DNS сервера.

Можете провести эксперимент и ввести вместо обычного адреса – IP.

Работает DNS так:

  1. Вы вводите адрес в адресную строку браузера.
  2. Через интернет идет запрос в DNS сервер, который ищет подобный адрес в специальном списке.
  3. Если сервер находит адрес, он возвращает IP, с которым вы можете работать.

Мы только что услышали новое понятие: URL – это как раз и есть полный адрес, который вы используете для работы с сайтами. Он обычно состоит из:

Как устроен интернет: ответ для чайников

А теперь мы подошли к очень интересной теме, а именно отображение сайтов. Как вы уже поняли, в интернете и сети информация передается бесконечным количество нулей и единиц. Но в конце на сайтах мы видим красивую картинку. Вот вам пример – если вы зайдете на нашу главную страницу, то увидите вот это:

Как устроен интернет: ответ для чайников

А вот такую информацию получает компьютер от сервера:

Как устроен интернет: ответ для чайников

Этот язык называется HTML – по сути это более простое представление информации для компьютера. И вот браузер переводит этот язык в более приятный для глаза человека: подгружая картинки, шрифты, рисуя блоки, квадратики и буквы в удобном виде.

Структура и строение интернета

Интернет — это глобальная сеть всех устройств, компьютеров, телефонов и других сетевых устройств. Из-за обширности и глобальности интернет разросся настолько, что разделился на некоторые сегменты:

На самом деле в интернете есть много темных закоулков, именно поэтому точной схемы глобальной сети, нет ни у кого. Если у вас остались вопросы, то задавайте их в комментариях.

Предположим, что кто-то из наших друзей решил позвонить своей бабушке в Санкт-Петербург. Он поднимает телефонную трубку, набирает номер и ждет, когда бабушка ответит. Как только она берет трубку, между нею и нашим другом устанавливается прямая телефонная связь, которая поддерживается до тех пор, пока один из собеседников не положит трубку. Посторонний в их разговор вмешаться не может. Они болтают, пока не надоест, так что можно сказать на какое-то время линия принадлежит только человеку, живущему в Москве, и его петербургской бабушке.

p, blockquote 1,0,0,0,0 -->

p, blockquote 2,0,1,0,0 -->

p, blockquote 3,0,0,0,0 -->

p, blockquote 4,0,0,0,0 -->

p, blockquote 5,1,0,0,0 -->

p, blockquote 6,0,0,0,0 -->

Протокол TCP/IP помогает передавать данные. Он налаживает обмен информацией между различными компьютерными системами. Бывает и так, что замкнутая локальная сеть не работает с протоколом TCP/IP. Однако и из нее можно выйти в Internet: через шлюз (gateway) — специальный компьютер, который обеспечивает обмен данными между разными сетями. Такой шлюз переводит информацию с языка протокола TCP/IP на язык локальной сети, после чего передает ее соответствующему компьютеру.

p, blockquote 7,0,0,0,0 -->

p, blockquote 8,0,0,1,0 -->

В России многопротокольный доступ к сети впервые предложила компания Совам Телепорт.
В наше время многие крупные фирмы заводят собственные локальные сети, чтобы обеспечить связь между сотрудниками на рабочих местах и различными филиалами данного предприятия. Их называют корпоративные сети, или intranet-сети.

p, blockquote 9,0,0,0,0 -->

Создаются они в соответствии с техническими стандартами всемирной сети, и компьютеры, подключенные к таким внутренним сетям, имеют возможность доступа в Internet.

p, blockquote 10,0,0,0,0 --> p, blockquote 11,0,0,0,1 -->

Некоторые коммерческие онлайновые службы — например, Microsoft Network (MSN) — тоже используют технологию Internet, будучи тем самым составной частью всемирной компьютерной сети.

В школе нам не один раз объясняли, как устроено электричество, но если спросить некоторых людей во взрослом возрасте как передается ток, то ответ обычно будет молчание или загадочная улыбка. Мысленно мы думаем «Магия!» и не хотим понимать, потому, что опять забудем. То же самое и с интернетом. Он есть, но как это работает? Давайте в первый и последний раз расставим все по полочкам.

Интернет — система связанных между собой сетей

Если коротко, то это огромная сеть связанных друг с другом компьютеров. С английского интернет так и расшифровывается как «interconnected networks» — соединенные сети.

В этом и заключается принцип работы всемирной паутины — представьте, что, благодаря интернету, сотни локальных сетей связаны. Система перенаправляет нужную информацию самым коротким путем через сотни таких же сетей! Со стороны это немного похоже на то, как проходит импульс нейронов в мозге. Информация никуда «не телепортируется», но двигается транзитом через основные «пункты передачи данных» с феноменальной скоростью.

Кто регулирует процесс передачи данных

Скорее всего, каждый месяц вы отдаете деньги, так называемому, провайдеру за пользование интернетом. Провайдер — просто поставщик услуги, который и предоставляет вам соединение с помощью комплекса оборудования, вроде серверов. На сервере (от англ. обслуживать, буквально — обслуживающая машина) хранится информация, в которой закодирован сайт. И это не совсем обычный компьютер. Главная его задача — хранение данных пользователей, поэтому привычных атрибутов ПК у него нет. Ни монитора, ни клавиатуры.

Если ваш провайдер локальный, и, например, обслуживает только ваш город или страну, то он обязательно взаимодействует с крупными межконтинентальными провайдерами — таких в мире всего около десятка.

Вот чем занимаются как локальные, так и крупные провайдеры:

  • просто передают трафик;
  • предоставляют место на серверах;
  • обслуживают онлайн-платежи и банковские переводы через интернет;
  • оптимизируют доставку контента (поэтому, в зависимости от провайдера, данные могут передаваться быстрее или медленнее);
  • поддерживают онлайн-приложения.

Но встает вопрос о доставке! Чтобы запрос дошел с сервера и отобразил страницу, то система наделяет его чем-то вроде реквизита. Им выступает IP-адрес, который годится для машин, но не для людей. Чтобы не мучаться с запоминанием длинных IP-адресов, которые сплошь и рядом состоят из цифр, ввели систему доменных имен.

Какая информация размещается на сервере

За каждым носителем информации стоит определенная работа. Например, чтобы выпустить газету, нужно сверстать макет и выпустить его в печать. Для этого нужны бумага и чернила. А вебстраница?

По-сути, каждая страница в интернете — это набор текстовых блоков, картинок, видео и аудиофайлов. Если вы пойдете к вебдизайнеру с просьбой сделать вам сайт, то он попросит написать ему текст-черновик, который он позже переведет на понятный вебстранице формат — язык HTML или CSS.

HTML — код, который пишется для браузеров — Chrome, FireFox, Safari и других. Например, вам нужно перевести название сайта "Личный сайт Ивана" на язык браузера. Для этого текст нужно обозначить как заголовок в HTML, что выражается в проставлении тэга <h1>. Для браузера, чтобы он правильно расшифровал и отобразил страницу, информация будет выглядеть так: <h1>Личный сайт Ивана</h1>.

Отдельными тэгами вроде этого обозначаются абзацы, отступы, выделения жирным, курсивом и так далее. Для каждой функции, будь то покрасить фон сайта в синий цвет или вставить фотографию кота, существуют свои коды.

Ничего другого они не понимают. Выбирая браузер, вы, фактически, выбираете окно, из которого смотрите на «мир» интернета. Поэтому, когда страница отображается некорректно, вам часто советуют выбрать другой браузер. К примеру, то, что не отображается в Explorer, может нормально работать в Chrome.

Вот так вкратце мы разобрали основные принципы того, как информация, полученная от одного компьютера, становится доступной для других интернет-пользователей.

Статья, которую вы сейчас читаете прошла десятки тысяч километров, чтобы добраться до вашего компьютера, смартфона или планшета от центра данных Google, где она хранится. Интересно узнать как работает интернет? Тогда давайте углубимся в детали этого удивительного путешествия цифровых данных.

p, blockquote 1,0,0,0,0 -->

Как работает интернет

p, blockquote 2,0,0,0,0 -->

Статьи, видео, которые вы читаете или смотрите в интернете, хранятся в центре обработки данных, который может находиться за тысячи километров от вас. К ак же эти данные попадают на ваш смартфон?

p, blockquote 3,0,0,0,0 -->

Использование спутников

Один из простых способов достичь этого использование спутников. Из центра о бработки данных сигнал может быть отправлен на спутник через антенну, а затем на ваш смартфон, через другую антенну находящуюся рядом с вами.

p, blockquote 4,0,0,0,0 -->

Спутник

p, blockquote 5,0,0,0,0 -->

О днако этот способ передачи сигналов не очень хорошая идея. Потому что спутник находится на расстоянии около 35 тысяч километров над земным экватором, поэтому для успешной передачи данных необходимо преодолеть в общей сложности 70 тысяч километров. Такое большое расстояние создает значительную задержку в приеме сигнала. Точнее это вызывает огромную задержку, которая неприемлема для большинства интернет-приложений. Н о если эта статья доходит до вас не через спутник, то каким образом вы её читаете?

p, blockquote 6,0,0,0,0 -->

Оптоволоконные кабели

Это происходит благодаря сложной сети оптоволоконных кабелей, которые соединяют центр обработки данных и ваше устройство. В аш смартфон может быть подключен к интернету через сотовую сеть или через маршрутизатор Wi-Fi, но в конечном итоге он подсоединяется к этой сети оптоволоконных кабелей.

p, blockquote 7,0,1,0,0 -->

Как вы помните, статья, которую вы сейчас читаете хранится в центре обработки данных, точнее она хранится на твердо тельном накопителе в центре обработки данных. Этот твердотельный накопитель SSD выполняет функции внутренней памяти сервера.

p, blockquote 8,0,0,0,0 -->

Оптическое волокно

p, blockquote 9,0,0,0,0 -->

Задача состоит в том чтобы передать данные хранящиеся в центре обработки данных конкретно на ваше устройство через сложную сеть оптоволоконных кабелей. Давайте рассмотрим, как это происходит.

p, blockquote 11,0,0,0,0 -->

Что такое IP-адрес

П режде, чем продолжить мы должны уяснить, что представляет из себя IP-адрес. Каждое устройство подключенное к интернету будь-то сервер, компьютер или мобильный телефон четко идентифицируется строкой цифр, и звестной, как ip-адрес.

p, blockquote 12,0,0,0,0 -->

IP- адрес можно сравнить с почтовым адресом благодаря которому, мы можем безошибочно идентифицировать любой дом или квартиру. Письмо отправленное вам доходит до вас благодаря указанному на конверте почтовому адресу. Т очно так же в мире интернета IP-адрес действует как адрес доставки, благодаря которому информация достигает пункта назначения. Ваш интернет провайдер, компания предоставляющая вам доступ в интернет, дает IP-адрес вашему устройству и вы всегда можете узнать какой IP-адрес у вашего смартфона или ноутбука.

p, blockquote 13,0,0,0,0 -->

Сервер

p, blockquote 14,1,0,0,0 -->

p, blockquote 15,0,0,0,0 -->

p, blockquote 16,0,0,0,0 -->

p, blockquote 17,0,0,0,0 -->

Система доменных имен DNS

Для этого есть огромная телефонная книга называемая системой доменных имен или DNS, если вы знаете имя человека, но не знаете его телефонный номер вы можете просто найти его в телефонной книге. DNS-сервер предоставляет такую же услугу интернету. В аш интернет провайдер или другие организации могут управлять dns сервером.

p, blockquote 18,0,0,0,0 -->

В итоге: как работает интернет

И так, подведем итоги, в ы вводите доменное имя и браузер отправляет запрос на dns сервер для получения соответствующего IP- адреса.

p, blockquote 19,0,0,0,0 -->

После получения ip-адреса ваш браузер просто перенаправляет ваш запрос в центр обработки данных, а точнее на соответствующий сервер, как только сервер получает запрос на доступ к определенному web-сайту, начинается поток данных. Данные передаются в цифровом формате через оптоволоконные кабели в виде световых импульсов.

p, blockquote 20,0,0,0,0 -->

Э тим световым импульсам иногда приходится преодолевать тысячи километров по оптоволоконному кабелю, чтобы добраться до места назначения. Во время путешествия им часто приходится преодолевать трудно проходимую местность, горы или море. Есть несколько мировых компаний которые прокладывают и обслуживают эти оптические кабельные сети (AT&T, Google, Orange, Verizon).

p, blockquote 21,0,0,1,0 -->

Как прокладываются оптоволоконные кабели в море

С помощью корабля прокладка оптоволоконных кабелей осуществляется примерно следующим способом. С корабля, глубоко в море опускается, так называемый плуг, который создает борозду на морском дне. По ней прокладывают оптоволоконный кабель. С ложная сеть таких оптических кабелей представляет собой основу интернета. Эти оптоволоконные кабели передающие световые импульсы протянуты по морскому дну к порогу вашего дома, где они подключены к маршрутизатору.

p, blockquote 22,0,0,0,0 -->

прокладывание оптоволоконного кабеля в море

p, blockquote 23,0,0,0,0 -->

Маршрутизатор преобразует эти световые сигналы в электрические, затем для передачи электрических сигналов на ваш ноутбук используется кабель Ethernet. Однако, если вы подключаетесь к интернету через мобильную связь, с оптического кабеля сигнал отправляется на вышку сотовой связи, a с вышки сигнал поступает на ваш смартфон в виде электромагнитных волн.

p, blockquote 24,0,0,0,0 -->

Кто контролирует все IP-адреса

Поскольку интернет является глобальной сетью появилась необходимость в организации контролирующей назначение ip-адресов, регистрацию доменных имен и так далее. Э тим занимается организация ICANN расположенная в США. Ч то в интернете поражает сильнее всего? Т ак это его эффективность передачи данных по сравнению с сотовыми и стационарными коммуникационными технологиями.

p, blockquote 25,0,0,0,0 -->

Видео, которые вы смотрите например на YouTube находятся в центре данных G oogle, оно отправляется к вами в виде невероятно длинной последовательности нулей и единиц. Способ, которым эти нули и единицы разбиваются на маленькие кусочки известные, как пакеты и делает передачу данных в интернете эффективной.

p, blockquote 26,0,0,0,0 -->

Давайте предположим, что эти потоки нулей и единиц разделены сервером на разные пакеты, где каждый пакет состоит из шести битов. Н аряду с битыми видео, каждый пакет также состоит из порядкового номера и IP- адресов сервера и вашего устройства. С этой информацией пакеты отправляются на ваш смартфон. Н ет необходимости, чтобы все пакеты проходили по одному и тому же маршруту, каждый пакет независимо выбирает лучший маршрут доступный в конкретное время его отправки. При достижении вашего устройства, пакеты собираются в соответствии с их порядковым номером, если какие-то пакеты не достигают вашего смартфона, то с него отправляется запрос на повторную отправку потерянных пакетов.

p, blockquote 27,0,0,0,0 -->

Можно сравнить это с работой отлаженной почтовой сети, где клиенты не следует основным правилам в отношении адресов назначения. В этом случае письма не смогут достичь правильного места, точно то же в интернете мы используем так называемые протоколы для управления этим сложным потоком пакетов данных.

p, blockquote 28,0,0,0,0 --> p, blockquote 29,0,0,0,1 -->

П ротоколы устанавливают правила для преобразования пакетов данных, привязки адресов источника и назначения к каждому пакету, а также правила для маршрутизаторов и тому подобное. Для разных приложений используемые протоколы различны.

КПДВ

Тем, кто стремится разобраться в сетях и протоколах, посвящается.

В статье рассматриваются основы надежной передачи данных, реализуются примеры на Go, в том числе UDP и TCP . По мотивам раз, два, три и книги "Компьютерные сети. Нисходящий подход", а то все обсуждают только Танненбаума и Олиферов.

Протокол транспортного уровня

Обеспечивает логическое соединение между прикладными процессами, выполняющимися на разных хостах. Логическое соединение с точки зрения приложений выглядит как канал, непосредственно соединяющий процессы.


Протоколы транспортного уровня поддерживаются конечными системами, но не сетевыми маршрутизаторами (кроме — DPI). На стороне отправителя транспортный уровень преобразует данные прикладного уровня, которые получает от передающего прикладного процесса, в пакеты транспортного уровня, называемые сегментами.



Далее транспортный уровень передает сегмент сетевому уровню отправителя, где сегмент инкапсулируется в пакет сетевого уровня (дейтаграмму) и отсылается. На принимающей стороне сетевой уровень извлекает сегмент транспортного уровня из дейтаграммы и передает его вверх транспортному уровню. Далее транспортный уровень обрабатывает полученный сегмент таким образом, чтобы его данные стали доступны приложению-получателю.


Принципы надежной передачи данных

Надежная передача данных по совершенно надежному каналу

Простейший случай. Отправляющая сторона просто принимает данные от верхнего уровня, создает содержащий их пакет и отправляет его в канал.

Надежная передача данных по каналу с возможными ошибками

Следующим этап — это предположение, что все переданные пакеты получены в том порядке, в котором они были отправлены, но биты в них могут быть повреждены, в связи с тем, что канал иногда передает данные с искажениями.


В таком случае применяются механизмы:

  • обнаружения ошибки;
  • обратной связи;
  • повторной передачи.

Протоколы надежной передачи данных, обладающие подобными механизмами многократного повторения передачи, называются протоколами с автоматическим запросом повторной передачи (Automatic Repeat reQuest, ARQ).
Дополнительно, стоит предусмотреть возможность ошибок и в квитанциях, когда принимающая сторона не получит никакой информации о результатах передачи последнего пакета.
Решение этой задачи, используемое в том числе в TCP, состоит в добавлении в пакет данных нового поля, содержащего порядковый номер пакета.


Надежная передача данных по ненадежному каналу, допускающему искажение и потерю пакетов

Одновременно с искажениями, к сожалению, в сети присутствует потеря пакетов.
И для решения этой задачи требуются механизмы:

  • определения факта потери пакетов;
  • повторной доставки потерянных пакетов принимающей стороне.

Дополнительно, кроме потери пакета, необходимо предусмотреть возможность потери квитанции или, если ничего не потеряно, ее доставки со значительной задержкой. Во всех случаях производится одно и то же: повторная передача пакета. Для контролирования времени в данном механизме используется таймер отсчета, который позволяет определить окончание интервала ожидания. Так в пакете net параметр TCPKeepAlive установлен на 15 секунд по умолчанию:

Передающей стороне необходимо запускать таймер каждый раз при передаче пакета (как при первой, так и при повторной), обрабатывать прерывания от таймера и останавливать его.

Итак, мы ознакомились с ключевыми понятиями протоколов надежной передачи данных:

  • контрольными суммами;
  • порядковыми номерами пакетов;
  • таймерами;
  • положительными и отрицательными квитанциями.

Но и это не все!

Протокол надежной передачи данных с конвейеризацией

В том варианте, который мы уже рассмотрели, протокол надежной доставки очень неэфективен. Он начинает «тормозить» передачу, обеспечиваемую каналом связи, при увеличении RTT . Для повышения его эффективности, лучшей утилизации пропускной способности канала связи применяют конвейеризацию.


Применение конвейеризации приводит к:

  • увеличению диапазона порядковых номеров, поскольку все отсылаемые пакеты (за исключением повторных передач) должны быть однозначно идентифицируемы;
  • необходимости в увеличении буферов на передающей и принимающей сторонах.

Диапазон порядковых номеров и требования к размерам буферов зависят от действий, предпринимаемых протоколом в ответ на искажение, потерю и задержку пакета. В случае конвейеризации существуют два метода исправления ошибок:

  • возвращение на N пакетов назад;
  • выборочное повторение.

Возвращение на N пакетов назад — протокол скользящего окна


Отправитель должен поддерживать три типа событий:

Выборочное повторение

Когда размер окна и произведение пропускной способности на задержку распространения велики, в конвейере может находиться большое количество пакетов. В таком случае ошибка отдельного пакета может вызвать повторную передачу большого количества пакетов, большинство из которых не требовались.

Пример

Лучшие теоритические практики собраны в практической реализации TCP. А если кто-то знает, как лучше — welcome.

Читайте также: