3.3.4.3 Выбор адреса отправителя
- Обсуждение:
При передаче начального запроса соединения (например, сегмент TCP SYN) или дейтаграммы запроса обслуживания (например, UDP-запрос) транспортный уровень многодомного хоста должен знать, какой адрес отправителя нужно использовать. Если приложение не задало этот адрес, транспортный уровень должен запросить у IP-уровня концептуальное отображение:
GET_SRCADDR(удаленный IP-адрес, TOS) -> локальный IP-адрес
Значение TOS задает тип обслуживания (см. 3.2.1.6) и результатом является нужный адрес отправителя. Для реализации такого отображения предлагаются следующие правила:
Если удаленный адрес Internet относится к одной из (под)сетей, с которыми хост непосредственно соединен, может быть выбран соответствующий адрес отправителя, если нужный интерфейс находится в рабочем состоянии.
Можно просмотреть кэш маршрутов для поиска активного маршрута в интересующую сеть через любой сетевой интерфейс. Если такой маршрут найден, можно выбрать локальный адрес IP, соответствующий интерфейсу.
Аналогичным образом можно использовать и таблицу статических маршрутов (см. 3.3.1.2).
Можно просмотреть список используемых по умолчанию шлюзов. Если такой шлюз связан с другими интерфейсами, можно выбрать шлюз с максимальным приоритетом.
В будущем может быть определен для многодомных хостов способ передачи маршрутизаторам всех подключенных сетей запросов для определения сети, наиболее подходящей для данного получателя.
- Реализация
Отметим, что описанный процесс по сути совпадает с маршрутизацией дейтаграмм (см. 3.3.1) и, следовательно, хост может объединять реализацию этих функций.