Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Обмен информацией между компьютерами Введение в интернет

Представим, что нам нужно отправить письмо по почте. В этот процесс вовлечено много людей, и у каждого свои обязанности: сортировка почты, регистрация письма, его отправка и доставка. У каждого звена в этой цепи свои правила работы.

В интернете тоже есть свои правила или соглашения — протоколы. Например, для выдачи адреса используется протокол IP. Он определяет, как именно даются адреса и какой у них вид. Для работы интернета используется много разных протоколов и они образуют стек TCP/IP.

В этом уроке рассмотрим, что такое стек TCP/IP и сколько в нем уровней. Также подробнее разберем транспортный уровень, который отвечает за передачу информации в сети, и познакомимся с протоколами TCP и UDP.

Стек протоколов TCP/IP

Чтобы интернет мог работать, используется сетевая модель или стек TCP/IP — набор правил, которые описывают, как компьютеры соединяются и передают информацию друг другу. Наименование модели состоит из названий двух главных протоколов:

  • TCP — протокол, который описывает, как передается информация внутри сети

  • IP — протокол, который описывает связь компьютеров друг с другом

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

  1. Канальный уровень или Link Layer — самый низкий уровень. На этом уровне описываются протоколы, которые обеспечивают связь компьютеров в сети, обработка данных устройствами. Проводное, спутниковое, беспроводное соединения, сетевые карты и свитчи — все это относится к канальному уровню

  2. Сетевой уровень или Network Layer — протоколы для взаимодействия сетей между собой. В модели TCP/IP на этом уровне используется протокол IP

  3. Транспортный уровень или Transport Layer — протоколы для передачи информации. В интернете на этом уровне используются протоколы TCP и UDP, которые мы рассмотрим в этом уроке

  4. Прикладной уровень или Application Layer — протоколы для связи сетевых приложений. Эти протоколы позволяют открывать сайты, смотреть онлайн-фильмы. Подробнее прикладной уровень разберем в следующих уроках

Уровень Назначение Пример протокола

Прикладной

Работа приложений в сети

HTTP, HTTPS, DNS

Транспортный

Передача информации в сети

TCP, UDP

Сетевой

Адресация устройств в сети

IPv4, IPv6

Канальный

Физическое подключение устройств

Ethernet, IEEE 802.11, Wi-Fi

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

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

Для передачи информации используются протоколы UDP и TCP, которые находятся на третьем уровне модели TCP/IP — транспортном.

Транспортный уровень

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

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

Размер информации, который можно передать в пакете, зависит от разных обстоятельств, ограничений, соглашений. Например, от способа подключения, ограничений провайдера и особенностей оборудования. В среднем это значение составляет 1500-2000 байт или 1.5-1.9 килобайта. Например, если нам нужно передать музыкальную композицию весом 5120 килобайт, то понадобится пакетов.

Чтобы такое количество информации корректно передавалось, на транспортном уровне определяется:

  • Как нумеруются пакеты

  • Проверяется ли доставка пакетов

  • Проверяется ли целостность пакетов — не содержат ли отправленный и полученный пакеты различий

  • Сколько пакетов пришло и сколько еще ожидать

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

  • TCP (Transmission Control Protocol). Гарантирует доставку пакетов и контролирует ее. Информация передается только в том случае, если между компьютерами устанавливается связь и подтверждается готовность к передаче/приему

  • UDP (User Datagram Protocol). Пакеты пересылаются, но не проверяются. Информация пересылается быстрее, так как нет дополнительных проверок, но возможны потери

Рассмотрим подробнее отличия протоколов TCP и UDP.

Протокол TCP

Перед тем, как отправить пакеты по протоколу TCP, устанавливается связь между компьютерами. На языке системных администраторов такой процесс называется рукопожатием или handshake. Связь устанавливается в три этапа:

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

  2. В ответ ожидает пакет с подтверждением готовности к приему информации

  3. Компьютер отправляет запрос, что получил подтверждение

Handshake в TCP

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

Пакеты в TCP передаются с постоянным подтверждением. Каждый пакет отправляется и подтверждается по отдельности:

Обмен пакетами в TCP

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

Ожидание подтверждения

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

Чтобы не подтверждать получение каждого пакета, используется скользящее окно или Sliding Window. В этом случае подтверждается не один пакет, а сразу несколько. В остальном отличий нет — если пришло подтверждение, то посылаются следующие пакеты, если подтверждения нет, то повторяется пересылка пакетов.

TCP. Скользящее окно

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

Протокол UDP

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

От UDP требуется только отправить информацию. Будет она получена, повреждена или продублирована — не важно. Поэтому протокол используется для передачи информации, для которой не критичны потери. Например, потоковое видео и аудиосвязь.

Протокол UDP

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

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

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

Сравнение TCP и UDP

Чтобы было проще понять различия между протоколами TCP и UDP, стоит изучить таблицу:

TCP UDP

Подходит для передачи важной, требующей целостности информации

Подходит для передачи информации, устойчивой к потерям

Долгое время передачи

Быстрая передача пакетов

Гарантия передачи пакетов

Отсутствие гарантии передачи пакетов

Выводы

В этом уроке мы рассмотрели, что такое стек TCP/IP и сколько в нем уровней. Также подробно разобрали транспортный уровень, который отвечает за передачу информации в сети, и познакомились с протоколами TCP и UDP. Повторим важные мысли урока:

  • Стек TCP/IP помогает функционировать интернету и описывает, как компьютеры соединяются и передают информацию друг другу

  • Модель TCP/IP делится на 4 уровня:

    • Канальный уровень

    • Сетевой уровень

    • Транспортный уровень

    • Прикладной уровень

  • Транспортный уровень определяет правила передачи информации и контроль за ее получением

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

  • На транспортном уровне в модели TCP/IP используются два основных протокола: TCP и UDP

  • Протокол TCP подходит для передачи важной информации, но требует время

  • Протокол UDP подходит для быстрой передачи не критически важной информации, так как не гарантирует ее целостность и надежность передачи


Дополнительные материалы

  1. Руководство по стеку протоколов TCP/IP для начинающих

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 14 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 14 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 14 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 14 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 14 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 14 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 14 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»