Андрей Робачевский - Операционная система UNIX

Здесь есть возможность читать онлайн «Андрей Робачевский - Операционная система UNIX» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 1997, ISBN: 1997, Издательство: BHV - Санкт-Петербург, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Операционная система UNIX: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Операционная система UNIX»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга посвящена семейству операционных систем UNIX и содержит информацию о принципах организации, идеологии и архитектуре, объединяющих различные версии этой операционной системы.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей

Операционная система UNIX — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Операционная система UNIX», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

TPI определяет набор и формат сообщений, с помощью которых протоколы верхнего уровня взаимодействуют с модулем транспортного протокола. Таким образом, TPI является интерфейсом между поставщиком транспортных услуг (transport provider) и пользователем этих услуг (transport user). Эти сообщения определяют транспортные примитивы (transport primitive), или команды, и могут иметь следующий формат:

□ Сообщение состоит из блока типа M_PROTO,за которым может следовать несколько блоков M_DATA. Блок M_PROTOсодержит управляющую информацию, включая тип команды и ее аргументы. В блоках M_DATAпередаются ассоциированные с командой данные прикладной программы.

□ Сообщение состоит из одного блока M_PCPROTO, который содержит управляющую информацию, включая тип команды и ее аргументы.

□ Сообщение состоит из одного или более блоков M_DATA, в которых передаются данные прикладной программы.

Таблица 6.10. Основные управляющие сообщения TPI

Транспортный примитив Тип сообщения Значение
T_BIND_REQ M_PROTO Запрос на связывание. Этот примитив инициируется пользователем транспортных услуг и запрашивает связывание потока с адресом протокола. Сообщение состоит из одного блока M_PROTO, который содержит значение адреса и заказанное максимальное число запросов, ожидающих обслуживания со стороны пользователя. Последний параметр игнорируется для транспортных услуг без предварительного установления связи. Блок M_PROTOсодержит следующие поля:
PRIM type Тип примитива — T_BIND_REQ
ADDR_length Размер адреса протокола
ADDR_offset Смещение адреса в блоке M_PROTO
CONIND_number Максимальное число запросов, ожидающих обслуживания
T_BIND_ACK M_PCPROTO Подтверждение получения запроса на связывание. Этот примитив отправляется пользователю транспортных услуг и означает, что поток был связан с адресом протокола, заказанное максимальное число ожидающих запросов допустимо и поток был активизирован. Сообщение состоит из одного блока M_PCPROTO, содержащего значения указанных параметров. Заметим, что возвращаемый адрес может не совпадать с адресом, указанным в запросе T_BIND_REQ. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_BIND_ACK
ADDR_length Размер адреса протокола
ADDR_offset Смещение адреса в блоке M_PROTO
CONIND_number Максимальное число запросов, ожидающих обслуживания
T_UNBIND_REQ M_PROTO Запрос на уничтожение связывания. Этот примитив инициируется пользователем транспортных услуг и запрашивает у поставщика уничтожение ранее созданного связывания потока с адресом протокола и деактивизацию потока.
T_CONN_REQ M_PROTO Запрос на установление связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи. Он инициируется пользователем транспортных услуг и запрашивает установление связи с указанным адресатом. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные, определенные пользователем. Заметим, что протокол TCP не позволяет передавать прикладные данные вместе с запросом. Блок M_PROTOсодержит значение адреса получателя и опции, связанные с этим примитивом. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_CONN_REQ
DEST_length Размер адреса протокола
DEST_offset Смещение адреса получателя в блоке M_PROTO
ОРТ_length Размер опций
ОРТ_offset Смещение опций в блоке M_PROTO
T_CONN_IND M_PROTO Индикация установления связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и свидетельствует о том, что удаленным пользователем с указанным адресом был сделан запрос на установление связи. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные, определенные пользователем. Блок M_PROTOсодержит значение адреса удаленного пользователя, отправившего запрос на установление связи, а также опции, связанные с этим примитивом. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_CONN_IND
SRC_length Размер адреса протокола
SRC_offset Смещение адреса отправителя в блоке M_PROTO
OPT_length Размер опций
OPT_offset Смещение опций в блоке M_PROTO
SEQ_number Идентификатор соединения
T_CONN_RES M_PROTO Ответ на запрос на установление связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и свидетельствует о том, что поставщик транспортных услуг принимает предшествующий запрос на установление связи. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные, определенные пользователем. Блок M_PROTOсодержит указатель на очередь чтения потока, который будет обрабатывать запрос. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_CONN_RES
QUEUE_ptr Указатель на очередь потока, который должен быть использован в качестве узла созданного соединения
OPT_length Размер опций
OPT_offset Смещение опций в блоке M_PROTO
SEQ_number Идентификатор соединения
T_CONN_CON M_PROTO Подтверждение установления связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи. Он отправляется пользователю транспортных услуг в качестве подтверждения установления связи с удаленным пользователем. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные, определенные пользователем. Блок M_PROTOсодержит значение размера адреса, сам адрес удаленного пользователя, обслуживающего соединение, а также опции, связанные с этим примитивом. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_CONN_CON
RES_length Размер адреса протокола
RES_ offset Смещение адреса удаленного узла в блоке M_PROTO
OPT_length Размер опций
ОРТ_offset Смещение опций в блоке M_PROTO
Т_DISCON_REQ M_PROTO Запрос на разрыв связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи. Он инициируется пользователем транспортных услуг и свидетельствует либо об отказе пользователем в установлении связи, либо о желании пользователя разорвать уже существующее соединение для данного потока. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные, определенные пользователем. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_DISCON_REQ
SEQ_number Идентификатор соединения
Т_DISCON_IND M_PROTO Индикация разрыва связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и свидетельствует о том, что удаленный пользователь либо отказывает в установлении связи, либо желает разорвать существующее соединение. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные, определенные пользователем. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_DISCON_IND
DISCON_reason Причина разрыва связи
SEQ_number Идентификатор соединения
Т_ORDREL_REQ M_PROTO Запрос на "аккуратное" прекращение связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и указывает поставщику транспортных услуг, что пользователь завершил передачу данных. При этом соединение переходит в симплексный режим, позволяя пользователю принимать данные от удаленного узла. Сообщение состоит из одного блока M_PROTO.
Т_ORDREL_IND M_PROTO Индикация "аккуратного" прекращения связи. Этот примитив применим только для транспортных услуг с предварительным установлением связи и отправляется пользователю транспортных услуг, свидетельствуя о том, что удаленный пользователь соединения завершил передачу данных. При этом соединение переходит в симплексный режим, позволяя пользователю передавать данные удаленному узлу. Сообщение состоит из одного блока M_PROTO.
T_UNIDATA_REQ M_PROTO Запрос на передачу данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и отправляется пользователем транспортных услуг в качестве запроса на передачу дата- граммы. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные пользователя. Блок M_PROTOсодержит значение размера адреса и сам адрес получателя датаграммы, а также опции, связанные с этим примитивом. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_UNIDATA_REQ
DEST_length Размер адреса протокола
DEST_offset Смещение адреса получателя в блоке M_PROTO
OPT_length Размер опций
ОРТ_offset Смещение опций в блоке M_PROTO
Т_UNITDATA_IND M_PROTO Индикация получения данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и указывает пользователю, что поставщиком транспортных услуг получена датаграмма от удаленного узла. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные пользователя. Блок M_PROTOсодержит значение адреса отправителя датаграммы, а также опции, связанные с этим примитивом. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_UNIDATA_IND
SRC length Размер адреса протокола
SRC_offset Смещение адреса отправителя в блоке M_PROTO
OPT_length Размер опций
ОРТ_offset Смещение опций в блоке M_PROTO
T_UDERROR_IND M_PROTO Сообщение об ошибке датаграммы. Этот примитив применим только для транспортных услуг без предварительного установления связи и указывает пользователю, что датаграмма с указанным адресом получателя и опциями вызвала ошибку. Сообщение состоит из одного блока M_PROTO, содержащего размер адреса и сам адрес получателя, опции, а также код ошибки, зависящий от конкретного транспортного протокола. Блок M_PROTOсодержит следующие поля:
PRIM_type Тип примитива — T_UDERROR_IND
DEST_length Размер адреса протокола
DEST_offset Смещение адреса отправителя в блоке M_PROTO
OPT_length Размер опций
OPT_offset Смещение опций в блоке M_PROTO
ERROR_type Код ошибки
T_DATA_REQ M_PROTO Запрос на передачу данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и информирует поставщика транспортных услуг, что сообщение содержит пакет данных интерфейса (Transport Interface Data Unit, TIDU). Одно или более таких сообщений формируют пакет данных протокола TSDU. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные пользователя. Блок M_PROTOсодержит флаг MORE_flag, указывающий, является ли следующее сообщение T_DATA_REQчастью того же TSDU. На основании этого флага поставщик транспортных услуг компонует транспортные пакеты TSDU. Передача данных с помощью запросов T_DATA_REQпозволяет сохранить границы записи при передаче. Заметим, что протоколом TCP данная возможность не поддерживается.
T_DATA_IND M_PROTO Индикация получения данных. Этот примитив применим только для транспортных услуг без предварительного установления связи и информирует пользователя, что сообщение содержит пакет данных интерфейса TIDU. Сообщение состоит из одного блока M_PROTO, за которым может следовать один или несколько блоков типа M_DATA, содержащих прикладные данные удаленного пользователя. Блок M_PROTOсодержит флаг MORE_flag, позволяющий пользователю определить границы TSDU.
Т_EXDATA_REQ M_PROTO Запрос на передачу экстренных данных. Этот примитив аналогичен T_DATA_REQ, но служит для передачи экстренных данных. Протокол TCP поддерживает передачу экстренных данных с помощью функции t_snd(3N) с аргументом flags, содержащим флаг T_EXPEDITEDи, возможно, T_MORE.
T_EXDATA_IND M_PROTO Индикация получения экстренных данных. Этот примитив аналогичен T_DATA_IND, но служит для передачи пользователю экстренных данных.
T_OK_ACK M_PCPROTO Положительное подтверждение. Этот примитив сообщает пользователю транспортных услуг, что предшествующий примитив, инициированный им, был успешно принят поставщиком транспортных услуг. В то же время, получение подтверждения не означает, что поставщиком были совершены какие-либо действия, связанные с предыдущим примитивом. Сообщение состоит из одного блока M_PCPROTOв котором хранится тип подтвержденного примитива CORRECT_prim.
T_ERROR_ACK M_PCPROTO Сообщение об ошибке. Этот примитив сообщает пользователю услуг, последний примитив, инициированный им, вызвал ошибку. Получение этого примитива может рассматриваться как отрицательное подтверждение, свидетельствующее, что никаких действий, связанных с ошибочным примитивом, не было предпринято. Сообщение состоит из одного блока M_PCPROTO, содержащего тип примитива, вызвавшего ошибку, код TLI и код системной ошибки UNIX. Блок M_PCPROTOсодержит следующие поля:
PRIM_type Тип примитива — T_ERROR_ACK
ERROR_prim Тип ошибочного примитива
TLI_error Код ошибки TLI
UNIX_error Код системной ошибки UNIX
T_INFO_REQ M_PCPROTO Запрос на получение параметров транспортного протокола. Этот примитив служит для запроса пользователем значений размеров различных параметров протокола, а также информации о текущим состоянии поставщика транспортных услуг. Сообщение состоит из одного блока M_PCPROTO.
T_INFO_ACK M_PCPROTO Параметры транспортного протокола. Этот примитив служит для передачи пользователю ранее запрошенных с помощью T_INFO_REQпараметров транспортного протокола. Сообщение состоит из одного блока M_PCPROTO, содержащего информацию, часть из которой возвращается функцией t_open(3N) , рассмотренной в разделе "Программный интерфейс сокетов" ранее в этой главе. Блок M_PCPROTOсостоит из следующих полей:
PRIM_type Тип примитива — T_INFO_ACK
TSDU_size Определяет максимальный размер пакета данных протокола TSDU
ETSDU_size Определяет максимальный размер пакета экстренных данных протокола ETSDU
CDATA_size Определяет максимальный объем данных, передаваемых при установлении связи. Соответствует полю connectструктуры infoфункции t_open(3N)
DDATA_size Определяет максимальный объем данных, передаваемых при разрыве связи. Соответствует полю disconструктуры infoфункции t_open(3N)
ADDR_size Определяет максимальный объем транспортного протокола. Соответствует полю addrструктуры infoфункции t_open(3N)
OPT_size Определяет размер опций для данного протокола. Соответствует полю optionsструктуры infoфункции t_open(3N)
TIDU_size Определяет размер пакета данных интерфейса TIDU
SERV_type Определяет тип транспортных услуг, предоставляемых поставщиком. Соответствует полю servtypeструктуры infoфункции t_open(3N)
CURRENT_state Определяет текущее состояние поставщика транспортных услуг
PROVIDER_flag Определяет дополнительные характеристики поставщика транспортных услуг
T_OPTMGMT_REQ M_PROTO Управление опциями протокола. Этот примитив позволяет пользователю получить или установить опции протокола. Сообщение состоит из одного блока M_PROTO, включающего следующие поля:
PRIM_type Тип примитива — T_OPTMGMT_REQ
OPT_length Размер опций
ОРТ_offset Смещение опций в блоке M_PROTO
MGMT_flags Флаги, определяющие характер запроса пользователя: T_NEGOTIATE — установить опции, указанные пользователем. В результате опции, установленные поставщиком, могут отличаться от заказанных; T_CHECK — проверить, поддерживаются ли опции, указанные пользователем, поставщиком; T_DEFAULT — возвратить значения опций протокола.
T_OPTMGMT_ACK M_PCPROTO Положительное подтверждение. Этот примитив подтверждает завершение операции с опциями протокола, заказанными пользователем. Сообщение состоит из одного блока M_PROTO, включающего те же поля, что и T_OPTMGMT_REQ.

Взаимодействие с прикладными процессами

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Операционная система UNIX»

Представляем Вашему вниманию похожие книги на «Операционная система UNIX» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Операционная система UNIX»

Обсуждение, отзывы о книге «Операционная система UNIX» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x