Здравствуйте, хотелось бы сегодня рассмотреть данные протоколы, в кратко изложенном виде и понятным языком.
Давайте рассмотрим TCP протокол, немного подробнее.
Что такое TCP протокол?
Transmission Control Protocol или TCP
Механизм TCP предоставляет поток данных с предварительной установкой соединения,осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым, в отличие от UDP, целостность передаваемых данных и уведомление отправителя о результатах передачи.
ЗАБАВНЫЙ ФАКТ:
Протокол TCP имеет потенциальную уязвимость, обусловленную тем, что нарушитель, устанавливая фальшивые IP-адреса отправителя, может послать серверу множество пакетов SYN. При получении пакета SYN сервер выделяет часть своих ресурсов для установления нового соединения. Обработка множества пакетов SYN рано или поздно затребует все ресурсы сервера и сделает невозможной обработку новых запросов. Такой вид атак называется «SYN-флуд» (SYN flood).
Теперь мы рассмотрим UDP протокол.
Что такое UDP протокол?
UDP использует простую модель передачи, для обеспечения надёжности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадёжный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении. Чувствительные ко времени приложения часто используют UDP, так как предпочтительнее сбросить пакеты, чем ждать задержавшиеся пакеты, что может оказаться невозможным в системах реального времени. При необходимости исправления ошибок на сетевом уровне интерфейса приложение может задействовать TCP или SCTP, разработанные для этой цели.
Теперь, на основе данных, сделаем сравнение и вывод.
Что же мы можем выделить у TCP протокола, как основные характеристики?
TCP протокол.
Надёжность — TCP управляет подтверждением, повторной передачей и тайм-аутом сообщений, нет патери пакетов.
Упорядоченность - TCP отправляет неупорядоченные данные в буфер до тех пор, пока все данные не могут быть упорядочены и переданы приложению.
Тяжеловесность — TCP необходимо три пакета для установки сокет-соединения перед тем, как отправить данные. TCP следит за надёжностью и перегрузками.
Потоковость — данные читаются как поток байтов, не передается никаких особых обозначений для границ сообщения или сегментов.
Что же мы можем выделить у UDP протокола, как основные характеристики?
UDP протокол.
Ненадёжный - когда сообщение посылается, неизвестно, достигнет ли оно своего назначения — оно может потеряться по пути. Нет таких понятий, как подтверждение, повторная передача, тайм-аут.
Неупорядоченность - если два сообщения отправлены одному получателю, то порядок их достижения цели не может быть предугадан.
Легковесность — никакого упорядочивания сообщений, никакого отслеживания соединений и т. д.
Датаграммы — пакеты посылаются по отдельности и проверяются на целостность только если они прибыли. Пакеты имеют определенные границы, которые соблюдаются после получения, то есть операция чтения на сокете-получателе выдаст сообщение таким, каким оно было изначально послано.
Нет контроля перегрузок — UDP сам по себе не избегает перегрузок. Для приложений с большой пропускной способностью возможно вызвать коллапс перегрузок, если только они не реализуют меры контроля на прикладном уровне.
В конце мы можем сделать вывод, TCP лучше UDP. UDP протокол все еще используется, на "древних" устройствах, хоть и по всем параметрам уступает TCP протоколу. НО, сегодня, мы сравнил только два протокола из множества. Мы можем выделить, еще несколько протоколов, которые могут превосходить и TCP, и UDP протоколы. Конечно, все зависит от рода деятельности и устройствах на которых это будет использоваться, то есть для каждого свой.