Transmission Control Protocol | это... Что такое Transmission Control Protocol? (original) (raw)
TCP
Название: | Transmission Control Protocol |
---|---|
Уровень (по модели OSI): | Транспортный |
Семейство: | TCP/IP |
Порт/ID: | 6/IP |
Спецификация: | RFC 793 / STD 7 |
Основные реализации: | Linux, Windows |
Расширяемость: | Опции |
Transmission Control Protocol (TCP) (протокол управления передачей) — один из основных сетевых протоколов Интернет, предназначенный для управления передачей данных в сетях и подсетях TCP/IP.
Выполняет функции протокола транспортного уровня модели OSI.
TCP — это транспортный механизм, предоставляющий поток данных, с предварительной установкой соединения, за счёт этого дающий уверенность в достоверности получаемых данных, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета (см. также T/TCP). В отличие от приложение получит данные точно в такой же последовательности, в какой они были отправлены, и без потерь.
Реализация TCP, как правило, встроена в ядро системы, хотя есть и реализации TCP в контексте приложения.
TCP часто обозначают «TCP/IP». Когда осуществляется передача от компьютера к компьютеру через Internet, TCP работает на верхнем уровне между двумя конечными системами, например, интернет-браузер и интернет-сервер. Также TCP осуществляет надежную передачу потока байт от одной программы на некотором компьютере в другую программу на другом компьютере. Программы для электронной почты и обмена файлами используют TCP. TCP контролирует длину сообщения, скорость обмена сообщениями, сетевой трафик.
Содержание
Формат TCP-сегмента
Формат TCP-сегмента
Бит | 0 — 3 | 4 — 9 | 10 — 15 | 16 — 31 |
---|---|---|---|---|
0 | Порт источника | Порт назначения | ||
32 | Номер последовательности | |||
64 | Номер подтверждения | |||
96 | Смещение данных | Зарезервировано | Флаги | Окно |
128 | Контрольная сумма | Указатель важности | ||
160 | Опции (необязательное) | |||
160/192+ | Данные |
Порт источника
Порт источника идентифицирует порт, с которого отправлены пакеты.
Порт назначения
Порт назначения идентифицирует порт, на который отправлен пакет.
Номер последовательности
Номер последовательности выполняет две задачи:
- Если установлен флаг SYN, то это начальное значение номера последовательности и первый байт данных — это номер последовательности плюс 1.
- В противном случае, если SYN не установлен, первый байт данных — номер последовательности
Поскольку TCP-поток в общем случае может быть длинее, чем число различных состояний этого поля, то все операции с номером последовательности должны выполняться по модулю 2^32. Это накладывается практическое ограничение на использование TCP. Если скорость передачи комуникационной системы такова, чтобы в течение MSL (максимального времени жизни сегмента) произошло переполнение номера последовательности, то в сети может появиться два сегмента с одинаковым номером, относящихся к разным частям потока, и приёмник получит некорректные данные .
Номер подтверждения
Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
Смещение данных
Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.
Зарезервировано
Зарезервировано (6 бит) для будущего использования и должны устанавливаться в ноль. Из них два (7-й и 8-й) уже определены:
- 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).
Контрольная сумма
Поле контрольной суммы — это 16-битное дополненение суммы всех 16-битных слов заголовка и текста. Если сегмент содержит нечетное число октетов в заголовке /или тексте, последние октеты дополняются справа 8 нулями для выравнивания по 16-битовой границе. Биты заполнения (0) не передаются в сегменте и служат только для расчета контрольной суммы. При расчете контрольной суммы значение самого поля контрольной суммы принимается равным 0.
Указатель важности
16-битовое значение положительного смещения от порядкового номера в данном сегменте. Это поле указывает порядковый номер октета которым заканчиваются важные (urgent) данные. Поле принимается во внимание только для пакетов с установленным флагом URG.
Механизм действия протокола
Состояния сеанса TCP
Состояния сеанса 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 (подтверждения на свой запрос о разъединении) |
Установка соединения
Процесс начала сеанса TCP называется «тройным рукопожатием». Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN. Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буфера и управляющие структуры памяти) для обслуживания нового клиента. В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED. В случае неудачи сервер посылает клиенту сегмент с флагом RST.
Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK, если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED. Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться.
Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.
Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED. В противном случае после таймаута он закрывает сокет и переходит в состояние CLOSED.
Процесс называется «тройным рукопожатием», поскольку возможен процесс установления соединения с использованием 4 сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), но для экономии времени используется 3 сегмента.
Передача данных
При обмене данными приемник использует номер последовательности, содержащийся в получаемых сегментах, для восстановления их исходного порядка. Приемник уведомляет передающую сторону о номере последовательности, до которой он успешно получил данные, включая его в поле «номер подтверждения». Все получаемые данные, относящиеся к промежутку подтвержденных последовательностей, игнорируются. Если полученный сегмент содержит номер последовательности больший, чем ожидаемый, то данные из сегмента буферизируется, но номер подтвержденной последовательности не изменяется. Если в последствии будет принят сегмент, относящийся к ожидаемому номеру последовательности, то порядок данных будет автоматически восстановлен исходя из номеров последовательностей в сегментах.
Для того, чтобы передающая сторона не отправляла данные интенсивнее, чем их может обработать приемник, TCP содержит средства управления потоком. Для этого используется поле «окно». В сегментах, направляемых от приемника передающей стороне в поле «окно» указывается текущий размер приемного буфера. Передающая сторона сохраняет размер окна и отправляет данных не более, чем указал приемник. Если приемник указал нулевой размер окна, то передача данных в направлении этого узла не происходит, до тех пор пока приемник не сообщит о большем размере окна.
В некоторых случаях передающее приложение может явно затребовать протолкнуть данные до некоторой последовательности принимающему приложению, не буферизируя их. Для этого используется флаг PSH. Если в полученном сегменте обнаруживается флаг PSH, то реализация TCP отдает все буферизированные на текущий момент данные принимающему приложению. «Проталкивание» используется, например, в интерактивных приложениях. В сетевых терминалах нет смысла ожидать ввода пользователя после того, как он закончил набирать команду. Поэтому последний сегмент, содержащий команду, обязан содержать флаг PSH, чтобы приложение на принимающей стороне смогло начать её выполнение.
Завершение соединения
Завершение соединения можно рассмотреть в три этапа: 1. Посылка серверу от клиента флагов FIN и ACK на завершения соединения. 2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто. 3. После получение этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.
Известные проблемы
Максимальный размер сегмента
TCP требует явного указания максимального размера сегмента (MSS) в случае, если виртуальное соединение осуществляется через сегмент сети, где максимальный размер блока (MTU
В протоколах туннелирования, таких как GRE, IPIP, а так же MTU туннеля меньше чем стандартный, поэтому сегмент TCP максимального размера имеет длину пакета больше, чем MTU. Поскольку фрагментация в подавляющем большинстве случаев запрещена, то такие пакеты отбрасываются.
Проявление этой проблемы выглядит как «зависание» соединений. При этом «зависание» может происходить в произвольные моменты времени, а именно тогда, когда отправитель использовал сегменты длинее допустимого размера.
Для решения этой проблемы на маршрутизаторах применяются правила Firewall-а, добавляющие параметр MSS во все пакеты, инициирующие соединения, чтобы отправитель использовал сегменты допустимого размера.
MSS может так же управляться параметрами операционной системы.
Обнаружение ошибок при передачи данных
Хотя протокол осуществляет проверку контрольной суммы по каждому сегменту, используемый алгоритм считается слабым [1]. Так в 2008 году не обнаруженная сетевыми средствами ошибка в передаче одного бита, привела к остановке серверов системы Amazon Web Services [2].
В общем случае распределенным сетевым приложениям рекомендуется использовать дополнительные программные средства для гарантирования целостности передаваемой информации[3].
Реализация
См. также
Ссылки
- RFC 793 — Transmission Control Protocol
- RFC 793 на русском
- Спецификация протокола TCP
Литература
- Терри Оглтри Модернизация и ремонт сетей = Upgrading and Repairing Networks. — 4-е изд. — М.: «Вильямс», 2005. — С. 1328. — ISBN 0-7897-2817-6
- Дуглас Камер Сети TCP/IP, том 1. Принципы, протоколы и структура = Internetworking with TCP/IP, Vol. 1: Principles, Protocols and Architecture. — М.: «Вильямс», 2003. — С. 880. — ISBN 0-13-018380-6
- Андрей Робачевский, Сергей Немнюгин, Ольга Стесик Операционная система UNIX. — 2-е изд. — "БХВ-Петербург", 2007. — С. 656. — ISBN 5-94157-538-6
Основные протоколы TCP/IP | ||||
---|---|---|---|---|
Прикладной уровень | · · · · · · · · · · · | |||
Электронная почта | · · IMAP4 | |||
Передача файлов | · · Удалённый доступ | · · Уровень представления | XDR | |
Транспортный уровень | TCP · · · · · Сетевой уровень | IPv4 · · · · · Канальный уровень | · 802.11 WiFi · Token ring · · PPP · · · · DTM · · Frame Relay · Физический уровень | · · · · Wikimedia Foundation.2010. Игры ⚽ Нужно сделать НИР? Trapa natans Trapped in the Closet (South Park) Полезное Смотреть что такое "Transmission Control Protocol" в других словарях: Transmission control protocol — Pour les articles homonymes, voir TCP. Pile de protocoles 7 • Application 6 • … Wikipédia en Français transmission control protocol — (TCP) The use of common protocols enables different computer systems to exchange information over the internet. (Protocols are a set of network communication procedures that are hardware and operating system independent.) Two of the most… … Law dictionary Transmission Control Protocol — Transmission Control Protocol, TCP/IP … Universal-Lexikon Transmission Control Protocol — The Transmission Control Protocol (TCP) is one of the core protocols of the Internet Protocol Suite. TCP is so central that the entire suite is often referred to as TCP/IP. Whereas IP handles lower level transmissions from computer to computer as … Wikipedia Transmission Control Protocol — TCP (Transmission Control Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Zuverlässiger bidirektionaler Datentransport TCP im TCP/IP‑Protokollstapel: Anwendung HTTP SMTP … Deutsch Wikipedia Transmission Control Protocol — Pour les articles homonymes, voir TCP. Pile de protocoles 7. Application 6. … Wikipédia en Français Transmission Control Protocol — Para otros usos de este término, véase TCP (desambiguación). Transmission Control Protocol (TCP) Familia: Familia de protocolos de Internet Función: Transporte confiable y bidireccional de datos. Ubicación en la pila de protocolos Aplicación … Wikipedia Español transmission control protocol — noun a protocol developed for the internet to get data from one network device to another TCP uses a retransmission strategy to insure that data will not be lost in transmission • Syn: ↑TCP • Hypernyms: ↑protocol, ↑communications protocol • Part… … Useful english dictionary Transmission Control Protocol — Abbreviated TCP. The transport level protocol used in the TCP/IP suite of protocols. It works above IP in the protocol stack and provides reliable data delivery over connection oriented links. TCP adds a header to the datagram that contains … Dictionary of networking Transmission Control Protocol — El Protocolo de Control de Transmisión (TCP en sus siglas en inglés, Transmission Control Protocol) es uno de los protocolos fundamentales en Internet. Muchos programas dentro de una red de ordenadores pueden usar TCP para crear conexiones entre… … Enciclopedia Universal 18+ © Академик, 2000-2024 Обратная связь:Техподдержка,Реклама на сайте 👣 Путешествия Экспорт словарей на сайты, сделанные на PHP, Joomla, Drupal, WordPress, MODx. Пометить текст и поделиться Искать во всех словарях Искать в переводах Искать в Интернете Поделиться ссылкой на выделенное |