Описание структуры псевдозаголовка.
Стр 1 из 2Следующая ⇒ Цель работы Изучить принцип работы протокола TCP, структуру TCP-сегмента. Задание Для выполнения работы необходим компьютер с доступом к сети Интернет. Разработать класс TcpSegment, содержащий экземпляр класса Buffer. Класс должен хранить данный в формате, описанном в RFC 793. Класс должен представлять методы для получения и установки всех полей, описанных в RFC 793. Данные сегмента должны быть представлены классом Buffer со смещением равным длине заголовка. При возврате данных не используйте копирование. Разработайте консольное приложение. Скопируйте из Wireshark бинарное представление TCP-сегмента. В программе создайте экземпляр класса Buffer из этих данных. Созданный экземпляр передайте в конструктор класса TcpSegment. Выполните чтение каждого поля заголовка. Выведите на экран значения всех полей и сравните с теми, которые отображаются в Wireshark. По очереди меняйте каждое поле. После каждого изменения убедитесь, что значения других полей остались прежними.
Описание структуры TCP сегмента и назначения всех его полей. Порт источника, Порт назначения Эти 16-битные поля содержат номера портов — числа, которые определяются по специальному списку. Порт источника идентифицирует приложение клиента, с которого отправлены пакеты. Ответные данные передаются клиенту на основании этого номера. Порт назначения идентифицирует порт, на который отправлен пакет. Порядковый номер Порядковый номер выполняет две задачи: 1. Если установлен флаг SYN, то это изначальный порядковый номер — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер, равный ISN + 1. 2. В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот порядковый номер
Поскольку поток TCP в общем случае может быть длиннее, чем число различных состояний этого поля, то все операции с порядковым номером должны выполняться по модулю 2^32. Это накладывает практическое ограничение на использование TCP. Если скорость передачи коммуникационной системы такова, чтобы в течение MSL (максимального времени жизни сегмента) произошло переполнение порядкового номера, то в сети может появиться два сегмента с одинаковым номером, относящихся к разным частям потока, и приёмник получит некорректные данные. Номер подтверждения Если установлен флаг ACK, то это поле содержит порядковый номер, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения. Длина заголовка (смещение данных) Это поле определяет размер заголовка пакета TCP в 4-байтных (4-октетных) словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP. Зарезервировано Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль. Из них два (5-й и 6-й) уже определены: · 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-битных слов заголовка(включая псевдозаголовок) и данных. Если сегмент, по которому вычисляется контрольная сумма, имеет длину не кратную 16-ти битам, то длина сегмента увеличивается до кратной 16-ти, за счет дополнения к нему справа нулевых битов заполнения. Биты заполнения (0) не передаются в сообщении и служат только для расчёта контрольной суммы. При расчёте контрольной суммы значение самого поля контрольной суммы принимается равным 0. Указатель важности 16-битовое значение положительного смещения от порядкового номера в данном сегменте. Это поле указывает порядковый номер октета, которым заканчиваются важные (urgent) данные. Поле принимается во внимание только для пакетов с установленным флагом URG. Описание структуры псевдозаголовка. TCP-заголовок не содержит информации об адресе отправителя и получателя, поэтому даже при совпадении порта получателя нельзя с точностью сказать, что сообщение пришло в нужное место. Поскольку назначением протокола TCP является надёжная доставка сообщений, то этот момент имеет принципиальное значение. Эту задачу можно было решить разными способами. Самый очевидный — добавить информацию об адресе назначения в заголовок TCP, однако это, во-первых, приводит к дублированию информации, что снижает долю полезной информации переносимой TCP-сегментом, а во-вторых, нарушает принцип инкапсуляции модели OSI. Поэтому разработчики протокола пошли другим путём и использовали дополнительный псевдозаголовок: TCP-псевдозаголовок IPv4
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|