Как совершенно верно заметил tangle_wire, все IP-адреса из "головоломки
#2" схожи тем, что пакеты, направленные на них, не доходят до пункта назначения из-за "петли маршрутизации".
При передаче пакета на какой-либо адрес есть два нормальных хода событий:
- Пакет передается через некоторое число маршрутизаторов и достигает точки назначения.
- Один из маршрутизаторов не может пересылать пакет дальше (например, нет связи со
следующим маршрутизатором или хостом, или же по такому адресу нет и не должно быть
никакого хоста) и выбрасывает его.
Но возможен и третий вариант: маршрутизатор отсылает пакет не туда, куда нужно. Тогда
хост, получивший этот пакет, отсылает его обратно "по адресу", т.е. опять этому криво
настроенному маршрутизатору. Получается петля...
К счастью, создатели протокола TCP/IP предусмотрели существование таких петель и придумали
механизм борьбы с ними. Каждый отсылаемый пакет имеет параметр TTL, time to live - время
жизни. Каждый маршрутизатор должен уменьшать значение этого параметра на 1, а если
TTL=0, то пакет выбрасывается, а на адрес отправителя посылается оповещение TTL expired in
transit. А если бы TTL не было, отправленный пакет ходил бы между двумя маршрутизаторами вечно, забивая
под завязку канал и перегружая процессор.
Под TTL выделен 1 байт, т.е. его максимальное значение - 255. Это означает, что
каждый пакет, отправленный на "кривой" адрес, будет пересылаться между двумя маршрутизаторами
чуть меньше 255 раз (в зависимости от начального TTL и расстояния от отправителя до петли).
Получается, что человек с модема, могущий отсылать пакеты со скоростью 4 кб в секунду, может
вызвать загрузку канала петли до 8 Мбит, ну а человек с 2 Мб выделенкой (как у меня) может
"положить" 4х-гигабитовый канал.
Обычно причина петли маршрутизации - в несоответствии адресного пространства, выделенного
провайдером, и пространства, используемого клиентами (хотя встречаются и петли из одного хоста
и петли из 3х, у которых явно другие причины). Допустим, провайдер выделил клиенту адреса
192.168.1.*, и все пакеты, направляемые на эти адреса, шлет клиенту. А у клиента сеть
192.168.1.[1-127], и соответствующая таблица маршрутизации:
192.168.1.0 mask 255.255.255.128 - на сетевую карточку локалки
default - на провайдера (ну а куда ж еще?)
Понятно, что пакет, направленный на 192.168.1.250, от провайдера попадет клиенту, а клиент, т.к.
не использует этот адрес, отправит его по default route - обратно провайдеру. Сканирование
интернета дало печальную статистику - почти в каждой сети класса B есть такие
"кривые" адреса, хотя вероятность, что удастся "завалить" какой-то определенный канал,
а не просто первый попавшийся, невелика. Во избежании вандализма не буду подробно описывать
способ поиска и использования таких адресов, и вообще не советую этим заниматься - по голове
надают больно-больно :).