The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Статус сетевой карты No carier "
Отправлено piroman17, 14-Сен-09 16:18 
>Вы сами то поняли что написали?

Да, понял. Разъясняю последовательность работы программы-серверна:

1) socket() - создает сокет.
2) bind()   - определяет адреса host:port на которые поступают пакеты каторые будут направленны в сокет.
3) listen() - открывает порты усказнные в bind() на прием/передачу.
4) accept() - происходит после того как клиент постучался в порт, установка соединения с конкретным клиентом.
5) read() - примем пакетов от клиента
6) write() - передача пакетов клиенту

Так вот, когда пакет поступает на нужный host:port, ясдро направляет его в сокет и софт принимает через него данные. А когда софт "пихает" данные в сокет, ядро "решает" как передать его клиенту. Если форвардинг выключен - решение происходит так: пакет выходит всегда из того интерфейса на который сделан bind()+listen(), а для передачи по сети выбирается соответствующий шлюз из таблицы маршрутизации, например defalut. Если форвардинг включен - решение об отправке пакета происходит так: Ядро выбирает нужный маршрут из таблицы маршрутизации, и только после этого выбора маршрута отправляет пакет через интерфейс соответствующий этому маршруту. Например:
destination        gateway             interface
10.0.0.0/8         10.100.7.1         rl0
10.0.0.0/8         10.100.7.1         rl1
default            x.x.x.x            tun0
Ядро "проходит" по таблице маршрутизации сверху вниз, и если пакет направляется на адрес 10.1.2.3 то пакет будет отправлен через rl0, т.к. это первая подходящая по адресу/маске запись. А если пакет направлен на адрес 1.2.3.4 то он пойдет в шлюз по умолчанию через tun0.
Обратите внимание, что при выводе netstat -rn в разных ОС шлюз по умолчанию может быть выведен в любом месте таблицы, а реально он является последним и туда отправляются пакеты не попавшие под address/mask других записей таблицы маршрутизации. наиболее наглядно таблица представлена в cisco IOS:
C    192.168.4.0/24 is directly connected, FastEthernet0/0
O    192.168.254.0/24 [110/11] via 192.168.252.1, 1d01h, FastEthernet1/0
O    192.168.1.0/24 [110/11] via 192.168.252.1, 1d01h, FastEthernet1/0
O    192.168.2.0/24 [110/11] via 192.168.252.1, 1d01h, FastEthernet1/0
C    192.168.252.0/24 is directly connected, FastEthernet1/0
O*E2 0.0.0.0/0 [110/1] via 192.168.252.1, 21:32:11, FastEthernet1/0

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру