logo
Зимняя сессия 2014 / Вычислительные системы / Курс лекций по ар-реКомп

Лекция 9.

Стек коммуникационных протоколов ТСР/IP. Протоколы TCP и IP.

Вопросы:

  1. Понятие составной сети

  2. Стек TCP/IP

Составная сеть (internet) является совокупностью нескольких сетей (подсетей), которые соединяются между собой маршрутизаторами.

Все узлы внутри одной подсети взаимодействуют по собственной технологии. Но каждая из таких технологий не способна организовать взаимодействие производственными узлами составной сети. Средства для организации взаимодействия между любой парой узлов составной сети предоставляет – сетевой уровень.

На сетевом уровне решаются следующие проблемы:

  1. адресация

Из-за различий систем адресаций подсетей, сетевой уровень использует собственную схему адресации.

Адрес сетевого уровня представляет собой пару номеров:

а) номер подсети

б) номер узла этой подсети

  1. маршрутизация.

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

Передача данных стекам TCP/IP основан на коммутации пакетов. Базовым протоколом сетевого уровня в этом стеке является протокол IP – протокол негарантированной доставки пакетов без установления соединения.

IP- internet protocol . В стеке TCP/IP общая задача организации надёжной и производительной доставки данных составной сети делится на 4 уровня:

  1. прикладной

  2. транспортный

  3. сетевой

  4. уровень сетевых интерфейсов

Уровни ЭМВОС

стек TCP/IP

уровни

протоколы

  1. прикладной

6.представления

5. сеансовый

прикладной

HTTP,FTP,SMTP,SNTP….

4. транспортный

транспортный

TCP,UDP

3. сетевой

сетевой

IP,RIP,ARP

2 . канальный

1. физический

уровень сетевых интерфейсов

ПРОТОКОЛЫ ИНКАНСУЛЯЦИИ ДАННЫХ

Прикладной уровень стека TCP/IP объединяет большое число протоколов и служб, предоставляемых пользователям предложений:

HTTP-hyper text transfer

FTP – file transfer

TFTP – trivial file transfer

SMTP – simple mail IP

DSN- Domain Name System

Транспортный уровень обеспечивает надёжную информационную связь между любой парой конечных узлов составной сети.

TCP – transmission Control Protocol

UDP- User Datagram protocol

Сетевой уровень основа всей архитектуры TCP/IP. Обеспечивает передачу пакетов, установления соединения: Datagram способом.

Уровень сетевых интерфейсов – используется для организации взаимодействия с локальными технологиями подсетей.

Протоколы TCP и IP

Вопросы:

1.Протокол TCP

2.Протокол IP

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

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

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

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

Хотя этот протокол кажется простым, в нем имеется несколько деталей, которые следует рассмотреть подробнее. Например, поскольку сегменты могут фрагментироваться, возможна ситуация, в которой часть переданного сегмента будет принята, а остальная часть окажется потерянной. Кроме того, сегменты могут прибывать не в том порядке, так что возможна ситуация, в которой байты с 3072 по 4095 уже прибыли, но подтверждение для них не может быть выслано, так как байты с 2048 по 3071 еще не получены. К тому же, сегменты могут так надолго задерживаться в сети, что у отправителя истечет интервал ожидания и он передаст их снова. Если переданный повторно сегмент пройдет по другому маршруту и будет по-другому фрагментирован, отдельные части оригинала и дубликата будут появляться спорадически, в результате для восстановления исходного сегмента потребуется более сложная обработка. Наконец, сегмент может по дороге случайно попасть в перегруженную (или поврежденную) сеть.

Протокол TCP должен уметь справляться с этими проблемами и решать их эффективно. Оптимизации производительности TCP-потоков были уделены значительные усилия. В следующем разделе мы обсудим несколько алгоритмов, используемых в различных реализациях протокола TCP.

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

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

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

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

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

Само 8-разрядное поле Тип службы состоит из трехбитового поля Precedence, трех флагов, D, Т и R и двух неиспользуемых битов. Поле Precedence является приоритетом, от 0 (нормальный) до 7 (управляющий сетевой пакет). Три флаговых бита позволяют хосту указать, что беспокоит его сильнее всего, выбрав из набора {Delay, Throughput, Reliability} (задержка, пропускная способность, надежность). В теории эти поля позволяют маршрутизаторам выбрать между спутниковой линией с высокой пропускной способностью и большой задержкой и выделенной линией с низкой пропускной способностью и небольшой задержкой. На практике сегодняшние маршрутизаторы игнорируют поле Тип службы полностью.

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

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

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

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

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

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

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

Поле Контрольная сумма заголовка защищает от ошибок только заголовок. Подобная контрольная сумма полезна для обнаружения ошибок, вызванных неисправными микросхемами памяти маршрутизаторов. Алгоритм вычисления суммы просто складывает все 16-разрядные полуслова в дополнительном коде, преобразуя результат также в дополнительный код. Таким образом, проверяемая получателем контрольная сумма заголовка (вместе с этим полем) должна быть равна нулю. Этот алгоритм надежнее, чем нормальное суммирование. Обратите внимание, что значение этого поля должно быть сосчитано заново на каждом транзитном участке, так как по крайней мере одно поле постоянно меняется (поле Время жизни), но для ускорения расчетов применяются хитрые способы.

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

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

Тип

Описание

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

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

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

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

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

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

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

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

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

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

Параметр Безопасность указывает уровень секретности дейтаграммы. Теоретически военный маршрутизатор может использовать это поле, чтобы запретить маршрутизацию дейтаграммы через определенные государства. На практике все маршрутизаторы игнорируют этот параметр, так что его единственное практическое применение состоит в помощи шпионам в поиске ценной информации.

Параметр Строгая маршрутизация от источника задает полный путь следования дейтаграммы от отправителя до получателя в виде последовательности IP-адресов. Дейтаграмма обязана следовать именно по этому маршруту. Наибольшая польза этого параметра заключается в возможности системному менеджеру послать экстренные пакеты, когда таблицы маршрутизатора повреждены или для тестирования сети.

Параметр Свободная маршрутизация от источника требует, чтобы пакет прошел через указанный список маршрутизаторов в указанном порядке, но при этом по пути он может проходить через любые другие маршрутизаторы. Обычно этот параметр для задания пути указывает лишь небольшое количество маршрутизаторов. Например, чтобы заставить пакет, посылаемый из Лондона в Сидней, двигаться не на восток, а на запад, этим параметром можно указать маршрутизаторы в Нью-Йорке, Лос-Анджелесе и Гонолулу. Этот параметр наиболее всего полезен, когда по политическим или экономическим соображениям следует избегать прохождения пакетов через определенные государства.

Параметр Запомнить маршрут требует от всех маршрутизаторов, встречающихся по пути следования пакета, добавлять свой IP-адрес к полю Необязательная часть. Этот параметр позволяет системным менеджерам вылавливать ошибки в алгоритмах маршрутизации ("Почему все пакеты, посылаемые из Хьюстона в Даллас, сначала попадают в Токио?"). Когда была создана сеть ARPANET, ни один пакет никогда не проходил больше чем через девять маршрутизаторов, поэтому 40 байтов для этого параметра было как раз достаточно. Как уже говорилось, сегодня размер поля Необязательная часть слишком мал.

Наконец, параметр Временной штамп действует полностью аналогично параметру Запомнить маршрут, но кроме 32-разрядного IP-адреса каждый маршрутизатор также записывает 32-разрядную запись о текущем времени. Этот параметр также применяется в основном для отладки алгоритмов маршрутизации.