Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Рис. 6.23. Сетевой интерфейс

Решение об использовании того или иного сетевого интерфейса для передачи сообщения базируется на таблице маршрутизации и производится модулем сетевого уровня. Интерфейс может обслуживать протоколы различных коммуникационных доменов. Соответственно, один и тот же интерфейс может иметь несколько адресов, определенных для каждого семейства протоколов. Структуры, определяющие локальный и широковещательный (broadcast) адреса интерфейса, а также сетевую маску, хранятся в виде связанного списка.

Каждый сетевой интерфейс имеет очередь, в которую помещаются сообщения для последующей передачи, выполняемой функцией

if_output
. Интерфейс также может определить процедуры инициализации
if_init
,
сброса
if_reset
и обработки таймера
if_watchdog
. Последняя может использоваться для управления потенциально ненадежными устройствами или для периодического сбора статистики устройства.

Состояние интерфейса характеризуется флагами, хранящимися в поле

if_flags
. Возможные флаги приведены в табл. 6.8.

Таблица 6.8. Состояния интерфейса

Флаг Значение
IFF_UP
Интерфейс доступен для использования
IFF_BROADCAST
Интерфейс поддерживает широковещательные адреса
IFF_MULTICAST
Интерфейс поддерживает групповые адреса
IFF_DEBUG
Интерфейс обеспечивает возможность отладки
IFF_LOOPBACK
Программный внутренний интерфейс
IFF_POINTOPOINT
Интерфейс для канала точка-точка
IFF RUNNING
Ресурсы интерфейса успешно размещены
IFF_NOARP
Интерфейс не использует протокол трансляции адреса

Флаг

IFF_UP
свидетельствует о готовности интерфейса передавать сообщения. Если сетевой интерфейс подключен к физической сети, поддерживающей широковещательную адресацию (broadcast), например, Ethernet, для интерфейса будет установлен флаг
IFF_BROADCAST
и определен широковещательный адрес (поле
ifa_broadaddr
структуры адресов
ifaddr
для соответствующего коммуникационного домена). Если же интерфейс используется для канала точка-точка, будет установлен флаг
IFF_POINTOPOINT
и определен адрес хоста (интерфейса), расположенного на противоположном конце (поле
ifa_dstaddr
). Заметим, что эти два флага являются взаимоисключающими, a
ifa_broadaddr
и
ifa_dstaddr
являются различными именами одного и того же поля. Интерфейс устанавливает флаг
IFF_RUNNING
после размещения необходимых структур данных и отправления начального запроса на чтение устройству (например, сетевому адаптеру), с которым он ассоциирован.

Состояние интерфейса и ряд других параметров можно просмотреть с помощью команды ifconfig(1M):

$ ifconfig le0

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
(Maximum Transmission Unit, MTU) определяющее максимальный размер пакета, который может быть передан по физической сети, а также значения полей структуры ifaddr: адрес интерфейса
inet
(
ifa_addr
), маску
netmask
(
ifa_netmask
) и широковещательный адрес
broadcast
(
ifa_broadaddr
).

Интерфейс хранит статистическую информацию, которая может быть использована при мониторинге сети. В частности, эта информация включает число полученных пакетов уровня канала (

if_ipackets
), количество ошибок при приеме (
if_ierrors
), число отправленных пакетов уровня канала (
if_opackets
),
количество ошибок при передаче (
if_oerrors
) и число коллизий (
if_collisions
). Команда netstat(1M) позволяет получить эту информацию для сконфигурированных интерфейсов в системе:

$ netstat -in

Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis

lo0 823 127.0.0.0 127.0.0.1 168761 0 168761 0 0

le0 1500 194.85.160.0 194.85.160.50 1624636 1042 110166 1933 382604

Маршрутизация

Сетевая подсистема предназначена для работы в коммуникационной среде, представляющей собой набор сетевых сегментов, связанных между собой. Связь между отдельными сегментами достигается путем подключения их к хостам, имеющим несколько различных сетевых интерфейсов, как показано на рис. 6.24. Такие хосты при необходимости выполняют передачу данных от одного сегмента к другому (forwarding). [83] Для сетей пакетной коммутации, о которых идет речь, выполнение этой задачи непосредственно связано с выбором маршрута прохождения пакетов данных (routing). Для этого система хранит таблицы маршрутизации, которые используются протоколами сетевого уровня (например, IP) для выбора требуемого интерфейса для передачи пакета адресату.

83

Заметим, что каждый интерфейс такого хоста-шлюза имеет собственный адрес, соответствующий той сети, к которой он непосредственно подключен. Например, для сетей с разделяемой средой передачи сетевая часть этого адреса равна адресу сети.

Рис. 6.24. Коммуникационная среда UNIX (internetwork)

Маршрутизационная информация хранится в виде двух таблиц, одна из которых предназначена для маршрутов к хостам, а другая — для маршрутов к сетям. Такой подход позволяет использовать универсальные механизмы определения маршрута как для сетей с разделяемой средой передачи (например, Ethernet), так и для сетей с каналами типа точка-точка. Например, для доставки пакета удаленному хосту, подключенному к сети первого типа, достаточно знать адрес этой сети, в то время как для каналов точка-точка необходимо явно задать адрес интерфейса противоположного конца канала. [84]

84

Вспомним, что IP-адрес состоит из двух частей — адреса сети и адреса хоста в этой сети. Для интерфейса, подключенного к разделяемой среде, каковой является большинство локальных сетей, существенным является лишь первая часть адреса-получателя, поскольку через этот интерфейс непосредственно доступны все хосты с данным адресом сети. Напротив, через сетевой интерфейс типа точка-точка непосредственный доступ осуществляется к единственному хосту, расположенному на другом конце канала, и, таким образом, необходимо определение полного адреса удаленного интерфейса.

При определении маршрута модуль сетевого протокола (IP) сначала просматривает элементы таблицы для хостов, а затем для сетей. Если оба поиска не дают результата, используется маршрут по умолчанию (если такой установлен), определенный как маршрут в сеть с адресом 0. Обычно используется первый найденный маршрут. Таким образом, порядок поиска обеспечивает приоритетность маршрутов к хостам по отношению к маршрутам к сетям, что естественно, поскольку первые представлены более конкретными адресами.

Каждый элемент таблицы маршрутизации, показанный на рис. 6.25, содержит адрес получателя (это может быть адрес сети получателя или адрес конкретного хоста). Это значение хранится в поле

rt_dst
. Следующее поле,
rt_gateway
, определяет следующий шлюз, которому необходимо направить пакет, чтобы последний в конечном итоге достиг адресата. Поле
rt_flags
определяет тип маршрута (к хосту или к сети), а также его состояние. В поле
rt_use
хранится число переданных по данному маршруту пакетов, a
rt_refcnt
определяет использование маршрута сетевыми процессами (виртуальными каналами). Наконец, поле
rt_ifp
адресует сетевой интерфейс, которому необходимо направить пакет для дальнейшей передачи по данному маршруту.

Поделиться:
Популярные книги

Возвышение Меркурия. Книга 13

Кронос Александр
13. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 13

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Хроники Сиалы. Трилогия

Пехов Алексей Юрьевич
Хроники Сиалы
Фантастика:
фэнтези
9.03
рейтинг книги
Хроники Сиалы. Трилогия

Повелитель механического легиона. Том I

Лисицин Евгений
1. Повелитель механического легиона
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том I

Жена моего брата

Рам Янка
1. Черкасовы-Ольховские
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Жена моего брата

Темный Лекарь

Токсик Саша
1. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Real-Rpg. Еретик

Жгулёв Пётр Николаевич
2. Real-Rpg
Фантастика:
фэнтези
8.19
рейтинг книги
Real-Rpg. Еретик

Измена

Рей Полина
Любовные романы:
современные любовные романы
5.38
рейтинг книги
Измена

Кротовский, побойтесь бога

Парсиев Дмитрий
6. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кротовский, побойтесь бога

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Книга 5. Империя на марше

Тамбовский Сергей
5. Империя у края
Фантастика:
альтернативная история
5.00
рейтинг книги
Книга 5. Империя на марше

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4