Изменения
→Просмотр таблицы маршрутизации
== Идея Определения==Рассмотрим задачу: найти слово в словаре. Если оно начинается на букву "А", то никто не будет искать его в середине, а откроет словарь ближе к началу. В чём разница между алгоритмом человека и другими? Отличие заключается в том, что алгоритмы вроде двоичного поиска не делают различий между "немного больше" и "существенно больше".
== Псевдокод =Пример таблицы маршрутизации=<code> '''int''' interpolationSearch(a : '''int[]''', key : '''int''') <font color=green> // a должен быть отсортирован </font> left = 0 <font color=green> // левая граница поиска (будем считать, что элементы массива нумеруются с нуля) </font> right {| border= a.length - "1 <font color=green> // правая граница поиска </font>" |- '''while''' a[left] < key '''and''' key < a[right]!Destination||Netmask||Gateway||Interface||Metric mid = left + (key - a[left]) * (right - left) / (a[right] |- a[left]) <font color=green> // индекс элемента, с которым будем проводить сравнение </font> '''if''' a[mid] < key left = mid + |0.0.0.0||0.0.0.0||192.168.0.1||192.168.0.100||10 '''else if''' a[mid] > key|- right = mid - |127.0.0.0||255.0.0.0||127.0.0.1||127.0.0.1||1 '''else'''|- '''return''' mid|192.168.0.0||255.255.255.0||192.168.0.100||192.168.0.100||10 |- '''if''' a[left] == key|192.168.0.100||255.255.255.255||127.0.0.1||127.0.0.1||10 '''return''' left|- '''else if''' a[right] == key '''return''' right '''else''' '''return''' -|192.168.0.1 <font color=green>// если такого элемента в массиве нет </font>||255.255.255.255||192.168.0.100||192.168.0.100||10</code>|}
===Пример работы вместе с сравнением с бинарным поискомполучения адреса сети==={| class="simple" border="1"|-! ||Двоичная запись||Десятичная запись|-[[Файл:ip_vs_bin_from_gshark|IP-адрес||<tt>11000000 10101000 00000001 00000010</tt> ||192.png168.1.2|-|Маска|900px|center <tt>11111111 11111111 11111110 00000000</tt> || 255.255.254.0|-|Адрес сети|| <tt>11000000 10101000 00000000 00000000</tt> ||192.168.0.0|Сравнение бинарного и интерполирующего поисков]]}
Чтобы вычислить адрес сети, нужно применить логическое ''и'' к адресу и маске. {{Определение|definition =Шлюз (Gateaway) {{---}} адрес узла в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения. Шлюзы бывают ''по умолчанию'', тогда значения адреса назначения и маски указываются как 0.0.0.0.}} {{Определение|definition =ПримечанияИнтерфейс (Interface) указывает, какой локальный интерфейс отвечает за достижение шлюза. Например, шлюз 192.168.0.1 (интернет-маршрутизатор) может быть достижим через локальную сетевую карту, адрес которой 192.168.0.100.}} {{Определение|definition = Метрика (Metric) {{---}} числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут. Интуитивно представляется как расстояние (необязательный параметр).}} ==Принцип действия==При отправке сетевого пакета, операционная система смотрит, по какому именно маршруту он должен быть отправлен, основываясь на таблице маршрутизации. Как правило, выбирается наиболее конкретный (т.е. с наиболее длинной сетевой маской) маршрут из тех, которые соответствуют адресу отправителя и имеют наименьшую метрику. Если ни один из маршрутов не подходит, пакет уничтожается, а его отправителю возвращается ICMP-сообщение ''No route to host''. Внутри каждого пакета есть поле TTL (Time to live) при каждой пересылке значение уменьшается на единицу, и если оно становится нулем, то пакет выбрасывается. ICMP-сообщение в данном случае ''TTL expired in transit''. ==Просмотр таблицы маршрутизации==Ниже приведены команды в разных операционных системах, с помощью которых можно посмотреть таблицу маршрутизации Windows: '''route print''' <references/>Linux: '''route -n'''
==Источники информации==
* Дональд Кнут [http://lpcs.math.msu.su/~sk/lehre/fivt2013/Earley.pdf Алексей Сорокин {{---}} Искусство программирования. Том 3Алгоритм Эрли]* Ахо А. Сортировка и поиск. / Knuth D.E, Ульман Д. {{---}} The Art of Computer ProgrammingТеория синтакcического анализа, перевода и компиляции. VolТом 1. 3Синтаксический анализ. Sorting and SearchingПер.*[http://en.wikipediaс англ.org/wiki/Interpolation_search Wikipedia {{---}} Interpolation searchМ.:«Мир», 1978. С. 358 — 364. [[Категория: Теория формальных языков]]*[http[Категория://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B8%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA Википедия {{Контекстно---}}Интерполирующий поисксвободные грамматики]][[Категория: Алгоритмы разбора]]