Модель TCP/IP: что это такое и как она работает
Рассказываем о главной «курьерской службе» интернета: как данные летают по Сети, зачем их фасуют по пакетам и кто за всем этим следит.
Фото: Britta Pedersen / Getty Images
Вы когда-нибудь задумывались, как мемы, сериалы и гифки с котиками перелетают континенты, чтобы оказаться у вас на компьютере? Отвечаем: для этого в интернете есть протоколы TCP и IP — они помогают устройствам безошибочно передавать данные на большие расстояния. Как у них это получается — рассказываем в статье.
Ранее мы уже писали о нюансах внутренней кухни интернета — разбирали, как устроены протокол HTTP, служба DNS и сетевая модель OSI. Сегодня смотрим на ситуацию немного под другим углом.
Что такое TCP/IP
Модель TCP/IP — это стек протоколов, которые задают правила передачи данных по Сети. Так как бал здесь правят протоколы TCP и IP, в честь них и назвали всю модель.
TCP (Transmission Control Protocol) отвечает за обмен данными. Он управляет их отправкой и следит за тем, чтобы они дошли до получателя в целости. У TCP есть свои гарантии, что всё пройдёт успешно, — о них чуть позже.
IP (Internet Protocol) отвечает за адресацию. Его задача — связывать друг с другом устройства и нарезать данные на пакеты для удобной отправки. Чтобы протокол мог быстро найти дорогу от одного компьютера к другому, придумали IP-адреса — уникальные идентификаторы, которые есть у каждого устройства в Сети.
Эти два протокола работают в связке: IP строит маршрут, а TCP контролирует, чтобы всё передавалось правильно. Условно их можно сравнить с тандемом Шерлока и Ватсона в бессмертной классике Дойля: первый решает проблему, а второй следит, чтобы тот не наделал глупостей и случайно не упал в Рейхенбахский водопад.
Минутка истории. Оба протокола, и TCP, и IP, на самом деле стары как мир. Их придумала ещё в семидесятых группа разработчиков под началом «отца интернета» Винта Сёрфа. То есть все наши смартфоны и умные часы общаются по правилам, которые заложили ещё во времена расцвета диско и космической миссии «Союз — Аполлон».
Но протоколами TCP и IP модель не ограничивается — например, есть ещё HTTP, FTP, UDP и сотни других. Все они заточены под определённые задачи. Так, HTTP помогает браузеру формировать запросы к серверу, FTP — скачивать файлы, а UDP — быстро передавать видео, музыку и игры, но с возможными потерями по пути.
Как работает TCP/IP
Настало время посмотреть, как модель TCP/IP работает в жизни. Допустим, вы заходите в интернет, чтобы почитать статью о том, как нейросети рисуют котиков. Запускаете браузер, открываете сайт Skillbox Media, нажимаете на заголовок статьи. А дальше начинается магия.
Как только вы кликнули на ссылку, браузер отправляет запрос на сервер, где лежит страница. Для этого он создаёт HTTP-запрос, в котором описывает всё, что сервер должен ему передать: «Я слышал, у тебя есть статья про генеративные нейронки. Дай, пожалуйста». Сервер отвечает: «Нет проблем» — и отправляет браузеру HTTP-ответ с нужными данными. И так они будут общаться до тех пор, пока вы не закроете сайт.
Читайте также:
Но сами по себе HTTP-запросы — это просто текстовые сообщения: они не знают, как найти сервер с нужной информацией, а тем более — как её оттуда достать. Для этих задач нам как раз и понадобятся протоколы TCP и IP.
Сначала IP определяет расположение сервера — или, точнее сказать, его IP-адрес. Чтобы найти нужный «айпишник», протокол использует систему DNS. Это такая глобальная база данных, где доменные имена сайтов лежат напротив их IP-адресов — например, сайту skillbox.ru соответствует IP-адрес 178.248.237.96.
Когда IP найдёт сервер и получит от него нужную страницу, он начнёт разбивать её на пакеты. Каждый пакет — это часть файла размером от 1 до 64 КБ. Внутри находятся сами данные и служебная информация: номер пакета, адреса отправителя и получателя и другое.
Зачем нужны пакеты. Представьте, что вам нужно перенести сразу много блюд из кухни в гостиную. Конечно, можно загрузить тарелки в обе руки, а часть поставить на голову, как делают женщины кенийского племени Луо, но, если вдруг в коридоре на вас нападёт кошка или младший брат с игрушечным пистолетом, есть риск всё выронить и испортить ужин. Гораздо безопаснее переносить блюда по одному, а ещё лучше — раздать по тарелке каждому члену семьи.
С данными точно так же: лучше передавать их маленькими порциями, так как никогда не знаешь, где по пути случится проблема. Если что-то пойдёт не так, вы потеряете всего один пакет, а не весь файл целиком.
Чтобы пакеты без потерь долетали от сервера к пользователю, подключается протокол TCP. Для этого в него зашили механизм подтверждения: когда сервер отправляет пакет, TCP спрашивает у устройства пользователя, нормально ли он добрался. Если ответ «да», протокол отправляет следующую порцию, если «нет» — пробует ещё раз.
После того как все пакеты получены, браузер собирает из них цельную страницу и выводит на экран.
Повторим ещё раз весь процесс:
- Вы нажимаете на ссылку или вводите адрес сайта в строке браузера.
- Браузер создаёт HTTP-запрос к серверу, чтобы тот отправил вам нужную страницу.
- Протокол IP с помощью системы DNS находит сервер, где лежит страница, и разбивает её на пакеты.
- Далее в игру вступает TCP — он устанавливает надёжное соединение между компьютером и сервером и следит, чтобы пакеты не потерялись по дороге.
- Браузер склеивает пакеты воедино и рендерит страницу.
Этот алгоритм справедлив для статичных файлов — то есть таких, которые вы загружаете один раз и пользуетесь. Но если вы, например, хотите посмотреть видео, понадобится другой протокол — UDP. Он не гарантирует целостности данных и может потерять пакеты по пути, но это компенсируется скоростью передачи. Именно поэтому, например, вы видите пиксельные изображения, когда смотрите видео при плохом интернет-соединении.
Из каких уровней состоит TCP/IP
Пора окунуться в детали и узнать, как модель TCP/IP устроена изнутри. Глобально она делится на четыре уровня:
- канальный уровень — отвечает за взаимодействие по сетевому оборудованию, например по Ethernet-кабелю или Wi-Fi;
- межсетевой уровень — помогает отдельным сетям общаться друг с другом;
- транспортный уровень — отвечает за передачу данных между устройствами, например, по протоколам TCP и UDP;
- прикладной уровень — помогает приложениям общаться друг с другом с помощью интерфейсов или API.
На каждом уровне есть свои протоколы, которые обеспечивают надёжность передачи данных между компьютерами в Сети. Всего модель TCP/IP поддерживает сотни разных протоколов.
Канальный уровень
Для чего нужен: устанавливать физическое соединение между устройствами в локальной сети с помощью радиоволн и проводов.
Примеры протоколов: Ethernet, Wi-Fi, Bluetooth.
Как работает: данные делятся на небольшие кусочки (фреймы) и передаются между устройствами. Каждый фрейм содержит часть передаваемой информации и служебные данные.
Чтобы понять, куда отправлять фреймы, используют адресацию канального уровня — MAC-адреса. Это уникальные физические адреса устройств — по ним протоколы канального уровня определяют отправителей и получателей.
Ещё одна важная задача канального уровня — проверять, что данные передаются безошибочно. Для этого протоколы используют свои средства проверки:
- Если возникла ошибка, устройство отправляет фрейм обратно, а второе устройство передаёт его ещё раз.
- Если всё прошло удачно, то фрейм передаётся на следующий уровень для обработки.
Межсетевой уровень
Для чего нужен: строить маршруты между устройствами по всему интернету — этот процесс называется маршрутизацией.
Примеры протоколов: IP, ICMP, ARP.
Как работает: IP-протокол вычисляет местонахождение устройств по их IP-адресам, а также строит до них кратчайшие пути и делит данные на пакеты (или, как говорят на юге России, — кульки :)).
Чтобы определить, где находится получатель и как построить путь к нему, IP обращается к системе DNS — она знает IP-адреса всех устройств в интернете.
Когда адрес получен, передаваемый файл разбивается на небольшие части — пакеты. Они содержат фрагменты данных и служебную информацию, например IP-адреса отправителя и получателя.
После этого начинается передача пакетов по маршрутизаторам и коммутаторам. Но процессом отправки занимается уже следующий уровень — транспортный.
Транспортный уровень
Для чего нужен: передавать данные по маршруту, построенному на предыдущем уровне.
Как работает: устанавливает надёжное соединение между устройствами, а затем следит за передачей данных по нему и исправляет ошибки.
Главных протокола здесь два:
- TCP (Transmission Control Protocol) — гарантирует передачу всех данных без потерь. Полезен при отправке текстовых файлов.
- UDP (User Datagram Protocol) — не гарантирует передачу данных без потерь, но обеспечивает хорошую скорость. Полезен при просмотре видео или прослушивании музыки в интернете.
И у нас остаётся последний уровень — прикладной.
Прикладной уровень
Для чего нужен: настраивать связи между приложениями — например, между браузером и серверным софтом.
Примеры протоколов: HTTP, FTP, SMTP.
Как работает: использует различные протоколы и сервисы, которые помогают приложениям обмениваться данными по интернету.
На прикладном уровне хранятся протоколы для всего, что нужно человеку: отправки имейлов, веб-браузинга, передачи файлов и удалённого доступа. Вот некоторые из них:
- HTTP (Hypertext Transfer Protocol) — самый популярный протокол для передачи данных по интернету.
- FTP (File Transfer Protocol) — ещё один известный протокол, заточенный под передачу файлов.
- SMTP (Simple Mail Transfer Protocol) — протокол для отправки электронных писем.
Этот уровень нужен, чтобы упростить пользователям передачу данных по интернету. Именно с его помощью программисты и обычные пользователи взаимодействуют с моделью TCP/IP.
Что запомнить
Модель TCP/IP — это набор правил, по которым данные перемещаются по интернету. Главными здесь являются два протокола: TCP и IP. Они нужны, чтобы устанавливать надёжный канал связи между устройствами и передавать по нему данные.
Кроме TCP и IP в модели есть и другие протоколы — например, HTTP, Ethernet, FTP и UDP. Все они решают определённые задачи, связанные с доставкой данных от одного устройства к другому.
Модель TCP/IP очень похожа на сетевую модель OSI — подробнее о ней можно почитать в другой нашей статье.