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