Собственно везде предназначение маски описывается как для выделения адреса подсети и внутрисетевого адреса. Для роутера это важно, для определения в какую подсеть передавать запрос. Но для чего это нужно обычному компу в сети? Раньше я думал, что не зачем, но теперь засомневался. Если я ставлю маску - 255.0.0.0 то tracert показывает прямой маршрут. Если же 255.255.255.0, то через шлюз. Объясните, как такое может быть, и как оно работает?
Снифер показывает, что в случае маски - 255.255.255.0, запрос отправляется на физический адрес шлюза, а ответ приходит с физ. адреса трассируемого компа. В случае же маски 255.0.0.0, и в запросе и ответе физ. адрес компа. Фигня какая-то. Как это понимать?
Всё понял. Я просто протупил, поставил фильтр в снифере только на трассируемый комп. Теперь смысл маски ясен. ^)
Booster, так ты бы отбил ответ, на тот случай если кто-то вдруг воспользуется поиском Про маски - если ip.dest попадает в под-сеть, то происходит ARP resolution этого самого "dest" с последующим eth unicast frame прямо адресату. В остальных случаях eth frame отправляется на layer2 адрес gateway (ессно после ARP). Gateway должен сделать routing на основе своих таблиц.
s0larian не совсем верно. в остальных случаях смотрится локальная таблица маршрутизации. Если в локальной таблице маршрутизации есть маршрут на сеть которой пренадлежит ip.dest, то происходит ARP resolution шлюза для этой сети и фрейм/мы с IP пакетом уходят на него. Если такой маршрут не найден, то на default gateway, если он есть, аналогичным образом.
ant0xa Спасибо. Написал такую лабуду - route add dest_addr mask 255.255.255.255 my_addr. И теперь с dst_addr прямой маршрут.
Но чего я не понял, так это почему в таблице маршрутизации нельзя указать шлюз вне сети, в которой находиться основной шлюз. Например основной шлюз - 10.10.10.1. Маска - 255.255.255.0. Если написать - route add dest_addr mask 255.255.255.255 gateway_addr, где gateway_addr - от 10.10.10.0 до 10.10.10.254, то запись добавляется. Если адрес шлюза выходит за эти пределы, то - "Сбой добавления маршрута: Либо индекс интерфейса указан неверно, либо шлюз не лежит в той же подсети, что и данный интерфейс. Проверьте таблицу IP-адресов этого компьютера." Про 10.0.0.255 понятно, про остальные нет.
Именно так. Booster Шлюз обязаельно должен быть в твоей сети т.к. пакеты которые идут до шлюза не пакеты вовсе а фреймы в данном случае эзернетные и дойти до шлюза они должны без использования маршрутизаторов => шлюз должен находицца в одной сети с хостом. Винде правда на это правило положить и шлюз может быть из другой сети в томже эзернет сегменте и всё будет работать хотя в теории и не должно.