Заголовок UDP всегда имеет длину 64 бита. Поля, определённые в сегменте UDP (см. рисунок) включают следующие:
1. Порт отправителя (Source port): номер порта источника(16 бит)
2. Порт получателя (Destination port): номер порта назначения (16 бит)
3. Длина сообщения (Length): длина заголовка UDP и данных UDP (16 бит)
4. Контрольная сумма (Checksum): вычисленная контрольная сумма полей заголовка и данных (16 бит)
5. Данные (Data): данные протокола вышележащего уровня (upper-layer protocol — ULP) (переменная длина)
Примеры протоколов, которые используют UDP: TFTP, SNMP, Network File System (NFS) и Domain Name System (DNS).

Заголовок TCP содержит информацию, которая определена TCP протоколом. В данном разделе описаны компоненты заголовка TCP.

Сегменты TCP передаются с помощью использования пакетов IP. Заголовок TCP следует за заголовком IP,. Это разделение допускает существование других протоколов на уровне хоста, отличных от TCP. Поля TCP заголовка включают следующие:

Порт отправителя (Source port): номер порта источника (16 бит)

Порт получателя (Destination port): номер порта назначения (16 бит)

Порядковый номер (Sequence number): порядковый номер первого октета данных
сегмента, используемый для гарантии правильного упорядочения приходящих данных
(32 бита)

Номер подтверждения (Acknowledgment number): следующий ожидаемый октет
TCP (32 бита)

Длина заголовка (Header length): количество 32-битных слов в заголовке (4 бита)

Зарезервировано (Reserved): установлено в 0 (3 бита)

Управляющие биты (Control bits): функции управления — такие как установка,
перегрузка и разрыв сеанса (9 бит). Одиночный бит, который имеет специальное
значение, часто рассматриваемое как флаг.

Окно (Window): число октетов, которое устройство согласно принять (16 бит)

Контрольная сумма (Checksum): вычисленная контрольная сумма полей заголовка и
данных (16 бит)

Указатель срочности данных (Urgent): показывает конец срочных данных (16 бит)

Опции (Options): в настоящее время определена одна опция — максимальный размер
сегмента TCP (0 или 32 бита)

Данные (Data): данные протокола вышележащего уровня (upper-layer protocol — ULP)
(переменная длина)

Многим знакома аббревиатура TCP, гораздо меньшее количество людей знает, что это протокол передачи данных. Но практически никто не знает, как он устроен.

Внимание! Этот материал рассчитан на тех, кого действительно интересуется вопросом: «Как устроена сеть, и что я могу сделать, если буду это знать». Если же тебя еще смущают слова вроде DNS, Telnet, Socket — то можешь сразу забить на этот материал — такие «страшные» слова тут конечно не встретятся, но от этого содержание понятней не станет…

Для тех кто остался:

Наверное, многие из вас слышали такие слова как SYN-flooding или IP-spoofing. Все это разновидности атак — первая D.O.S., вторая
состоит в подмене IP-адреса. На первый взгляд между этими примерами нет ничего общего, но между тем, это не так — обе эти атаки не возможны без глубокого знания протокола TCP, протокола на котором стоит
Inet.

Спецификация протокола TCP описана в RFC793 . Рекомендую тебе ознакомится с этим документом, потому как хоть я и постараюсь повести до тебя самое важное, снабдив это важное соответствующими комментариями, которых ты не найдешь в мануале, но все же из-за малого объема и практического угла зрения, могу и упустить некоторые тонкости.

Данные, передаются в виде пакетов. Такая организация передачи означает, что данные, какого размера они ни были, разбиваются на отдельные фрагменты, которые формируются в пакеты (формирование пакетов предполагает, что к данным прибавляется служебный заголовок), после чего в виде пакетов данные передаются по сети (причем порядок передачи пактов может нарушаться). Принимающая система «собирает» из пакетов исходный массив данных на основании заголовков пакетов. Это не очень понятно, но только до тех пор, пока не рассмотрим структуру пакетов.

Структура TCP-пакета:

Поясню только самые важные места:

Адрес получателя, порт получателя и адрес отправителя, порт отправителя — это надеюсь понятно.

Sequence Number(SYN) — номер очереди или последовательный номер, показывает порядковый номер пакета при передаче, именно поэтому принимающая система собирает пакеты именно так, как надо, а не в том порядке, как они пришли.

Acknowledgment Number(ACK) — номер подтверждения, показывает, на пакет с каким SYN отвечает удаленная система, таким образом мы имеем представление, что удаленная система получила наш пакет с данным
SYN.

Контрольные биты- 6 бит (на схеме между reversed и window). Значения битов:

URG: поле срочного указателя задействовано
ACK: поле подтверждения задействовано
PSH: функция проталкивания
RST: перезагрузка данного соединения
SYN: синхронизация номеров очереди
FIN: нет больше данных для передачи

DATA — это непосредственно те данные, которые мы хотим передать.

Думаю, для начала это все, что нужно, чтобы понять принцип работы протокола. Более подробно о значении остальных полей ты можешь прочитать в в RFC793. Ну а мы лучше разберем как же все-таки это работает на практике.

Когда мы хотим установить соединение, мы отправляем удаленной системе пакет следующей структуры:

Client — SYN (856779) — Host

Где Client- это мы, a Host — это удаленная система. Как ты видишь, мы посылаем пакет лишь с указанием SYN — это значит, что этот пакет первый, мы ни на что не отвечаем (отсутствует ACK). Данный пакет выглядит примерно так:

20 53 52 43 00 00 44 45 53 54 00 00 08 00 45 00 00 2C C3 00 40 00 20 06 10 0C CB 5E FD BA CB 5E F3 47 04 07 00 17 00 0D 12 CB 00 00 00 00 60 02 20 00 D9 70 00 00 02 04 05 B4 2D

Интересный момент в том, откуда берется SYN. SYN образуется от первоначального номера очереди
(ISN) — это 32-битный номер от 1 до 4294967295 (2 в 32-ой степени). ISN при перезагрузке системы равен 1, затем каждую секунду он увеличивается на 128000 (строго говоря изменение происходит каждые 4 микросекунды) + при каждом установленном соединении он увеличивается на 64000. Получается, что цикл уникальности ISN, при условии того, что никакие соединения не устанавливались, составляет примерно 4,55 часа. Поскольку ни один пакет так долго по сети не путешествует, мы можем полагать, что SYN будет абсолютно уникальным.

Получив наш пакет, удаленная система отвечает, что получила и готова установить соединение. Данные пакет выглядит так:

Host — SYN (758684758) и ACK (856780) — Client

Как видишь, удаленная система дает понять, что получила наш пакет. Для этого она посылает нам ACK с номером «наш SYN+1». В добавок к этому удаленная система посылает нам свой SYN (мы же тоже будем отвечать). А ответ наш будет такой:

Client — SYN (856780) и ACK (758684759) — Host

Думаю тебе уже должно быть все понятно. Если кто не понял, то пакет означает следующее: ваш пакет с SYN (758684758) получен, соединение установлено, наш SYN равен 856780.

Эту процедуру называют «трехкратным подтверждением» или «трехкратным рукопожатием». Первые два этапа необходимы для синхронизации SYN наших систем, а третий — подтверждение того, что синхронизация произошла.

Далее у нас идет обмен данными, т.е. то, для чего соединение и устанавливалось. Причем надо заметить, что на всех стадиях обеспечение сохранности данных, передаваемых с использованием протокола TCP, осуществляется следующим образом: посланный пакет помещается в буфер и если за определенное время от удаленной системы не приходит пакет с подтверждением (ACK), то пакет посылается снова; если же подтверждение пришло, то пакет считается посланным успешно и удаляется из буфера.

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

Client — FIN(4894376) и ACK (1896955378) — Host

Host — ACK (4894377) — Client

Host — FIN (1896955378) и ACK (4894377) — Client

Client — ACK (1896955378) — Host

Думаю, ничего сложного здесь нет. Единственное, что стоит отметить — это флаг FIN, который означает желание завершить соединение.

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

Передача одного FIN Пакета = +1
Передача одного SYN Пакета = +1
Передача одного ACK Пакета = 0
Передача одного SYN/ACK Пакета = +1
Передача одного FIN/ACK Пакета = +1
Изменение за 1 секунду = +128,000
Установление одного соединения = +64,000

Возможно, кто-то спросит: «А что будет, если машин получит пакет с таким ACK, которого не было?» (SYN=ACK-1, а пакет с таким SYN мы не посылали). Получив ответ непонятно на что, мы в свою очередь ответим удаленной системе NACK-пакетом (означает «не знаю о чем ты», никакого соединения не устанавливается), но, надеюсь, более подробно мы поговорим с тобой об этом в следующий раз.

Протокол TCP/IP впервые был создан в начале 1970-х годов и использовался для создания сети ARPANET. Технология разрабатывалась в рамках исследовательского проекта, который был нацелен на изучение потенциальной возможности объединения компьютеров в рамках одной локальной или виртуальной сети internetwork.

Установка соединения в TCP осуществляется при помощи специальной программы-клиента, например браузера, почтовой программы или клиента для обмена сообщениями.

Структура TCP

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

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

Отправка данных по TCP

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

На физическом уровне передачи данных информация имеет вид частот, амплитуд и других форм сигнала, которые уже обрабатываются сетевой картой адресата.

За обработку информации компьютером и ее передачу другим составляющим отвечают канальные протоколы, среди которых можно упомянуть Ethernet, ATM, SLIP, IEEE 802.11. Данные каналы обеспечивают не только передачу данных, но и форму доставки адресату. Так, в сетях IEEE 802.11 передача информации осуществляется при помощи беспроводного радиосигнала. При этом сигнал подается с сетевой карты компьютера, также имеющей собственный код MAC. В случае с Ethernet вся передача данных осуществляется при помощи кабельного соединения.

Видео по теме

В современных условиях деятельность общества и цивилизации невозможна без применения средств быстрого обмена информацией. Данную проблему призваны решать глобальные компьютерные сети.

Глобальная сеть (ГКС) - это сеть, которая состоит из компьютеров, охватывающих огромные территории при неограниченном количестве включенных в данную сеть компьютерных систем. Главным условием функционирования подобных сетей является моментальная передача информации по сети независимо от удаленности передающего и принимающего компьютера.

Глобальная сеть отличается от локальной, во-первых, более низкими скоростями передачи данных. Работают глобальные сети через протоколы TCP/IP, MPLS, ATM и некоторые других. Наиболее известным из указанных является протокол TCP/IP, который включает в себя подпротоколы разных уровней: прикладной, транспортный, сетевой, физический и канальный.

На прикладном уровне работает большинство программ, обладающих собственными протоколами, которые широко известны обычным пользователям ПК (HTTP, WWW, FTP и т.д.). Данные протоколы обеспечивают визуализацию и отображение необходимой пользователю информации.

Транспортный протокол ответственен за доставку данных именно тому приложению, которое способно их обработать. Он носит название TCP.

Сетевой уровень является, фактически, принимающим при передаче информации и отправляющей запросы на более низкие уровни для получения всей информации. Носит название протокола IP.

Физический и канальный уровни ответственны за определение условий и методов передачи информации.

Наиболее известной глобальной сетью является WWW (World Wide Web), которая представляет из себя совокупность серверов, где хранится необходимая для пользователей информация, и компьютеров, которые могут как принимать с серверов информацию, так и загружать ее на них. WWW отличается удобством и простотой использования, а также низкими требованиями к скорости передачи данных. Это позволило развиться данной сети за период чуть больший, чем десятилетие.

Видео по теме

Принято именовать символьное обозначение, заменяющее числовую адресацию, основанную на IP-адресах, в сети интернет. Числовая адресация, применяемая при обработке таблиц маршрутов, идеально подходит для компьютерного использования, но представляет значительные трудности при запоминании пользователем. На помощь приходят мнемонически осмысленные доменные имена.

Установка соединений в сети интернет происходит по числовым группам в 4 значения, разделенных символом «.» и именуемым IP-адресами. Символьные имена комплекса доменных имен представляют собой службу, призванную облегчить нахождение необходимого IP-адреса в сети.Техническим показателем доменного имени выступает символ «.» в электронном адресе пользователя. Так, в адресе google.com доменным именем будет com.Само доменное имя не способно предоставить доступ к требуемому интернет-ресурсу. Процедура использования мнемонического имени состоит из двух этапов:- IP-адреса по имени в файле hosts, содержащем таблицы соответствия IP-адреса и имени компьютера;- установка соединения с удаленным веб-ресурсом по определенному IP-адресу.Главной задачей сервиса DNS является получение IP-адреса для установки соединения, что делает эту службу вспомогательной по отношению к протоколу TCP/IP.Символ "." является разделителем составляющих доменного имени, хотя для практических целей обычно принимается в качестве обозначения корневого домена, не имеющего собственного обозначения. Корень - все множество хостов интернета - подразделяется на:- первого уровня - gov, edu, com,net;- национальные домены - uk, jp, ch и т.д.;- региональные домены - msk;- корпоративные домены - домены организаций.Сохранение привычной древовидной структуры доменных имен обусловило использование устоявшейся терминологии - корень, узлы дерева, лист. Термин «хост» в данной иерархии присвоен листу, не имеющему под собой ни одного узла. Полным именем хоста становится последовательное перечисление всех промежуточных узлов между корнем и листом, разделяемых символом "." слева направо:ivan.net.abcd.ru, где ru - корень дерева, abcd - название организации, ivan - лист дерева (хост).

Видео по теме

Источники:

  • Система доменных имен Internet в 2018
байт и обычно представляются 32-битными секциями (4 байта) с адресами, опциями и другими настройками сеансов.


Рис. 6.1.

Рассмотрим сначала IP -часть, так как это нижний уровень сетевой модели . Заголовок протокола IP содержит адреса получателя и отправителя пакета. Так как каждый адрес занимает 32 бита (4 октета по 8 бит каждый), то исходный и целевой IP -адреса вместе составляют 8 байт . В первой части заголовка помещаются различные переключатели и опции пакета. Первая строка содержит несколько бит , которые идентифицируют версию IP . Большинство сетей используют IP версии 4 ( IPv4 ), но более новая 128-битная система IP , называемая IP версии 6 ( IPv6 ), существует уже несколько лет и постепенно получает признание. Предполагается, что IPv6 разрешит проблемы адресного пространства IP , выделяя до 128 бит для адресной части, что должно удовлетворить любые мыслимые потребности. IPv6 решает также проблемы безопасности и верификации , имеющиеся в IPv4 . Но в настоящее время вы в подавляющем большинстве случаев будете видеть пакеты IPv4 . Затем следуют значения длины заголовка и типа сервиса (последний служит для дифференциации при определении приоритетов пакетов). Заключительный фрагмент этой строки представляет общую длину заголовка, которая обычно одинакова для всех пакетов (20 байт ), но может меняться для новых протоколов, таких как IPv6 .

В двух следующих строках располагаются идентификатор пакета и контрольная сумма , помогающая проверять его корректность . Наконец, имеются IP -адреса отправителя и получателя и поле опций, которое может иметь переменную длину или дополняться нулями и произвольными данными.

Заголовок TCP отвечает за создание сеанса TCP и функции более высокого уровня. Обычно он имеет длину 20 байт и начинается с номеров исходного и целевого портов по 16 бит каждый. Именно поэтому номера портов не могут быть больше 65535 (2 16 равно 65536). (Интересно, что выбор всех этих чисел, вроде бы абсолютно произвольный, всегда на чем-то основан.)

Номера портов , как упоминалось ранее, определяют программу, которой необходимо направлять пакеты на удаленной машине, и идентифицируют сеанс на локальной машине. Следующая строка содержит порядковый номер. Он используется для сборки пакетов в правильном порядке на удаленном конце, даже если они приходят в другом порядке. Это один из аспектов отказоустойчивости сеансов TCP . Кроме того, имеется номер подтверждения, также длиной 32 бита, который позволяет проверить, что пакет идет с правильной машины. Следующая строка содержит 4-битную секцию, называемую смещением данных, которая определяет, сколько 32-битных строк или "слов" имеется в заголовке (обычно 4); за ней располагаются 6 бит , зарезервированных для будущих применений. Затем следует 6-битная секция, называемая флагами TCP . Вторая половина этой строки служит для согласования размера окна и говорит получателю, сколько бит готов принять отправитель. Флаги TCP весьма важны, здесь задаются различные управляющие биты, контролирующие обработку пакетов. Каждый тип коммуникаций TCP задается одним битом, единица соответствует включению, ноль - отключению. В табл. 6.1 перечислены шесть полей раздела флагов TCP и описано их применение. Примечание: Каждое " поле " имеет ширину один бит (просто - единица или ноль, включено или выключено).

Таблица 6.1. Поля флагов TCP
Флаг TCP Полное имя Описание
URG Указатель срочности Показывает приоритет TCP-пакетов
ACK Подтверждение Помечает этот пакет как подтверждение получения
PSH Выталкивание Выталкивает поставленные в очередь данные из буферов
RST Сброс Сбрасывает соединение TCP по завершении или после разрыва
SYN Синхронизация Синхронизирует соединение
FIN Завершение Завершает передачу

Обычно только один или два из этих флагов установлены (биты заданы как единица ), но, как мы видели в "Сканеры портов" , ничто не мешает отправить пакет со всеми битами взведенными (сканирование XMAS) или выключенными (сканирование NULL ), чтобы попытаться запутать удаленную систему.

Следом располагается контрольная сумма TCP и указатель срочности. Затем идет строка со всеми TCP -опциями пакета, такими как дополнительные контрольные суммы, метки времени и т.д. Эта строка дополняется до 32 бит нулями, если опции не заполняют ее целиком. Наконец, следует полезная нагрузка - данные пакета. Может показаться, что на отправку одного пакета уходит слишком много накладных административных расходов (примерно 48 байт для каждого пакета), но это на самом деле обеспечивает относительно устойчивое соединение в сети, которая не всегда обладает сквозной надежностью (как Интернет ). В действительности, чтобы избежать дополнительных расходов TCP , некоторые протоколы, не требующие соединения, используют UDP - протокол без установления соединений с меньшими накладными расходами.

В стандартном сеансе Tcpdump с обычным уровнем подробности вывода вы увидите метку времени, за которой следует порядковый номер TCP . Затем выдаются IP -части, включая исходный и целевой адреса, разделенные знаком > (больше), означающим, что пакет идет отсюда туда. В конце располагается информационное поле , которое показывает, что делает пакет. Можно использовать опции -v или -vv , чтобы получить от Tcpdump более подробные данные о заголовке (см. следующий раздел).

Обычно вы будете запускать Tcpdump с некоторыми установленными опциями или фильтрами, чтобы уменьшить и сфокусировать вывод . Общий вид инструкции запуска Tcpdump таков:

Tcpdump опции выражения

Замените опции и выражения одной или несколькими допустимыми переменными. Опции Tcpdump перечислены в табл. 6.2 .

Таблица 6.2. Опции Tcpdump
Опция Описание
-a Пытается преобразовать адреса в имена. Это создает дополнительную нагрузку на систему и может привести к потере пакетов
-c число Останавливает Tcpdump после обработки заданного числа пакетов
-C размер_файла Ограничивает размер выходных файлов заданным числом байт
-d Выдает процедуру сопоставления пакетов с образцом в удобочитаемом виде и затем останавливается
-dd Выдает процедуру сопоставления пакетов с образцом в виде фрагмента программы на языке Си
- ddd Выдает процедуру сопоставления пакетов с образцом в виде десятичных чисел
-e В каждой строке выдачи печатает заголовок канального уровня (в сетях Ethernet это MAC-адрес )
-E алгоритм:секрет Использует встроенную в Tcpdump возможность расшифровывать на лету пакеты, зашифрованные по протоколу IPsec ESP . Разумеется, чтобы использовать эту опцию, вы должны располагать разделяемым секретным ключом. В число возможных значений параметра "алгоритм" входят des - cbc , 3des - cdc , blowfish - сетевых интерфейсов
-n Не преобразовывает адреса в имена
-N Не печатает в именах хостов имя домена вышележащего уровня. Это полезно, если вам необходимо представить обезличенную версию вывода и вы не хотите раскрывать, чья это сеть
-p Не переводит интерфейс в режим прослушивания. Используется только при исследовании трафика, направленного в анализирующий компьютер
-q Печатает быстрый вывод. Печатается меньше протокольной информации, поэтому строки оказываются короче
-T тип Заставляет интерпретировать пакеты, выбранные заданным в выражении фильтром, в соответствии с указанным типом
-t Не печатает метку времени в каждой строке
-tt Печатает неформатированную метку времени в каждой строке
-ttt Печатает интервал времени между пакетами
-tttt Печатает в каждой строке дату, а затем метку времени в подразумеваемом формате
-v Использует чуть более подробный вывод, включающий время жизни, идентификатор, общую длину и поля опций каждого пакета
-vv Предоставляет более детальный вывод. Пакеты NFS и SMB полностью декодируются
-vvv Предоставляет еще более подробный вывод. Это может существенно замедлить работу анализатора
-w имя_файла Записывает пакеты в указанный файл вместо вывода их на экран. Таким образом результаты "вынюхивания" без участия человека можно сохранить и проанализировать их позже. Например, если в вашей сети происходят какие-то странные вещи, вы можете запустить Tcpdump на ночь, чтобы перехватить весь необычный трафик. Не забудьте написать хороший фильтр, иначе полученный наутро файл может оказаться слишком большим
-x Выводит каждый пакет (без заголовка канального уровня) в шестнадцатеричном виде.
-X Выводит содержимое пакетов и в шестнадцатеричном, и в текстовом видах

Transmission Control Protocol (TCP) (протокол управления передачей) - один из основных сетевых протоколов Интернета, предназначенный для управления передачей данных в сетях и подсетях TCP/IP.

1) Вспомним о модели OSI


место TCP в модели OSI - это занимаемые 4 и 5-ый уровень:

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


Реализация TCP, как правило, встроена в ядро ОС, хотя есть и реализации TCP в контексте приложения.

Когда осуществляется передача от компьютера к компьютеру через Интернет, TCP работает на верхнем уровне между двумя конечными системами, например, браузером и веб-сервером. Также TCP осуществляет надежную передачу потока байтов от одной программы на некотором компьютере к другой программе на другом компьютере. Программы для электронной почты и обмена файлами используют TCP.
TCP контролирует =

  1. длину сообщения
  2. скорость обмена сообщениями
  3. сетевой трафик.

Структура TCP заголовка:


или можно изучить эту гламурную картинку:

флаги:

Номер последовательности

Номер последовательности выполняет две задачи:

Если установлен флаг SYN, то это начальное значение номера последовательности - ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности, равный ISN + 1.
В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.

Поскольку поток TCP в общем случае может быть длиннее, чем число различных состояний этого поля, то все операции с номером последовательности должны выполняться по модулю 2^32. Это накладывает практическое ограничение на использование TCP. Если скорость передачи коммуникационной системы такова, чтобы в течение MSL (максимального времени жизни сегмента) произошло переполнение номера последовательности, то в сети может появиться два сегмента с одинаковым номером, относящихся к разным частям потока, и приёмник получит некорректные данные.
Номер подтверждения

Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
Смещение данных

Это поле определяет размер заголовка пакета TCP в 4-байтных (4-октетных) словах. Минимальный размер составляет 5 слов, а максимальный - 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.
Зарезервировано

Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль. Из них два (5-й и 6-й) уже определены:

CWR (Congestion Window Reduced) - Поле «Окно перегрузки уменьшено» - флаг установлен отправителем, чтоб указать, что получен пакет с установленным флагом ECE (RFC 3168)
ECE (ECN-Echo) - Поле «Эхо ECN» - указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)

Флаги (управляющие биты)

Это поле содержит 6 битовых флагов:

URG - Поле «Указатель важности» задействовано (англ. Urgent pointer field is significant)
ACK - Поле «Номер подтверждения» задействовано (англ. Acknowledgement field is significant)
PSH - (англ. Push function) инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя
RST - Оборвать соединения, сбросить буфер (очистка буфера) (англ. Reset the connection)
SYN - Синхронизация номеров последовательности (англ. Synchronize sequence numbers)
FIN (англ. final, бит) - флаг, будучи установлен, указывает на завершение соединения (англ. FIN bit used for connection termination).

В этом поле содержится число, определяющее в байтах размер данных, которые отправитель готов принять.

Механизм действия протокола

Механизм действия протокола

В отличие от традиционной альтернативы - UDP, который может сразу же начать передачу пакетов, TCP устанавливает соединения, которые должны быть созданы перед передачей данных. TCP соединение можно разделить на 3 стадии:

  1. Установка соединения
  2. Передача данных
  3. Завершение соединения

В связи с чем можно говорить о состояниях TCP сеанса:

Состояния TCP сеанса: