Слайд 1TCP
Поле HLEN - определяет длину заголовка сегмента, которая измеряется в
32-разрядных словах
Указатель важной информации представляет собой указатель байта, содержащий информацию,
которая требует немедленного реагирования
Слайд 2Поле флаги
Поле флаги Значение бита =1
URG Флаг важной информации.
Указатель важной информации имеет смысл, если urg=1 (Del или Ctrl-С).
ACK Номер октета, который должен прийти следующим, правилен.
PSH Этот сегмент требует выполнения операции push. Получатель должен передать эти данные прикладной программе как можно быстрее.
RST Прерывание связи.
SYN Флаг для синхронизации номеров сегментов, используется при установлении связи.
FIN Отправитель закончил посылку байтов.
Слайд 3Опции TCP
Размер поля Опции переменен и дополняется до кратного 32-бит
с помощью поля заполнитель. В TCP определены следующие опции:
0
Конец списка опций.
1 Никаких операций. Используется для заполнения поля опции до числа октетов, кратного 4.
2 Максимальный размер сегмента (MSS).
Слайд 4Установление соединения
Сервер откликается, посылая свой SYN-сегмент,
содержащий идентификатор ISN (Initial
Sequence Number)
Клиент
Сервер
Слайд 5Установление-разрыв соединения
Для установление связи требуется обмен тремя сегментами, а для
разрыва - четырьмя. Но протокол допускает совмещение первого ACK и
второго FIN в одном сегменте, сокращая полное число закрывающих сегментов с четырех до трех.
Машина состояний для протокола TCP не предусматривает изменения состояний при посылке или получении обычных пакетов, содержащих данные
Слайд 6Клиент С установливает FTP-соединения с сервером s
c -> s:syn(ISNc)
s ->
c:syn(ISNs), ack(ISNc)
c -> s: ack(ISNs) (Связь установлена)
c -> s: данные
и/или
s
-> c: данные
Проблема двух армий
Машина состояний для протокола TCP не предусматривает изменения состояний при посылке или получении обычных пакетов, содержащих данные
Слайд 8Скользящее окно
Нужно учитывать, что потерей пакета будет считаться, как вариант
потери информационного сегмента, так и потеря отклика на него. Эти
два варианта не различимы.
Проблема сверхбольшого буфера
Слайд 9Медленный старт
cwnd - congestion window
ssthreth - slow start threshold
Слайд 10CWND
Окно перегрузки (CWND) позволяет согласовать полную загрузку виртуального соединения и
текущие возможности канала, минимизируя потери пакетов при перегрузке.
T
где MSS - максимальный размер сегмента, p - вероятность потери пакета; Т [Мбит/с] пропускная способность канала.
Слайд 11Зависимость пропускной способности от вероятности потери пакета
Отсюда следует, что каналы
с BER ~10-3 не способны эффективно использовать свою полосу пропускания.
Это относится практически ко всем мобильным каналам.
Слайд 12RTTm = a×RTTm + (1-a)×RTTi,
RTTm = RTTm + g(RTTi-RTTm)
D =
D + d(|RTTi - RTTm| - D)
RTO = RTTm +
4D,
window > RTT×B/MSS
B - полоса пропускания канала в бит/с, а MSS - максимальный размер сегмента в битах, а window - в сегментах.
D - среднее отклонение RTT от равновесного значения, а коэффициенты g = 0,125, D = 0,25. Чем больше g, тем быстрее растет RTO по отношению к RTT.
Для того чтобы точнее отслеживать вариации RTT, временные метки помещаются в каждый посылаемый сегмент.
Слайд 13Таймеры TCP
RTO – таймер повторной передачи
Таймер запросов - persist timer
Таймер
keepalive
2MSL-таймер (Maximum Segment Lifetime) контролирует время пребывания канала в состоянии
TIME_WAIT. Выдержка таймера по умолчанию равно 2 мин
Если в ходе TCP-сессии получено сообщение ICMP(4), то cwdn делается равным одному сегменту, а ssthresh не изменяется. На ICMP-сообщения о недостижимости сети или ЭВМ программы TCP-уровня не реагируют вообще
Слайд 14Алгоритм Нагля (1984; RFC-896)
В режиме удаленного терминала (telnet/ssh) при нажатии
любой клавиши формируется и посылается 41-октетный сегмент, который содержит всего
один байт полезной информации
Нагль предложил при однобайтовом обмене посылать первый байт, а последующие буферизовать до прихода подтверждения получения посланного (работа с мышкой!)
Слайд 15Синдром узкого окна
Существует еще одна проблема при пересылке данных по
каналам TCP, которая называется синдром узкого окна (silly window syndrome;
Clark, 1982). Такого рода проблема возникает в том случае, когда данные поступают отправителю крупными блоками, а интерактивное приложение адресата считывает информацию побайтно. Предположим, что в исходный момент времени буфер адресата полон и передающая сторона знает об этом (window=0). Интерактивное приложение считывает очередной октет из TCP-потока, при этом TCP-агент адресата поcылает уведомление отправителю, разрешающее ему послать один байт. Этот байт будет послан и снова заполнит до краев буфер получателя, что вызовет отправку ACK со значением window=0.
Слайд 16Некоторые проблемы ТСР
Каждый сегмент в TCP-протоколе снабжается 32-битным идентификатором. Время
жизни IP-пакета (TTL) определяется по максимуму 255 шагами или 255
секундами в зависимости оттого, что раньше наступит. Трудно предсказуемая ситуация может произойти, когда канал ликвидирован, затем создан снова (для той же комбинации IP-адресов и портов), а какой-то пакет из предшествующей сессии, погуляв по Интернет, придет уже во время следующей. Одной из мер, упомянутых ранее, можно считать использование ограничения по максимальному времени жизни сегмента (MSL) или TTL, хотя снижение значения TTL не всегда возможно - ведь IP-пакетами пользуется не только TCP-протокол и нужна очень гибкая система задания его величины.
Высокопроизводительные каналы (1 Гбит/с) уже сегодня могут исчерпать разнообразие идентификационных кодов пакетов за один сеанс связи. Появление же двух пакетов с равными идентификаторами может породить неразрешимые трудности