Адресация узлов в сети. Порядок разрешения адресов
В ip-сетях используется три типа сетевых адресов: mac-адрес, сетевой адрес и доменное имя. Они используются на разных уровнях сетевой модели для идентификации хостов.
Цель работы: Рассмотреть схему адресации узлов в ip-сетях. Получить представление о порядке разрешения адресов, используемых на различных уровнях стека TCP/IP.
Задания к работе
- Определить физический и сетевой адреса локального хоста и его доменное имя.
- Просмотреть таблицу преобразования физических адресов. Сохранить полученную информацию в файле.
- Командой ping проверить доступность следующих узлов:
- 127.0.0.1;
- locahost;
- example.com
- трех-четырех соседних компьютеров.
- Просмотреть таблицу преобразования адресов и сравнить ее с результатами, полученными в задании 1.
- Сделать перерыв в сетевой активности на несколько минут, после которого повторить предыдущий пункт. Пояснить причины изменений (или отсутствия таковых) в таблице arp за время перерыва.
- Добавить в таблицу статическую запись (действительные аппаратный и сетевой адреса одной из соседних машин)
- Выполнить ping добавленного в предыдущем пункте сетевого адреса
- Добавить в таблицу преобразований следующие записи (пары "mac-адрес — ip-адрес"):
- действительный mac-адрес — недействительный сетевой адрес;
- недействительный mac-адрес — действительный сетевой адрес;
- Проверить доступность добавленных узлов. Объяснить полученные результаты.
- Просмотреть таблицу arp и сохранить ее в файле для дальнейшего использования.
- Перезагрузить компьютер и снова просмотреть кэш arp. Сравнить с результатами задания 9. Что стало с записями, добавленными вами в заданиях 5 и 7?
- Добавить в файл hosts (путь к файлу в ОС Windows: %systemroot%\System32\Drivers\etc\hosts, в UNIX: /etc/hosts, в обоих случаях нужны привилегии администратора) следующую запись:
194.188.210.1 edu.asoiu
Если такая запись уже имеется, то перейти к следующему заданию - Выполнить ping узла edu.asoiu
- Определить по таблице arp mac-адрес узла edu.asoiu.
- Определить все ip-адреса (публичные) одного из указанных сервисов: mail.ru, ya.ru, google.com или подобного.
- Определите имя и ip-адрес первичного DNS-сервера зоны ru.
- Ответить на контрольные вопросы
Указания к работе
Преобразование адресов
Для сопоставления сетевого адреса с аппаратным адресом интерфейса в стеке TCP/IP имеются специализированные протоколы типа arp (address resolution protocol, RFC-826). Это позволяет использовать сетевые протоколы стека поверх различных протоколов канального уровня. Все операции преобразования выполняются прозрачно для протоколов верхних уровней. Результаты преобразований кэшируются и сохраняются на некоторый интервал времени, что позволяет не выполнять преобразование при повторном обращении к ранее взаимодействовавшим узлам.
Кэш arp представлен в виде таблицы, заполненной записями примерно такого вида:
"сетевой адрес — MAC-адрес — интерфейс — способ назначения"
Эта таблица формируется динамически, при любом сетевом взаимодействии узла. Для просмотра кэша arp используется одноименная команда — arp. Эта же команда позволяет формировать таблицу MAC-адресов статически, передавая записи через список аргументов. Команда arp используется как в UNIX, так и в Windows-системах.
Основной способ заполнения таблицы преобразований — динамический, при котором записи добавляются по мере участия узла в сетевом обмене. Это означает, что в отсутствие сетевой активности кэш arp пуст (если не задано статических записей). Для выполнения заданий к этой работе вам необходимо организовать некоторое сетевое взаимодействие. Пожалуй, самым доступным способом для этого является использование команды ping.
Команда ping использует протокол ICMP (Internet Control Message Protocol; RFC-792, RFC-1256) для отправки запросов датаграммного типа (ECHO_REQUEST) и ожидает ответ (ECHO_RESPONSE) от запрашиваемого хоста или шлюза.
ECHO_REQUEST — это датаграмма, имеющая заголовок IP и ICMP. Поле данных заполнено некоторым количеством произвольной информации. Для анализа сети выполняется отправка определенного количество таких датаграмм. По результатам анализа можно судить о доступности запрашиваемого хоста и некоторых аспектах работы сети в целом.
Обязательным параметром команды ping является сетевой адрес узла, заданный в числовом виде:
ping 192.0.32.10
или в символьном представлении:
ping example.com
Если задан символьный адрес, то ping попытается выполнить преобразование символьного имени в сетевой адрес. Для этого сначала будет перечитываться содержимое файла hosts, который является своего рода сервером DNS в масштабе отдельно взятого сетевого узла. Содержательно файл hosts — обычный текстовый файл, где прописано соответствие ip-адресов доменным именам. Его основное назначение — ускорить преобразование имен компьютеров в сетевые адреса. Формат файла приведен ниже:
#ip-address hostname aliaces x.x.x.x hostname [aliace1 [aliace2 [...[aliaceN]]]]
Обычно в этом файле содержится единственная запись:
127.0.0.1 localhost
Если требуемое имя узла найдено в файле hosts, то возвращается соответствующий ему сетевой адрес. Иначе — выполняется запрос к внешнему серверу DNS, указанному в настройках сетевого интерфейса.
Как узнать MAC-адрес и ip-адрес?
Чтобы узнать физический адрес локального хоста и его ip-адрес нужно выполнить команду ifconfig (в ОС Windows - ipconfig). Запущенная без параметров, команда ifconfig отображает информацию об имеющихся в системе сетевых интерфейсах и их физических и сетевых адресах:
aag@localhost:~> sudo /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:1D:92:A2:90:E7 inet addr:192.168.1.250 Bcast:192.168.255.255 Mask:255.255.0.0 inet6 addr: fe80::21d:92ff:fea2:90e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:811957 errors:0 dropped:0 overruns:0 frame:0 TX packets:446207 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:596559482 (568.9 Mb) TX bytes:114698114 (109.3 Mb) Interrupt:28 Base address:0xe000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:24226 errors:0 dropped:0 overruns:0 frame:0 TX packets:24226 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:50861906 (48.5 Mb) TX bytes:50861906 (48.5 Mb)
Как узнать доменное имя?
Узнать доменное имя хоста можно командой hostname.
Как узнать адрес сервера DNS?
Узнать адрес сервера DNS можно разными способами, самый простой — посмотреть содержимое файла resolv.conf:
cat /etc/resolv.conf
Расширенную информацию о сервере DNS можно получить используя специальные команды, такие как dig (man 1 dig) или host (man 1 host). В ОС Windows можно использовать утилиту nslookup.
В Листинге 1 приведен простой пример использования утилиты dig. Шрифтом выделено имя отвечающего сервера имен (сравните с записью в resolv.conf).
Листинг 1. Пример использования команды dig.
aag@localhost:~> dig example.com ; <<>> DiG 9.7.3 <<>> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34206 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 1095 IN A 192.0.32.10 ;; AUTHORITY SECTION: example.com. 172792 IN NS a.iana-servers.net. example.com. 172792 IN NS b.iana-servers.net. ;; ADDITIONAL SECTION: b.iana-servers.net. 28792 IN A 193.0.0.236 b.iana-servers.net. 28792 IN AAAA 2001:610:240:2::c100:ec ;; Query time: 1 msec ;; SERVER: 192.168.3.1#53(192.168.3.1) ;; WHEN: Thu Apr 7 10:34:46 2011 ;; MSG SIZE rcvd: 137
Контрольные вопросы
- Что и почему изменилось в таблице arp после выполнения задания №2?
- Что произойдет, если в таблицу arp добавить две или более записей, в которых одному mac-адресу сопоставлены разные сетевые адреса?
- Что произойдет, если в таблицу arp добавить две или более записей, в которых одному сетевому адресу сопоставлены разные аппаратные адреса?
- Как отличается "время жизни" динамических и статических записей в таблице arp?
- Почему в ip-сетях не используется прямое сопоставление символьного адреса физическому адресу?
- Что произойдет, если в файл hosts записать два (или более) узла с одинаковыми именами (например, myhost.mydomain), но разными сетевыми адресами, а затем обратиться к ним по имени (например так: ping myhost.mydomain)?
CC-BY-CA Анатольев А.Г., 31.01.2012