450 likes | 780 Vues
Сети ЭВМ и телекоммуникации. Стеки протоколов. Стек протоколов – это иерархически организованная совокупность протоколов, достаточная для реализации взаимодействия узлов в компьютерной сети. Существующие стеки протоколов: TCP/IP , IPX/SPX , NetBIOS/SMB , DECnet , SNA ,
E N D
Стеки протоколов • Стек протоколов – это иерархически организованная совокупность протоколов, достаточная для реализации взаимодействия узлов в компьютерной сети. • Существующие стеки протоколов: TCP/IP, IPX/SPX, NetBIOS/SMB, DECnet, SNA, VOIP и SIP. • Все протоколы (кроме SNA) одинаковы на физическом и на канальном уровне, но на других уровнях используют разные протоколы.
IPX/SPX • IPX/SPX (Internetwork Packet eXchange/Sequenced Packet eXchange - межсетевой обмен пакетами/последовательный обмен пакетами) — стек протоколов, используемый в сетях Novell NetWare. • Протокол IPX обеспечивает сетевой уровень (доставку пакетов, аналог IP), SPX — транспортный и сеансовый уровни (аналог TCP). • Изначально был разработан Novell для DOS и широко применялся как в корпоративных сетях, так и для сетевых игр. Клиент был выполнен в виде резидентной программы. Первые реализации требовали создания исполняемого файла под каждую сетевую карту.
NetBIOS • NetBIOS (Network Basic Input/Output System) — протокол для работы в локальных сетях на персональных ЭВМ типа IBM/PC. Протокол расширяет стандартные функции BIOS, обеспечивая поддержку сети. • Был разработан фирмой Sytek Corporation по заказу IBM в 1983 году. Включает в себя интерфейс сеансового уровня (NetBIOS interface), в качестве транспортных протоколов использует TCP и UDP. • NetBEUI – протокол расширенного пользовательского интерфейса NetBIOS, предоставляет функции сеансового, транспортного и сетевого уровня. Но невозможна маршрутизация на этом протоколе. • NetBIOS может работать поверх разных протоколов, например: NetBEUI, IPX и стек протоколов TCP/IP. Используется в небольших сетях (до 200 рабочих станций). • NetBIOS обеспечивает: • регистрацию и проверку сетевых имен; • установление и разрыв соединений; • связь с гарантированной доставкой информации; • связь с негарантированной доставкой информации; • поддержку управления и мониторинга драйвера и сетевой карты.
Пакет NETBIOS поддерживает как режим сессий (работа через соединение), так и режим дейтограмм (без установления соединения). 16-и символьные имена объектов в netbios распределяются динамически. netbios имеет собственную dns, которая может взаимодействовать с dns-интернета. • Приложения могут через netbios найти нужные им ресурсы, установить связь и послать или получить информацию. NETBIOS использует для службы имен порт 137, для службы дейтограмм - порт 138, а для сессий - порт 139. • Любая сессия начинается с netbios-запроса, задания ip-адреса и определения tcp-порта удаленного объекта, далее следует обмен NETBIOS-сообщениями, после чего сессия закрывается. • Все оконечные узлы netbios делятся на три типа: • Широковещательные ("b") узлы; • узлы точка-точка ("p"); • узлы смешанного типа ("m").
Формат кадра сообщения NetBIOS Длина (Length), 2 байта. Указывает длину поля заголовка NBF (включая поле длины). Разделитель (Delimiter), 2 байта. Объявляет, что следующие за ним данные предназначены для интерфейса NetBIOS. Команда (Command), 1 байт. Определяет функцию сообщения. Сообщения с кодами в диапазоне от 00 до 0Е передаются как кадры ненумерованной информации, в то время как коды команд, начиная с OF и до 1F, пересылаются как протокольные блоки данных информационного формата LLC (I-format LPDU).
Данные1 (Datal), 1 байт. Содержит необязательные данные, специфические для типа сообщения. Данные2 (Data2), 2 байта. Содержит необязательные данные, специфические для типа сообщения. Корреляторпередачи (TransmitCorrelator), 2 байта. Представляет собой шестнадцатеричное значение от 0001 до FFFF, используемое для связи запроса с ответом. Корреляторответа (ResponseCorrelator), 2 байта. Объявляет шестнадцатеричное число от 0001 до FFFF, которое указывает на значение, ожидаемое в поле коррелятора передачи в ответном сообщении. Имя назначения (DestinationName), 16 байтов. Определяет имя NetBIOS системы, которой предназначено сообщение (не включается в пакеты, доставляемые в рамках сессии). Имя источника (SourceName), 16 байтов. Идентифицирует NetBIOS имя локальной системы (не включается в пакеты, доставляемые в рамках сессии). Номер сессии назначения (DestinationNumber), 1 байт. Указывает номер сессии системы-получателя (не включается в служебные пакеты дейтаграмм, диагностики и сервиса имен). Номер сессии источника (SourceName), 1 байт. Указывает номер сессии системы-отправителя (не включается в служебные пакеты дейтаграмм, диагностики и сервиса имен). Необязательное поле (Optional), переменная длина. Размещает в себе содержательные данные, передаваемые в рамках сессии и пакетами дейтаграмм (не включается в служебные пакеты диагностики и имен).
Перечень команд • 00 — запрос добавления группового имени (ADD GROUP NAME QUERY). • 01 — запрос добавления имени (ADD NAME QUERY). • 02 - конфликт имен (NAME IN CONFLICT). • 03 — запрос статуса (STATUS QUERY). • 07 — прекращение трассировки (TERMINATE TRACE). • 08 — дейтаграмма (DATAGRAM). • 09 — широковещательная передача дейтаграммы (DATAGRAM BROADCAST). • OA - запрос имени (NAME QUERY). • 0D — ответ на запрос добавления имени (ADD NAME RESPONSE). • 0E - имя распознано (NAME RECOGNIZED). • OF — ответ на запрос статуса (STATUS RESPONSE). • 13 — прекращение (локальное и удаленное) трассировки (TERMINATE TRACE). • 14 — подтверждение приема данных (DATA ACK). • 15 — любой не последний сегмент (DATA FIRST MIDDLE). • 16 — последний сегмент (DATA ONLY LAST). • 17 — подтверждение сессии (SESSION CONFIRM). • 18 — завершение сессии (SESSION END). • 19 — инициализация сессии (SESSION INITIALIZE). • 1A — данные не приняты (NO RECEIVE). • IB - ожидание приема (RECEIVE OUTSTANDING). • 1С — продолжение приема (RECEIVE CONTINUE). • IF — сессия активна (SESSION ALIVE).
Формат кадра протокола NBFCP • Для подключения терминальной системы к локальной сети или к другой терминальной системе разработан протокол NBFCP (NetBios frames controlprotocol, код поля протокола = 803F ), который, в свою очередь, базируется на протоколе PPP.
nbtstat Служит для отображения статистики протокола NetBIOS поверх TCP/IP (NetBT), таблиц имен NetBIOS для локального и удаленного компьютеров, а также кэша имен NetBIOS. Примеры: • nbtstat -a CORP07 определить таблицу имен удаленного компьютера, имеющего имя NetBIOS CORP07, • nbtstat -A 10.0.0.99 определить таблицу имен NetBIOS удаленного компьютера, имеющего IP-адрес 10.0.0.99, • nbtstat -n определить таблицу имен локального компьютера, • nbtstat –c определить содержимое кэша имен NetBIOS локального компьютера, nbtstat -R очистить кэш имен NetBIOS и перезагрузить записи #PRE из локального файла Lmhosts, • nbtstat -RR освободить имена NetBIOS, зарегистрированные на сервере WINS, и снова зарегистрировать их, • nbtstat -S 5 просмотреть статистику сеанса NetBIOS по IP-адресу с обновлением каждые пять секунд.
Протокол WINS Протокол WINS разработан компанией MicroSoft для операционной среды Windows и предназначен для расширения возможностей NetBIOS. WINS-запросы обычно транспортируются в UDP-дейтограммах. При этом используется порт отправителя=137. Идентификатор позволяет связать запрос с откликом. Далее следует 2 байта флагов, в случае запроса туда записывается 0. За ним размещается два октета, содержащие число вопросов, 2 октета числа ответов и еще 4 нулевых октетов. Завершается кадр запроса двумя октетами поля типа (00 21 -> статус узла NetBIOS) и полем класса (для Интернет 00 01 -> (IN,1)). Такие запросы позволяют получить дополнительные данные (имя узла, его MAC-адрес, NetBIOS-имя, имя группы) об ЭВМ с заданным IP-адресом. Причем эта ЭВМ может находиться где угодно в Интернет, но непременно работать в OS Windows.
SMB • SMB (ServerMessageBlock) — сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия. • Первая версия протокола была разработана компаниями IBM, Microsoft, Intel и 3Com в 1980-х годах. • Вторая (SMB 2.0) была создана Microsoft и появилась в Windows Vista. • В настоящее время SMB связан главным образом с операционными системами Microsoft Windows, где используется для реализации сети Microsoft Windows и совместного использования файлов и принтеров.
В 1992 году появилась Samba — свободная реализация протокола SMB для UNIX-подобных операционных систем (изначально для SunOS). В Windows 2000 впервые появился SMB непосредственно поверх TCP (без NetBIOS); для этого используется порт 445 (SMB через NBT использовал порт 139). SMB 2.0. Протокол был значительно упрощен (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования, возможности совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера. SMB 2 использует тот же порт (445) как и SMB, но другой заголовок пакетов (0xFF 'S' 'M' 'B' в SMB, 0xFE 'S' 'M' 'B' в SMB 2). Клиенты соединяются с сервером, используя протоколы TCP/IP (а, точнее, NetBIOS через TCP/IP), NetBEUI или IPX/SPX. После того, как соединение установлено, клиенты могут посылать команды серверу (SMB-команды или SMBs), который дает им доступ к ресурсам и позволяет открывать, читать файлы, писать в файлы и, вообще, выполнять весь перечень действий, которые можно выполнять с файловой системой.
Структура заголовка SMВ Command — команда протокола.RCLS — код класса ошибки.ERR — код ошибки.Tree ID (TID) — идентификатор соединения с сетевым ресурсом.Process ID (PID) — идентификатор клиентского процесса фактического соединения.User ID (UID) — идентификатор пользователя; используется сервером для проверки прав доступа пользователя.Multiplex ID (MID) — идентификатор группы пользователя; используется сервером для проверки прав доступа группы пользователя.WCT — количество параметров, следующих за заголовком.BCC — количество байт данных, следующих за параметрами.
Пример обмена пакетами протокола Microsoft SMB между клиентом и сервером • Клиент и сервер устанавливают сеанс NetBIOS. • Клиент и сервер договариваются о диалекте протокола SMB. • Клиент начинает работу (сеанс) на сервере. • Клиент соединяется с совместно используемым ресурсом на сервере. • Клиент открывает файл совместно используемого ресурса. • Клиент читает данные из файла.
Протоколы стека OSI отличает большая сложность и неоднозначность спецификаций. Эти свойства явились результатом общей политики разработчиков стека, стремившихся учесть в своих протоколах все многообразие уже существующих и появляющихся технологий. • На физическом и канальном уровнях стек OSI поддерживает протоколы Ethernet, TokenRing, FDDI, а также протоколы LLC, X.25 и ISDN, то есть использует все разработанные вне стека популярные протоколы нижних уровней, как и большинство других стеков. • Сетевой уровень включает сравнительно редко используемые протоколы Connection-orientedNetworkProtocol (CONP) и ConnectionlessNetworkProtocol (CLNP). Как следует из названий, первый из них ориентирован на соединение (connection-oriented), второй – нет (connectionless). • Более популярны протоколы маршрутизации стека OSI: ES-IS (EndSystem-IntermediateSystem) между конечной и промежуточной системами и IS-IS (IntermediateSystem-IntermediateSystem) между промежуточными системами. • Транспортный уровень стека OSI в соответствии с функциями, определенными для него в модели OSI, скрывает различия между сетевыми сервисами с установлением соединения и без установления соединения, так что пользователи получают требуемое качество обслуживания независимо от нижележащего сетевого уровня. Чтобы обеспечить это, транспортный уровень требует, чтобы пользователь задал нужное качество обслуживания. • Службы прикладного уровня обеспечивают передачу файлов, эмуляцию терминала, службу каталогов и почту. Из них наиболее популярными являются служба каталогов (стандарт X.500), электронная почта (X.400), протокол виртуального терминала (VTP), протокол передачи, доступа и управления файлами (FTAM), протокол пересылки и управления работами (JTM)
Распределение протоколов по уровням модели OSI
Стек протоколов TCP/IP из пособия системного администратора
Принципы взаимодействия протоколов разных уровней • В ходе обмена информацией протоколы тесно общаются друг с другом: • Приложения обмениваются информацией между собой при помощи протоколов прикладного уровня; • Протоколы прикладного уровня при обмене данными полагаются на работу транспортных протоколов; • Транспортные протоколы осуществляют передачу данных используя услуги сетевых протоколов (маршрутизация).
Примеры сетевых услуг • Хранение данных; • Поиск информации; • Почтовые услуги; • Передача сообщений и блоков данных; • Организация сеансов взаимодействия.
Межсетевой протокол IP • Цель – передать IP-пакет через ряд взаимосвязанных сетей. • Передача ip-пакета от узла к узлу осуществляется на основе интерпретации ip-адреса. • Выбор пути ip-пакета называется маршрутизацией. • В ряде случаев на маршруте пакет может быть фрагментирован.
Маршрутизация • Маршрутизация (Routing) — процесс определения маршрута следования информации в сетях связи. • Маршруты могут быть: • статические маршруты – задаваться административно, • динамические маршруты – вычисляться с помощью алгоритмов маршрутизации, базируясь на информации о топологии и состоянии сети, полученной с помощью протоколов маршрутизации. • Статическими маршрутами могут быть: • маршруты, не изменяющиеся во времени; • маршруты, изменяющиеся по расписанию; • маршруты, изменяющиеся по ситуации — административно в момент возникновения стандартной ситуации. • Маршрутизация в компьютерных сетях обычно выполняется специальными программно-аппаратными средствами — маршрутизаторами. В простых конфигурациях может выполняться компьютерами общего назначения.
Таблица маршрутизации • Таблица маршрутизации — электронная таблица (файл) или база данных, хранящаяся на маршрутизаторе или сетевом компьютере, описывающая соответствие между адресами назначения и интерфейсами, через которые следует отправить пакет данных до следующего маршрутизатора. • Таблица маршрутизации обычно содержит: • адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию; • маску сети назначения (для IPv4-сетей маска /32 (255.255.255.255) позволяет указать единичный узел сети); • шлюз, обозначающий адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения; • интерфейс (в зависимости от системы это может быть порядковый номер, GUID или символьное имя устройства); • метрику — числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут (интуитивно представляется как расстояние). • В таблице может быть один, а в некоторых операционных системах и несколько шлюзов по умолчанию.
Протоколы маршрутизации • Внутренний протокол маршрутизации RIP • Протокол OSPF (алгоритм Дейкстры) • Протокол IGRP • Внешний протокол BGP • Бесклассовая интердоменная маршрутизация (CIDR)
Схемы маршрутизации • Anycast (дословно — «посылка кому-нибудь») – метод рассылки пакетов (реализованный в протоколе IPv6), позволяющий устройству посылать данные ближайшему из группы получателей. • Из-за особенностей топологии сети или её политики ближайший узел не обязательно будет географически ближайшим. Broadcast (широковещание ) – схема возможна только в пределах одного сегмента сети. Однако пакеты данных могут быть посланы из-за пределов сегмента, в которой будет осуществлено широковещание. Нагрузка на сеть в случае широковещания не отличается от обычной передачи данных одному адресату, поскольку пакеты данных не размножаются (в отличие от групповой передачи, multicast). Multicast (групповая передача) — специальная форма широковещания, при которой сетевой пакет одновременно направляется определённому подмножеству адресатов — не одному (unicast), и не всем (broadcast). Наряду с приложениями, устанавливающими связь между источником и одним получателем, существуют такие, где требуется, чтобы источник посылал информацию сразу группе получателей.
IHL — длина заголовка IP-пакета в 32-битных словах (dword). Это поле указывает на начало блока данных в пакете. Минимальное корректное значение для этого поля равно 5. • Идентификатор — значение, назначаемое отправителем пакета и предназначенное для определения корректной последовательности фрагментов при сборке дейтаграммы. Для фрагментированного пакета все фрагменты имеют одинаковый идентификатор. • Флаги: • Первый бит должен быть всегда равен нулю, • Второй бит DF (don’tfragment) определяет возможность фрагментации пакета, • Третий бит MF (morefragments) показывает, не является ли этот пакет последним в цепочке пакетов. • Смещение фрагмента — значение, определяющее позицию фрагмента в потоке данных. • Время жизни (TTL) — число маршрутизаторов, которые должен пройти этот пакет. При прохождении маршрутизатора это число уменьшатся на единицу. Если значения этого поля равно нулю то, пакет должен быть отброшен и отправителю пакета может быть послано сообщение TimeExceeded (ICMP код 11 тип 0). • Протокол — идентификатор протокола следующего уровня (номер протокола следующего уровня). • Контрольная сумма заголовка — вычисляется с использованием операций поразрядного сложения 16-разрядных слов заголовка по модулю 2.
Тип обслуживания • Тип обслуживания (TypeofService, TOS) — байт, содержащий набор критериев, определяющих тип обслуживания IP-пакетов. Поле приоритет предоставляет возможность присвоить код приоритета каждой дейтограмме: 0 Обычный уровень 1 Приоритетный 2 Немедленный 3 Срочный 4 Экстренный 5 ceitic/ecp 6 Межсетевое управление 7 Сетевое управление
Биты TOS Биты C, D, T и R характеризуют пожелание относительно способа доставки дейтограммы: • D=1 требует минимальной задержки, • T=1 - высокую пропускную способность, • R=1 - высокую надежность, • C=1 - низкую стоимость. TOS играет важную роль в маршрутизации пакетов. Интернет не гарантирует запрашиваемый TOS, но многие маршрутизаторы учитывают эти запросы при выборе маршрута.
Значения TOS для разных протоколов
Поле опции(дополнительные параметры) • Поле опции не обязательно присутствует в каждой дейтограмме. • Размер поля опции зависит от того, какие опции применены. Если используется несколько опций, они записываются подряд без каких-либо разделителей. • Каждая опция содержит один октет кода опции, за которым может следовать октет длины и серия октетов данных. • Если место, занятое опциями, не кратно 4 октетам, используется заполнитель.
Формат поля опции • Флаг копия равный 1 говорит о том, что опция должна быть скопирована во все фрагменты дейтограммы. • Значения разрядов 2-битового поля класс опции: • 0 – дейтограмма пользователя или сетевое управление; • 1 – зарезервировано для будущего использования; • 2 – отладка и измерения (диагностика); • 3 – зарезервировано для будущего использования.
Временные метки и маршрутизация • Опция записать маршрут создает дейтограмму, где зарезервировано место, куда каждый маршрутизатор по дороге должен записать свой IP-адрес (например, утилита traceroute). Формат опции записать маршрут в дейтограмме представлен ниже.
Формы маршрутизации • Существует две формы маршрутизации: • Свободная маршрутизация; • Жесткая маршрутизация. Жесткая маршрутизация означает, что адреса определяют точный маршрут дейтограммы. Проход от одного адреса к другому может включать только одну сеть. Свободная маршрутизация отличается от предшествующей возможностью прохода между двумя адресами списка более чем через одну сеть. Поле длина задает размер списка адресов, а указатель отмечает адрес очередного маршрутизатора на пути дейтограммы.
Порядок просмотра маршрутной таблицы • Просмотр маршрутной таблицы происходит в три этапа: • Ищется полное соответствие адресу места назначения. В случае успеха, пакет посылается соответствующему маршрутизатору или непосредственно интерфейсу адресата. Связи точка-точка выявляются именно на этом этапе. • Ищется соответствие адресу сети места назначения. В случае успеха система действует также как и в предшествующем пункте. Одна запись в таблице маршрутизации соответствует всем ЭВМ, входящим в данную сеть. • Осуществляется поиск маршрута по умолчанию и, если он найден, дейтограмма посылается в соответствующий маршрутизатор.
Запись маршрута • Опция временные метки работает также как и опция запись маршрута. • Каждый маршрутизатор на пути дейтограммы делает запись в одном из полей дейтограммы (два слова по 32 разряда). Смысл полей длина и указатель идентичен тому, что сказано о предыдущих опциях. 4-битовое поле переполнение содержит число маршрутизаторов, которые не смогли записать временные метки из-за ограничений выделенного места в дейтограмме.
Временные метки Значения поля флаги задают порядок записи временных меток маршрутизаторами: Временные метки должны содержать время в миллисекундах, отсчитанное от начала суток.
Заголовок сегмента TCP Флаги (управляющие биты): URG —«Указатель важности»; ACK —«Номер подтверждения» ; PSH (Push function) —инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя; RST(Reset the connection)— оборвать соединения; SYN(Synchronize sequence numbers)— синхронизация номеров последовательности; FIN (FIN bit) — флаг указывает на завершение соединения. Указатель важности – 16-битовое значение положительного смещения от порядкового номера в данном сегменте. Поле указывает порядковый номер байта, которым заканчиваются важные данные. Поле принимается во внимание только для пакетов с установленным флагом URG.
Номер последовательности Выполняет две задачи: • Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (InitialSequenceNumber), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности, равный ISN + 1. • В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности. Поскольку поток TCP в общем случае может быть длиннее, чем число различных состояний этого поля, то все операции с номером последовательности должны выполняться по модулю 2^32. Это накладывает практическое ограничение на использование TCP. Если скорость передачи коммуникационной системы такова, чтобы в течение MSL (максимального времени жизни сегмента) произошло переполнение номера последовательности, то в сети может появиться два сегмента с одинаковым номером, относящихся к разным частям потока, и приёмник получит некорректные данные.