Вопрос 44. IP-адрес и система доменных адресов.
IP-адрес (айпи-адрес, сокращение от англ. Internet Protocol Address) — уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу IP. В сети Интернет требуется глобальная уникальность адреса; в случае работы в локальной сети требуется уникальность адреса в пределах сети. В версии протокола IPv4 IP-адрес имеет длину 4 байта.
Доменная система имен - это метод назначения имен путем передачи сетевым группам ответственности за их подмножество имен. Каждый уровень этой системы называется доменом. Домены в именах отделяются друг от друга точками: inr.msk.su, nusun.jinr.dubna.su, arty.bashkiria.su, vxcern.cern.ch, nic.ddn.mil. В имени может быть различное количество доменов, но практически их не больше пяти. По мере движения по доменам слева направо в имени, количество имен, входящих в соответствующую группу возрастает.
Первым в имени стоит название рабочей машины - реального компьютера с IP адресом. Это имя создано и поддерживается группой (например, компьютер nusun (это SUN sparc) в группе jinr (ОИЯИ)), к которой он относится. Группа входит в более крупное подразделение (например, городское объединение - сеть города Дубны), которое в свою очередь, является частью национальной сети (например, сети стран бывшего СССР, домен su). Для США наименование страны по традиции опускается, там самыми крупными объединениями являются сети образовательных (edu), коммерческих (com), государственных (gov), военных (mil) учреждений, а также сети других организаций (org) и сетевых ресурсов (net).
Группа может создавать или изменять любые ей подлежащие имена. Если jinr решит поставить другой компьютер, например, VAX 11/780, и назвать его mainx, он ни у кого не должен спрашивать разрешения, все, что от него требуется, - это добавить новое имя в соответствующую часть соответствующей всемирной базы данных, и, рано или поздно, каждый, кому потребуется, узнает об этом имени. Аналогично, если в Дубне решат создать новую группу, например, schools, они (домен dubna) могут это сделать также, ни у кого на то не спрашивая никакого соизволения. И тогда, если каждая группа придерживается таких простых правил и всегда убеждается, что имена, которые она присваивает, единственны во множестве ее непосредственных подчиненных, то никакие две системы, где бы те ни были в сети Internet, не смогут заиметь одинаковых имен.
Эта ситуация совершенно аналогична ситуации с присвоением географических названий - организацией почтовых адресов. Названия всех стран различаются. Различаются названия всех областей, республик в Федерации, и эти названия утверждаются в государственном масштабе из центра (конечно, обычно сами регионы заботятся об уникальности своих названий, поэтому здесь царит полная демократия: как республика хочет, так она и называется) <Рисунок: gif>. В республиках - субъектах федерации - решают вопросы о названиях районов и округов, в пределах одной республики они различаются.
Когда вы пользуетесь именем, например, mx.ihep.su, компьютер должен преобразовать его в адрес. Для этого он начинает запрашивать помощь у DNS-серверов. Это узлы, рабочие машины, обладающие соответствующей базой данных, в число обязанностей которых входит обслуживание такого рода запросов. DNS-сервер начинает обработку имени с правого его конца и двигается по нему влево, т.е. сначала производится поиск адреса в самой большой группе (домене), потґом постепенно сужает поиск. Но для начала опрашивается на предмет наличия у него нужной информации местный узел. Здесь возможны три случая:
Местный сервер знает адрес, потому, что этот адрес содержится в его части всемирной базы данных. Например, если вы подсоединены к сети Института Физики Высоких Энергий (IHEP), то ваш местный сервер должен обладать информацией о всех компьютерах локальной сети этого института (mx, desert, ixwin и т.д.);
Местный сервер знает адрес, потому, что кто-то недавно уже запрашивал тот же адрес. Когда запрашивается адрес, сервер DNS придерживает его у себя в памяти некоторое время, как раз на случай, если кто-нибудь еще захочет попозже того же адреса - это повышает эффективность системы;
Местный сервер адрес не знает, но знает как его выяснить.
Система доменных имен решает проблемы, с которыми не справилась такая таблица, используя две концепции: иерархию имен машин и распределение ответственности.
Систему доменных имен формально описал Пол Мокапетрис (Paul Mocka-petris) в RFC882 и 883 (1983 г.). В 1987 г. ее откорректировали (RFC1034 и 1035), а в 1990 г. расширили (RFC1101 и 1183). Пол, кроме того, написал первую нe UNIX-версию.
Работа по переносу DNS в UNIX была начата в 1984 г. четырьмя старшекурсниками университета в Беркли: Дугласом Терри (Douglas Terry), Марком Пойнтером (Mark Painter), Дэвидом Ригглом (David Riggle) и Сонг Ньян Чжоу (Songnian Zhou). Эстафету подхватил Ральф Кэмпбелл (Ralph Camp-bell) из Computer Systems Research Group, который начал "склеивать" доменную систему имен в BSD-UNIX. В 1985 г. Кевин Данлэп (Kevin Dunlap), инженер DEC, временно работавший в Беркли, принял этот проект в свои руки и создал систему BIND (Berkeley Internet Name Domain - систему доменных Internet-имен реализации Беркли). Майк Кареле (Mike Karels) и Пол Викси (Paul Vixie) сопровождали эту систему в течение ряда лет. Пол продолжает вести ее и сейчас, пользуясь помощью участников телеконференции isc.org и членов списка рассылки bind-workers.
3. Пространство имен DNS
В основе системы доменных имен лежит иерархическое пространство имен. При этом все пространство имен DNS представлено в виде отдельных фрагментов, называемых доменами (domains). Домены, связываясь между собой при помощи отношений родитель-потомок, образуют определенную иерархию. В зависимости от того, какое положение занимает домен в этой иерархии, принято говорить об уровне домена. На любом уровне домен может включать в свой состав домены более низкого уровня. Начиная со второго уровня, домены могут также содержать записи о хостах. Домен, лежащий в основании иерархического пространства имен DNS, получил название корневого домена (root domain).
Корневой домен выполняет функцию родоначальника всех доменов первого уровня. Фактически он является чисто формальным элементом, символизирующим иерархичность пространства доменных имен. Для ссылки на корневой домен используют пустые кавычки (""). При записи доменного имени корневой домен обозначается как пустое место после десятичной точки, которой оканчивается любое доменное имя.