>Вы сами то поняли что написали? Да, понял. Разъясняю последовательность работы программы-серверна:
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