Опции могут присутствовать в любой датаграмме, но должны всегда быть обработаны. А именно, наличие или отсутствие какой-либо опции дело отправителя, но каждый Internet модуль должен быть в состоянии произвести разбор каждой опции.
Опции могут оканчиваться не на 32-битной границе. В этом случае Internet заголовок может дополняться нулевыми октетами. Первый из них должен интерпретироваться как заключительная опция, а остальные - как октеты выравнивания Internet заголовка по границе.
Каждый Internet модуль должен быть в состоянии реагировать на каждую опцию. Например, опция безопасности требует классификации, внесения ограничений, или передачи по изолированному пути.
Options (опции) поле переменной длины. Опции могут появиться в датаграммах, а могут и не появляться. Признаком наличия опций является превышение указанной в первом байте длины заголовка значения длины фиксированной части заголовка (=20).
Длина поля опций Lopc определяется по следующей формуле:
Lopc=4*Lzag - 20;
где Lzag - значение поля длина заголовка в первом байте,
20 - длина фиксированной части заголовка.
Опции должны поддерживаться всеми Internet модулями (хостами и шлюзами). Не обязательно каждая конкретная датаграмма несет опции, но нести их все же может. В некоторых приложениях опция секретности должна присутствовать во всех датаграммах. Поле опций не имеет постоянной длины. Опций может не быть, а может быть несколько.
Типы и форматы полей опций можно найти здесь.
Существуют два формата опции:
- единичный октет с указанием типа опции
- единичный октет с указанием типа опции, октет для указания длины опции, и, наконец, октеты собственно данных.
Октет длины поля учитывает октет типа опции, сам себя и октеты с данными для опции.
Считается, что октет типа опции состоит из трех полей:
1 | бит | флаг копирования |
2 | бита | класс опции |
5 | бит | номер опции |
Флаг копирования показывает, что эта опция копируется во все фрагменты при фрагментации.
0 | - не копируется |
1 | - копируется |
Классы опции
0 | - управление |
1 | - резервировано |
2 | - отладка и измерения |
3 | - резервировано |
Определены следующие опции Internet
класс | номер | длина | описание |
0 | 0 | - | Конец списка опций. Эта опция занимает лишь один октет, октет длины отсутствует. |
0 | 1 | - | Нет операции. Эта опция занимает лишь один октет. Не имеет октета длины. |
0 | 2 | 11 | Безопасность. Используется для поддержания безопасности, изоляции, разделения на группы пользователей (TCC), обработки кодов ограничения, соответствующих DOD требованиям. |
0 | 3 | перем | Потеря маршрута отправителя. Используется для передачи Internet датаграммы, основанной на имеющейся у отправителя информации |
0 | 9 | перем | Определение маршрута отправителя. Используется для передачи Internet датаграммы, основанной на имеющейся у отправителя информации |
0 | 7 | перем | Запись маршрута. Используется для отслеживания проходимого Internet датаграммой маршрута. |
0 | 8 | 4 | Идентификатор маршрута. Используется для поддержки идентификации потока. |
2 | 4 | перем | Временной штамп Internet. |
Отдельные описания опций
Тип 0 | 00000000 | End of Option List (конец списка опций) |
Эта опция обозначает конец списка опций. Он может не совпадать с окончанием Internet заголовка, обозначаемым полем Internet header length. Эта опция используется после всех опций, но не после каждой. Она необходима только в том случае, если конец списка опций не совпал с окончанием Internet заголовка.
Может быть скопирован, внесен или удален при фрагментации, или по какой-либо другой причине.
Тип 1 | 00000001 | No operation (нет действий) |
Тип 130 | Security (безопасность) |
10000010 | 00001011 | SSS...SSS | CCC...CCC | HHH...HHH | TCC |
00000000 | 00000000 | - не классифицировано |
11110001 | 00110101 | - конфиденциальный |
01111000 | 10011010 | - EFTO |
10111100 | 01001101 | - MMMM |
01011110 | 00100110 | - PROG |
10101111 | 00010011 | - ограниченный |
11010111 | 10001000 | - секретный |
01101011 | 11000101 | - особо секретный |
00110101 | 11100010 | - резервировано |
10011010 | 11110001 | - резервировано |
01001101 | 01111000 | - резервировано |
00100100 | 10111101 | - резервировано |
00010011 | 01011110 | - резервировано |
10001001 | 10101111 | - резервировано |
11000100 | 11010110 | - резервировано |
11100010 | 01101011 | - резервировано |
Тип 131 | Loose Source and Record Route (Потеря отправителя и запись маршрута) |
10000011 | длина | указатель | данные о маршруте |
Тип 137 | Strict Source and Record Route (Уточнить отправитель и записать маршрут) |
10001001 | длина | указатель | данные о маршруте |
Тип 7 | Record Route | (Записать маршрут) |
00000111 | длина | указатель | данные о маршруте |
Тип 136 | (длина 4) | Stream Identifier | (Идентификатор потока) |
10001000 | 00000010 | идентификатор потока |
Тип 68 | Internet timestamp | (Временной штамп Internet) |
01000100 | длина | указатель | oflw | flg |
Internet адрес | ||||
Timestamp |
0 | - оставлять лишь временные штампы, размещенные в следующих друг за другом 32-битных словах |
1 | - каждому временному штампу предшествует Internet адрес регистрируемого объекта |
3 | - поля Internet адресов определены заранее. IP модуль лишь регистрирует свой временной штамп если его собственный адрес совпадает со следующим указанным Internet адресом. |
Функция или цель протокола Internet состоит в передаче датаграммы через набор объединенных компьютерных сетей. Это осуществляется посредством передачи датаграмм от одного модуля Internet к другому до тех пор, пока не будет достигнут получатель. Модули Internet находятся на хостах и шлюзах системы Internet. Датаграммы направляются с одного модуля Internet на другой через конкретные компьютерные сети, основанные на интерпретации Internet адресов. Таким образом, одним из важных механизмов протокола Internet является Internet адрес.
При передаче сообщений с одного Internet модуля на другой датаграммы могут нуждаться в прохождении через сети, для которых максимальный размер пакета меньше, чем размер датаграммы. Чтобы преодолеть эту сложность, в протокол Internet включен механизм фрагментации.
Адресация. В протоколе сделано разграничение между именами, адресами и маршрутами. Имя показывает искомый нами объект. Адрес показывает его местонахождение. Internet имеет дело с адресами. Перевод имен в адреса является задачей протоколов более высокого уровня (прикладных программ или протоколов передачи синхронизации с хоста на хост). Собственно модуль Internet осуществляет отображение адресов Internet на адреса локальной сети. Создание карты адресов локальной сети для получения маршрутов - задача процедур более низкого уровня (процедур локальной сети или шлюзов).
Адреса имеют фиксированную длину четыре октета (32 бита). Адрес начинается с сетевого номера, за которым следует локальный адрес (называемый полем остатка "rest"). Существуют три формата или класса адресов Internet. В классе a самый старший бит нулевой. Следующие 7 бит определяют сеть. а последние 24 бита - локальный адрес. В классе b самые старшие два бита равны соответственно 1 и 0, следующие 14 бит определяют сеть, а последние 16 бит - локальный адрес. В классе с три самых старших бита равны соответственно 1,1 и 0, следующие 21 бит определяют сеть, а последние 8 бит - локальный адрес.
При отображении карты Internet адресов на адреса локальной сети следует соблюдать осторожность. Единичный хост-компьютер должен уметь работать так, как если бы на его месте существовало несколько отдельных хост-компьютеров для использования нескольких адресов Internet. Некоторые хост-компьютеры будут также иметь несколько физических интерфейсов (multi-homing).
Таким образом, следует обеспечить каждый хост-компьютер несколькими физическими сетевыми интерфейсами, имеющими по несколько логических адресов Internet.
Примеры построения карты адресов можно найти в документе "Address Mapping". Фрагментация. Фрагментация Internet датаграммы необходима, когда эта датаграмма возникает в локальной сети, позволяющей работать с пакетами большого размера, и затем должна пройти к получателю через другую локальную сеть, которая ограничивает пакеты меньшим размером.
Internet датаграмма может быть помечена как не фрагментируемая. Любая Internet датаграмма, помеченная таким образом, не может быть фрагментирована модулем Internet ни при каких условиях. Если же Internet датаграмма, помеченная как не фрагментируемая, тем не менее не может достигнуть получателя без фрагментации, то вместо этого она будет разрушена.
Фрагментация, перенос и сборка в локальной сети, невидимые для модуля Internet протокола, называются внутрисетевой фрагментацией и могут быть всегда использованы.
Необходимо, чтобы Internet процедуры фрагментации и сборки могли разбивать датаграмму на почти любое количество частей, которые впоследствии могли бы быть вновь собраны. Получатель фрагмента использует поле идентификации для того, чтобы быть убежденным в том, что фрагменты различных датаграмм не будут перепутаны. Поле смещения фрагмента сообщает получателю положение фрагмента в исходной датаграмме.
Смещение фрагмента и длина определяют кусок исходной датаграммы, принесенный этим фрагментом. Флаг "more fragments" показывает (посредством перезагрузки) появление последнего фрагмента. Эти поля дают достаточное количество информации для сборки датаграмм.
Поле идентификации позволяет отличить фрагменты одной датаграммы от фрагментов другой. Модуль Internet, отправляющий Internet датаграмму, устанавливает в поле идентификации значение, которое должно быть уникальным для данной пары отправитель - получатель, а также время, в течении которого датаграмма будет активна в системе Internet. Модуль протокола, отправляющий нерасчлененную датаграмму, устанавливает в нуль флаг "more fragments" и смещение во фрагменте.
Чтобы расчленить большую Internet датаграмму, модуль протокола Internet (например, шлюз), создает две новые Internet датаграммы и копирует содержимое полей Internet заголовка из большой датаграммы в оба новых Internet заголовка. Данные из старой датаграммы делятся на две части по границе на очередном восьмом октете (64 бита). Полученная таким образом вторая часть может быть кратна 8 октетам, а может и не быть, но первая часть кратна всегда. Заказывается количество блоков первой части NFB (количество блоков фрагмента). Первая часть данных помещается в первую новую Internet датаграмму, в поле общей длины помещается длина первой датаграммы. Флаг "more fragments" устанавливается в единицу. Вторая часть данных помещается во вторую новообразованную Internet датаграмму, в поле общей длины заносится длина второй датаграммы. В поле смещения фрагмента во второй Internet датаграмме устанавливается значение такого же поля в исходной большой датаграмме, увеличенное на NFB.
Эта процедура может быть обобщена на случай многократного расщепления исходной датаграммы.
Чтобы собрать фрагменты Internet датаграммы, модуль протокола Internet (например, модуль на хост-компьютере) объединяет Internet датаграммы, имеющие одинаковые значения в полях идентификатора, отправителя, получателя и протокола. Собственно объединение заключается в помещении данных из каждого фрагмента в позицию, указанную в заголовке Internet пакета в поле "fragment offset". Первый фрагмент будет иметь в поле "fragment offset" нулевое значение, а последний фрагмент будет иметь флаг "more fragments", вновь установленный в нуль. <
Ошибки Internet заголовка могут быть оглашены посредством ICMP сообщений. <
В протоколе IP-адрес узла, то есть адрес компьютера или порта маршрутизатора, назначается произвольно администратором сети и прямо не связан с его локальным адресом, как это сделано, например, в протоколе IPX. Подход, используемый в IP, удобно использовать в крупных сетях и по причине его независимости от формата локального адреса, и по причине стабильности, так как в противном случае, при смене на компьютере сетевого адаптера это изменение должны бы были учитывать все адресаты всемирной сети Internet (в том случае, конечно, если сеть подключена к Internet'у).
Локальный адрес используется в протоколе IP только в пределах локальной сети при обмене данными между маршрутизатором и узлом этой сети. Маршрутизатор, получив пакет для узла одной из сетей, непосредственно подключенных к его портам, должен для передачи пакета сформировать кадр в соответствии с требованиями принятой в этой сети технологии и указать в нем локальный адрес узла, например его МАС-адрес. В пришедшем пакете этот адрес не указан, поэтому перед маршрутизатором встает задача поиска его по известному IP-адресу, который указан в пакете в качестве адреса назначения. С аналогичной задачей сталкивается и конечный узел, когда он хочет отправить пакет в удаленную сеть через маршрутизатор, подключенный к той же локальной сети, что и данный узел.
Для определения локального адреса по IP-адресу используется протокол разрешения адреса Address Resolution Protocol, ARP. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ. Существует также протокол, решающий обратную задачу - нахождение IP-адреса по известному локальному адресу. Он называется реверсивный ARP - RARP (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера.
Тип сети | Тип протокола | |
Длина локального адреса | Длина сетевого адреса | Операция |
Локальный адрес отправителя (байты 0 - 3) | ||
Локальный адрес отправителя (байты 4 - 5) | IP-адрес отправителя (байты 0-1) | |
IP-адрес отправителя (байты 2-3) | Искомый локальный адрес (байты 0 - 1) | |
Искомый локальный адрес (байты 2-5) | ||
Искомый IP-адрес (байты 0 - 3) |
DNS (Domain Name System) - это распределенная база данных, поддерживающая иерархическую систему имен для идентификации узлов в сети Internet. Служба DNS предназначена для автоматического поиска IP-адреса по известному символьному имени узла. Спецификация DNS определяется стандартами RFC 1034 и 1035. DNS требует статической конфигурации своих таблиц, отображающих имена компьютеров в IP-адрес. Подробнее...
Выравнивание Internet заголовка используется для того, чтобы убедиться в том, Internet заголовок заканчивается на 32-битной границе. Выравнивание осуществляется нулями. <
Порядок передачи заголовка и данных, описанных в данном документе, определяется на уровне октетов. В то время как диаграмма обозначает группу октетов, порядок их передачи является таким же, как при чтении на английском языке. Например, в нижеприведенной диаграмме октеты передаются в порядке номеров.
01234567 | 89012345 | 67890123 | 45678901 |
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
Рис. 10 Порядок передачи байтов
Октет представляет собой число, для которого самый левый бит на диаграмме является самым старшим или самым значащим битом. Так бит, отмеченный нулем, является наиболее значащим битом. Например, следующая диаграмма представляет число 170 (десятичное)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
Рис. 11 Старшинство битов
Аналогично, если многооктетное поле представляет число, то самый левый бит в этом поле является самым значащим битом. При передаче многооктетного числа самый значащий октет передается первым.
Ver = 4 | IHL = 5 | Type of Service | Total Length = 21 |
Identification = 111 | Flg = 0 | Fragment Offset = 0 | |
Time = 123 | Protocol = 1 | Header Checksum | |
Source Address | |||
Destination Address | |||
data | . |
Ver = 4 | IHL = 5 | Type of Service | Total Length = 472 |
Identification = 111 | Flg = 0 | Fragment Offset = 0 | |
Time = 123 | Protocol = 6 | Header Checksum | |
Source Address | |||
Destination Address | |||
data | |||
data data |
|||
data | . |
Ver = 4 | IHL = 5 | Type of Service | Total Length = 276 |
Identification = 111 | Flg = 1 | Fragment Offset = 0 | |
Time = 119 | Protocol = 6 | Header Checksum | |
Source Address | |||
Destination Address | |||
data | |||
data data |
|||
data |
Ver = 4 | IHL = 5 | Type of Service | Total Length = 216 |
Identification = 111 | Flg = 0 | Fragment Offset = 32 | |
Time = 119 | Protocol = 6 | Header Checksum | |
Source Address | |||
Destination Address | |||
data | |||
data data |
|||
data | . |
Ver = 4 | IHL = 8 | Type of Service | Total Length = 576 |
Identification = 111 | Flg = 0 | Fragment Offset = 32 | |
Time = 123 | Protocol = 6 | Header Checksum | |
Source Address | |||
Destination Address | |||
Opt.Code = x | Opt.Len. = 3 | option value | Opt.Code = x |
Opt.Len. = 4 | option value | Opt.Code = 1 | |
Opt. Code = y | Opt.Len. = 3 | option value | Opt. Code = 0 |
data | |||
data data |
Два примера вызовов, приведенные ниже, удовлетворяют запросы пользователя в общении с Internet протоколом (символ "=>" означает возвращаемое значение).
SEND(src,dst,prot,TOS,TTL,BufPTR,len,Id,DF,opt => result)
где
src | - адрес отправителя | |
dst | - адрес получателя | |
prot | - протокол | |
TOS | - тип сервиса | |
TTL | - время жизни | |
BufPTR | - указатель буфера | |
len | - длина данных в буфере | |
Id | - идентификатор | |
DF | - запрет фрагментации | |
opt | - опции | |
result | - ответ: | |
Ok | - успешная посылка датаграммы | |
Error | - ошибка в аргументах функции или в локальной сети |
Заметим, что тип сервиса TOS включает приоритет, а требование безопасности передается в качестве опции.
RECV(BufPTR,prot => result,src,dst,TOS,len,opt)
BufPTR | - указатель буфера | |
prot | - протокол | |
result | - ответ: | |
Ok | - успешное получение датаграммы | |
Error | - ошибка в аргументах | |
len | - длина буфера | |
src | - адрес отправителя | |
dst | - адрес получателя | |
TOS | - тип сервиса | |
opt | - опции |
Когда пользователь отправляет датаграмму, он осуществляет SEND вызов, сопровождаемый всеми аргументами. Модуль Internet протокола по получении этого вызова проверяет аргументы, приготавливает и отправляет сообщение. Если аргументы в порядке, а датаграмма принята локальной сетью, то вызов завершается успешно. Если же аргументы неверны или датаграмма не принята локальной сетью, то вызов завершается с ошибкой. В последнем случае должен быть сделан соответствующий отчет о причине проблемы, однако детали таких отчетов относятся уже к конкретным реализациям.
В момент, когда датаграмма приходит на модуль Internet протокола из локальной сети, может присутствовать ожидающий ее RECV вызов от пользователя - адресата, а может и не присутствовать. В первом случае ожидающий вызов удовлетворяется посылкой информации из датаграммы к пользователю. Во втором случае пользователю - адресату посылается напоминание о ждущей его датаграмме. Если пользователь - адресат не присутствует, отправителю возвращается ICMP сообщение об ошибке, а принятые данные разрушаются.
Напоминание пользователю может быть выполнено через псевдопрерывание или с помощью аналогичного механизма в соответствии с конкретной операционной системой, поддерживающей данную реализацию.
Сделанный пользователем запрос RECV может быть немедленно удовлетворен ждущей этого датаграммой или же он может быть задержан до получения соответствующей датаграммы.
Адрес отправителя включается в запрос на посылку, если отправляющий датаграмму хост-компьютер имеет несколько адресов (несколько физических соединений или же чисто логических адресов). Internet модуль должен следить за тем, чтобы адрес отправителя был одним из разрешенных адресов для данного хоста.
Реализация протокола может допускать или даже требовать применения запроса к Internet модулю для обозначения заинтересованности, или же, наоборот, использование исключительно какого-либо класса датаграмм (т.е. всех датаграмм, которые имеют в поле протокола определенное значение).
Данная глава характеризует функции интерфейса между пользователем и Internet протоколом. Используемые обозначения аналогичны большинству процедур функций вызовов на языках высокого уровня, однако данный способ обращения с Internet протоколом не является правилом для запросов на обслуживание типа ловушек (т.е. SVC, UUO, EMT), или для любой другой формы общения между процессами. <
Датаграмма наибольшего размера, которая еще может быть передана через очередную локальную сеть, называется наибольшей передаваемой единицей (maximum transmission unit - MTU).
Если общая длина датаграммы меньше или равна максимальной передаваемой единице, то датаграмма передается следующим процедурам обработки. В противном случае прежде она разбивается на два фрагмента, причем первый из них будет иметь максимальный размер, соответственно во второй фрагмент будет помещен остаток исходной датаграммы. Первый фрагмент отправляется на дальнейшую обработку, а второй повторно подвергается только что рассмотренной процедуре, если и его размер окажется слишком большим.
Обозначения:
FO | - смещение фрагмента |
IHL | - длина Internet заголовка |
DF | - флаг запрета фрагментации |
MF | - флаг появления дополнительных фрагментов |
TL | - общая длина |
OFO | - старое смещение фрагмента |
OIHL | - старая длина Internet заголовка |
OMF | - старое значение флага появление дополнительных фрагментов |
OTL | - старое значение общей длины |
NFB | - количество блоков фрагментации |
MTU | - максимальная длина переноса |
Процедура
IF TL =< MTU THEN отправить датаграмму на следующие процедуры обработки
ELSE
IF DF =1 THEN разрушить датаграмму
ELSE
создать первый фрагмент
(1) | скопировать исходный Internet заголовок; |
(2) | OIHL <- IHL; OTL <- TL; OMF <- MF; |
(3) | NFB <- (MTU - IHL*4)/8; |
(4) | взять первые NFB*8 октетов данных; |
(5) | скорректировать заголовок: MF <- 1; TL <- (IHL*4)+(NFB*8); пересчитать контрольную сумму; |
(6) | направить данный фрагмент на последующие процедуры обработки создать второй фрагмент: |
(7) | выборочно скопировать Internet заголовок (некоторые опции не копируются, см. определение опций) |
(8) | добавить оставшиеся данные |
(9) | скорректировать заголовок IHL <- (((OIHL*4)-(длина не скопированных опций))+3)/4; TL <- OTL - NFB*8 - (OIHL-IHL)*4; FO <- OFO + NFB; MF <- OMF; пересчитать контрольную сумму; |
(10) | Приготовить этот фрагмент к повторному тесту на необходимость фрагментации. Выполнить. |
В предыдущей процедуре каждый фрагмент (за исключением последнего) получает максимально разрешенную длину. Альтернатива может заключаться в создании датаграмм, не достигающих максимального размера. Для примера, она может включать процедуру фрагментации, которая повторно делит большие датаграммы пополам до тех пор, пока получающиеся фрагменты не станут короче, чем максимальный допустимый размер передаваемой единицы.
Для каждой датаграммы идентификатор буфера определяется как объединение полей адреса отправителя, адреса получателя, протокола и идентификации. Если это целая датаграмма (поля fragment offset и more fragments нулевые), то все ресурсы, связанные с этим идентификатором буфера, освобождаются, а сама датаграмма направляется на следующие процедуры обработки.
Если следующий фрагмент не связан с этим идентификатором буфера, то выделяются ресурсы для сборки. Они включают буфер данных, буфер заголовка, битовую таблицу фрагментации, поле общей длины данных, а также таймер. Данные из фрагмента помещаются в буфер данных в соответствии со значением полей fragment offset и длины, а также устанавливаются биты в битовой таблице фрагментации согласно полученным блокам фрагментов.
Если это первый фрагмент (поле fragment offset нулевое), то его заголовок помещается в буфер заголовка. Если это последний фрагмент (поле more fragments нулевое), то вычисляется общая длина данных. Если этот фрагмент завершает датаграмму (проверяется по установке битов в таблице фрагментации), то датаграмма направляется на следующий этап обработки. В противном случае таймер устанавливается на максимальное из двух: текущее значение таймера и время жизни для данного фрагмента. Выполнение процедуры сборки приостанавливается.
Если таймер отсчитал положенное время, то все ресурсы сборки, связанные с данным идентификатором буфера, освобождаются. Первоначальная установка таймера является нижней границей для времени ожидания при сборке. Это происходит потому, что время ожидания будет увеличено, если время жизни приходящего фрагмента окажется больше, но не может быть уменьшено.
Установка таймера может достигать максимального времени жизни (примерно 4.25 минуты). В настоящее время рекомендуется первоначально устанавливать таймер на 15 секунд. Это значение можно изменить при получении достаточного практического опыта. Заметим, что выбор значения для этого параметра связи связан с емкостью буфера и скоростью получения данных с коммуникационных сетей.
FO | - смещение фрагмента |
IHL | - длина Internet заголовка |
MF | - флаг More Fragments |
TTL | - время жизни |
NFB | - количество фрагментов |
TL | - общая длина |
TDL | - общая длина данных |
BUFID | - идентификатор буфера |
RCVBT | - битовая таблица фрагментации |
TLB | - нижняя граница для значения таймера |
111 | - управление сетью |
110 | - межсетевое управление |
101 | - CRITIC/ECP |
100 | - более, чем мгновенно |
011 | - мгновенно |
010 | - немедленно |
001 | - приоритетно |
000 | - обычный маршрут |
Использование индикации задержки, пропускной способности и достоверности может, в некотором смысле, увеличить стоимость обслуживания. Во многих сетях улучшение одного из этих параметров связано с ухудшением другого. Исключения, когда имело бы смысл устанавливать два из этих трех параметров, очень редки.
Тип обслуживания используется для указания типа обработки датаграммы при ее прохождении через систему Internet. Примеры отображения типа обслуживания в протоколе Internet на реальные услуги, предоставляемые такими сетями, как AUTODIN II, ARPANET, SATNET и PRNET даны в документе "Service Mapping" [8]. Значение "управление сетью" следует присваивать приоритету только для использования внутри локальной сети. Управление и реальное использование этого аргумента должно находиться в согласии с каждой применяющей его сетью. Аргумент "межсетевое управление" предназначен только для использования шлюзами, берущими на себя управление. Если вышеописанные аргументы приоритета находят применение в какой-либо сети, то это означает, что данная сеть может управлять приемом и использованием этих аргументов.
Это поле показывает, какой протокол следующего уровня использует данные из Internet датаграммы. Значение поля определяется рекомендациями RFC (RFC1700). Неполный список основных типов протоколов приведен здесь.
Протокол Internet (IP) используется для обработки датаграммы, передаваемой между хост-компьютерами в системе объединенных сетей. Устройства, осуществляющие соединение различных сетей, называются шлюзами. Для обеспечения управления шлюзы общаются друг с другом посредством протокола Gateway to Gateway Protocol (GGP). Порой шлюз или хост-компьютер, получающий данные, обменивается информацией с хост-компьютером, отправляющим эти данные. Именно для таких целей используется данный протокол - протокол контрольных сообщений Internet (ICMP). ICMP использует основные свойства протокола Internet (IP), как если бы ICMP являлся протоколом более высокого уровня. Однако фактически ICMP является составной частью протокола Internet и должен являться составной частью каждого модуля IP.
Сообщения ICMP должны отправляться в некоторых затруднительных ситуациях. Например, когда датаграмма не может достичь своего адресата, когда шлюз не имеет достаточно места в своем буфере для передачи какой-либо датаграммы, или когда шлюз приказывает хост-компьютеру отправлять информацию по более короткому маршруту.
Протокол Internet не создан для того, чтобы обеспечивать абсолютную надежность передачи информации. Целью же данных контрольных сообщений является обеспечение обратной связи, оповещение отправителя данных о проблемах, возникающих в коммуникационном оборудовании. Их целью не является придание надежности протоколу IP. Протокол не дает гарантий, что датаграмма достигает своего адресата или что контрольное сообщение будет возвращено компьютеру, отправившему данные. Некоторые из датаграмм могут исчезнуть в сети, не вызвав при этом ни каких оповещений. Протоколы более высокого уровня, использующие протокол IP, должны применять свои собственные процедуры для обеспечения надежности передачи данных, если таковая требуется.
Сообщения ICMP протокола, как правило, оповещают об ошибках, возникающих при обработке датаграмм. Чтобы проблемы с передачей сообщений не вызывали появление новых сообщений, чтобы это в свою очередь не привело к лавинообразному росту количества сообщений, циркулирующих в сети, констатируется, что нельзя посылать сообщения о сообщениях. Также констатируется, что ICMP сообщения можно посылать только о проблемах, возникающих при обработке нулевого фрагмента в сегментированной датаграмме (нулевой фрагмент имеет нуль в поле смещения фрагмента). <
Протокол Internet создан для использования в объединенных системах компьютерных коммуникационных сетей с коммутацией пакетов. Протокол Internet обеспечивает передачу блоков данных, называемых датаграммами, от отправителя к получателям, где отправители и получатели являются хост-компьютерами, идентифицируемыми адресами фиксированной длины. Протокол Internet обеспечивает при необходимости также фрагментацию и сборку датаграмм для передачи данных через сети с малым размером пакетов.
Протокол Internet специально ограничен задачами обеспечения функций, необходимых для передачи битового пакета (датаграммы Internet) от отправителя к получателю через объединенную систему компьютерных сетей. Нет механизмов для увеличения достоверности конечных данных, управления протоколом, синхронизации или других услуг, обычно применяемых в протоколах передачи от хоста к хосту. Протокол Internet может обобщить услуги поддерживающих его сетей с целью предоставления услуг различных типов и качеств. <
Повышение производительности компьютеров и коммуникационного оборудования. За время существования стека производительность компьютеров возросла на два порядка, объемы оперативной памяти выросли более чем в 30 раз, пропускная способность магистрали Internet в Соединенных Штатах выросла в 800 раз. | |
Появление новых приложений. Коммерческий бум вокруг Internet и использование ее технологий при создании intranet привели к появлению в сетях TCP/IP, ранее использовавшихся в основном в научных целях, большого количества приложений нового типа, работающих с мультимедийной информацией. Эти приложения чувствительны к задержкам передачи пакетов, так как такие задержки приводят к искажению передаваемых в реальном времени речевых сообщений и видеоизображений. Особенностью мультимедийных приложений является также передача очень больших объемов информации. Некоторые технологии вычислительных сетей, например, frame relay и ATM, уже имеют в своем арсенале механизмы для резервирования полосы пропускания для определенных приложений. Однако эти технологии еще не скоро вытеснят традиционные технологии локальных сетей, не поддерживающие мультимедийные приложения (например, Ethernet). Следовательно, необходимо компенсировать такой недостаток средствами сетевого уровня, то есть средствами протокола IP. | |
Бурное расширение сети Internet. В начале 90-х годов сеть Internet расширялась очень быстро, новый узел появлялся в ней каждые 30 секунд, но 95-й год стал переломным - перспективы коммерческого использования Internet стали отчетливыми и сделали ее развитие просто бурным. Первым следствием такого развития стало почти полное истощение адресного пространства Internet, определяемого полем адреса IP в четыре байта. | |
Новые стратегии администрирования. Расширение Internet связано с его проникновением в новые страны и новые отрасли промышленности. При этом в сети появляются новые органы администрирования, которые начинают использовать новые методы администрирования. Эти методы требуют появления новых средств в базовых протоколах стека TCP/IP. |
Использование более длинных адресов. Новый размер адреса - наиболее заметное отличие IPv6 от IPv4. Версия 6 использует 128-битные адреса. | |
Гибкий формат заголовка. Вместо заголовка с фиксированными полями фиксированного размера (за исключением поля Резерв), IPv6 использует базовый заголовок фиксированного формата плюс набор необязательных заголовков различного формата. | |
Поддержка резервирования пропускной способности. В IPv6 механизм резервирования пропускной способности заменяет механизм классов сервиса версии IPv4. | |
Поддержка расширяемости протокола. Это одно из наиболее значительных изменений в подходе к построению протокола - от полностью детализированного описания протокола к протоколу, который разрешает поддержку дополнительных функций. |
Стремительный рост Internet предъявляет новые требования к скорости и объемам передачи данных. И для того чтобы удовлетворить все эти запросы, одного увеличения емкости сети недостаточно, необходимы разумные и эффективные методы управления графиком и контролем загруженности линий передачи.
В приложениях реального времени отправитель генерирует поток данных с постоянной скоростью, а получатель (или получатели) должен предоставлять эти данные приложению с той же самой скоростью. Такие приложения включают, например, аудио- и видеоконференции, живое видео, удаленную диагностику в медицине, компьютерную телефонию, распределенное интерактивное моделирование, игры, мониторинг в реальном времени и др.
Наиболее широко используемый протокол транспортного уровня — это TCP. Несмотря на то что TCP позволяет поддерживать множество разнообразных распределенных приложений, он не подходит для приложений реального времени.
Эту задачу и призван решить новый транспортный протокол реального времени — RTP (Real-Time Transport Protocol), который гарантирует доставку данных одному или более адресатам с задержкой в заданных пределах, т. е. данные могут быть воспроизведены в реальном времени.
Принципы построения протокола RTP
RTP не поддерживает каких-либо механизмов доставки пакетов, обеспечения достоверности передачи или надежности соединения. Эти все функции возлагаются на транспортный протокол. RTP работает поверх UDP и может поддерживать передачу данных в реальном времени между несколькими участниками RTP-сеанса.
Примечание
Для каждого участника RTP сеанс определяется парой транспортных адресов назначения пакетов (один сетевой адрес — IP и пара портов: RTP и RTCP).
Пакеты RTP содержат следующие поля: идентификатор отправителя, указывающий, кто из участников генерирует данные, отметки о времени генерирования пакета, чтобы данные могли быть воспроизведены принимающей стороной с правильными интервалами, информация о порядке передачи, а также информация о характере содержимого пакета, например, о типе кодировки видеоданных (MPEG, Indeo и др.).
0 | 2 | 3 | 4 | 8 | 16 | 31 |
V=2 |
P | X | CC | M | PT | Sequence Number |
Timestamp | ||||||
Synchronization Source (SSRC) Identifier | ||||||
Contributing Source (CSRC) Identifiers |
Протокол резервирования ресурсов RSVP (Resource Reservation Protocol) позволяет конечным системам резервировать сетевые ресурсы для получения необходимого качества услуг. Отправители предоставляют маршрутизаторам общие характеристики трафика (например, темп передачи данных, вариабельность), получатели определяют требуемый уровень качества услуг. Маршрутизаторы сводят затем воедино запросы на выделение ресурсов на общих участках маршрутов движения полезной нагрузки. Протокол активно используется маршрутизаторами фирмы CISCO для передачи видео и речевой информации. <
Схему действий для передачи датаграммы от одной прикладной программы к другой можно проиллюстрировать следующим образом.
Предположим, что перенос будет включать прохождение одного промежуточного шлюза. Отправляющая прикладная программа готовит свои данные и вызывает свой локальный Internet модуль для отправки этих данных в качестве датаграммы, а в качестве аргументов этого вызова передает адрес получателя и другие параметры.
Модуль Internet готовит заголовок датаграммы и стыкует с ним данные. Модуль Internet определяет локальный сетевой адрес, соответствующий данному адресу Internet. В данном случае это адрес шлюза.
Модуль передает данную датаграмму и адрес в локальной сети в распоряжение интерфейса локальной сети.
Интерфейс локальной сети создает соответствующий этой сети заголовок и соединяет с ним датаграмму. Затем он передает по локальной сети полученный таким образом результат.
Датаграмма достигает хост-компьютер, играющий роль шлюза и расположенный в вершине сети. Интерфейс локальной сети отделяет этот заголовок и передает датаграмму на модуль Internet. Модуль Internet определяет из Internet адреса, что датаграмма должна быть направлена на хост-компьютер во второй сети. Модуль Internet определяет адрес хоста-получателя в локальной сети. Он обращается к интерфейсу локальной сети с тем, чтобы она переслала данную датаграмму по назначению.
Интерфейс создает заголовок локальной сети и соединяет с ним датаграмму, а затем результат направляет на хост-получатель. На хосте-получателе интерфейс локальной сети удаляет заголовок локальной сети и передает оставшееся на Internet модуль.
Модуль Internet определяет, что рассматриваемая выше датаграмма предназначена для прикладной программы на этот хосте. Модуль передает данные прикладной программе в ответ на системный вызов. В качестве результата этого вызова передаются адрес получателя и другие параметры.
Рис. 2 Путь передачи датаграммы
В протоколе IP существует несколько соглашений об особой интерпретации IP-адресов:
если IР-адрес состоит только из двоичных нулей, |
0 0 0 0 ................................... 0 0 0 0 |
то он обозначает адрес того узла, который сгенерировал этот пакет;
если в поле номера сети стоят 0, |
0 0 0 0 .......0 | Номер узла |
то по умолчанию считается, что этот узел принадлежит той же самой сети, что и узел, который отправил пакет;
если все двоичные разряды IP-адреса равны 1, |
1 1 1 1 .........................................1 1 |
то пакет с таким адресом назначения должен рассылаться всем узлам, находящимся в той же сети, что и источник этого пакета. Такая рассылка называется ограниченным широковещательным сообщением (limited broadcast);
если в поле адреса назначения стоят сплошные 1, |
Номер сети | 1111................11 |
то пакет, имеющий такой адрес рассылается всем узлам сети с заданным номером. Такая рассылка называется широковещательным сообщением (broadcast);
адрес 127.0.0.1 зарезервирован для организации обратной связи при тестировании работы программного обеспечения узла без реальной отправки пакета по сети. Этот адрес имеет название loopback. |
Уже упоминавшаяся форма группового IP-адреса - multicast - означает, что данный пакет должен быть доставлен сразу нескольким узлам, которые образуют группу с номером, указанным в поле адреса. Узлы сами идентифицируют себя, то есть определяют, к какой из групп они относятся. Один и тот же узел может входить в несколько групп. Такие сообщения в отличие от широковещательных называются мультивещательными. Групповой адрес не делится на поля номера сети и узла и обрабатывается маршрутизатором особым образом.
В протоколе IP нет понятия широковещательности в том смысле, в котором оно используется в протоколах канального уровня локальных сетей, когда данные должны быть доставлены абсолютно всем узлам. Как ограниченный широковещательный IP-адрес, так и широковещательный IP-адрес имеют пределы распространения в интерсети - они ограничены либо сетью, к которой принадлежит узел - источник пакета, либо сетью, номер которой указан в адресе назначения. Поэтому деление сети с помощью маршрутизаторов на части локализует широковещательный шторм пределами одной из составляющих общую сеть частей просто потому, что нет способа адресовать пакет одновременно всем узлам всех сетей составной сети.
Формат заголовка Internet | |
Коментарии | |
Интерфейсы | |
Примеры и сценарии |
Разряды |
Описание |
|||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Версия = 4 протокола |
Длина заголовка дейтаграммы |
|||||||
1 байт |
Type of Service Вид обслуживания |
|||||||
старший байт |
Общая длина
дейтаграммы в байтах |
|||||||
младший байт |
||||||||
старший байт |
Identification Идентификатор дейтаграммы Формируется исходным абонентом, формирующим дейтаграмму, служит для идентификации конкретной дейтаграммы. Выглядит как 16-ти разрядный счетчик |
|||||||
младший байт |
||||||||
O DF MF Flags |
Смещение фрагмента старшая тетрада |
Поле флагов и поля смещения фрагмента данных от начала исходного блока данных (используется при сегментации) |
||||||
младший байт |
||||||||
1 байт |
Time to Live Время жизни Поле показывает количество переходов через маршрутизаторы |
|||||||
1 байт |
Protocol. Тип следующего протокола |
|||||||
2 байта |
Header Checksum Контрольная сумма заголовка |
|||||||
старший байт |
Source Address Адрес отправителя |
|||||||
1 байт |
||||||||
1 байт |
||||||||
младший байт |
||||||||
старший байт |
Адрес получателя Destination Address |
|||||||
1 байт |
||||||||
1 байт |
||||||||
младший байт |
||||||||
. . . |
Options Поле дополнительных услуг (может отсутствовать) Длина поля дополнительных услуг определяется как разность заданной длины заголовка и размера фиксированной части. |
|||||||
1, 2 или 3 байта | Padding (Выравнивание) Выравнивание Internet заголовка используется для того, чтобы убедиться в том, Internet заголовок заканчивается на 32-битной границе. Выравнивание осуществляется нулями. |
|||||||
. . . |
Данные |
Следующая диаграмма иллюстрирует место протокола Internet в иерархии протоколов.
Рис. 1 Взаимодействие протоколов
Протокол Internet взаимодействует с одной стороны с протоколами передачи информации между хост-компьютерами, а с другой - с протоколами локальной компьютерной сети. При этом локальная сеть может являться малой компьютерной сетью, участвующей в создании большой сети, такой как Internet.
Это поле показывает максимальное время, в течении которого датаграмме позволено находиться в системе Internet. Если это поле имеет значение нуль, то датаграмма должна быть разрушена. Значение этого поля изменяется при обработке заголовка Internet. Время измеряется в секундах. Однако, поскольку каждый модуль, обрабатывающий датаграмму, должен уменьшать значение поля TTL по крайней мере на единицу, даже если он обрабатывает эту датаграмму менее, чем за секунду, то поле TTL следует понимать как максимальный интервал времени, в течении которого датаграмма может существовать. Внимание следует обратить на разрушение датаграмм, не могущих достигнуть получателя, а также на ограничение времени жизни датаграммы.
Тип обслуживания (TOS) используется для выбора качества Internet сервиса. Тип обслуживания определяется абстрактными параметрами приоритета, задержки, продолжительности и достоверности. Эти параметры должны отображаться на реальные параметры сервиса для конкретных сетей, через которые проходит данная датаграмма.
Приоритет. Независимая единица измерения для важности данной датаграммы.
Задержка. Указание задержки важно для датаграмм с этим знаком.
Пропускная способность. Для датаграмм с этим знаком важна высокая скорость передачи данных.
Достоверность. Для датаграмм с таким типом обслуживания важен более высокий уровень усилий, предпринимаемых для обеспечения достоверности.
Например, сеть ARPANET имеет бит приоритета, а также выбор между "стандартными" сообщениями (тип 0) и "неконтролируемыми" (тип 3) (также в качестве одного из сервисных параметров может использоваться выбор между единичным пакетом и многопакетными сообщениями). Неконтролируемые сообщения имеют тенденцию иметь меньшую достоверность, но и меньшую задержку. Допустим, Internet датаграмма должна быть передана через сеть ARPANET.
Пусть тип Internet сервиса определен как
приоритет: | 5 |
задержка: | 0 |
пропускная способность: | 1 |
достоверность: | 1 |
В рассматриваемом примере отображение описанных параметров на параметры, допустимые в сети ARPANET, привело бы к установке бита приоритета ARPANET (поскольку приоритет Internet находится в верхней половине своего диапазона), выбору стандартного типа сообщений (поскольку указаны требования высокой пропускной способности и достоверности, а параметр задержки сброшен). Дополнительные детали реализации сервиса даны в документе "Service Mappings".
Каждый компьютер в сети TCP/IP имеет адреса трех уровней:
Локальный адрес узла, определяемый технологией, с помощью которой построена отдельная сеть, в которую входит данный узел. Для узлов, входящих в локальные сети - это МАС-адрес сетевого адаптера или порта маршрутизатора, например, 11-А0-17-3D-BC-01. Эти адреса назначаются производителями оборудования и являются уникальными адресами, так как управляются централизовано. Для всех существующих технологий локальных сетей МАС-адрес имеет формат 6 байтов: старшие 3 байта - идентификатор фирмы производителя, а младшие 3 байта назначаются уникальным образом самим производителем. Для узлов, входящих в глобальные сети, такие как Х.25 или frame relay, локальный адрес назначается администратором глобальной сети. | |
IP-адрес, состоящий из 4 байт, например, 109.26.17.100. Этот адрес используется на сетевом уровне. Он назначается администратором во время конфигурирования компьютеров и маршрутизаторов. IP-адрес состоит из двух частей: номера сети и номера узла. Номер сети может быть выбран администратором произвольно, либо назначен по рекомендации специального подразделения Internet (Network Information Center, NIC), если сеть должна работать как составная часть Internet. Обычно провайдеры услуг Internet получают диапазоны адресов у подразделений NIC, а затем распределяют их между своими абонентами. |
Номер узла в протоколе IP назначается независимо от локального адреса узла. Деление IP-адреса на поле номера сети и номера узла - гибкое, и граница между этими полями может устанавливаться весьма произвольно. Узел может входить в несколько IP-сетей. В этом случае узел должен иметь несколько IP-адресов, по числу сетевых связей. Таким образом IP-адрес характеризует не отдельный компьютер или маршрутизатор, а одно сетевое соединение.
Символьный идентификатор-имя, например, SERV1.IBM.COM. Этот адрес назначается администратором и состоит из нескольких частей, например, имени машины, имени организации, имени домена. Такой адрес, называемый также DNS-именем, используется на прикладном уровне, например, в протоколах FTP или telnet. |
1822 BBN доклад 1822, "The Specification of the Interconnection of a Host and an IMP". Спецификация взаимодействия между хост-компьютером и сетью ARPANET.
ARPANET проводник
Управляющая информация в ARPANET сообщении для интерфейса между хост-компьютером и IMP процессором.
ARPANET сообщение
Единица передачи между хост-компьютером и IMP процессором в сети ARPANET. Максимальный ее размер примерно 1012 октетов (8096 битов).
ARPANET пакет
Единица передачи внутри сети ARPANET между IMP процессорами. Максимальный размер ее около 126 октетов (1008 бит).
Destination (Получатель)
Адрес получателя, поле в Internet заголовке.
DF
Бит запрета фрагментации в поле флагов.
Flags (Флаги)
Поле Internet заголовка, содержащее различные управляющие биты.
Fragment Offset (Смещение фрагмента)
Это поле Internet заголовка указывает, к какому месту в Internet датаграмме относится фрагмент.
GGP
Gateway to Gateway Protocol - Протокол общения между шлюзами. Данный протокол первоначально использовался шлюзами для управления маршрутизацией и другими функциями шлюзов.
header (заголовок)
Управляющая информация в начале сообщения, сегмента, датаграммы, пакета или блока данных.
ICMP
Internet Control Message Protocol - Протокол контрольных сообщений Internet. Поддерживаемое Internet модулем, ICMP сообщение передается от шлюзов к хост-компьютерам и между хост-компьютерами, используется для отчетов об ошибках а также для создания предположений о маршрутизации.
Identification (Идентификация)
Поле Internet заголовка, содержащее идентифицирующее значение, назначенное отправителем, и служащее для сборки фрагментов какой-либо датаграммы.
IHL
The Internet Header Length - Поле Internet заголовка. Представляет собой длину Internet заголовка, измеренную в 32-битных словах.
IMP
The Interface Message Processor - Процессор сообщений интерфейса. Пакетный переключатель сети ARPANET.
Internet Address (адрес Internet)
Четырехоктетный (32 бита) адрес отправителя или получателя. Состоит из поля сети и поля локального адреса.
Internet фрагмент
Порция данных из Internet датаграммы, снабженная Internet заголовком.
Local Address (локальный адрес)
Адрес хост-компьютера внутри какой-либо сети. Реальное отображение локального адреса Internet на адреса хост-компьютеров в сети довольно произвольное, что позволяет отображать несколько локальных адресов на один хост-компьютер.
MF
Флаг появления дополнительных фрагментов, содержащийся в поле флагов Internet заголовка
module (модуль)
Реализация, обычно программная, протокола или других процедур
more-fragments flag (флаг дополнительных фрагментов)
Флаг, показывающий, содержит ли данная Internet датаграмма заключительную часть исходной Internet датаграммы. Флаг включен в поле флагов Internet заголовка.
NFB
The Number of Fragments Blocks - количество блоков фрагментации с данными в Internet фрагменте. Иными словами, длина поля с данными. Единица измерения - 8 октет.
octet (октет)
байт с восемью битами
Options (опции)
Поле опций Internet заголовка, может содержать несколько опций. Каждая опция может иметь длину в несколько октет. Padding (Выравнивание)
Поле выравнивания Internet заголовка, используемое для того, чтобы убедиться в том, что данные начинаются по границе 32-битного слова. Выравнивание осуществляется нулями.
Protocol (Протокол)
Для данного документа это идентификатор протокола более высокого уровня, поле в Internet заголовке.
Rest (Остаток)
Часть Internet адреса, указывающая локальный адрес.
Source (Отправитель)
Адрес отправителя, поле Internet заголовка.
TCP
Transmission Control Protocol - Протокол управления передачей. Протокол общения между хост-компьютерами для осуществления коммуникаций в среде Internet.
TCP сегмент
Единица данных, передаваемая между TCP модулями (имеющая TCP заголовок).
TFTP
Trivial File Transfer Protocol: Простой протокол передачи файлов, созданный для UDP.
Time to Live (Время жизни)
Поле Internet заголовка, показывающее верхний предел для времени существования данной Internet датаграммы.
TOS
Тип сервиса Total length (общая длина)
Поле Internet заголовка Total Length, определяющее длину датаграммы в октетах, включающее Internet заголовок и данные.
TTL
Время жизни
Type of Service (Тип сервиса)
Поле Internet заголовка, определяющее тип сервиса для данной Internet датаграммы.
UDP
User Datagram Protocol. Протокол на уровне пользователя для приложений, ориентированных на транзакции.
User (Пользователь)
Пользователь Internet протокола. Это может быть модуль протокола более высокого уровня, прикладная программа или программа шлюза.
Version (версия)
Поле версии, определяющее формат Internet заголовка. <
Общая длина - это длина датаграммы, измеренная в октетах, включая Internet заголовок и поле данных. Это поле может задавать длину датаграммы вплоть до 65535 октетов. В большинстве хост-компьютеров и сетей столь большие датаграммы не используются. Все хосты должны быть готовы принимать датаграммы вплоть до 576 октетов длиной (приходят ли они целиком или по фрагментам). Хостам рекомендуется отправлять датаграммы размером более чем 576 октетов, только если они уверены, что принимающий хост готов обслуживать датаграммы повышенного размера.
Значение 576 выбрано с тем, чтобы соответствующим образом ограниченный блок данных передавался вместе с требуемой информацией в заголовке. Например, этот размер позволяет заполнять датаграмму полем данных размером в 512 октетов и заголовком в 64 октета. Наибольший Internet заголовок занимает 60 октетов, а его типичный размер составляет всего 20 октетов, что оставляет место под заголовки протоколов более высокого уровня.
Identification
(идентификатор) 16 бит
Идентификатор устанавливается отправителем для сборки фрагментов какой-либо датаграммы. Первоначальное значение устанавливается случайным образом, а затем последуется увеличивается на единицу в каждой последующей дейтаграмме.
IP-адрес имеет длину 4 байта и обычно записывается в виде четырех чисел, представляющих значения каждого байта в десятичной форме, и разделенных точками, например:
128.10.2.30 - традиционная десятичная форма представления адреса,
10000000 00001010 00000010 00011110 - двоичная форма представления этого же адреса.
На рисунке 3.1 показана структура IP-адреса.
Класс А
0 | N сети | N узла |
Класс В
1 | 0 | N сети | N узла |
Класс С
1 | 1 | 0 | N сети | N узла |
Класс D
1 | 1 | 1 | 0 | адрес группы multicast |
Класс Е
1 | 1 | 1 | 1 | 0 | зарезервирован |
Рис. 3.1. Структура IР-адреса
Адрес состоит из двух логических частей - номера сети и номера узла в сети. Какая часть адреса относится к номеру сети, а какая к номеру узла, определяется значениями первых битов адреса:
Если адрес начинается с 0, то сеть относят к классу А, и номер сети занимает один байт, остальные 3 байта интерпретируются как номер узла в сети. Сети класса А имеют номера в диапазоне от 1 до 126. (Номер 0 не используется, а номер 127 зарезервирован для специальных целей, о чем будет сказано ниже.) В сетях класса А количество узлов должно быть больше 216 , но не превышать 224. | |
Если первые два бита адреса равны 10, то сеть относится к классу В и является сетью средних размеров с числом узлов 28 - 216. В сетях класса В под адрес сети и под адрес узла отводится по 16 битов, то есть по 2 байта. | |
Если адрес начинается с последовательности 110, то это сеть класса С с числом узлов не больше 28. Под адрес сети отводится 24 бита, а под адрес узла - 8 битов. | |
Если адрес начинается с последовательности 1110, то он является адресом класса D и обозначает особый, групповой адрес - multicast. Если в пакете в качестве адреса назначения указан адрес класса D, то такой пакет должны получить все узлы, которым присвоен данный адрес. | |
Если адрес начинается с последовательности 11110, то это адрес класса Е, он зарезервирован для будущих применений. |
В таблице приведены диапазоны номеров сетей, соответствующих каждому классу сетей.
Класс | Наименьший адрес | Наибольший адрес |
A | 01.0.0 | 126.0.0.0 |
B | 128.0.0.0 | 191.255.0.0 |
C | 192.0.1.0. | 223.255.255.0 |
D | 224.0.0.0 | 239.255.255.255 |
E | 240.0.0.0 | 247.255.255.255 |
Тип сервиса определяет с помощью неких абстрактных параметров тип требуемого обслуживания. Эти параметры должны использоваться для управления выбором реальных рабочих характеристик при передаче датаграммы через конкретную сеть. Некоторые сети осуществляют обслуживание с приоритетом, которое неким образом дает преимущество для продвижения данной датаграммы по сравнению со всеми остальными.
Реально выбор осуществляется между тремя альтернативами: малой задержкой, высокой достоверностью и высокой пропускной способностью.
биты 0-2 | приоритет |
бит 3 | 0 - нормальная задержка, 1 - малая задержка |
бит 4 | 0 - нормальная пропускная способность, 1 - высокая пропускная способность |
бит 5 | 0 - обычная достоверность, 1 - высокая достоверность |
биты 6-7 | зарезервированы |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
приоритет | D | T | R | 0 | 0 |
Поле версии показывает формат заголовка Internet. Данный документ описывает версию 4.
IHL (длина Internet заголовка) 4 бита
Длина Internet заголовка измеряется в словах по 32 бита каждый и указывает на начало поля данных. Заметим, что корректный заголовок может иметь минимальный размер 5 слов.
Время жизни устанавливается отправителем в соответствии с максимальным значением, которое данная датаграмма может иметь в системе Internet. Если датаграмма пребывает в системе Internet дольше, чем указанное время жизни, она подлежит уничтожению.
Значение в поле, где указано время жизни, должно уменьшаться в каждой точке, где обрабатывается Internet заголовок, с тем, чтобы показать время, потраченное на обработку датаграммы. Даже если нет возможности получать информацию о том, сколько реально времени было потрачено, значение этого поля должно быть уменьшено на единицу. Время изменяется в секундах (т.е. указанная единица соответствует одной секунде). Таким образом, максимальное время жизни составляет 255 секунд или 4.25 минуты.
Поскольку каждый модуль, обрабатывающий датаграмму, должен уменьшать значение поля TTL по крайней мере на единицу, даже если он обрабатывает ее быстрее, чем за секунду, то поле TTL следует рассматривать лишь как верхнюю границу для времени существования датаграммы. Цель процедуры заключается в разрушении датаграмм, не достигших получателя, а также в ограничении времени жизни датаграммы в сети.
Некоторые протоколы более высокого уровня, управляющие соединениями, основываются на предположении, что старые датаграммы-дубликаты не достигают цели по истечении определенного времени. TTL - это способ, с помощью которого такие протоколы могли бы убедиться, что их предположение удовлетворяется.
NetWare является операционной системой сети (network operating system - NOS) и связанной с ней средой обеспечения услуг, разработанной Novell, Inc. и представленной на рынок в начале 1980 гг. В то время сети были небольшими и преимущественно гомогенными, связь рабочих групп с помощью локальных сетей была еще новым явлением, а идея о персональном компьютере еще только начала завоевывать популярность.
Большая часть технологии организации сетей NetWare была заимствована из Xerox Network Systems (XNS)
- системы организации сетей, разработанной Xerox Corporation в конце 1970 гг. Подробная информация о XNS в разделе "XNS".
K началу 1990 гг. доля в рынке NOS NetWare возросла до 50-75 % (данные зависят от исследовательских групп, занимавшихся изучением рынка). Установив свыше 500,000 сетей NetWare по всему миру и ускорив продвижение по пути об'единения сетей с другими сетями, NetWare и подддерживающие ее протоколы часто сосуществуют на одном и том же физическом канале с многими другими популярными протоколами, в том числе ТСР/IP, DECnet и AppleTalk.
<
NetWare работает с Ethenet/IEEE 802.3, Token Ring/IEEE 802.5, Fiber Distributed Data Interface (FDDI) и ARCnet. NetWare также работает в синхронных каналах глобальных сетей, использующих Point-to-Point Protocol (PPP) (Протокол непосредственных соединений).
ARСnet представляет собой систему простой сети, которая поддерживает все три основных носителя (скрученную пару, коаксиальный кабель и волоконно-оптический кабель) и две топологии (шина и звезда). Она была разработана корпорацией Datapoint Corporation и выпущена в 1977. Хотя ARCnet не приобрела такую популярность, какой пользуются Ethernet и Token Ring, ее гибкость и низкая стоимость завоевали много верных сторонников. <
NetWare поддерживает большое разнообразие протоколов высших уровней; некоторые из них несколько более популярны, чем другие. NetWare shell (командный процессор) работает в оборудовании клиентов (которое часто называется рабочими станциями среди специалистов по NetWare) и перехватывает обращения прикладных задач к устройству Ввод/Вывод, чтобы определить, требуют ли они доступ к сети для удовлетворения запроса. Если это так, то NetWare shell организует пакеты запросов и отправляет их в программное обеспечение низшего уровня для обработки и передачи по сети. Если это не так, то они просто передаются в ресурсы местного устройства Ввода/Вывода. Прикладные задачи клиента не осведомлены о каких-либо доступах к сети, необходимых для выполнения обращений прикладных задач. NetWare Remote Procedure Call (Netware RPC) (Вызов процедуры обращения к отдаленной сети) является еще одним более общим механизмом переадресации, поддерживаемым Novell.
Netware Core Protocol (NCP) (Основной протокол NetWare) представляет собой ряд программ для сервера, предназначенных для удовлетворения запросов прикладных задач, приходящих, например, из NetWare shell. Услуги, предоставляемые NCP, включают доступ к файлам, доступ к принтеру, управление именами, учет использования ресурсов, защиту данных и синхронизацию файлов.
NetWare также поддерживает спецификацию интерфейса сеансового уровня Network Basic I/O System (NetBIOS) компаний IBM и Microsoft. Программа эмуляции NetBIOS, обеспечиваемая NetWare, позволяет программам, написанным для промышленного стандартного интерфейса NetBIOS, работать в пределах системы NetWare.
Услуги прикладного уровня NetWare включают NetWare Message Handling Service (NetWare MHS) (Услуги по обработке сообщений), Btrieve, NetWare Loadable Modules (NLM)
(Загружаемые модули NetWare) и различные характеристики связности IBM. NetWare MHS является системой доставки сообщений, которая обеспечивает транспортировку электронной почты. Btrieve представляет собой реализацию механизма доступа к базе данных двоичного дерева (btree) Novell. NLM реализуются как дополнительные модули, которые подключаются к системе NetWare. В настоящее время компания Novell и третьи участвующие стороны предоставляют NLM для чередующихся комплектов протоколов (alternate protocol stacks), услуги связи, услуги доступа к базе данных и много других услуг. <
В качестве среды NOS, NetWare определяет пять высших уровней эталонной модели OSI. Она обеспечивает совместное пользование файлами и принтером, поддержку различных прикладных задач, таких как передача электронной почты и доступ к базе данных, и другие услуги. Также, как и другие NOS, такие как Network File System (NFS) компании Sun Microsystems, Inc. и LAN Manager компании Microsoft Corporation, NetWare базируется на архитектуре клиент-сервер (slient-server architecture). В таких архитектурах клиенты (иногда называемые рабочими станциями) запрашивают у серверов определенные услуги, такие как доступ к файлам и принтеру.
Первоначально клиентами NetWare были небольшие РС, в то время как серверами были ненамного более мощные РС. После того, как NetWare стала более популярной, она была перенесена на другие компьютерные платформы. В настоящее время клиенты и сервера могут быть представлены практически любым видом компьютерной системы, от РС до универсальных вычислительных машин.
Основная характеристика системы клиент-сервер заключается в том, что доступ к отдаленной сети является прозрачным для пользователя. Это достигается с помощью удаленного вызовова процедур (remote procedure calls) - такого процесса, когда программа местного компьютера, работающая на оборудовании клиента, отправляет вызов в удаленный сервер. Этот сервер выполняет указанную процедуру и возвращает запрошенную информацию клиенту местного компьютера.
Рисунок иллюстрирует в упрощенном виде известные протоколы NetWare и их связь с эталонной моделью OSI. При наличии соответствующих драйверов, NetWare может работать с любым протоколом доступа к носителю. На рисунке перечислены те протоколы доступа к носителю, которые в настоящее время обеспечиваются драйверами NetWare.
<
Internet Packet Exchange (IPX) является оригинальным протоколом сетевого уровня Novell. Если устройство, с которым необходимо установить связь, находится в другой сети, IPX прокладывает маршрут для прохождения информации через любые промежуточные сети, которые могут находиться на пути к пункту назначения. На Рисунке представлен формат пакета IPX.
Пакет IPX начинается с 16-битового поля контрольной суммы (checksum), которое устанавливается на единицы.
16-битовое поле длины (length) определяет длину полной дейтаграммы IPX в байтах. Пакеты IPX могут быть любой длины, вплоть до размеров максимальной единицы передачи носителя (MTU). Фрагментация пакетов не применяется.
За полем длины идет 8-битовое поле управления транспортировкой (transport control), которое обозначает число роутеров, через которые прошел пакет. Когда значение этого поля доходит до 15, пакет отвергается исходя из предположения, что могла иметь место маршрутная петля.
8-битовое поле типа пакета (packet type) определяет протокол высшего уровня для приема информации пакета. Двумя общими значениями этого поля являются 5, которое определяет Sequenced Packet Exchange (SPX) (Упорядоченный обмен пакетами) и 17, которое определяет NetWare Core Protocol (NCP) (Основной протокол NetWare).
Информация адреса пункта назначения (destination address) занимает следующие три поля. Эти поля определяют сеть, главную вычислительную машину и гнездо (процесс) пункта назначения.
Следом идут три поля адреса источника (source address), определяющих сеть, главную вычислительную машину и гнездо источника.
За полями пункта назначения и источника следует поле данных (data). Оно содержит информацию для процессов высших уровней.
Хотя IPX и является производной XNS, он имеет несколько уникальных характеристик. С точки зрения маршрутизации , наиболее важное различие заключается в механизмах формирования пакетов данных этих двух протоколов. Формирование пакета данных - это процесс упаковки информации протокола высшего уровня и данных в блок данных. Блоки данных являются логическими группами информации, очень похожими на слова телефонного разговора. XNS использует стандартное формирование блока данных Ethernet, в то время как пакеты IPX формируются в блоки данных Ethernet Version 2.0 или IEEE 802.3 без информации IEEE 802.2, которая обычно сопровождает эти блоки данных. Следующий рисунок иллюстрирует формирование пакета данных Ethernet, стандарта IEEE 802.3 и IPX.
Примечание: NetWare 4.0 обеспечивает формирование пакетов IPX в блоки данных IEEE 802.3.
Для маршрутизации пакетов в об'единенных сетях IPX использует протокол динамической маршрутизации, называемый Routing Information Protocol (RIP) (Протокол маршрутной информации). Также, как и XNS, RIP получен в результате усилий компании Xerox по разработке семейства протоколов XNS. В настоящее время RIP является наиболее часто используемым протоколом для внутренних роутеров (interior gateway protocol-IGP) в сообществе Internet-среде международной сети, обеспечивающей связность практически со всеми университетами и исследовательскими институтами и большим числом коммерческих организаций в США, а также со многими иностранными организациями.
В дополнение к разнице в механизмах формирования пакетов, Novell также дополнительно включила в свое семейство протоколов IPX протокол, называемый Service Adverticement Protocol (SAP) (Протокол об'явлений об услугах). SAP позволяет узлам, обеспечивающим услуги, об'являть о своих адресах и услугах, которые они обеспечивают.
Novell также поддерживает "Блок адресуемой сети" LU 6.2 компании IBM (LU 6.2 network addressable unit - NAU). LU 6.2 обеспечивает связность по принципу равноправных систем через среду сообщений IBM. Используя возможности LU 6.2, которые имеются у NetWare, узлы NetWare могут обмениваться информацией через сеть IBM. Пакеты NetWare формируются в пределах пакетов LU 6.2 для передачи через сеть IBM. <
Sequenced Packet Exchange (SPX) (Упорядоченный обмен пакетами) является наиболее часто используемым протоколом транспортного уровня NetWare. Novell получила этот протокол в результате доработки Sequenced Packet Protocol (SPP) системы XNS. Как и протокол ТСР (Transmission Control Protocol) и многие другие протоколы транспортного уровня, SPX является надежным, с установлением соединения протоколом, который дополняет услуги дейтаграмм, обеспечиваемые протоколами Уровня 3.
Novell также предлагает поддержку протокола Internet Protocol (IP) в виде формирования протоколом User Datagram Protocol(UDP)/IP других пакетов Novell, таких как пакеты SPX/IPX. Для транспортировки через об'единенные сети, базирующиеся на IP, дейтаграммы IPX формируются внутри заголовков UDP/IP. <
Статьи, используемые в системе телеконференций, как уже оговаривалось, имеют формат, определенный в RFC 850, и очень похожи на сообщения электронной почты. Каждая статья состоит из тех же частей: заголовка и тела. Тело статьи - это текст сообщения. Заголовок указывает программным средствам системы телеконференций, как следует распространять эту статью по сети INTERNET, а также содержит информацию о теме статьи. Информация заголовка используется для построения индекса серверов новостей, который позволяет клиентам создавать меню и искать интересующие их статьи без просмотра совокупности статей. Таким образом, в заголовке содержатся данные об авторе, теме, конспект и некоторые индексирующие ключевые слова. Ниже приведен пример статьи, составленной в формате RFC 850. Статья была передана через последовательность UNIX-компьютеров с помощью протокола UUCP. В таком виде она может быть получена сервером новостей, поддерживающим протокол NNTP.
Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/89; site sdcsvax.UUCP * текущий
компьютер-получатель, выступающий в роли транслятора
Posting-Version: version B 2.10.1 6/24/89 SMI; site unitek.uucp * компьютер, на кото ром была опубликована статья
Path:sdcsvax!sdcrdcf!hplabs!qantel!ihnp4!alberta!ubc-vision!unitek !honman * серверы новостей, через которые была передана статья
From: honman@unitek.uucp (Man Wong) * отправитель статьи
Newsgroups: net.unix-wizards * название группы новостей, в которой опубликована данная статья
Subject: foreground -> background ? * тема статьи (указывается автором)
Message-ID: <167@unitek.uucp> * идентификатор сообщения, машины отправителя
Date: 25 Sep 93 23:51:52 GMT * дата отправки
Date-Received: 29 Sep 93 09:54:48 GMT * дата получения последним сервером
Reply-To: honman@unitek.UUCP (Hon-Man Wong) * E-Mail адрес автора для желающих ответить
Distribution: net.all * область распространения статьи, задаваемая автором
Organization: Unitek Technologies Corporation * место работы автора
Lines: 12 * количество строк текста в статье
I have a process (C program) which generates a child and waits for
it to return. What I would like to do is to be able to run the
child process interactively for a while before kicking itself into
the background so I can return to the parent process (while the
child process is RUNNING in the background). Can it be done? And
if it can, how?
Please reply by E-mail. Thanks in advance.
Hon-Man Wong
<
После того, как пользователь, используя локальное программное обеспечение для работы с системой новостей UseNet, сформировал свою статью, т. е. присоединил файлы, вставил рисунки и т. п., так же как и в случае отправки обычного почтового сообщения, статья "заворачивается" в конверт системы UseNet, во многом похожий на конверт сообщений SMTP.
Стандартный формат сообщений электронной почты определяет структуру самого сообщения, расположение и типы его частей, форматы кодировок (см. раздел "Формат почтовых сообщений, MIME" главы "SMTP"). Формат статьи UseNet использует формат сообщений электронной почты как структуру, организующую передаваемую информацию, дополняя ее полями, специфичными для системы передачи новостей. Текст и конверт почтового сообщения образуют единую структуру, которая используется для построения статьи UseNet.
При изменении или расширении почтовых стандартов, не требуется изменять формат статей UseNet, поскольку он уже содержит внутри себя структуру почтового сообщения. Можно говорить, что формат статей UseNet представляет собой дополнительную структуру, позволяющую почтовым сообщениям тиражироваться через систему UseNet и протокол NNTP.
Структура почтового сообщения подробно рассматривалась в разделе, посвященном протоколу SMTP. Поэтому, обсуждая структуру статьи UseNet, остановимся на описании только тех частей сообщения, которые добавляются системой UseNet. Типичный заголовок статьи UseNet выглядит следующим образом:
Стандартное UseNet-сообщение состоит (так же как и почтовое сообщение) из нескольких строк заголовка, отделенных от тела сообщения пустой строкой. Каждая строка состоит из ключевого слова, двоеточия ":", пробела, информации и символов завершения строки -<CRLF>.
Поля "From:", "Date:", "Subject:", "Message-ID:" содержат те же параметры, что и аналогичные поля конверта почтового сообщения. Форматы этих полей в статьях UseNet зависят от программного обеспечения клиента для работы с UseNet. | |
Поле "Newsgroups:" заголовка статьи определяет группу и содержит название дискуссии или конференции, которой принадлежит данная статья. Одна и та же статья может принадлежать нескольким группам, тогда их названия перечисляются через запятую. |
Поле "Path:" содержит путь сообщения, который был проделан, чтобы попасть в данную систему. Когда система переправляет сообщение с одного хоста на другой, она добавляет имя хоста в поле "Path:". Имена хостов могут отделяться друг от друга любым знаком пунктуации за исключением точки — "." (поскольку точка используется в именах хостов). Например, так: "Path: cbosgd!mhuxj!mhuxt" или "Path: cbosgd, mhuxj, mhuxt", или "Path: @cbosgd.att.com,@mhuxj. att.com,@mhuxt. att.com". Как правило, имя следующего хоста добавляется в строчку слева, поэтому хост — инициатор сообщения всегда стоит в этой строке справа. Это нужно для обеспечения совместимости со старыми системами. Например, хост А получил сообщение с параметром "Path: X!Y!Z". Если хост А отправляет его хосту В, то хост В получит статью с параметром "Path: |
Поле "Followup-To:" имеет тот же формат, что и поле "Newsgroups:". Если это поле присутствует, дополнительные статьи, относящиеся к данной статье, направляются в конференцию(ии), указанные в этом поле. Если поле отсутствует, дополнения к данной статье направляются в конференцию(ии), указанные в поле "Newsgroups:". |
Поле "Expires:" содержит дату "истечения срока действия" сообщения. Поле может быть использовано для удаления статей, содержащих информацию, имеющую ограниченный срок действия (для того чтобы статьи, содержащие критичную по времени информацию, находились в сети заданное время). Это может относиться, например, к объявлению о дате какого-либо симпозиума или семинара. Если это поле не указано, используется значение, устанавливаемое локальным программным обеспечением по умолчанию, например, по соображениям экономии дискового пространства. Пользователям настоятельно не рекомендуется использовать это поле, если в этом нет необходимости. |
Поле "References:" содержит список идентификаторов сообщений (Message-ID), на которые ссылается данное сообщение. Это поле обязательно должно присутствовать во всех сообщениях, являющихся дополнительными к данному. Как правило, поле "Subject:" сообщений, которые являются ответными к данному, содержит префикс "Re:". Например: |
Поле "Organization:" содержит имя организации, к которой принадлежит отправитель или хост отправителя. |
Поле "Keywords:" содержит ключевые слова-идентификаторы сообщения. Оно используется при поиске сообщения конкретного содержания. |
Поле "Summary:" содержит краткое описание содержания статьи. |
Поле "Distribution:" используется для ограничения распространения статей определенных конференций. Поле содержит идентификаторы зон распространения статьи. Например: |
Поле "Xref:" содержит имя локального хоста без идентификатора домена, номер данной статьи и номер данной конференции в почтовой системе локального хоста. Например, если заголовок сообщения содержит следующие строки: |
Как уже было отмечено выше, система UseNet для формирования и тиражирования своих статей использует почтовые сообщения. Поэтому для функционирования системы UseNet настоятельно рекомендуется, чтобы участвующие в обмене сообщениями хосты использовали совместимые почтовые системы. В противном случае система будет использовать только часть параметров, что существенно уменьшит возможности организации дискуссий.
Примечание
Например, поле "From:" сообщений новостей нельзя будет использовать в его стандартном виде, если синтаксис имен хостов во взаимодействующих системах будет различным.
Системы, использующие для передачи статей дискуссий электронную почту (это системы, использующие метод передачи по спискам рассылки), должны отличать отправку и получение статей дискуссий от обычных почтовых сообщений. В противном случае могут возникнуть проблемы, связанные, например, с идентификацией поля "From:", поскольку отправители почтового сообщения и статьи могут не совпадать. Другая проблема может возникнуть с интерпретацией ошибочных сообщений и возвращением ошибок отправителю, которые не совпадают друг с другом в почтовой системе и системе новостей.
Одним из решений этой проблемы является инкапсуляция статьи дискуссии, вместе с заголовком, в тело почтового сообщения. Для этого в начало каждой строчки статьи новостей, как тела, так и заголовка, вставляется буква "N". После этого статья записывается в тело почтового сообщения. Это гарантирует, что ни одна строчка статьи не будет интерпретироваться почтовым сервером как управляющая для почтового сообщения. Программа, ко-горая получит такое сообщение, извлекает из него статью и передает ее соответствующей программе обработки статей дискуссий.
В таком формате сообщение будет выглядеть следующим образом:
Сервер новостей UseNet использует протокол NNTP для взаимодействия с другими серверами. Механизм работы протокола NNTP во многом похож на механизм работы по протоколу SMTP. Протокол поддерживает канал обмена новостями и простейший интерфейс работы с распределенной базой данных новостей. При использовании в качестве транспортного протокола TCP, протокол NNTP, как правило, работает с портом 119.
Команды и ответы протокола состоят из ASCII-символов. Если соединение позволяет передавать 8-битные данные, восьмой (старший) бит устанавливается в ноль. Команды могут содержать параметры, которые отделяются пробелами или символами табуляции. Каждая строка может содержать только одну команду (с параметрами или без), должна заканчиваться парой <CRLF> и быть длиной не более 512 байт.
После обработки команды, сервер новостей возвращает статус обработки. Ответ сервера представляет собой строку, состоящую из числового кода обработки и текста (который может быть либо комментарием обработки команды, либо возвращаемой по команде информацией).
Ответы бывают двух видов: текстовые и статус-ответы. Текстовые ответы следуют только после строки цифрового статус-ответа, который указывает на то, какого рода текстовый ответ будет за ним следовать. Текстовый ответ представляет собой последовательность строк текстового содержания, каждая из которых заканчивается комбинацией <CRLF>. Отдельная строка, содержащая только символ (.), а точнее комбинацию символов <CRLF>.<CRLF>,
передается для обозначения конца текста. В случае, если исходный текст содержит в качестве первого символа строки символ (.), то при передаче он будет продублирован. На приемной стороне пользователь отбросит этот символ.
Предполагается, что текстовые сообщения должны быть отображены на экране пользовательского терминала в отличие от статус-ответов, которые интерпретируются программой-клиентом пользователя.
Статус-ответы являются сообщениями о статусе от сервера и индицируют ответ на последнюю команду, принятую от клиента.
Команда LIST возвращает список групп сервера новостей и сопутствующую информацию. Например: |
Для того чтобы получить статьи из конкретной группы, пользователь должен к ней подсоединиться. Это делается с помощью команды GROUP. В качестве параметра этой команды задается название группы новостей. Если пользователь не знает названия группы, может взять его из списка, возвращаемого командой LIST. Например: |
После того как выбрана группа новостей, пользователь может прочитать статью из этой группы. Для этого можно использовать команды: ARTICLE, BODY, HEAD. В качестве аргументов команды используют либо номер статьи, либо ее уникальный идентификатор (Message-ID). Последний может использоваться, например, для предотвращения повторного чтения одной и той же статьи. Разница между этими командами заключается в том, что ARTICLE возвращает как заголовок, так и тело статьи, HEAD возвращает только заголовок, a BODY — только тело сообщения. Например: |
Сообщения в группе можно читать последовательно, не обращаясь к номеру статьи. Для этого требуется установить указатель на текущую статью. Это делает команда STAT. Аргументом команды является или номер статьи в группе, или уникальный идентификатор сообщения (Message-ID). После того как указатель установлен, вы можете читать текст статей, например, командой BODY, не указывая номера. Для того чтобы передвинуть указатель на следующую статью, следует подать команду NEXT без аргументов, соответственно, на предыдущую — команду LAST. Например: |
Пользователь может получить от сервера новостей список групп, которые были созданы позднее заданной даты. Этот сервис предоставляется командой NEWGROLJPS. Аргументами команды NEWGROUPS являются дата и время в формате "YYMMDD HHMMSS", флаг отсчета времени (локальное или по GMT), маска имен групп. Например, запрос списка групп, созданных на данном сервере с 15 мая 1995 года по GMT и имеющих в своем названии строку "net" выглядит следующим образом: |
Пользователь может получить от сервера новостей список уникальных идентификаторов статей которые были созданы в указанной группе позднее заданной даты. Этот сервис предоставляется командой NEW-NEWS. Аргументами команды являются дата и время в формате "YYMMDD HHMMSS", флаг отсчета времени (локальное или по GMT), маска имени группы новостей. Маска имени в данной команде позволяет использовать символ джокеры ("*") и символ отрицания ("!"). Например, запрос списка статей, полученных всеми группами новостей данного сервера после 16 июня 1997 года выглядит следующим образом: |
Команда IHAVE информирует сервер, что пользователь имеет статью с идентификатором <Message-ID>, который указывается в качестве аргумента данной команды. Например: |
Для того чтобы отправить в конференцию новую статью, пользователь должен сначала убедиться, что данная конференция доступна для записи новых статей и дать команду POST. Сервер должен ответить кодом готовности принять сообщение (340). После этого пользователь может отправить статью, включая заголовок и тело сообщения в том же формате, в каком он получает статьи от данного сервера. Передача сообщения завершается последовательностью "<CRLF>.<CRLF>". Например: |
Завершает сессию обмена команда QUIT: |
Далее представлен простейший пример сессии работы клиента и сервера по протоколу NNTP:
S: 200 atvax news server ready — posting ok
C: GROUP net. Wizards
S: 211 104 10011 10125 net.wizards group selected
(there are 104 articles on file, from 10011 to 10125)
C: STAT 10110
S: 223 10110 <23445@svax.ARPA> article retrieved - statistics
only (article 10110 selected, its message-id is
<23445@svax.ARPA>)
C: BODY
S: 222 10110 <23445@svax.ARPA> article retrieved - body follows
S: ... text body ...
S: .
C: NEXT
S: 223 10113 <21495@nudebch.uucp> article retrieved - statistics
only (article 10113 was next in group)
C: ARTICLE 10120
S: 220 10120 <4105@ucbvax.ARPA> Article retrieved, text follows
S: ... text article ...
S:
C: QUIT
S: 205 goodbye. <
Программное обеспечение хоста, который предоставляет пользователям возможность работать с хранящимися на нем статьями и управляет доступом к новостям и обновлением статей, называется сервером новостей. Используя протокол NNTP, серверы новостей обмениваются между собой статьями новостей. Механизм NNTP позволяет серверам новостей выбирать, какие статьи читать и передавать на другие серверы.
Алгоритм работы с системой серверов новостей заключается в следующем. Клиент, инициирующий отправку, проверяет, существует ли на сервере группа новостей — конференция (Newsgroup), к которой относится данная статья, после чего она отправляется. Затем клиент запрашивает список новых статей, поступивших на сервер, на основании которого он может запросить новые статьи. В завершение, клиент сообщает серверу о тех статьях, которые он уже имеет, для того, чтобы сервер не отправлял эти статьи клиенту, как новые, если они поступят еще раз.
Для небольшого количества пользователей идеальной схемой построения обмена новостями была бы структура, состоящая из одного News-сервера и пользователей, обращающихся к нему для отправки или получения новых статей. В системах с большим количеством клиентов, например, масштаба университета или крупного предприятия, необходимо использовать так называемые промежуточные серверы новостей — intermediate news server.
Такой промежуточный сервер работает к каждом домене сети организации и отвечает за обеспечение посреднических действий между своими клиентами и главным News-сервером. В его обязанности, например, входит кэширование новых статей для подписчиков на данные конференции внутри домена. Для работы с UseNet клиент такой сети сначала соединяется со "своим" промежуточным сервером и читает размещенные на нем статьи новостей. Если сервер оказывается неработоспособным или у него нет требуемых статей, программное обеспечение может обратиться на более высокий уровень иерархии сервера новостей.
Пользователи крохотных сетей, состоящих из нескольких компьютеров и не имеющих возможности или целесообразности устанавливать свой промежуточный сервер, как правило, обращаются к серверу, обслуживающему большее количество дискуссий или имеющему более доступный канал соединения. Статья новостей, попавшая на один из серверов, основной или промежуточный, должна быть разослана всем участникам данной дискуссии. Обязанность тиражирования статей между собой целиком лежит на серверах UseNet.
Для обмена сообщениями между серверами, а также для доступа к серверам используется протокол NNTP. <
Internet-сообщество уже много лет пользуется системой тиражирования объявлений, рекламы, сообщений и другой информации. Всю подобным образом тиражируемую информацию называют новостями — "news". Новости делятся на группы новостей — "newsgroups". Группы новостей организованы в определенном порядке, основанном на распределении дискуссий по темам, например, отдых, спорт, новости, информация, религия и др. Внутри каждой из этих групп может быть до нескольких тысяч подгрупп, которые, в свою очередь, обладают такой же иерархической структурой. Принцип этой организации подобен структуре размещения каталогов и подкаталогов на жестком диске.
Всё множество групп UseNet разбито на несколько больших категорий. Вот основные, считающиеся "официальными":
Biz - бизнес;
Comp – вычислительная техника;
News - новости общего характера;
Rec - развлечения, хобби, отдых;
Sci - наука;
Soc – социальные темы;
Talk – с ориентацией на дискуссию;
Alt – альтернативные взгляды;
Misc – всё остальное.
К примеру, группа, обменивающаяся информацией об отдыхе (recreation), использует ключ гес для построения иерархии более низкого уровня, такой как rec.arts, rec.games, rec.pets, rec.sports, rec.travel и т. д. Каждая из подгрупп, например, rec.pets, может быть, в свою очередь, разделена на более мелкие подгруппы, например, rec.pets.dogs, rec.pets.cats и др. Так организованные группы новостей позволяют пользователям, имеющим общие интересы, обмениваться новостями, отправлять свои статьи и отвечать на заметки других пользователей, обмениваться иллюстрациями и программным обеспечением для просмотра статей этой группы и т. п.
Топологически, UseNet представляет собой направленный граф. Каждый узел графа будет обозначать хост системы, а каждое ребро — путь передачи статей от одного хоста к другому. UseNet можно представить себе как множество подсетей, по каждой из которых передаются статьи определенной конференции. Большинство соединений устроено таким образом, что статьи UseNet могут передаваться в обе стороны, однако, на практике, передача осуществляется только в одном направлении.
Тиражирование новостей по почте в соответствии со списками рассылки заключается в следующем. Определенные хосты, например, компьютеры пользователей или почтовые хосты, выполняющие сервис тиражирования, хранят у себя списки адресов подписчиков на определенные дискуссии. Эти списки используются для отправки каждому из подписчиков копии тиражируемой для него информации — статей групп дискуссий. Статьи передаются от хоста к хосту как обычная почта, и каждый из хостов должен переправить всю поступившую информацию конференций на хосты, которые зафиксированы в его списке рассылки. Эти хосты, в свою очередь, должны переправить полученную информацию следующим хостам и т. д. |
Другой способ тиражирования информации заключается в работе с системой серверов новостей и распределенной базы данных для хранения информационных сообщений. Этот метод используется в системе UseNet и объединяет работу множества различных сетей с разнообразным аппаратным и программным обеспечением. |
Если сообщение содержит строку "Control:", это означает, что данное сообщение — управляющее. Управляющие сообщения используются для обмена служебной информацией между UseNet-хостами (а не пользователями). Управляющие сообщения передаются с использованием того же самого механизма, как и обычные сообщения, т. е. через систему групп или конференций подписки.
Примечание
Для совместимости со старыми версиями системы, сообщения адресованные группе "all.all.ctl" считаются управляющими. Если сообщение этой группы не содержит поля "Control:", поле предмета сообщения "Subject:" для таких сообщений интерпретируется как параметр "Control:". Кроме того, если в сообщениях этой группы первые 4 символа поля "Subject:" содержат подстроку "cmsg", оставшаяся часть поля "Subject:" интерпретируется как управляющее сообщение.
Поля "Control:" заголовка сообщения содержат команду и параметры команды: первое слово представляет собой команду, остальные — параметры этой команды. Другие поля заголовка и тело сообщения тоже могут использоваться как потенциальные параметры команды. Например:
Управляющие сообщения передаются автоматически программным обеспечением хоста UseNet, и отправлять управляющие сообщения вручную следует крайне осторожно. Сообщения о неправильно составленных поступивших управляющих сообщениях или об ошибках их обработки передаются не отправителю сообщения, а администратору локальной системы, из которой сообщение было отправлено.
Сообщение "cancel" позволяет пользователю удалять статьи из локальной системы уже после того, как статья была тиражирована. Параметр команды — идентификатор сообщения "Message-ID". |
Отправить такую команду может только автор статьи или администратор локальной UseNet-системы. Обработчик данного управляющего сообщения, прежде чем его применить, сверяет параметры "Sender:" и "From:" управляющего и исходного сообщений.
Сообщения "ihave/sendme". Эти сообщения являются частью ihave/sendme-протокола, который позволяет одному хосту (А) сообщить другому хосту (В), что данное сообщение им получено — команда "ihave" (а другому хосту (В) запросить это сообщение — команда "sendme"). |
Управляющие сообщения могут создавать или удалять группы (конференции) новостей. |
Управляющее сообщение "sendsys" ( без аргументов) представляет собой запрос к данному UseNet-хосту на получение списка всех его соседей и групп статей новостей, которые он передает своим соседям. Ответ на запрос передается отправителю данного управляющего сообщения, указанному в поле "Reply-To:" или в поле "From:" управляющего сообщения. |
Управляющее сообщение "version" (без аргументов) используется для запроса имени и версии программного обеспечения системы UseNet, используемой на запрашиваемом хосте. |
Протокол PPP (Point-to-Point Protocol)
ОГЛАВЛЕНИЕ
1. Введение | ||
2. Общее описание протокола PPP | ||
3. Инкапсуляция PPP | ||
3.1. Принцип инкапсуляции | ||
3.2. Формат кадра РРР при инкапсуляции | ||
4. Функционирование звена PPP | ||
4.1. Краткий обзор | ||
4.2. Диаграмма стадий PPP | ||
4.3. Стадия "Выключено" | ||
4.4. Стадия "Установление связи" | ||
4.5. Стадия "Аутентификация" | ||
4.6. Стадия "Протокол сетевого уровня" | ||
4.7. Стадия "Завершение связи" | ||
5. Автомат согласования опций | ||
5.1. Таблица переходов состояний | ||
5.2. Состояния | ||
5.3. События | ||
5.4. Действия | ||
5.5. Предотвращение зацикливания | ||
5.6. Счетчики и таймеры | ||
6. Форматы пакетов LCP | ||
6.1. Формат пакетов LCP "Запрос конфигурации" | ||
6.2. Формат пакетов LCP "Подтверждение конфигурации" | ||
6.3. Формат пакетов LCP "Неподтверждение конфигурации" | ||
6.4. Формат пакетов LCP "Сброс конфигурации" | ||
6.5. Формат пакетов LCP "Запрос разъединения" и "Подтверждение разъединения" | ||
6.6. Формат пакетов LCP "Сброс кода" | ||
6.7. Формат пакетов LCP "Сброс протокола" | ||
6.8. Формат пакетов LCP "Запрос эха" и "Ответ эха" | ||
6.9. Формат пакетов LCP "Запрос сброса" | ||
7. Опции конфигурации LCP | ||
7.1. Максимальный размер принимаемого блока | ||
7.2. Протокол аутентификации | ||
7.3. Протокол качества | ||
7.4. Мagic-номера | ||
7.5. Сжатие поля протокола | ||
7.6. Сжатие полей адреса и управления | ||
Список литературы | ||
Список используемых сокращений и терминов |
1. Введение
С конца 1980-х годов в сети Internet наблюдается резкий рост числа главных вычислительных машин (ГВМ или хостов), работающих с протоколами TCP/IP. Их преобладающее большинство было подключено к локальным вычислительным сетям различных типов, наиболее популярной среди которых была сеть Ethernet. Большая часть других хостов соединялась через глобальные сети, такие как сети передачи данных общего пользования типа Х.25. Сравнительно небольшое число ГВМ было подключено к каналам связи с непосредственным соединением точка-точка (т.е.
Метод инкапсуляции (метод формирования дейтаграмм для передачи по последовательным каналам). РРР в качестве базиса для формирования дейтаграмм при прохождении через каналы с непосредственным соединением использует кадры, подобные кадрам процедуры HDLC (High-level Data Link Control - управление каналом передачи данных высокого уровня). | |
Расширяемый протокол контроля канала LCP (Link Control Protocol). LCP предназначен для организации, выбора конфигурации и проверки соединения канала передачи данных. | |
Семейство протоколов контроля сети NCP (Network Control Protocols). Служит для организации и выбора конфигурации различных протоколов сетевого уровня. |
Организация канала и согласование его конфигурации. Прежде, чем может быть произведен обмен какими-либо дейтаграммами сетевого уровня (например, IP), LCP сначала должен открыть связь и согласовать параметры конфигурации. Эта фаза завершается после того, как будет отправлен и принят пакет подтверждения конфигурации. | |
Определение качества канала связи. LCP обеспечивает необязательную фазу определения качества канала, которая следует за фазой организации канала и согласования его конфигурации. В этой фазе проверяется канал с целью выяснения, является ли качество канала достаточным для вызова протоколов сетевого уровня. Эта фаза является полностью факультативной. LСP может задержать передачу информации протоколов сетевого уровня до завершения этой фазы. | |
Согласование конфигурации протоколов сетевого уровня. После того, как LСP завершит фазу определения качества канала связи, соответствующими NCP может быть выбрана конфигурация сетевых протоколов, и они могут быть в любой момент вызваны и освобождены для последующего использования. Если LCP закрывает данный канал, он информирует об этом протоколы сетевого уровня, чтобы они могли принять соответствующие меры. | |
Прекращение действия канала. LCP может в любой момент закрыть канал. Это обычно делается по запросу пользователя, но может произойти также из-за какого-нибудь физического события, такого, как потеря носителя или истечение периода бездействия таймера. |
Пакеты для организации канала связи. Используются для организации и выбора конфигурации канала. | |
Пакеты для завершения действия канала. Используются для завершения действия канала связи. | |
Пакеты для поддержания работоспособности канала. Используются для поддержания и отладки канала. |
Протокол (8/16 бит) |
Информация | Дополнение |
Значение (в 16-ричном виде) | Наименование протокола |
0001 | Протокол дополнения |
0003..001f | Резерв |
007d | Резерв |
00cf | Резерв |
00ff | Резерв |
8001..801f | Не используется |
807d | Не используется |
80cf | Не используется |
80ff | Не используется |
C021 | Протокол LCP |
C023 | Протокол аутентификации пароля |
C025 | Сообщение о качестве связи |
C223 | Отклик протокола аутентификации в режиме подтверждения |
Длина поля в байтах: 1 | 1 | 1 | 2/1 | Переменная | 2 или 4 |
Флаг | Адрес | Управление | Протокол | Данные | FCS |
События: | Действия: |
Up = включение нижнего уровня | tlu = этот уровень включается |
Down = выключение нижнего уровня | tld = этот уровень выключается |
Open = административное открытие | tls = этот уровень начинается |
Close= административное закрытие | tlf = этот уровень завершается |
TO+ = таймаут со счетчиком > 0 | irc = счетчик перезапуска инициализируется |
TO- = таймаут с истекшим счетчиком | zrc = счетчик перезапуска обнуляется |
RCR+ = принят запрос конфигурации (удовлетворительный) | scr = посылается запрос конфигурации |
RCR- = принят запрос конфигурации (неудовлетворительный) | |
RCA = принято подтверждение конфигурации | sca = посылается подтверждение конфигурации |
RCN = принято неподтверждение/сброс конфигурации | scn = посылается неподтверждение/сброс конфигурации |
RTR = принят запрос разъединения | str = посылается запрос разъединения |
RTA = принято подтверждение разъединения | sta = посылается подтверждение разъединения |
RUC = принят нераспознанный код | scj = посылается сброс кода |
RXJ+ = принят сброс кода (разрешаемый) или сброс протокола | |
RXJ- = принят сброс кода (аварийный) или сброс протокола | |
RXR = принят запрос эха или ответ эха или запрос сброса | ser = посылается ответ эха |
Состояния | ||||||
События | 0. Начальное | 1. Старт | 2. Закрыто | 3. Стоп | 4. Закрытие | 5. Остановка |
Up | 2 | irc, scr/6 | - | - | - | - |
Down | - | - | 0 | tls/1 | 0 | 1 |
Open | tls/1 | 1 | irc, scr/6 | 3r | 5r | 5r |
Close | 0 | tlf/0 | 2 | 2 | 4 | 4 |
TO+ | - | - | - | - | str/4 | str/5 |
TO- | - | - | - | - | tlf/2 | tlf/3 |
RCR+ | - | - | sta/2 | irc, scr, sca/8 | 4 | 5 |
RCR- | - | - | sta/2 | irc, scr, scn/6 | 4 | 5 |
RCA | - | - | sta/2 | sta/3 | 4 | 5 |
RCN | - | - | sta/2 | sta/3 | 4 | 5 |
RTR | - | - | sta/2 | sta/3 | sta/4 | sta/5 |
RTA | - | - | 2 | 3 | tlf/2 | tlf/3 |
RUC | - | - | scj/2 | scj/3 | scj/4 | scj/5 |
RXJ+ | - | - | 2 | 3 | 4 | 5 |
RXJ- | - | - | tlf/2 | tlf/3 | tlf/2 | tlf/3 |
RXR | - | - | 2 | 3 | 4 | 5 |
Состояния | ||||
События | 6. Послан запрос | 7. Принято подтверждение | 8. Послано подтверждение | 9. Открыто |
Up | - | - | - | - |
Down | 1 | 1 | 1 | tld/1 |
Open | 6 | 7 | 8 | 9r |
Close | irc, str/4 | irc, str/4 | irc, str/4 | tld, irc, str/4 |
TO+ | scr/6 | scr/6 | scr/8 | - |
TO- | tlf/3p | tlf/3p | tlf/3p | - |
RCR+ | sca/8 | sca, tlu/9 | sca/8 | tld, scr, sca/8 |
RCR- | scn/6 | scn/7 | scn/6 | tld, scr, scn/6 |
RCA | irc/7 | scr/6x | irc, tlu/9 | tld, scr/6x |
RCN | irc, scr/6 | scr/6x | irc, scr/8 | tld, scr/6x |
RTR | sta/6 | sta/6 | sta/6 | tld, zrc, sta/5 |
RTA | 6 | 6 | 8 | tld, zrc, sta/5 |
RUC | scj/6 | scj/7 | scj/8 | scj/9 |
RXJ+ | 6 | 6 | 8 | 9 |
RXJ- | tlf/3 | tlf/3 | tlf/3 | tld, irc, str/5 |
RXR | 6 | 7 | 9 | ser/9 |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Данные ... |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Опции ... |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Опции ... |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Опции ... |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Опции ... |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Данные... |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Код | Идентификатор | Длина | Сброшенный пакет... |
0 | 1 | 2 3 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
Код | Идентификатор | Длина |
Сброшенный протокол | Сброшенная информация... |
0 | 1 | 2 3 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
Код | Идентификатор | Длина |
Номер | Данные... |
0 | 1 | 2 3 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
Код | Идентификатор | Длина |
Номер | Данные... |
0 | 1 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 |
Тип | Длина | Данные... |
0 | Резерв |
1 | Максимальный размер принимаемого блока (MRU - Maximum-Receive-Unit) |
3 | Протокол аутентификации (Authentication-Protocol) |
4 | Протокол качества (Quality-Protocol) |
5 | Magic-номер |
7 | Сжатие полей протокола (Protocol-Field-Compression) |
8 | Сжатие адресных и управляющих полей (Address-and-Control-Field-Compression) |
0 | 1 | 2 3 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
Тип | Длина | MRU |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Тип | Длина | Протокол аутентификации | Данные... |
Величина в 16-ричном виде | Протокол |
C023 - | Протокол установления подлинности пароля PAP (Password Authentication Protocol); |
C223 - | Протокол аутентификации запроса диалога CHAP (Challenge Handshake Authentication Protocol). |
0 | 1 | 2 3 | |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |
Тип | Длина | Протокол качества | Данные... |
Величина в 16-ричном виде | Протокол |
C025 | Сообщение качества канала связи LQR (Link Quality Report) |
Число повторений | Вероятность |
1 | 1/2**32= 2.3 E-10 |
2 | 1/2**32**2 = 5.4 E-20 |
3 | 1/2**32**3 = 1.3 E-29 |
0 | 1 | 2 3 4 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 | 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 12 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 |
Тип | Длина | Мagic-номер |
0 | 1 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 |
Тип | Длина |
0 | 1 |
0 1 2 3 4 5 6 7 | 8 9 0 1 2 3 4 5 |
Тип | Длина |
Идея вызова удаленных процедур (Remote Procedure Call - RPC) состоит в расширении хорошо известного и понятного механизма передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть. Средства удаленного вызова процедур предназначены для облегчения организации распределенных вычислений. Наибольшая эффективность использования RPC достигается в тех приложениях, в которых существует интерактивная связь между удаленными компонентами с небольшим временем ответов и относительно малым количеством передаваемых данных. Такие приложения называются RPC-ориентированными.
Характерными чертами вызова локальных процедур являются:
Асимметричность, то есть одна из взаимодействующих сторон является инициатором; | |
Синхронность, то есть выполнение вызывающей процедуры при останавливается с момента выдачи запроса и возобновляется только после возврата из вызываемой процедуры. |
Существует несколько реализаций процедур удаленного вызова процедур в различных операционных системах.
В операционной системе UNIX используется процедура под одноименным названием (Remote Procedure Call - RPC). Данная процедура внедрена в ядро системы. Ее выполнение обеспечивается протоколом RPC.
В операционных системах Windows удаленный вызов процедур начал развиваться на базе механизмов OLE, которые постепенно развились в технологию DCOM (Distributed Component Object Model). Данная технология позволяет создавать достаточно мощные распределенные сетевые вычислительные среды. В технологии используются фирменные протоколы Microsoft.
Для обеспечения межплатформенного взаимодействия разработана и широко внедряется спецификация CORBA.