Учебно-методические материалы для студентов кафедры АСОИУ

Адресация узлов в сети. Порядок разрешения адресов

В ip-сетях используется три типа сетевых адресов: mac-адрес, сетевой адрес и доменное имя. Они используются на разных уровнях сетевой модели для идентификации хостов.

Цель работы: Рассмотреть схему адресации узлов в ip-сетях. Получить представление о порядке разрешения адресов, используемых на различных уровнях стека TCP/IP.

Задания к работе

  1. Определить физический и сетевой адреса локального хоста и его доменное имя.
  2. Просмотреть таблицу преобразования физических адресов. Сохранить полученную информацию в файле.
  3. Командой ping проверить доступность следующих узлов:
    • 127.0.0.1;
    • locahost;
    • example.com
    • трех-четырех соседних компьютеров.
  4. Просмотреть таблицу преобразования адресов и сравнить ее с результатами, полученными в задании 1.
  5. Сделать перерыв в сетевой активности на несколько минут, после которого повторить предыдущий пункт. Пояснить причины изменений (или отсутствия таковых) в таблице arp за время перерыва.
  6. Добавить в таблицу статическую запись (действительные аппаратный и сетевой адреса одной из соседних машин)
  7. Выполнить ping добавленного в предыдущем пункте сетевого адреса
  8. Добавить в таблицу преобразований следующие записи (пары "mac-адрес — ip-адрес"):
    • действительный mac-адрес — недействительный сетевой адрес;
    • недействительный mac-адрес — действительный сетевой адрес;
  9. Проверить доступность добавленных узлов. Объяснить полученные результаты.
  10. Просмотреть таблицу arp и сохранить ее в файле для дальнейшего использования.
  11. Перезагрузить компьютер и снова просмотреть кэш arp. Сравнить с результатами задания 9. Что стало с записями, добавленными вами в заданиях 5 и 7?
  12. Добавить в файл hosts (путь к файлу в ОС Windows: %systemroot%\System32\Drivers\etc\hosts, в UNIX: /etc/hosts, в обоих случаях нужны привилегии администратора) следующую запись:
    194.188.210.1	edu.asoiu 
    Если такая запись уже имеется, то перейти к следующему заданию
  13. Выполнить ping узла edu.asoiu
  14. Определить по таблице arp mac-адрес узла edu.asoiu.
  15. Определить все ip-адреса (публичные) одного из указанных сервисов: mail.ru, ya.ru, google.com или подобного.
  16. Определите имя и ip-адрес первичного DNS-сервера зоны ru.
  17. Ответить на контрольные вопросы

Указания к работе

Преобразование адресов

Для сопоставления сетевого адреса с аппаратным адресом интерфейса в стеке 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

Контрольные вопросы

  1. Что и почему изменилось в таблице arp после выполнения задания №2?
  2. Что произойдет, если в таблицу arp добавить две или более записей, в которых одному mac-адресу сопоставлены разные сетевые адреса?
  3. Что произойдет, если в таблицу arp добавить две или более записей, в которых одному сетевому адресу сопоставлены разные аппаратные адреса?
  4. Как отличается "время жизни" динамических и статических записей в таблице arp?
  5. Почему в ip-сетях не используется прямое сопоставление символьного адреса физическому адресу?
  6. Что произойдет, если в файл hosts записать два (или более) узла с одинаковыми именами (например, myhost.mydomain), но разными сетевыми адресами, а затем обратиться к ним по имени (например так: ping myhost.mydomain)?

CC-BY-CA Анатольев А.Г., 31.01.2012