UDP (User Datagram Protocol – протокол пользовательских датаграмм) – транспортный протокол для передачи данных в сетях IP без установления соединения. Он является одним из самых простых протоколов транспортного уровня модели OSI. Его IP-идентификатор – 0x1116 (17).
В отличие от TCP, UDP не гарантирует доставку пакета. Поэтому аббревиатуру UDP иногда расшифровывают как Unreliable Datagram Protocol (протокол ненадёжных датаграмм). Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линии связи, либо требуется малое время доставки данных.
Формат UDP-датаграммы.
Псевдозаголовок, используемый при расчете контрольной суммы.
Протокол TCP.
Transmission Control Protocol (TCP) (протокол управления передачей) – один из основных сетевых протоколов Интернета, предназначенный для управления передачей данных в сетях и подсетях TCP/IP. Выполняет функции протокола транспортного уровня модели OSI.
TCP – транспортный механизм, предоставляющий поток данных, с предварительной установкой соединения, за счёт этого дающий уверенность в достоверности получаемых данных, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета. В отличие от UDP гарантирует, что приложение получит данные точно в такой же последовательности, в какой они были отправлены, и без потерь.
Формат TCP-сегмента.
Размер окна – максимальное количество неподтвержденных пакетов.
Hlen – длина заголовка.
Флаги.
URG (Urgent pointer field is significant) – Флаг важной информации, поле Указатель важной информации имеет смысл, если urg=1.
ACK (Acknowledgement field is significant) – Номер октета, который должен прийти следующим, правилен.
PSH – Этот сегмент требует выполнения операции push. Получатель должен передать эти данные прикладной программе как можно быстрее.
RST (Reset the connection) – Прерывание связи, сброс буфера.
SYN (Synchronize sequence members) – Флаг для синхронизации номеров сегментов, используется при установлении связи.
FIN (FINbit used for connection termination) – Отправитель закончил посылку байтов = 1.
Состояние сеанса TCP.
CLOSED - Начальное состояние узла. Фактически фиктивное.
LISTEN - Сервер ожидает запросов установления соединения от клиента.
SYN-SENT - Клиент отправил запрос серверу на установление соединения и ожидает ответа.
SYN-RECEIVED - Сервер получил запрос на соединение, отправил ответный запрос и ожидает подтверждения.
ESTABLISHED - Соединение установлено, идёт передача данных.
FIN-WAIT-1 - Одна из сторон (назовём её узел-1) завершает соединение, отправив сегмент с флагом FIN.
CLOSE-WAIT - Другая сторона (узел-2) переходит в это состояние, отправив, в свою очередь сегмент ACK и продолжает одностороннюю передачу.
FIN-WAIT-2 - Узел-1 получает ACK, продолжает чтение и ждёт получения сегмента с флагом FIN.
LAST-ACK - Узел-2 заканчивает передачу и отправляет сегмент с флагом FIN.
TIME-WAIT - Узел-1 получил сегмент с флагом FIN, отправил сегмент с флагом ACK и ждёт 2*MSL секунд, перед окончательным закрытием соединения.
CLOSING - Обе стороны инициировали закрытие соединения одновременно: после отправки сегмента с флагом FIN узел-1 также получает сегмент FIN, отправляет ACK и находится в ожидании сегмента ACK (подтверждения на свой запрос о разъединении).