В дополнение к предыдущему посту о структуре пакета TCP рассмотрим его заголовок.
Длина заголовка составляет минимум 20 байт, но может увеличиваться при добавлении опций, и каждая его часть выполняет определенную задачу по поддержанию бесперебойного и безошибочного соединения.
Первые два поля — это 𝐒𝐨𝐮𝐫𝐜𝐞 𝐏𝐨𝐫𝐭 и 𝐃𝐞𝐬𝐭𝐢𝐧𝐚𝐭𝐢𝐨𝐧 𝐏𝐨𝐫𝐭 (Исходный и целевой порты), каждое длиной 2 байта, которые идентифицируют отправляющее и принимающее приложения — например, порт 80 для веб-трафика.
Затем идут 𝐒𝐞𝐪𝐮𝐞𝐧𝐜𝐞 𝐍𝐮𝐦𝐛𝐞𝐫 и 𝐀𝐜𝐤𝐧𝐨𝐰𝐥𝐞𝐝𝐠𝐦𝐞𝐧𝐭 𝐍𝐮𝐦𝐛𝐞𝐫, оба по 4 байта каждое.
Они помогают отслеживать порядок пакетов данных и подтверждать, что было получено, что очень важно для того, чтобы ничего не потерялось и не перемешалось.
Поле Offset, которое составляет 4 бита, сообщает нам, какова длина заголовка в 32-битных словах (умножьте на 4 для байтов), а зарезервированные биты просто предназначены для будущего использования.
Флаги TCP, такие как 𝘚𝘠𝘕 , 𝘈𝘊𝘒 , 𝘰𝘳 𝘍𝘐𝘕 — это 6 бит, которые управляют состоянием соединения, например, запуском или закрытием. Также есть 𝐖𝐢𝐧𝐝𝐨𝐰 (𝟐 байта) для управления потоком, 𝐂𝐡𝐞𝐜𝐤𝐬𝐮𝐦 (𝟐 байта) для обнаружения ошибок и 𝐔𝐫𝐠𝐞𝐧𝐭 𝐏𝐨𝐢𝐧𝐭𝐞𝐫 ( 𝟐 байта) для приоритетных данных.
Также есть несколько дополнительных полей, например TCP Options, которые могут различаться по длине. К ним относятся такие вещи, как Maximum Segment Size или Timestamps, которые помогают точно настроить соединение для лучшей производительности.
Раздел флагов на изображении содержит биты, такие как CWR и ECE для управления перегрузкой, как объяснено в 𝐑𝐅𝐂 𝟑𝟏𝟔𝟖 , и другие, такие как RST или PSH для управления состоянием соединения.
Контрольная сумма охватывает весь сегмент, чтобы убедиться в отсутствии повреждений, и даже включает части заголовка IP (называемые псевдозаголовками), чтобы все перепроверить.
Все это вместе делает протокол TCP надежным для таких вещей, как просмотр веб-страниц или передача файлов.
Post #1552
1.75K
- 👍 5
- 🔥 4
- ❤ 2
- 💩 1
- 🤡 1
- 🥴 1