Ethernet рамкови формати
Въпреки съществуването на стандарт, Ethernet кадрите се различават един от друг по своя формат.
Както в производството, кадрите в Ethernet мрежата са всичко. Те служат като контейнер за всички пакети от високо ниво, следователно, за да се разберат взаимно, подателят и получателят трябва да използват един и същ тип Ethernet рамка. За щастие (или за съжаление), рамките могат да бъдат само четири различни формата и освен това те не се различават много един от друг. Освен това има само два основни формата на фреймовете (в английската терминология те се наричат "сурови формати") - Ethernet_II и Ethernet_802.3, като се различават само по предназначението на едно поле.
Съвременните компютърни мрежи по своята същност са разнородни и мрежовите протоколи на слой 3 често използват различни типове Ethernet рамки. И така, в по-старите версии на NetWare 3.x на Novell основният формат по подразбиране е Ethernet_802.3, а не 802.2 или SNAP, както е предвидено от стандартите IEEE, и никой друг не използва този формат освен него. С пускането на NetWare 4.x, IPX/SPX протоколите използват стандартни Ethernet_802.2 рамки по подразбиране и с планирания преход на IntranetWare към TCP/IP протоколи, тази мрежова ОС вероятно ще работи по подразбиране с Ethernet_SNAP рамки, тъй като това е форматът, използван в най-новите реализации на TCP/IP. Като цяло пакетите с IPX/SPX протокол могат да се изпращат с помощта на всякакъв тип рамка, така че — и тъй като типът Ethernet_802.3 се използва изключително от Novell — в този урок ще разгледаме Ethernet рамките предимно от гледна точка на мрежата на NetWare.
ETHERNET II
Въпреки че обичайно наричаме стандарта 802.3 Ethernet, това не е напълно правилно, тъй като последното име е търговска марка на Xerox, Intel иDigital, чиято технология послужи като прототип на този толкова обичан стандарт. Форматът Ethernet_II съответства на оригиналния формат на Ethernet рамка и има следната форма.
Като всеки кадър, Ethernet_II започва със седембайтов преамбюл от редуващи се 1s и 0s и еднобайтов начален разделител на кадъра, в който двата най-малко значими бита са 112, а не 102 като другите битове в преамбюла и разделителя. Въпреки това, за да бъдем по-точни, в Ethernet_II преамбюлът не е разделен на самия преамбюл и началния разделител на рамката - и това е една от разликите между Ethernet и IEEE 802.3, въпреки че е много незначителна, може да се каже, схоластична, особено след като много често преамбюлът обикновено се разглежда като част от механизма за физическа синхронизация на предавателната и приемащата страна, а не като част от рамката (следователно на фигурите няма да обозначаваме преамбюла и началния разделител).
Фигура 1. Базовите пакети Ethernet II и IEEE 802.3 имат една и съща структура. Тяхната разлика е в предназначението на 13-ия и 14-ия байт: съответно полетата тип протокол и дължина на рамката. Споделянето на различни формати на кадри в един и същ Ethernet сегмент е възможно, тъй като типът на протокола се характеризира с число, по-голямо от 0x05FE.
Полето тип протокол идентифицира протокола от високо ниво, като IP, AppleTalk и т.н., чийто пакет е контейнеризиран от рамка. По-долу изброяваме стойностите на полето тип протокол за някои общи мрежови протоколи:
-
Интернет протокол (IP) - 0x0800; Протокол за разрешаване на адреси (ARP) - 0x0806; AppleTalk - 0x809B; Мрежова система на Xerox (XNS) - 0x0600; NetWare IPX/SPX - 0x8137.
Следващото поле на рамката всъщност се използва за прехвърляне на информация за полезен товар (на ниво рамка към полезен товарние се позоваваме на такава служебна информация на протоколи от високо ниво като заглавката на пакета и т.н.).
За разлика от служебните полета, полето за данни е с променлива дължина и не може да бъде по-късо от 46 байта и по-дълго от 1500 байта. По този начин общата дължина на рамката, с изключение на преамбюла и началния разделител на рамката, е в диапазона от 64 до 1518 байта. В случай, че действителното количество предадени данни е по-малко от 46 байта (например за емулация на терминал често се предава само един знак, въведен от клавиатурата), полето за данни се допълва до минималния размер с контейнер. Байт за допълване може да бъде вмъкнат дори ако количеството данни за прехвърляне е повече от 46 байта. Както се предлага от Novell, ако броят на байтовете е нечетен, драйверът на NIC добавя още един. Това е така, защото някои по-стари рутери не разбират рамки с нечетна дължина.
Последното поле в рамката е четирибайтово поле за последователност за проверка на рамка (FCS). Стойността на това поле се изчислява от съдържанието на заглавката и данните (включително подпълването, но с изключение на преамбюла и терминатора), като се използва 32-битов цикличен код за излишък (CRC-32), като се използва следната формула (в двоичен код):
проверка на последователността = MOD(данни/полином)
В Ethernet генераторният полином е x 32 +x 26 +x 23 +x 23 +x 22 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +x+1. Този код ви позволява да откриете 99,999999977% от всички грешки в съобщения с дължина до 64 байта! По този начин вероятността приемащата станция да възприеме повредената рамка като цяло е практически нулева.
След получаване на рамката приемащата станция преизчислява контролната последователност и сравнява резултата ссъдържанието на полето FCS. В случай на несъответствие, пакетът се счита за повреден и се игнорира.
ОСНОВЕН РАМКОВ ФОРМАТ 802.3
Съгласно референтния модел на OSI, всяка протоколна единица данни съдържа (капсулира) пакетите от горните протоколи на своя стек. Протоколът 802.3 описва метод за достъп до средата за предаване - долния подслой на слоя за връзка, като за него покриващият протокол е логическият протокол
управление на канала (Logical Link Control, LLC) - горното подниво на слоя на връзката. По този начин, съгласно изискванията на стандарта, полето за данни трябва да съдържа LLC хедъра. В ранните версии на NetWare Novell пренебрегваше този хедър и поставяше IPX/SPX пакети директно след полето за дължина на рамката, а полето за данни започваше като нормален IPX хедър, с два байта от 1 (число 0xFFFF). С други думи, Novell използва рамки просто като контейнер.
По принцип използването на основния формат на рамката 802.3 без излишните разходи на горния слой на връзката позволява на Novell да намали донякъде служебните разходи за кадри. Печалбата обаче е малка и в разнородна среда използването на нестандартен формат води до загуба, тъй като рутерът или NIC трябва да проверяват допълнителни полета, за да определят типа на пакета. Това беше една от мотивите защо, започвайки с версия 4.0, Novell премина по подразбиране към стандартния формат Ethernet_802.2. Друга причина беше, че използването на базови рамки Ethernet_802.3 направи невъзможно използването на опции за сигурност като подписване на пакети, тъй като полето за контролна сума на пакета беше фиксирано на 0xFFFF, така че рамката Ethernet_802.3 да може да се разграничи от други типове рамки.
ДВЕСТАНДАРТЕН ФОРМАТ
Спецификациите на IEEE предоставят само два стандартни формата - 802.2 и 802.2 SNAP, като вторият е естествено продължение на първия. Както вече беше споменато, стандартният кадър трябва да съдържа в полето за данни сервизната информация за логическия контрол на канала, а именно еднобайтовото поле на точката за достъп до услугата местоназначение (DSAP), еднобайтовото поле на точката за достъп до услугата за подателя (Source Service Access Point, SSAP) и еднобайтовото контролно поле (вижте Фигура 2). Присвояването на номера на точки за достъп до услуги (SAP) се обработва от IEEE и е идентифицирал следните номера:
-
0xE0 за Novell; 0xF0 за NetBIOS; 0x06 за TCP/IP; AA за SNAP.
Фигура 2. Форматът IEEE 802.2 SNAP е разширение на стандартния формат IEEE 802.2. И двата вида рамки съдържат 802.2 LLC хедър в началото на полето с данни.
Полетата DSAP и SSAP се използват за дефиниране на протокола за наслагване и обикновено съдържат една и съща стойност. Контролното поле обикновено е зададено на 0x03 (според протокола LLC, това означава, че връзката на слоя за връзка не е установена).
Протоколът за достъп до подмрежа (SNAP) е проектиран да увеличи броя на поддържаните протоколи, тъй като еднобайтовите SAP полета позволяват да се поддържат максимум 256 протокола. Форматът Ethernet_SNAP предоставя допълнително петбайтово поле за идентификация на протокола (Protocol Identification, PI) вътре в полето за данни и стойностите на последните два байта от това поле са същите като стойностите на полето на протокола в Ethernet_II, ако кадрите съдържат пакети от същия протокол от високо ниво, например те са 0x8137 за NetWare.
АЛГОРИТЪМ ЗА ОПРЕДЕЛЯНЕАСПЕКТ АСПЕКТ
Разграничаването на един формат на Ethernet рамка от друг не е трудно и това може да стане с помощта на следния прост алгоритъм (вижте Фигура 3). Първо, драйверът трябва да провери стойността на полето тип протокол/дължина на рамката (13-ти и 14-ти байт в заглавката). Ако записаната там стойност е по-голяма от 0x05FE (максималната възможна дължина на рамката), тогава това е Ethernet_II рамка.

Ако не, трябва да продължите проверката. Ако първите два байта са 0xFFFF, тогава това е Ethernet_802.3 формат за NetWare 3.x. В противен случай това е стандартният формат на рамка 802.2 и ние просто трябва да разберем кой от двата е нормален (Ethernet_802.2) или разширен (Ether-net_SNAP). В случая на Ethernet_SNAP обаче стойността на първия, както и на втория байт в полето за данни е 0xAA. (Стойността на третия байт е 0x03, но това не е необходимо да се проверява.)
Различните протоколи използват различни формати на рамки (вижте Таблица 1). Броят на последните обаче не е толкова голям и е лесно да се разграничат един от друг. В допълнение, TCP / IP протоколът се премества в доминираща позиция не само в глобалните мрежи, но и в локалните мрежи, така че дори Novell реши да изостави своя IPX / SPX протокол в полза на TCP / IP в следващата версия на NetWare. Това означава, че в повечето случаи мрежовият администратор няма да се притеснява кой формат на Ethernet рамката се използва. Въпреки това, както показва опитът, наследените технологии живеят доста дълго време, така че познаването на форматите на кадрите може да бъде от не само теоретичен, но и практически интерес.
ТАБЛИЦА 1 - ПРОТОКОЛИ И СЪОТВЕТНИ ТИПОВЕ РАМКИ
Метод за идентификация на протокола за наслагване