Операционная система UNIX
Операционная система UNIX читать книгу онлайн
Книга посвящена семейству операционных систем UNIX и содержит информацию о принципах организации, идеологии и архитектуре, объединяющих различные версии этой операционной системы.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Функции
pr_input()
pr_output()
pr_ctlinput()
pr_ctloutput()
mbuf
mbuf
Поле
pr_flags
PR_CONNREQUIRED
PR_WANTRCVD
Заметим, что каждый модуль протокола имеет собственные очереди сообщений, используемые для приема и передачи данных.
Каждый сетевой интерфейс системы представлен структурой данных, показанной на рис. 6.23. Сетевой интерфейс обычно связан с соответствующим сетевым адаптером, хотя это не является обязательным условием. Например, внутренний сетевой интерфейс loopback представляет собой псевдоустройство, используемое для унифицированного взаимодействия сетевых процессов в рамках одного хоста, отладки и т.п.
Рис. 6.23. Сетевой интерфейс
Решение об использовании того или иного сетевого интерфейса для передачи сообщения базируется на таблице маршрутизации и производится модулем сетевого уровня. Интерфейс может обслуживать протоколы различных коммуникационных доменов. Соответственно, один и тот же интерфейс может иметь несколько адресов, определенных для каждого семейства протоколов. Структуры, определяющие локальный и широковещательный (broadcast) адреса интерфейса, а также сетевую маску, хранятся в виде связанного списка.
Каждый сетевой интерфейс имеет очередь, в которую помещаются сообщения для последующей передачи, выполняемой функцией
if_output()
if_init()
if_reset()
if_watchdog()
Состояние интерфейса характеризуется флагами, хранящимися в поле
if_flags
Таблица 6.8. Состояния интерфейса
Флаг | Значение |
---|---|
IFF_UP | Интерфейс доступен для использования |
IFF_BROADCAST | Интерфейс поддерживает широковещательные адреса |
IFF_MULTICAST | Интерфейс поддерживает групповые адреса |
IFF_DEBUG | Интерфейс обеспечивает возможность отладки |
IFF_LOOPBACK | Программный внутренний интерфейс |
IFF_POINTOPOINT | Интерфейс для канала точка-точка |
IFF RUNNING | Ресурсы интерфейса успешно размещены |
IFF_NOARP | Интерфейс не использует протокол трансляции адреса |
Флаг
IFF_UP
IFF_BROADCAST
ifa_broadaddr
ifaddr
IFF_POINTOPOINT
ifa_dstaddr
ifa_broadaddr
ifa_dstaddr
IFF_RUNNING
Состояние интерфейса и ряд других параметров можно просмотреть с помощью команды ifconfig(1M):
$ <b>ifconfig le0</b>
le0: flags=863<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 194.85.160.50 netmask: ffffff00 broadcast 194.85.160.255
Легко заметить, что команда выводит значение следующих полей структуры
ifnet
le0
if_name
if_flags
if_mtu
inet
ifa_addr
netmask
ifa_netmask
broadcast
ifa_broadaddr
Интерфейс хранит статистическую информацию, которая может быть использована при мониторинге сети. В частности, эта информация включает число полученных пакетов уровня канала (
if_ipackets
if_ierrors
if_opackets
if_oerrors
if_collisions