Работа в сети с использованием TCP/IP
Понятие о регистрации и разрешении имен
Когда речь идет о сетевом обмене информацией, протоколы TCP/IP полностью основываются на IP-адресах для идентификации других компьютеров. Кроме того, для идентификации сетевых компьютеров используются хост-имена и имена NetBIOS, чтобы компьютерам было проще устанавливать контакт друг с другом. Но невозможно запомнить IP-адрес каждого компьютера или каждого веб-сайта, с которыми вы хотите устанавливать контакт.
В операционных системах Microsoft до Windows 2000 сетевой обмен всегда основывался на именах NetBIOS. Система Windows Server 2003 продолжает поддерживать имена NetBIOS для совместимости, но она разработана для использования в первую очередь хост-имен, а не имен NetBIOS. В любом случае требуется метод, позволяющий устанавливать соответствие между этими именами и IP-адресами.
Для выполнения этих задач вы можете использовать различные методы с различными уровнями сложности, но все они могут быть сведены к базе данных, содержащей эти имена и эквивалентные IP-адреса. Отличия в этих механизмах определяются методами, которые используются для внесения информации в эту базу данных (регистрация имен) и способами считывания информации (разрешение имен).
Если у вас действует сеть Windows Server 2003 с клиентами более ранних версий Windows (до Windows 2000), то вам нужно иметь как минимум два различных механизма разрешения имен. Хост-имена и имена NetBIOS всегда обрабатываются отдельно в этом отношении, даже если на компьютере эти имена совпадают. Если в вашей сети нет клиентов более ранних версий Windows или приложений на основе NetBIOS, то вы можете не поддерживать имена NetBIOS.
- Имеющиеся механизмы для хост-имен – это файл HOSTS и служба доменных имен (DNS).
- Имеющиеся механизмы для имен NetBIOS – это широковещательные сообщения в сети (Network Broadcasts), средства WINS и файл LMHOSTS.
Все Windows-компьютеры применяют по крайней мере один из этих механизмов во время любого обмена данных TCP/IP, где используются имена, а не IP-адреса. Понимание того, как они действуют, поможет вам максимально повысить эффективность вашей сети, свести к минимуму сетевой трафик и справляться с проблемами передачи данных. Для более полного ознакомления с такими понятиями, как хост-имена, доменная иерархия, DNS и т.д. обратитесь к "Ознакомление с DNS" .
Использование файла HOSTS
Самый простой способ разрешения хост-имен – это ведение таблицы этих имен и соответствующих им IP-адресов. Этой задаче отвечает файл HOSTS – ASCII-файл, который хранится на локальном жестком диске и в котором слева содержатся IP-адреса и справа хост-имена. Если пользователь передает в какое-либо приложение хост-имя, это приложение ищет его в файле HOSTS. Если это имя найдено, то эквивалентный ему IP-адрес используется для создания сетевого соединения. Если имя не найдено, то соединение не может быть установлено.
Хотя в это трудно поверить, но в свое время услуги разрешения имен для всего интернета предоставлялись с помощью одной таблицы HOSTS, содержащей тысячи записей, которые должны были регулярно скачиваться пользователями интернета для обновления их файла. Проблемы использования этого метода очевидны. Вставку имен и адресов в файл для их регистрации можно выполнять только вручную. Пользователи или администраторы должны по отдельности изменять или обновлять файл HOSTS на каждом сетевом компьютере, чтобы включить имя и адрес каждого хоста, к которому нужно обращаться по имени. Кроме того, число записей растет, файл быстро увеличивается в размерах, что начинает влиять на скорость разрешения имен. Вообразите, что вам приходится управлять файлом HOSTS с сотнями или тысячами записей для отображения имен в IP-адреса. Каждое изменение этого файла потребовало бы обновления на всех компьютерах сети, то есть пересылки файла HOSTS каждому из них.
Использование системы доменных имен (DNS)
Система доменных имен (DNS – Domain Name System) – это наиболее распространенный метод разрешения хост-имен интернет, поскольку он позволяет пользователям подсоединяться к любому сайту в Internet по имени. Это может показаться невероятно трудным, особенно в свете роста интернета за последние несколько лет, но DNS использует доменную структуру хост-имен интернет и, конечно, является основной причиной ее использования.
Система доменных имен состоит из тысяч серверов DNS, распределенных по всей сети интернет. Если вы регистрируете какое-либо доменное имя, то должны обязательно указать основной (primary) и резервный (backup) сервер DNS. Их называют доверяемыми (authoritative) серверами для вашего домена. Сервер DNS – это демон UNIX или служба Windows, отвечающая за поддержку и публикацию базы данных хост-имен и адресов в ее собственном домене.
Серверы DNS какого-либо домена не обязательно должны находиться в его собственной сети, и действительно, многие провайдеры услуг интернета (ISP) поддерживают службы веб-хостинга, в которых они предоставляют использование их серверов DNS за плату. Здесь важно то, что уполномоченный орган интернет или другая организация, зарегистрировавшая имя этого домена, имеет запись для серверов DNS, ответственных за хосты этого домена.
Поскольку администраторы отдельных сетей отвечают за назначение хост-имен в своих доменах, они также должны обеспечивать поддержку записей DNS для этих имен. Удивительно, но регистрация хост-имен домена на его серверах DNS – это такая же ручная операция, как и для файла HOSTS. Например, если вы добавляете новый сервер ftp к своей сети, то должны вручную добавить или изменить ресурсную запись DNS, указав имя и адрес новой машины.
Однако в Windows Server 2003 была принята новая технология – динамическая регистрация компьютеров вместо утомительного ручного обновления ресурсных записей. Клиенты могут сделать так, чтобы их ресурсные A-записи (адресные записи для хостов) и PTR-записи (указатели для обратного поиска) регистрировались автоматически сервером DNS. Кроме того, DNS Windows Server 2003 может быть интегрирована с Active Directory (AD), что повышает уровень безопасности, улучшает репликацию базы данных DNS, администрирование и многое другое. DNS и связанные с ней темы подробно описываются в "Ознакомление с DNS" .
Имена NetBIOS
Хотя NetBIOS больше не является обязательным компонентом в сети Windows Server 2003, она важна для обратной совместимости с предыдущими системами Windows, такими как Windows 9x и Windows NT, где для обмена данных используется NetBIOS, а также с приложениями, которые используют NetBIOS.
NetBIOS – это программный интерфейс, который использовался на протяжении многих лет для предоставления возможностей сетевого обмена приложениям. Некоторые возможности исходной архитектуры Windows NT, встроенные в Windows Server 2003, полностью основывались на системе именования NetBIOS для именования других компьютеров в сети.
Имя NetBIOS содержит до 16 символов, последний из которых регистрируется в Windows для идентификации конкретных функций определенных компьютеров, например, контроллеров домена или браузеров. Если включена служба NetBIOS, то каждому компьютеру операционной системой присваивается имя NetBIOS. Это имя может совпадать или не совпадать с именем входа пользователя или хост-именем компьютера. Вы используете имена NetBIOS, когда вводите UNC-имя пути, указывающее какой-либо узел сети Windows.
NetBIOS уже не является обязательным компонентом, если у вас нет клиентов более ранних версий Windows или зависящих от NetBIOS приложений, но это все еще составная часть сетевых средств Windows. Службы Workstation и Server, которые запускаются на всех компьютерах Windows Server 2003/2000, используют как NetBIOS, так и непосредственный хостинг (direct hosting) для предоставления базовых услуг разделяемого доступа к файлам, которые запрашиваются какой-либо операционной системой. Непосредственный хостинг – это протокол, который использует для разрешения имен DNS, а не NetBIOS. По умолчанию задана конфигурация, в которой включены как NetBIOS, так и непосредственный хостинг, которые используются одновременно при разрешении имен для новых соединений с другими машинами.
Поскольку NetBIOS запускается поверх интерфейса Transport Device Interface (TDI), она может теоретически использовать любые совместимые протоколы для своих нужд низкоуровневого взаимодействия. Первоначально операционные системы, предшествовавшие Windows 2000, использовали для трафика NetBIOS интерфейс NetBEUI (NetBIOS Extended Use Interface). Однако NetBEUI не является маршрутизируемым, поэтому, когда в качестве альтернативы был предложен TCP/IP, была начата разработка открытого стандарта (опубликованного в дальнейшем в виде документа RFC), чтобы определить способ, посредством которого можно было бы предоставлять услуги NetBIOS, используя протоколы TCP/IP. Этот стандарт получил название NetBIOS over TCP/IP, или NetBT.
Стандарт NetBT определяет два вида служб – службы сеансов и дейтаграмм. Службы сеансов используют TCP для обеспечения полностью надежной ориентированной на соединения службы передачи сообщений, а службы дейтаграмм используют протокол UDP, который требует небольшого объема служебной информации и имеет не очень высокую надежность.
В запросах к сетевым службам, которые генерируются интерфейсом NetBIOS, для обращения к другим системам используются NetBIOS-имена компьютеров. Чтобы TCP/IP мог передавать запросы через сеть, имена NetBIOS (аналогично хост-именам) должны быть сначала разрешены (преобразованы) в IP-адреса.
Поскольку имена NetBIOS преобразуются в IP-адреса до передачи данных, то вы можете использовать их вместо хост-имен во внутренних сетях. Например, чтобы подсоединиться к веб-серверу интранет, пользователь может задать NetBIOS-имя этого сервера вместо обычного хост-имени. Аналогичным образом, вы можете использовать хост-имя в UNC-пути вместо NetBIOS-имени.
Типы узлов
Имеется несколько различных методов, посредством которых компьютеры могут регистрировать и разрешать свои имена NetBIOS в сети Windows Server 2003/2000. Эти методы варьируются по своим возможностям и эффективности. Для поиска машины с определенным NetBIOS-именем компьютер может использовать сетевые широковещательные сообщения, может обращаться к серверу имен NetBIOS (NBNS) в своей сети (например, к серверу WINS) или использовать таблицу поиска в локально хранящемся файле LMHOSTS.
В стандарте NetBT определены несколько типов узлов, которые указывают, какие методы и в каком порядке должен использовать компьютер. Типы узлов присваиваются клиентам сервером DHCP или определяются параметрами TCP/IP, заданными в конфигурации клиента. В стандарте NetBT определяются следующие типы узлов.
- B-узел. Клиент использует широковещательные сообщения в сети как для регистрации, так и для разрешения имен.
- P-узел. Клиент направляет отдельное сообщение для регистрации или разрешения имени серверу имен NetBIOS.
- M-узел. Клиент использует широковещательные сообщения для регистрации имен; для разрешения имен клиент использует сначала широковещательные сообщения, и если это не дает результата, то он направляет запросы серверу имен NetBIOS.
- H-узел. Клиент направляет отдельное сообщение регистрации или разрешения имени серверу имен NetBIOS (NBNS); если NBNS недоступен, то клиент использует широковещательные сообщения, пока не будет восстановлено соединение с NBNS.
Сначала операционные системы, предшествовавшие Windows 2000, использовали для регистрации и разрешения имен расширенную службу B-узла. Служба считалась расширенной, так как при невозможности разрешения имени с помощью широковещательных сообщений в качестве альтернативы использовался файл LMHOSTS данного компьютера. Это позволяло пользователям обращаться к компьютерам в других сегментах сети, если эти компьютеры были вручную внесены в файл LMHOSTS.
В Windows Server 2003 по-прежнему включена служба WINS как сервер имен NetBIOS, в базе данных которого хранятся имена NetBIOS и IP-адреса для всей интерсети, что позволяет предоставлять эту информацию пользователям всего предприятия. Компьютеры с более ранними версиями Windows описываются как расширенные H-узлы. Эти компьютеры сначала пытаются разрешать имена NetBIOS с помощью WINS, обращаясь к широковещательным сообщениям, если WINS не дает результата или недоступна, и затем обращаются к файлу LMHOSTS, если не удается получить разрешение имени с помощью широковещательных сообщений.
Регистрация имен NetBIOS
Стандарт NetBT требует, что когда машина с более ранней версией Windows выполняет вход в сеть, ее NetBIOS-имя должно быть зарегистрировано, чтобы никакой другой компьютер не мог использовать дублированное имя и чтобы был правильно задан IP-адрес. Если вы переводите рабочую станцию в другую подсеть и вручную изменяете ее IP-адрес, то процесс регистрации обеспечивает, что другие компьютеры и серверы WINS будут знать об этом изменении.
Метод регистрации имени, используемый рабочей станцией, зависит от ее типа узла. Для регистрации имен B-узлов и M-узлов используются широковещательные сообщения, в то время как H-узлы и P-узлы направляют запросы регистрации непосредственно серверу WINS. Эти два метода описываются в следующих разделах. Один из этих двух методов используется любым компьютером с более ранней версией Windows, который подсоединяется к сети.
Регистрация имен с помощью широковещательных сообщений
B-узлы и M-узлы, использующие широковещательные сообщения для регистрации имен NetBIOS, не выполняют регистрацию в том смысле, как это делают узлы других типов. Это имя не вводится в какую-либо таблицу и не сохраняется на других компьютерах сети. Вместо этого данный компьютер использует широковещательные сообщения, чтобы "объявить" свое имя NetBIOS и проверить, не используется ли уже это имя каким-либо другим компьютером.
Процесс регистрации начинается при входе данного компьютера в сеть. Он распространяет с помощью протокола UDP набор широковещательных сообщений NAME REGISTRATION REQUEST (запрос регистрации имени), содержащих его предлагаемое имя NetBIOS и его IP-адрес. Если это имя уже используется какой-либо другой машиной в данной сети, то эта машина передает отдельное сообщение NEGATIVE NAME REGISTRATION RESPONSE (отрицательный ответ на запрос регистрации имени) по IP-адресу запрашивающего компьютера. Тем самым происходит отказ запроса регистрации. Запрашивающий компьютер должен выбрать другое имя и выполнить новую попытку регистрации.
Если компьютер не получает никакого ответа на повторяющиеся попытки рассылки пакетов NAME REGISTRATION REQUEST в течение заданного периода времени, то он передает сообщение NAME OVERWRITE DEMAND (требование перезаписи имени), объявляя, что он успешно зарегистрировал свое имя. Этот компьютер теперь должен отвечать на любые запросы, направляемые другими компьютерами по данному NetBIOS-имени.
Как и все широковещательные сообщения, эти сообщения регистрации имени ограничены локальным сегментом сети. Это означает, что компьютеры в других сетевых сегментах могут использовать то же NetBIOS-имя. Это представляет очевидную проблему. Только тщательная работа администраторов сети может воспрепятствовать конфликтам имен и неверной адресации пакетов. Эта опасность, а также излишний сетевой трафик, вызываемый отправкой широковещательных сообщений, являются причинами для создания сервера WINS как средства регистрации имен.
Регистрация имен с помощью WINS
Клиентский компьютер WINS начинает процедуру регистрации имени с генерации того же пакета NAME REGISTRATION REQUEST, что и при широковещательной передаче. Но на этот раз пакет отправляется как отдельное сообщение непосредственно серверу WINS, указанному во вкладке WINS Configuration диалогового окна TCP/IP Properties. Если никакой другой компьютер не использует это имя, то сервер WINS возвращает отправителю POSITIVE NAME REGISTRATION RESPONSE (положительный ответ на запрос регистрации имени) и записывает данное имя NetBIOS и IP-адрес в свою базу данных.
Если сервер WINS обнаруживает, что данное имя NetBIOS уже зарегистрировано другим компьютером, то сервер WINS отправляет этому компьютеру сообщение NAME QUERY REQUEST (запрос имени), чтобы он "защитил" свое зарегистрированное имя. Если этот обладатель имени не отвечает или отправляет ответ NEGATIVE NAME QUERY RESPONSE (отрицательный ответ на запрос имени), то сервер WINS регистрирует это имя для нового компьютера и отправляет ему сообщение POSITIVE NAME REGISTRATION RESPONSE. Если запрашиваемый обладатель имени отправляет ответ POSITIVE NAME QUERY RESPONSE (положительный ответ на запрос имени), это означает, что он успешно "защитил" свое имя. В этом случае сервер WINS отправляет новому компьютеру сообщение NEGATIVE NAME REGISTRATION RESPONSE, информируя, что ему отказано в попытке регистрации.
Когда сервер WINS успешно регистрирует определенное имя NetBIOS, он назначает дату истечения срока регистрации в форме значения TTL (time-to-live). Каждый раз, когда компьютер выполняет вход в сеть, это значение обновляется. Пока не истечет этот период времени, любая попытка зарегистрировать данное NetBIOS-имя будет отклоняться. Но если за этот период времени не будет выполнено ни одного входа, то данное NetBIOS-имя будет освобождено и может быть назначено снова сервером WINS без запроса какого-либо компьютера. Если данное имя остается неиспользованным в течение указанного периода времени, то объявляется как вышедшее из употребления и стирается из базы данных WINS.
Отметим, что вся транзакция проводится с помощью отдельных сообщений, направляемых между компьютерами. Здесь нет потока широковещательных сообщений, переполняющих сеть, и это является одним из главных преимуществ WINS.