Сети TCP/IP > DNS

Как осуществляется запрос по протоколу уровня приложений

Как отправить пакет с одного компьютера на другой? Прежде всего, по адресу хоста надо получить соответствующий цифровой IP-адрес. Для этого программа посылает запрос DNS-серверу. IP-адрес DNS-сервера должен быть явно указан при конфигурации системы. Иначе мы не сможем обратиться к DNS-серверу, потому что не будем знать его IP, а его IP мы не узнаем, пока не обратимся к нему.

Об устройстве DNS-сервера

Если DNS-сервер получил запрос об адресе, входящем в зону его ответственности, то он просматривает имеющуюся у него таблицу соответствия IP-адресов символьным адресам в поисках запрошенного. В конфигурации сервера записано, куда ему следует обращаться, в зависимости от поступившего ему запроса, если он не сможет ответить на него самостоятельно.

Рассмотрим вероятное устройство DNS-сервера ioffe.ru. На запрос "www.ioffe.ru" он ответит сам. Если ему поступает запрос, оканчивающийся на .school.ioffe.ru, то он передает его DNS-серверу, отвечающему за зону *.school.ioffe.ru, если же запрос был, например, "yandex.ru", то он передается одному из серверов, отвечающих за зону *.ru. (Таких серверов, безусловно, несколько.)

Если DNS-сервер распознает адрес (сам или с помощью дополнительных запросов), то он вернет в ответ соответствующий IP, иначе – ответит, что данный адрес не зарегистрирован.

Как устанавливается соответствие IP-MAC

Если IP-пакет отправляется по локальной сети, то по IP-адресу надо установить MAC-адрес компьютера, которому предназначается пакет. Компьютер, с которого отправляется пакет, просматривает имеющуюся у него таблицу соответствия, и, если в ней не записан MAC-адрес, соответствующий данному IP-адресу, он осуществляет запрос по протоколу ARP (Address Resolving Protocol) и сохраняет MAC-адрес в таблице.

Зная MAC-адрес, пакет можно отправить другому компьютеру. Теперь осталось только понять, как пришедший на компьютер пакет попадает к нужному приложению.

Как идентифицируется пакет

На каждом уровне в заголовке пакета записано, кому предназначается этот пакет.

На Link-уровне Ethernet-пакет идентифицируется с помощью MAC-адреса. Так физически определяется компьютер, на который посылается запрос. Далее из Ethernet-пакета извлекается его содержимое – IP-пакет.

На сетевом уровне IP-пакет идентифицируется при помощи IP-адреса. Так логически определяется компьютер, которому адресован запрос. Если пакет адресован компьютеру, получившему запрос, то он передается драйверу протокола транспортного уровня. (Протокол (TCP или UDP) записан в заголовке IP-пакета.) Все пакеты, адресованные другим компьютерам (если этот компьютер выполняет роль шлюза), снова заворачиваются в пакет link-уровня и отправляются дальше в сеть.

В заголовке TCP- или UDP-пакета записано целое число от 0 до 65535, называемое портом. С его помощью на транспортном уровне идентифицируется приложение, которому адресован пакет. Таким образом, используя разные порты, на одном компьютере могут одновременно работать с сетью несколько программ.

Порты

Некоторые порты зарезервированы для стандартных сетевых сервисов. Например, стандартный порт сервиса http – 80, ftp – 21, и т. д. Это значит, что запросы, пришедшие на 80 порт передаются www-серверу, а запросы на 21 порт – ftp-серверу. Соответствия стандартных пар порт/протокол-сервис на UNIX-системах записаны в файле /etc/services. В Windows 9x зтот файл называется C:\Windows\services.

Пример записей из /etc/services

ftp                21/tcp
telnet             23/tcp
smtp               25/tcp

Порты с номерами от 1 до 1023 защищены – на UNIX-машинах эти порты может использовать только программа, работающая с правами пользователя root.

Виктор Кропп