Что такое TCP/IP и зачем они нужны

Что такое TCP/IP и зачем они нужны

Рассказ о протоколе, на котором работает весь интернет

В одной из предыдущих статей мы выяснили, что такое как таковой протокол в ИТ и зачем он нужен. Кратко так: 

  • Компьютеры могут общаться между собой.
  • Для этого им нужно договориться о языке общения — это и есть протокол.
  • Протоколы бывают физическими — какие вольты, амперы, радиочастоты и модуляции использовать оборудованию.
  • Протоколы бывают логическими — как понимать сигналы, закодированные в этих вольтах и модуляциях.
  • Существует целый стек протоколов — как многослойный пирог. В фундаменте там вольты и амперы, потом основы языка, потом сложные конструкции языка и на самой верхушке — как должны общаться приложения. Этот стек (или модель) называют OSI — Open Systems Interconnection Model.

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

Коротко: что такое и зачем нужны TCP/IP

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

Что такое TCP/IP

TCP/IP — общее стандартное название двух протоколов, TCP и IP. Они стоят рядом потому, что вместе эти протоколы образуют универсальный стек протоколов передачи данных.

TCP — это протокол управления передачей (Transmission Control Protocol). Его задача — управлять отправкой данных и следить за тем, чтобы они были гарантированно приняты получателем. Именно гарантия получения данных и сделала этот протокол таким востребованным. Про гарантированную доставку расскажем чуть позже.

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

Получается так: 

  • IP-протокол знает, ЧТО нужно сделать, чтобы доставить данные от одного компьютера к другому; 
  • а TCP-протокол знает, КАК это сделать и при этом убедиться, что получатель точно получил все свои пакеты.

Что такое TCP/IP и зачем они нужны
Кто за что отвечает в связке TCP/IP

Пакетная передача данных

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

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

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

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

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

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

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

Что такое TCP/IP и зачем они нужны
Тут всё прошло удачно: получатель подтвердил доставку пакетов
Что такое TCP/IP и зачем они нужны
Тут получатель не принимает пакеты. Хорошо, что отправитель это вовремя понял

Но если подтверждать получение каждого пакета, то на это будет уходить очень много времени: при скорости сети в 100 мегабит в секунду реальная скорость передачи данных будет около 50 килобит в секунду. А всё потому, что отправитель не будет передавать новые данные, пока не получит подтверждение по предыдущему пакету. В итоге почти всё время сеть будет занята не передачей данных, а подтверждениями и подтверждениями подтверждений. 

Чтобы не было таких задержек, в протоколе предусмотрели кумулятивное и выборочное подтверждение:

  • В кумулятивном получатель подтверждает приём последнего пакета и всех предыдущих.
  • В выборочном — подтверждает диапазон пакетов, которые он получил. Если какого-то пакета нет в подтверждении, отправитель посылает его заново.

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

Что такое TCP/IP и зачем они нужны
Пример кумулятивного подтверждения отправки 100 пакетов

И что с того?

Связка протоколов TCP/IP делает так, чтобы мы могли отправить данные куда-то в интернет и они точно дошли. Всё это происходит быстро, незаметно для нас, где-то в глубинах наших компьютеров и телефонов. 

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

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

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
10 главных конструкций языка R
10 главных конструкций языка R

Язык для аналитиков и дата-сайентистов

easy
Саша Селезнёва: в «Яндекс» из Саратова в 20 лет
Саша Селезнёва: в «Яндекс» из Саратова в 20 лет

О работе гуманитария в ИТ

easy
Что такое легаси в коде
Что такое легаси в коде

Однажды, Симба, всё это будет твоим

easy
Как биг-дата управляет миром: на примере магазинов

Вокруг появляется много одних и тех же магазинов — почему так происходит и как они устроены.

easy
Как устроено бесплатное обучение в «Яндекс Практикуме»
Как устроено бесплатное обучение в «Яндекс Практикуме»

На примере «Аналитика данных» и Data Science

easy
Зачем вам jQuery
Зачем вам jQuery

Каждый год говорят о том, что jQuery уже не тот, но продолжают его использовать. Почему? Вот почему.

medium
Самые странные языки программирования
Самые странные языки программирования

Как вообще можно было такое придумать?

easy
Что происходит, когда мы открываем сайт в браузере
Что происходит, когда мы открываем сайт в браузере

Пошаговый рассказ о том, что делает браузер.

medium
Как работает приложение Maps.me
Как работает приложение Maps.me

Разговор с создателем технологии

easy
Что такое UNIX и зачем он нужен
Что такое UNIX и зачем он нужен

Операционная система, которая изменила мир, хотя в ней почти никто не работал

medium
medium