Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Протокол TCP (Transmission Control Protocol) является протоколом транспортного уровня, обеспечивающим надежную передачу данных в сети. Его транспортный адрес в заголовке IP-сегмента равен 6. Обмен данными осуществляется посредством "TCP-пакетов". В Таблице приведен формат заголовка TCP-пакета.
Формат сегмента TCP | ||||
Бит | 0 — 3 | 4 — 9 | 10 — 15 | 16 — 31 |
Порт источника | Порт назначения | |||
Номер последовательности | ||||
Номер подтверждения | ||||
Смещение данных | Зарезервировано | Флаги | Окно | |
Контрольная сумма | Указатель важности | |||
Опции (необязательное, но используется практически всегда) | ||||
160/192+ | Данные |
Порт источника и порт приемника: 16-битовые поля, содержащие номера портов. Существует набор служб, использующих TCP, за которыми закреплены определенные порты: 20/21 — FTP; 22 — SSH; 23 — Telnet; 25 — SMTP; 80,8080 — HTTP, альтернативный порт HTTP; 110 — POP3; 194 — IRC (Internet Relay Chat); 443 — HTTPS (Secure HTTP); 8080 — альтернативный порт HTTP
Номер в последовательности: 32-битовое поле, определяющее положение данных TCP-пакета внутри исходящего потока данных. Номер последовательности выполняет две задачи:
1. Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности равный ISN + 1.
2. В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.
Номер подтверждения: 32-битовое поле содержит количество принятых данных из входящего потока к TCP-модулю, формирующему TCP-пакет. Если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
Смещение данных: содержит длину заголовка TCP-пакета в 32-битовых словах и используется для определения начала расположения данных в TCP-пакете. Это поле определяет размер заголовка пакета TCP в 32-битных словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.
Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль. Из них два (5-й и 6-й) уже определены:
· CWR (Congestion Window Reduced) — Поле «Окно перегрузки уменьшено» — флаг установлен отправителем, чтоб указать, что получен пакет с установленным флагом ECE (RFC 3168)
· ECE (ECN-Echo) — Поле «Эхо ECN» — указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)
Флаги (управляющие биты) Это поле содержит 6 битовых флагов:
Размер окна: содержит количество байт информации, которое может принять TCP-модуль, отправляющий партнеру TCP-пакет. Поле используется принимающим поток данных TCP-модулем для управления интенсивностью этого потока.
Контрольная сумма: 16-битовое поле, содержащее контрольную сумму, подсчитанную для TCP-заголовка, данных пакета и псевдозаголовка.
Указательважности: 16-битовое поле, содержащее указатель на первый байт в теле TCP-пакета, начинающий последовательность важных (urgent) данных.
Дополнительные данные заголовка: Протокол TCP определяет три типа дополнительных данных заголовка: конец списка полей дополнительных данных; пусто (No Operation); максимальный размер пакета.
В отличие от протокола UDP, который может сразу же начать передачу пакетов, TCP перед передачей данных устанавливает соединения:
При обмене данными приемник использует номер последовательности, содержащийся в получаемых сегментах, для восстановления их исходного порядка. Приемник уведомляет передающую сторону о номере последовательности, до которой он успешно получил данные, включая его в поле «номер подтверждения». Если впоследствии будет принят сегмент, относящийся к ожидаемому номеру последовательности, то порядок данных будет автоматически восстановлен исходя из номеров последовательностей в сегментах.
Для того, чтобы передающая сторона не отправляла данные интенсивнее, чем их может обработать приемник, TCP содержит средства управления потоком. Для этого используется поле «окно». В сегментах, направляемых от приемника передающей стороне в поле «окно» указывается текущий размер приемного буфера. Передающая сторона сохраняет размер окна и отправляет данных не более, чем указал приемник. Если приемник указал нулевой размер окна, то передача данных в направлении этого узла не происходит, пока приемник не сообщит о большем размере окна.
Последний сегмент, содержащий команду, обязан содержать флаг PSH, чтобы приложение на принимающей стороне смогло начать её выполнение.
Завершение соединения можно рассмотреть в три этапа:
Протоколы транспортного уровня, обеспечивающие надежную передачу данных, предполагают подтверждение принимающей стороной правильности полученных данных. Для этого используется принцип "скользящего окна" (sliding window), который заключается в том, что каждая сторона может отправлять партнеру максимум столько байт, сколько партнер указал в поле "размер окна" заголовка TCP-пакета, подтверждающего получение предыдущих данных. Принцип "скользящего окна" обеспечивает опережающую посылку данных с отложенным их подтверждением. Если в течение некоторого времени не будет получено отложенное подтверждение отправленного пакета, то отправляющий TCP-модуль будет вынужден повторить посылку всех TCP-пакетов, начиная с неподтвержденного пакета.
Хотя протокол осуществляет проверку контрольной суммы по каждому сегменту, используемый алгоритм считается слабым по надежности. В общем случае распределенным сетевым приложениям рекомендуется использовать дополнительные программные средства для гарантирования целостности передаваемой информации.
Дата публикования: 2014-11-18; Прочитано: 780 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!