Ознакомиться с материалом лекции по инкапсуляции данных в сети Интернет.
Напомнить уровни модели ISO/OSI.
Ознакомиться с работой программы-эмулятора.
Рекомендации преподавателю по проведению занятия
Порядок выполнения работы
1. Изучить алгоритмы инкапсуляции данных при прохождении через стек протоколов.
2. Ознакомиться с практическими приемами реализации алгоритмов инкапсуляции данных при прохождении через стек протоколов на программе-эмуляторе.
3. Составление алгоритма работы утилит Look-Up, Finger и Ping
4. Тестовый опрос.
1. Материал для самостоятельной подготовки
Утилита Lookup
Сетевые пользователи предпочитают пользователи предпочитают обращаться к компьютерам не по адресу, а по имени. С другой стороны, любая сетевая программа, обращаясь к сокету, вынуждена указывать 32-разрядный IP - адрес. Очевидно, что нам необходим быстрый и надежный метод, чтобы каждому имени поставить в соответствие адрес. Проблема, возникающая в связи с преобразованием адресов, решилась путем создания сервера DNS ( сервера доменных имен ). Сервер DNS - это программа, преобразующая имена доменов в IP - адреса.
Пользователю, для обращения к DNS-серверу, необходимо воспользоваться утилитой Lookup, реализующей программу - преобразователь имен доменов в IP-адреса.
Windows API обеспечивает выполнение двух функций преобразователя - утилиты Lookup -gethostbyaddr и gethostbyname. Обе эти функции получают информацию о сетевом компьютере. Подпрограммы пользуются этими функциями, чтобы преобразовать IP-адрес или имя компьютера. Другими словами эти функции вызываются, чтобы преобразовать IP-адрес в имя или наоборот. Функция, в свою очередь открывает коммуникационный канал и посылает запрос к серверу имен доменов. Запрос к серверу имен обычно состоит из структуры данных, включающей имя хоста (сетевого компьютера), адрес в формате «десятичное с точкой» и 32-разрядный адрес Сервер рассматривает запрос, чтобы выяснить, в каком домене находится указанное имя и кто его обслуживает. Если указанный домен входит в зону ответственности этого сервера, сервер преобразует имя в IP-адрес, пользуясь собственными таблицами (см. приложение В), а затем отправляет ответ клиенту. Серверы DNS организованы в иерархическую структуру. Ни один сервер DNS не может знать обо всех компьютерах в Интернет. Сама система имен доменов является распределенной базой данных - данные о конкретных компьютерах находятся на различных серверах DNS. Программное обеспечение распределенной базы данных обслуживает и управляет данными так, как если бы они все принадлежали единой базе данных. Общаясь друг с другом, сервер с сервером, любой сервер DNS может преобразовать любой сетевой адрес в Интернет.
Теоретически, преобразователь имен должен связаться с корневым сервером DNS и передать ему запрос на преобразование имени в IP - адрес. Корневой сервер в свою очередь должен определить, к какому из подчиненных серверов он должен обратиться, т.е. к какому домену принадлежит имя компьютера, указанное в запросе. Сервер DNS второго уровня делает то же самое, и это продолжается до тех пор, пока запрос не достигнет зоны, в которой будет искомая информация. В конце концов выполненный запрос возвратится обратно к вызвавшей программе и IP - адрес будет найден.
Если сервер не в состоянии обслужить запрос, то есть домен находится вне его зоны, дальнейшее его поведение находится в зависимости от типа запроса клиента.
Преобразователь устанавливает один из двух типов запросов. Сперва он просит сервер произвести полное преобразование. В официальной терминологии этот тип запроса называется «рекурсивное выполнение». Если клиент запрашивает рекурсивное выполнение и сервер не в состоянии выполнить это преобразование, он должен обратиться к тому серверу, который сможет выполнить запрос, а затем возвращает ответ клиенту.
Второй тип запроса - выполнение методом итераций. Этот запрос просит сервер либо выполнить преобразование, либо, в случае неудачи, указать клиенту следующий сервер, к которому можно обратиться. Когда сервер получит запрос на выполнение преобразования методом итераций, он либо успешно преобразует имя в IP-адрес, либо его ответ будет содержать адрес следующего сервера, который , возможно, имеет больше информации.
Получив необходимую информацию функция, gethostbyaddr или gethostbyname, закрывает коммутационный канал и возвращает полученное значение пользователю.