TCP
Материал из Cetki Wiki.
| Название: | Transmission Control Protocol |
|---|---|
| Уровень (по модели OSI): | Транспортный |
| Семейство: | TCP/IP |
| Создан в: | {{{Создан}}} г. |
| Порт/ID: | 6/IP |
| Назначение протокола: | {{{Назначение}}} |
| Спецификация: | RFC 793 / STD 7 |
| Основные реализации: | Windows, Linux |
| Основные реализации (клиенты): | {{{Клиенты}}} |
| Основные реализации (серверы): | {{{Серверы}}} |
| Расширяемость: | Опции |
| Основные расширения: | {{{Основные расширения}}} |
TCP (англ. Transmission Control Protocol — протокол управления передачей) — один из основных сетевых протоколов Internet, предназначенный для управления передачей данных в сетях и подсетях TCP/IP.
Выполняет функции протокола транспортного уровня упрощенной модели OSI. IP-идентификатор — 6.
TCP — это транспортный механизм, предоставляющий поток данных, с предварительной установкой соединения, за счёт этого дающий уверенность в безошибочности получаемых данных, осуществляет повторный запрос данных в случае потери пакетов и устраняет дублирование при получении двух копий одного пакета (см. также T/TCP). В отличие от UDP, TCP гарантирует, что приложение получит данные точно в такой же последовательности, в какой они были отправлены, и без потерь.
Содержание |
Формат TCP-сегмента
| Бит | 0 - 3 | 4 - 7 | 8 - 15 | 16 - 31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Порт источника | Порт назначения | ||||||||||||||||||||||||||||||
| 32 | Номер последовательности | |||||||||||||||||||||||||||||||
| 64 | Номер подтверждения | |||||||||||||||||||||||||||||||
| 96 | Смещение данных | Зарезервировано | Флаги | Окно | ||||||||||||||||||||||||||||
| 128 | Контрольная сумма | Указатель важности | ||||||||||||||||||||||||||||||
| 160 | Опции (необязательное) | |||||||||||||||||||||||||||||||
| 160/192+ | Данные | |||||||||||||||||||||||||||||||
Порт источника
Порт источника идентифицирует порт, с которого отправлен пакет.
Порт назначения
Порт назначения идентифицирует порт, на который отправлен пакет
Номер последовательности
Номер последовательности выполняет две задачи:
- Если установлен флаг SYN, то это начальное значение номера последовательности и первый байт данных - это номер последовательности плюс 1.
- В противном случае, если SYN не установлен, первый байт данных - номер последовательности
Номер подтверждения
Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый отправителем в следующий раз. Помечает этот пакет как подтверждение получения.
Смещение данных
Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный - 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.
Зарезервировано
4 бита зарезервировано для будущего использования и должны устанавливаться в ноль.
Флаги (управляющие биты)
Это поле содержит 8 битовых флагов:
- CWR - Поле ' из man tcpdump (8) 18 April 2005 Linux 2.6.20-15-server
- ECE - Поле ' из man tcpdump (8) 18 April 2005 Linux 2.6.20-15-server
- 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).
Контрольная сумма
Поле контрольной суммы - это 16-битное дополненение суммы всех 16-битных слов заголовка и текста. Если сегмент содержит нечетное число октетов в заголовке /или тексте, последние октеты дополняются справа 8 нулями для выравнивания по 16-битовой границе. Биты заполнения (0) не передаются в сегменте и служат только для расчета контрольной суммы. При расчете контрольной суммы значение самого поля контрольной суммы принимается равным 0.
Указатель важности
16-битовое значение положительного смещения от порядкового номера в данном сегменте. Это поле указывает порядковый номер октета, с которого начинаются важные (urgent) данные. Поле принимается во внимание только для пакетов с установленным флагом U.
