Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вычи экзамен.doc
Скачиваний:
26
Добавлен:
13.11.2019
Размер:
2.29 Mб
Скачать
  1. Протоколы tcp/ip. Формат ip-пакетов. Процедура приема данных протоколами tcp и udp

В TCP-соединении у каждого байта есть свой 32-разрядный последовательный номер. Если хост передает со скоростью 10 Мбит/с, теоретически порядковые номера могут совершить полный круг за один час, хотя на практике это занимает значительно больше времени. Порядковые номера используются как для подтверждений, так и для механизма скользящего окна, использующих отдельные 32-разрядные поля заголовка.

Две TCP-сущности обмениваются данными в виде сегментов. Сегмент состоит из фиксированного 20-байтового заголовка (плюс необязательная часть), за которым могут следовать байты данных. Размер сегментов ограничен двумя пределами. Во-первых, каждый сегмент, включая TCP-заголовок, должен помещаться в 65 535-байтовое поле полезной нагрузки IP-пакета. Во-вторых, в каждой сети есть максимальная единица передачи (MTU), и каждый сегмент должен помещаться в MTU. На практике размер максимальной единицы передачи составляет несколько тысяч байт, определяя, таким образом, верхний предел размера сегмента. Если сегмент проходит через последовательность сетей и попадает в сеть, чья MTU-единица оказывается меньше размера сегмента, пограничный маршрутизатор фрагментирует сегмент на две или более части.

При фрагментации каждый новый сегмент получает свой IP-заголовок (20 байт), что увеличивает накладные расходы.

Основным протоколом, используемым TCP-сущностями, является протокол скользящего окна. При передаче сегмента отправитель включает таймер. Когда сегмент прибывает в пункт назначения, получающая TCP-сущность посылает обратно сегмент (с данными, если ей есть, что посылать, или без данных) с номером подтверждения, равным следующему порядковому номеру ожидаемого сегмента. Если время ожидания подтверждения истекает, отправитель посылает сегмент еще раз.

Протокол IP входит в состав стека протоколов TCP/IP и является основным протоколом сетевого уровня, использующимся в Интернет и обеспечивающим единую схему логической адресации устройств в сети и маршрутизацию данных. Протокол IP используется для негарантированной доставки данных, разделяемых на так называемые пакеты от одного узла сети к другому.

Каждый IP-адрес состоит из двух частей — идентификатора сети (network ID) и идентификатора узла (host ID). Первый определяет физическую сеть. Он одинаков для всех узлов в одной сети и уникален для каждой из сетей, включенных в объединённую сеть.

Идентификатор узла должен иметь уникальное значение в данной сети. Каждый узел TCP/IP однозначно определяется по своему логическому IP-адресу.

Основные классы:

Класс А

Адреса класса А назначаются узлам очень большой сети. Старший бит в адресах этого класса всегда равен нулю. Следующие семь бит первого октета представляют идентификатор сети. Оставшиеся 24 бита (три октета) содержат идентификатор узла. Это позволяет иметь 126 сетей с числом узлов до 17 миллионов в каждой.

Класс В

Адреса класса В назначаются узлам в больших и средних по размеру сетях. В двух старших битах IP-адреса класса В записывается двоичное значение 10. Следующие 14 бит содержат идентификатор сети (два первых октета). Оставшиеся 16 бит (два октета) представляют идентификатор узла. Таким образом, возможно существование 16 384 сетей класса В, в каждой из которых около 65 000 узлов.

Класс С

Адреса класса С применяются в небольших сетях. Три старших бита IP-адреса этого класса содержат двоичное значение 110. Следующие 21 бит составляет идентификатор сети (первые три октета). Оставшиеся 8 бит (последний октет) отводится под идентификатор узла. Всего возможно около 2 000 000 сетей класса С, содержащих до 254 узлов.

Начнем изучение сетевого уровня Интернета с формата IP-дейтаграмм (пакетов). IP-дейтаграмма состоит из заголовка и текстовой части. Заголовок содержит фиксированную 20-байтовую часть и необязательную часть переменной длины. Формат заголовка показан на рис. 5.39. Он передается слева направо, то есть старший бит поля Версия передается первым.

Рис.: Заголовок IP-дейтаграммы

Поле Версия содержит версию протокола, к которому принадлежит дейтаграмма. Включение версии в каждую дейтаграмму позволяет использовать разные версии протокола на разных машинах.

Поле IHL содержит длину заголовка в 32-разрядных словах. Минимальное значение длины (при отсутствии необязательного поля) равно 5. Максимальное значение этого 4-битового поля равно 5, что соответствует заголовку длиной 60 байт, таким образом, максимальный размер необязательного поля равен 40 байтам.

Поле Тип службы позволяет хосту указать подсети, какой вид сервиса ему нужен.

Поле Полная длина включает всю дейтаграмму, заголовок плюс данные. Максимальная длина дейтаграммы 65 535 байт. В настоящий момент этот верхний предел достаточен, однако с появлением гигабитных сетей могут понадобиться дейтаграммы большего размера.

Поле Идентификатор позволяет хосту-получателю определить, какой дейтаграмме принадлежат полученные им фрагменты. Все фрагменты дейтаграммы содержат то же самое значение идентификатора.

Следом идет неиспользуемый бит и два однобитовых поля. Бит DF означает Don't Fragment (не фрагментировать), то есть команду маршрутизатору не фрагментировать дейтаграмму, так как получатель не сможет восстановить ее из фрагментов. Например, при загрузке компьютера его ПЗУ может запросить переслать по сети ему образ памяти в виде единой дейтаграммы. Пометив дейтаграмму битом DF, отправитель гарантирует, что дейтаграмма дойдет единым куском, даже если для ее доставки придется избегать сетей с маленьким размером пакетов. От всех машин требуется способность принимать фрагменты размером 576 байт и менее.

Бит MF означает More Fragments (продолжение следует). Он устанавливается у всех фрагментов, кроме последнего. По этому биту получатель узнает, получил ли он все фрагменты дейтаграммы.

Поле Смещение фрагмента указывает положение фрагмента в оригинальной дейтаграмме. Длина всех фрагментов в байтах, кроме длины последнего фрагмента, должна быть кратна 8. Так как на это поле выделено 13 бит, максимальное количество фрагментов в дейтаграмме равно 8192, что дает максимальную длину дейтаграммы в 65 536 байт, что на один байт больше, чем может содержаться в поле Полная длина.

Поле Время жизни представляет собой счетчик, ограничивающий время жизни пакета. Предполагалось, что он будет отсчитывать время в секундах, таким образом, допуская максимальное время жизни пакета в 255 с. Когда значение этого поля становится равным нулю, пакет отвергается, а отправителю отсылается пакет с предупреждением.

Собрав дейтаграмму из фрагментов, сетевой уровень должен решить, что с ней делать. Поле Протокол сообщит ему, какому процессу транспортного уровня ее передать. Это может быть TCP, UDP или какой-нибудь другой процесс.

Поле Контрольная сумма заголовка защищает от ошибок только заголовок. Подобная контрольная сумма полезна для обнаружения ошибок, вызванных неисправными микросхемами памяти маршрутизаторов.

Поля Адрес отправителя и Адрес получателя указывают номер сети и номер хоста. Адреса Интернета будут обсуждаться в следующем разделе. Размер поля Необязательная часть должен быть кратен 4 байтам. На сегодняшний день определены пять разновидностей этого поля, перечисленные в табл. 5.6, однако не все маршрутизаторы поддерживают их всех.

Таблица : Типы необязательного поля IP-дейтаграммы

Тип

Описание

Безопасность

Указывает уровень секретности дейтаграммы

Строгая маршрутизация от источника

Задает полный путь следования дейтаграммы

Свободная маршрутизация от источника

Задает список маршрутизаторов, которых нельзя миновать

Запомнить маршрут

Требует от всех маршрутизаторов добавлять свой IP-адрес

Временной штамп

Требует от всех маршрутизаторов добавлять свой IP-адрес и текущее время

Подобно модулю UDP, прикладные процессы взаимодействуют с модулем TCP через порты, которые имеют общеизвестные адреса (номера). TCP — «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности.

В отличие от TCP, UDP не гарантирует доставку пакета, поэтому этот протокол считается ненадежным. Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных.

Если требуется передавать сообщения на высокоскоростных сетях с короткими соединениями, то лучше подходит протокол UDP. Протокол UDP обеспечивает только доставку дейтаграммы и не гарантирует её выполнение. При обнаружении ошибки дейтаграмма просто стирается. Протокол не поддерживает виртуального соединения с удалённым модулем UDP. Чаще всего базируется на принципах динамической маршрутизации (каждая дейтаграмма передаётся по оптимальному маршруту). Основное достоинство — простота.