Пояснительная бригада: разница между TCP и UDP

Поясняет Паша Вавилин, наставник на курсе по Python

Если вы читаете эти строки, значит, вы точно использовали какой-то из протоколов сетевого взаимодействия. Протокол сетевого взаимодействия — это такая договорённость, как будут выглядеть сообщения между компьютерами, как указания «Откуда», «От кого», «Куда», «Кому». Вот ровно так же и в компьютерных сообщениях: на каждом запросе и пакете данных есть эта информация. 

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

TCP-протокол по аналогии с почтой можно представить так: нам нужно отправлять три тома «Войны и мира», для этого нужно не менее 200 конвертов. Но тут свои коррективы вносит «Почта России»: какие-то из писем уедут на сортировочный пункт в Хабаровск, а какие-то из писем и вовсе могут потеряться в кипах посылок. 

Мы нумеруем наши конверты, чтобы точно знать, какие мы уже получили, а какие надо подождать или попросить отправить заново. Конверты уходят, получатель получает какую-то их часть. Потом он звонит нам: «Отправь заново конверты 12, 48 и 110, они не дошли». Мы отправляем. Получатель снова звонит: «Вот, теперь всё получил». 

А вот протокол UDP — это протокол без гарантии: конверты просто улетели. Что дошло,  то дошло. Можно представить так: мы попросили рассказать «Войну и мир» здесь и сейчас. Рассказывающий будет забывать большие куски повествования, где-то будет сокращать, но в целом суть истории мы узнаем и требовать дословного пересказа не будем.

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

Напоследок анекдот про эти протоколы: 

  • Я знаю неплохой анекдот про UDP, но не факт, что он до вас дойдёт.
  • Я знаю неплохой анекдот про TCP, но если он до вас не дойдёт, то я повторю

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