TCP - Протокол IP

Download Report

Transcript TCP - Протокол IP

Slide 1

Тема:

Протокол TCP.

Будут рассмотрены следующие вопросы:
- функции протокола TCP;
- структура TCP – сегмента;
- фаза установления соединения;
- фаза передачи данных;

- фаза ликвидации соединения.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

1


Slide 2

1. Функции протокола TCP
1.1. Базовая передача данных
• Протокол TCP рассматривает данные клиента как
непрерывный не интерпретируемый поток октетов.
• TCP разделяет этот поток на части для пересылки на
другой узел в TCP-сегментах некоторого размера.
• Для отправки или получения сегмента модуль TCP
вызывает модуль IP.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

2


Slide 3

1. Функции протокола TCP
1.2. Обеспечение достоверности
Модуль TCP обеспечивает защиту от повреждения, потери,
дублирования и нарушения очередности получения данных.
Для выполнения этих задач все октеты в потоке данных
сквозным образом пронумерованы в возрастающем порядке.
Заголовок каждого сегмента содержит число октетов
данных в сегменте и порядковый номер первого октета той
части потока данных, которая пересылается в данном
сегменте.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

3


Slide 4

1. Функции протокола TCP
1.2. Обеспечение достоверности
Для каждого сегмента вычисляется контрольная сумма,
позволяющая обнаружить повреждение данных.
Нумерация
октетов
используется
также
для
упорядочения данных в порядке очередности и
обнаружения дубликатов

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

4


Slide 5

1. Функции протокола TCP
1.3. Разделение каналов
Протокол TCP обеспечивает работу одновременно
нескольких соединений. Каждый прикладной процесс
идентифицируется номером порта. Заголовок TCPсегмента содержит номера портов процесса-отправителя
и процесса-получателя. При получении сегмента модуль
TCP анализирует номер порта получателя и отправляет
данные соответствующему прикладному процессу.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

5


Slide 6

1. Функции протокола TCP
1.4. Управление соединениями
Соединение - это совокупность информации о
состоянии потока данных, включающая сокеты, номера
посланных, принятых и подтвержденных октетов,
размеры окон.

Открытие
соединения
клиентом
осуществляется
вызовом функции OPEN, которой передается сокет, с
которым требуется установить соединение. Функция
возвращает имя соединения.
Закрытие соединения клиентом производится с
помощью функции CLOSE, которой передается имя
соединения.
01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

6


Slide 7

1. Функции протокола TCP
1.4. Управление соединениями
Различают два типа открытия соединения: активное и
пассивное.
При активном:
TCP-модуль начинает процедуру установления
соединения с указанным сокетом
При пассивном:
TCP - модуль ожидает, что удаленный TCPмодуль
начнет
процедуру
установления
соединения с указанного сокета

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

7


Slide 8

1. Функции протокола TCP
1.4. Управление соединениями
Пример:
Предположим, узел А желает установить соединение с
узлом В.
В

А

1.
2.

SYN, ISN
A->B
+запрос
B->A

3.

4.

ACK, SYN, ISN

ACK, данные

данные от В

01.11.2015

данные

запрос
А->B

B->A ok!+
данные от А

1.
В
заголовке
первого
отправляемого из А в В TCPсегмента (структуру TCP сегмента мы рассмотрим чуть
позже) содержится число (ISN),
начиная с которого узел А
будет
нумеровать
отправляемые октеты (например 0).

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

8


Slide 9

1. Функции протокола TCP
1.4. Управление соединениями

1.
2.
3.

4.

2. В ответ на получение такого сегмента узел В
откликается посылкой TCP-сегмента, в заголовке которого
установлен бит ACK, подтверждающий установление
соединения для получения данных от узла А. Так как протокол TCP обеспечивает
В
А
полнодуплексную передачу
SYN, ISN
запрос
данных, то узел В в этом же
А->B
сегменте устанавливает бит
A->B
ACK, SYN, ISN
+запрос
SYN, означающий запрос
B->A
связи для передачи данных
ACK, данные
B->A ok!+
данные от А
от В к А, и передает свой
данные
ISN (например 0)
данные от В
01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

9


Slide 10

1. Функции протокола TCP
1.4. Управление соединениями

3. Третий TCP-сегмент в сеансе посылается из А в В
в ответ на сегмент, полученный из В. Так как
соединение А -> В можно считать установленным
(получено подтверждение от В), то узел А включает в свой
сегмент полезные данные,
В
А
нумерация которых
начинается с номера
1.
SYN, ISN
запрос
А->B
ISN(A)+1. В заголовке этого
A->B
ACK, SYN, ISN
же сегмента узел А
2.
+запрос
B->A
устанавливает бит ACK,
3.
ACK, данные
B->A ok!+
подтверждающий установданные от А
ление связи B -> A, что
данные
4.
данные от В
позволяет хосту В включить
в свой следующий сегмент
каф. ВТ, ТОГУ, г. Хабаровск, вед.
01.11.2015
преп. Шоберг А.Г.
полезные данные для А 10


Slide 11

1. Функции протокола TCP
1.5. Управление потоком
Для ускорения и оптимизации процесса передачи
больших объемов данных протокол TCP определяет
метод управления потоком, называемый методом
скользящего окна, который позволяет отправителю
посылать
очередной
сегмент,
не
дожидаясь
подтверждения о получении в пункте назначения
предшествующего сегмента.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

11


Slide 12

1. Функции протокола TCP
1.5. Управление потоком

Протокол TCP формирует подтверждения не для
каждого конкретного успешно полученного пакета, а
для всех данных от начала посылки до некоторого
порядкового номера ACK SN (Acknowledge Sequence
Number) исключительно. В качестве подтверждения успешного приема, например,
первых
2000
байт,
высылается ACK SN =
2001: это означает, что
все данные в байтовом
потоке под номерами от
ISN+1=1 до данного
ACK
SN
-1
(2000)
успешно получены

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

12


Slide 13

1. Функции протокола TCP
1.5. Управление потоком

Вместе с посылкой отправителю ACK SN получатель объявляет также “размер окна”, например - 6000. Значит отправитель может посылать данные с порядковыми номерами от
текущего ACK SN = 2001 до (ACK SN + размер окна -1) =
8000, не дожидаясь подтверждения со стороны получателя.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

13


Slide 14

1. Функции протокола TCP
1.5. Управление потоком

Допустим, в данный момент отправитель посылает тысячеоктетный сегмент с порядковым номером данных SN=4001.
Если не будет получено новое подтверждение (новый ACK
SN), отправитель будет посылать данные, пока он остается в
пределах объявленного окна, то есть до номера 8001.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

14


Slide 15

2. Структура TCP-сегмента
Формат ТСР сегмента представлен на рисунке
0

10

4

Порт источника

31

24

16

Порт назначения

Порядковый номер сегмента
Порядковый номер подтверждения
Смещение
данных

Резерв

Флаги

Размер окна
Указатель срочности

Контрольная сумма
Опции

Заполнитель
Данные

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

15


Slide 16

2. Структура TCP-сегмента

«Порт источника» и
определяют передающее
соответственно.

01.11.2015

«Порт назначения» и приемное приложения,

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

16


Slide 17

2. Структура TCP-сегмента

«Порядковый номер сегмента» - определяет позицию
первого байта данных сегмента в байтовом потоке
источника при значении флага SYN=0 (в режиме передачи
данных). В режиме установления соединения, когда флаг
SYN установлен в 1, в этом поле содержится начальный
номер последовательности номеров байтов данного
потока (ISN – initial sequence number); значение
номера первого байта данных этого потока будет ISN+1.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

17


Slide 18

2. Структура TCP-сегмента

«Порядковый номер подтверждения» - это поле в
режиме с установленным флагом ACK (режим передачи
данных) содержит порядковый номер байта данных,
который передающий модуль ожидает получить от
приемного
узла;
тем
самым
подтвер-ждается
правильность приема всех предыдущих байтов. В
режиме установления соединения (ACK=0) значение
этого поля не учитывается.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

18


Slide 19

2. Структура TCP-сегмента

«Смещение данных» - поле определяет длину
заголовка сегмента в 32-битных словах; эта информация позволяет приемному модулю определить
начало поля данных, т.к. заголовок может содержать
опциональное поле переменной длины.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

19


Slide 20

2. Структура TCP-сегмента

«Резерв» - поле в настоящее время не используется
и заполняется нулями.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

20


Slide 21

2. Структура TCP-сегмента
«Контрольные биты» - поле длиной 6 бит, каждый из
которых является флагом; их последовательность и
смысл следующие:
URG – флаг срочности передачи сегмента;
ACK – флаг указывающий на достоверность значений
в поле «Порядковый номер подтверждения»
PSH – включена функция «проталкивания» сегмента, т.е. модуль ТСР должен передать сегмент
приложению немедленно

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

21


Slide 22

2. Структура TCP-сегмента
«Контрольные биты»:
RST – указание приемному модулю разорвать
соединение по причине каких-то аномалий;
используется для перезагрузки соединения
SYN – флаг установления соединения, синхронизации порядковых номеров сегментов
FIN – флаг, индицирующий, что у передающего
модуля нет данных для передачи;
передающее приложение остается в
соединении с приемным и принимает
данные последнего.
01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

22


Slide 23

2. Структура TCP-сегмента

«Размер окна» - поле определяет количество
байтов, которое модуль TCP может принять (Wa).

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

23


Slide 24

2. Структура TCP-сегмента

«Контрольная сумма» - значение этого поля
рассчитывается по всему сегменту с дополнением
его нулями до размера кратного 16 битам и 96
битным псевдозаголовком, включаемым перед
заголовком TCP и содержащим сетевые адреса
отправителя и получателя, тип протокола и длину
ТCP сегмента. Эти дополнения используются только
для расчета контрольной суммы и не передаются.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

24


Slide 25

2. Структура TCP-сегмента

«Указатель срочности» - значение этого поля при
установленном флаге URG, будучи добавленным к
значению поля «Порядковый номер сегмента»,
определяет последний байт срочных данных. Покольку
приемный модуль ТСР передает приложению байты
строго по порядку, то все байты, содержащиеся в
приемном буфере, вплоть до байта с определенным, как
указано выше номером, будут рассматриваться как
срочные.

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

25


Slide 26

2. Структура TCP-сегмента
«Опции» - поле используется для определения других,
не
предусмотренных
заголовком,
функций.
Так
например, это поле часто используется для передачи
величины максимального размера сегмента (maximum
segment size - MSS). В высокоскоростных сетях это поле
используется для задания таких параметров как
«Коэффициент масштабирования окна» (до 214) и
«Временная метка». Последние важны в ситуации
когда полный цикл нумерации байт может быть пройден
за время жизни сетевого пакета. Наличие временных
меток в каждом сегменте позволяет также вычислить
время полного оборота (RTT).
01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

26


Slide 27

3. Фаза установки соединения
Фаза установления соединения, предшествующая
фазе передачи данных, содержит следующие действия
Хост А

Хост Б

SYN, Seq_no = m

SYN, Seq_no = k,
m+1

ACK, Ack_no =

1. Хост А отправляет хосту Б
запрос соединения посредством установки флага SYN
и инициализирует значение начального номера
нумерующей
последовательности (Seq_no = m).

Seq_no = m+1, ACK, Ack_no = k+1

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

27


Slide 28

3. Фаза установки соединения
Фаза установления соединения, предшествующая
фазе передачи данных, содержит следующие действия
2. Хост Б отвечает на этот

запрос установкой флага
ACK и определяет поле
«Порядковый
номер
SYN, Seq_no = m
подтверждения» значением на единицу большим
SYN, Seq_no = k, ACK, Ack_no =
m (Ack_no = m+1); одновm+1
ременно, хост Б в своем
ответе А отправляет запрос
Seq_no = m+1, ACK, Ack_no = k+1
соединения (SYN) и также
инициализирует значе-ние
начального номера своей
нумерующей
последовакаф. ВТ, ТОГУ, г. Хабаровск,
вед.
тельности
(Seq_no = k).

Хост А

01.11.2015

Хост Б

преп. Шоберг А.Г.

28


Slide 29

3. Фаза установки соединения
Фаза установления соединения, предшествующая
фазе передачи данных, содержит следующие действия
Хост А

Хост Б

SYN, Seq_no = m

SYN, Seq_no = k,
m+1

ACK, Ack_no =

Seq_no = m+1, ACK, Ack_no = k+1

01.11.2015

3. Хост А отвечает на запрос
соединения от хоста Б
установкой флага ACK и
подтверждением ожидания
следующего байта данных с
порядковым номером k+1
(Ack_no = k+1); при этом,
значение поля «Порядковый номер сегмента»
устанавливается в значение m+1 (Seq_no = m+1).

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

29


Slide 30

4. Фаза передачи данных
Хост А

Win=2048, No data
Seq_no=0, Ack_no=2000,

Хост Б

t0

t1

Seq_no=2000, Ack_no=1,
Win=1024, Data=2000-3023

t2

Seq_no=3024, Ack_no=1,
Win=1024, Data=3024-4047

Win=512, Data=1-128
Seq_no=1, Ack_no=4048,

t4

t3

Seq_no=4048, Ack_no=129,
Win=1024, Data=4048-4559

01.11.2015

Пусть в момент t0 ТСРмодуль хоста В объявил
величину своего окна
равной 2048 байт и
номер следующего ожидаемого
байта
2000.
Такой размер окна позволяет хосту А отправить без подтверждения 2 Кбайта данных,
однако в его выходном
буфере име-ется лишь
1024 байта данных.

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

30


Slide 31

4. Фаза передачи данных
Одновременно, он объявляет величину своеХост А
Хост Б
Win=2048, No data
го окна равной 1024
Seq_no=0, Ack_no=2000,
байта и подтверждает,
что номер ожидаемого
Seq_no=2000,
Ack_no=1,
t1
первого байта от хоста
Win=1024, Data=2000-3023
Б должен быть равен
t2 Seq_no=3024, Ack_no=1,
Win=1024, Data=3024-4047
1. Хост Б задерживает
выдачу подтверждения
Win=512, Data=1-128
на прибывший сегмент
Seq_no=1, Ack_no=4048,
данных, полагая, что у
него появятся данные
Seq_no=4048, Ack_no=129,
для отправки хосту А,
t4
Win=1024, Data=4048-4559
вместе с которыми он
отправит и подтверкаф. ВТ, ТОГУ, г. Хабаровск, вед.
ждение.
01.11.2015
преп. Шоберг А.Г.
31


Slide 32

4. Фаза передачи данных
Тем
временем,
в
Хост А
Хост Б
момент t2 модуль ТСР
Win=2048, No data
Seq_no=0, Ack_no=2000,
хоста А снова получил
от своего приложения
t1 Seq_no=2000, Ack_no=1,
1024 байт данных и
Win=1024, Data=2000-3023
передал их хосту Б.
Seq_no=3024,
Ack_no=1,
t2
После этого величина
Win=1024, Data=3024-4047
окна отправки на хосте
А стала равной нулю
Win=512, Data=1-128
Seq_no=1, Ack_no=4048,
и дальнейшая отправка им данных до
получения подтвержSeq_no=4048, Ack_no=129,
t4
дения от хоста Б окаWin=1024, Data=4048-4559
зывается
невозможкаф. ВТ, ТОГУ, г. Хабаровск, вед.
ной.
01.11.2015

преп. Шоберг А.Г.

32


Slide 33

4. Фаза передачи данных
В момент t3 модуль ТСР
Б получил 128
Хост А
Хост Б хоста
Win=2048, No data
байт данных для отпSeq_no=0, Ack_no=2000,
равки; вместе с ними он
отправляет подтвержt1 Seq_no=2000, Ack_no=1,
дение получения от
Win=1024, Data=2000-3023
хоста А двух сегментов
t2 Seq_no=3024, Ack_no=1,
Win=1024, Data=3024-4047
данных,
указывая
Ack_no=4048. К этому
Win=512, Data=1-128
моменту в буферной
Seq_no=1, Ack_no=4048,
памяти модуля ТСР хоста Б оказывается своSeq_no=4048, Ack_no=129,
бодными лишь 512 байт,
t4
Win=1024, Data=4048-4559
поэтому он объявляет
величину своего окна
каф. ВТ, ТОГУ, г. Хабаровск, вед.
01.11.2015
преп. Шоберг А.Г.
приема равной 512 33


Slide 34

4. Фаза передачи данных
Хост А

Win=2048, No data
Seq_no=0, Ack_no=2000,

Хост Б

t1

Seq_no=2000, Ack_no=1,
Win=1024, Data=2000-3023

t2

Seq_no=3024, Ack_no=1,
Win=1024, Data=3024-4047

Win=512, Data=1-128
Seq_no=1, Ack_no=4048,

t4

Seq_no=4048, Ack_no=129,
Win=1024, Data=4048-4559

01.11.2015

Когда хост А получит
этот
сегмент,
он
установит
величину
окна отсылки равной
512 байт и, несмотря
на то, что в момент t4
в его буфере имеется
2048 байт данных, он
сможет
отослать
только 512 байт и не
перегрузит
буфер
хоста Б.

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

34


Slide 35

5. Фаза ликвидации соединения
Хост А инициализирует процедуру разрыва
соединения, отправляя сегмент с флагом FIN.
TCP- А

FIN, Seq_no=4386

TCP- Б

Data=303-452, Ack_no=4387

Доставлены
150 байт

Аck_no=453

FIN, Seq_no=453, Ack_no=4387

Ack_no=454

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

35


Slide 36

5. Фаза ликвидации соединения
TCP- А

FIN, Seq_no=4386

TCP- Б

Data=303-452, Ack_no=4387

Доставлены
150 байт

Аck_no=453

FIN, Seq_no=453, Ack_no=4387

Ack_no=454

01.11.2015

Модуль ТСР хоста Б
подтверждает
прием
этого сегмента и передает извещение о запросе на закрытие соединения своему приложению. Одновременно,
располагая
данными
для хоста А, модуль
ТСР хоста Б отправляет сегмент со 150
байтами данных хосту
А, и получает подтверждение их приема.

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

36


Slide 37

5. Фаза ликвидации соединения
TCP- А

FIN, Seq_no=4386

TCP- Б

Data=303-452, Ack_no=4387

Доставлены
150 байт

Аck_no=453

FIN, Seq_no=453, Ack_no=4387

Получив от своего
приложения
подтверждение разрыва
соединения
протокольный модуль хоста
Б отправляет встречный сегмент FIN и
получает на него подтверждение

Ack_no=454

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

37


Slide 38

5. Фаза ликвидации соединения

Модуль TCP хоста А переходит в состояние ожидания и запускает таймер TIME_WAIT с начальным значением задержки
равным удвоенному максимальному времени жизни сегмента.
TCP- А
TCP- Б
При достижении этим
FIN, Seq_no=4386
таймером
значения
нуль, хост А ликвиData=303-452, Ack_no=4387
дирует соединение и
удаляет запись о нем
Доставлены
Аck_no=453
150 байт
из таблицы соединений.
FIN, Seq_no=453, Ack_no=4387

Ack_no=454

01.11.2015

каф. ВТ, ТОГУ, г. Хабаровск, вед.
преп. Шоберг А.Г.

38