Справочник по сетевым протоколам

       

Пример интерфейса с вышестоящим уровнем


Два примера вызовов, приведенные ниже, удовлетворяют запросы пользователя в общении с 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), или для любой другой формы общения между процессами. <



Содержание раздела