Особенности работы протоколов транспортного и сеансового уровней




Практическое занятие № 3

Подготовка:

- формат заголовков TCP и UDP;

- процедура установления TCP соединения;

- основные опции сегмента TCP для передачи данных;

- процедура завершения TCP соединения.

Задачи:

- построение дейтаграмм UDP;

- построение пакетов TCP с инкапсуляцией IP дейтаграмм;

- построение последовательностей пакетов конфигурирования, передачи и

завершения TCP-соединения;

- анализ дампов работы протокола TCP.

Типовые задания:

1. Построить дейтаграмму UDP.

2. Отобразить TCP пакет в шестнадцатеричной форме с интерпретацией всех полей.

3. Построить последовательность TCP пакетов процедуры переговоров конфигурирования

соединения.

4. Отобразить процесс передачи TCP пакетов.

5. Построить переговоры завершения связи TCP соединения.

Примеры решения задач:

 

Задача № 1.

Построить дейтаграмму UDP.

 

Решение

Дейтаграмма UDP состоит из заголовка и поля данных. Заголовок UDP состоит из

четырех двухбайтовых полей: номера порта отправителя (Source Port), номера порта

получателя (Destination Port), длины дейтаграммы (Total length), контрольной суммы

(Checksum).

Представление дейтаграммы UDP в 16-м коде:

00 35 04 79 00 9c 17 ff 0c e6 85 80 00 01 00 01 00 03 00 03 03 77 77 77 03 73 6b 79 02 64 02

75 61 00 00 01 00 01 c0 0c 00 01 00 01 00 01 51 80 00 04 51 19 e0 04 c0 10 00 02 00 01 01 51

80 00 05 02 6e 73 c0 10 c0 10 00 02 00 01 00 01 51 80 00 06 03 6e 73 31 c0 10 c0 10 00 02 00

01 00 01 51 80 00 06 03 6e 73 32 c0 10 c0 3b 00 01 00 01 00 01 51 80 00 04 51 19 e0 01 c0 4c

00 01 00 01 00 01 51 80 00 04 c3 05 23 b2 c0 5e 00 01 00 01 00 01 51 80 00 04 51 19 e0, где

00 35 – номер порта источника, в данном примере сообщение DNS-сервера,

04 79 – номер порта получателя,

00 9с – общая длина дейтаграммы,

17 ff – контрольная сумма, и далее сообщение DNS-сервера в 16-м коде.

Варианты заданий для самостоятельных упражнений:

1) Выполните анализ следующего дампа:

00 44 00 43 01 34 04 72 01 08 06 00 00 5e f0 06 06 00 00 00 c0 a8 0c 3b …

2) Составьте дейтаграмму UDP, порт получателя которой равен 69 и длина поля данных

равна 40 байтам.

 

 

Задача № 2.

Отобразить TCP пакет в шестнадцатеричной форме с интерпретацией всех полей.

 

Решение

Пакет TCP состоит из заголовка и поля данных. Заголовок содержит следующие основные

поля:

Порт источника source port 2 байта

Порт приемника destination port 2 байта

Последовательный номер sequence number 4 байта

Подтвержденный номер acknowledgement number 4 байта

Длина заголовка hlen 4 бита

Резерв reserved 6 бит

Кодовые биты code bits 6 бит

Окно window 2 байта

Контрольная сумма checksum 2 байта

Указатель срочности urgent pointer 2 байта

Параметры options переменная длина

Заполнитель padding переменная длина

 

Представление пакета TCP в 16-м коде:

04 7e 00 50 85 c9 61 3a bb 8e 9e d2 50 10 22 38 49 68 00 00, где

04 7e – порт источника (1150)

00 50 – порт приемника (80)

85 c9 61 3a – последовательный номер (329)

bb 8e 9e d2 – подтвержденный номер (5841)

50 – длина заголовка (20 байт)

10 – кодовые биты (квитанция на принятый сегмент Ack=1)

22 38 – размер окна

49 68 – контрольная сумма

00 00 – заполнитель

 

Варианты заданий для самостоятельных упражнений:

 

1) Интерпретируйте поля следующего дампа пакета TCP:

04 83 00 50 85 d5 1d 5d 00 00 00 00 70 02 22 38 ba e0 00 00 02 04 05 b4 01 01 04 02.

 

2) Интерпретируйте поля следующего дампа пакета TCP:

00 50 04 80 bc 26 5f 27 85 ce f4 3c 50 11 19 20 fe 88 00 00.

 

3) Составьте пакет TCP: порт источника 21, получателя 1045, последовательный номер

45, подтвержденный номер 112, квитанция на принятый сегмент, окно 834, остальные

поля произвольные.

 

4) Составьте дейтаграмму UDP, порт получателя которой равен 69 и длина поля данных

равна 40 байтам.

 

Задача № 3.

Построить последовательность TCP пакетов процедуры переговоров конфигурирования

соединения.

 

Решение

При установлении логического соединения модули TCP договариваются между собой о

параметрах процедуры обмена. При конфигурировании соединения стороны

обмениваются параметрами, такими как:

- начальный порядковый номер, с которого начинается отсчет передачи данных;

- максимальный объем данных, который разрешается передавать другой стороне, если еще

не получена квитанция на предыдущую порцию данных;

- максимальный размер сегмента.

В процедуре установления соединения (three-way handshake или «тройное рукопожатие»)

используются кодовые биты Syn и Ack. Построим последовательность TCP пакетов

логического соединения модулей X и Y.

 

X -> Y

Src Port: 1035, Dst Port: http (80),

Sequence number (Sn): 0 (relative sequence number)

Header length: 28 bytes

Flags: 0x0002 (Syn)

Window size: 8760

Checksum 0xe330[correct]

Options (4 bytes):

Maximum segment size (MSS): 1460 bytes

 

X <- Y

Src Port: http (80), Dst Port: 1035,

Sequence number: 0 (relative sequence number)

Acknowledgment number (An): 1 (relative ack number)

Header length: 28 bytes

Flags: 0x0012 (Syn, Ack)

Window size: 5840

Checksum: 0x1c72 [correct]

Options (4 bytes):

Maximum segment size: 576 bytes

 

X -> Y

Src Port: 1035, Dst Port: http (80),

Sequence number: 1 (relative sequence number)

Acknowledgment number: 1 (relative ack number)

Header length: 20 bytes

Flags: 0x0010 (Ack)

Window size: 8760

Checksum 0x3dce [correct]

 

Варианты заданий для самостоятельных упражнений:

Постройте последовательность TCP пакетов процедуры соединения:

1) Для Х параметры соединения: Sequence number=300, Window size=6556, MSS=1240,

для Y из примера.

2) Для Y параметры соединения: Sequence number=100, Window size=5840, MSS=1460,

для Х из примера.

 

3) Параметры X -> Y: Src Port: 1047, Dst Port: http (80), Sn: 907, Header length: 28 bytes,

Flags: 0x0002 (Syn), Window size: 8760, Checksum 0xe330[correct], Options (4 bytes):

Maximum segment size (MSS): 1460 bytes.

Напишите параметры X <- Y.

 

4) Параметры X <- Y: Src Port: http (80), Dst Port: 1047, Sn: 100, An:100, Header length: 28

bytes, Flags: 0x0012 (Syn, Ack), Window size: 8760, Options (4 bytes): Maximum segment size

(MSS): 1790 bytes.

Напишите параметры X -> Y.

 

 

Задача № 4.

Отобразить процесс передачи TCP пакетов.

 

Решение

В рамках установленного соединения происходит процесс передачи данных.

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

номера принятого сегмента (подтверждающий номер), на единицу превышающий

максимальный номер байта полученного сегмента. В протоколе TCP в одном и том же

сегменте могут быть помещены и квитанция, и данные, которые приложение передает

другой стороне.

 

Построим последовательность TCP пакетов процесса передачи данных приложений X и Y.

 

X -> Y (передача 169 байт)

Src Port: 1035, Dst Port: http (80),

Sequence number: 1 (relative sequence number)

[Next sequence number: 170 (relative sequence number)]

Acknowledgment number: 1 (relative ack number)

Header length: 20 bytes

Flags: 0x0018 (Psh, Ack)

Window size: 8760

Checksum 0xa6a0 [correct]

Hypertext Transfer Protocol

 

X <- Y (квитанция на получение 169 байт)

Src Port: http (80), Dst Port: 1035,

Sequence number: 1 (relative sequence number)

Acknowledgment number: 170 (relative ack number)

Header length: 20 bytes

Flags: 0x0010 (Ack)

Window size: 6432

Checksum: 0x463d [correct]

 

X <- Y (передача 290 байт)

Src Port: http (80), Dst Port: 1035,

Sequence number: 1 (relative sequence number)

[Next sequence number: 291 (relative sequence number)]

Acknowledgment number: 170 (relative ack number)

Header length: 20 bytes

Flags: 0x0018 (Psh, Ack)

Window size: 6432

Checksum: 0x6304 [correct]

TCP segment data

 

X -> Y (квитанция на получение 290 байт и передача 190 байт)

Src Port: 1035, Dst Port: http (80),

Sequence number: 170 (relative sequence number)

[Next sequence number: 360 (relative sequence number)]

Acknowledgment number: 291 (relative ack number)

Header length: 20 bytes

Flags: 0x0018 (Psh, Ack)

Window size: 8470

Checksum 0xf4d6 [correct]

Hypertext Transfer Protocol

 

X <- Y (квитанция на получение 190 байт и передача 291 байт)

Src Port: http (80), Dst Port: 1035,

Sequence number: 291 (relative sequence number)

[Next sequence number: 582 (relative sequence number)]

Acknowledgment number: 360 (relative ack number)

Header length: 20 bytes

Flags: 0x0018 (Psh, Ack)

Window size: 7504

Checksum: 0x312b [correct]

TCP segment data

 

Варианты заданий для самостоятельных упражнений:

1) Постройте последовательность передачи TCP пакетов: X передает Y 40 байт

информации, размер окна 8990; Y передает Х квитанцию на получение 40 байт и 120 байт

информации, X передает Y квитанцию на получение 120 байт информации, начальные

значения Sn и Ackn произвольные.

 

2) Текущие значения для Х Sn=20 и Ackn=60, X передает Y 70 байт, Y передает Х 58 байт.

Какие значения принимают параметры Sn и Ackn для Х и Y.

 

3) Текущие значения для Y Sn=120 и Ackn=1. Постройте последовательность передачи

TCP пакетов: Y передает Х 10 байт информации; X передает Y квитанцию на получение

10 байт и 80 байт информации, Y передает Х квитанцию на получение 80 байт

информации и 8 байт информации, X передает Y квитанцию на получение 8 байт

информации.

 

Задача № 5.

Построить переговоры завершения связи TCP соединения.

Решение

 

Завершение TCP соединения состоит из последовательности сообщений, которыми

обмениваются участники соединения. Признаком завершения соединения (или

достижения передающей стороной последнего байта передаваемых данных) является

наличие кодового бита FIN. Процесс завершения представлен следующими сообщениями:

X <- Y (квитанция на получение данных и признак завершения передачи данных)

Src Port: http (80), Dst Port: 1042,

Sequence number: 5578 (relative sequence number)

Acknowledgment number: 285 (relative ack number)

Header length: 20 bytes

Flags: 0x0011 (Ack, Fin)

Window size: 65535

Checksum: 0x5838 [correct]

 

X -> Y (квитанция на получение признака завершения - Acknowledgment number

увеличился на единицу)

Src Port: 1042, Dst Port: http (80),

Sequence number: 285 (relative sequence number)

Acknowledgment number: 5579 (relative ack number)

Header length: 20 bytes

Flags: 0x0010 (Ack)

Window size: 7892

Checksum 0x3964 [correct]

 

 

X -> Y (передача признака завершения)

Src Port: 1042, Dst Port: http (80),

Sequence number: 285 (relative sequence number)

Acknowledgment number: 5579 (relative ack number)

Header length: 20 bytes

Flags: 0x0011 (Ack, Fin)

Window size: 7892

Checksum 0x3963 [correct]

 

Варианты заданий для самостоятельных упражнений:

Постройте последовательность передачи TCP пакетов:

1) Для Х параметры соединения: Sequence number=300, Window size=6556, MSS=1240.

2) Для Х параметры соединения: Sequence number=500, Window size=3000, MSS=500.

Контрольные вопросы:

1. Перечислите основные поля пакета TCP.

2. Перечислите основные поля дейтаграммы UDP.

3. Перечислить основные фазы TCP-соединения.

4. Какие параметры определяются в процессе установления соединения?

5. Чем идентифицируется логическое TCP-соединение?

6. Опишите работу алгоритма скользящего окна.

7. Для чего служит окно приема?



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: