Концепция сокетов
Сетевой сокет (network socket) во многом напоминает электрическую розетку. В сети имеется множество сокетов, причем каждый из них выполняет стандартные функции. Все, что поддерживает стандартный протокол, можно «подключить» к сокету и использовать для коммуникаций. Для электрической розетки не имеет значения, что именно вы подключаете – лампу или тостер, поскольку оба прибора рассчитаны на напряжение 220 Вольт и частоту 50 Герц. Несмотря на то, что электричество свободно распространяется по сети, все розетки в доме имеют определенное место. Подобным образом работают и сетевые сокеты, за исключением того, что электроны и почтовые адреса заменены на пакеты TCP/IP и IP-адреса. Internet Protocol (IP) является низкоуровневым протоколом маршрутизации, который разбивает данные на небольшие пакеты и рассылает их по различным сетевым адресам, что не гарантирует доставку вышеупомянутого пакета адресату. Transmission Control Protocol (TCP) является протоколом более высокого уровня, собирающим пакеты в одну строку, сортирующим и перетранслирующим их по мере необходимости, поддерживая надежную рассылку данных. Третий протокол, UNIX Domain Protocol (UDP), используется вместе с TCP и может применяться для быстрой, но ненадежной передачи пакетов.
Клиент/сервер
Под термином сервер подразумевается любой объект с общедоступными ресурсами. Клиентом называется любой другой объект, желающий получить доступ к определенному серверу. Взаимодействие между клиентом и сервером во многом подобно взаимодействию лампы и розетки. Электрическая сеть является сервером, алампа является клиентом напряжения. Сервер постоянно предлагает свои «услуги», в то время как клиент волен в любое время отключиться от обслуживания.
В сокетах Berkley понятие сокета позволяет одному компьютеру обслуживать несколько различных клиентов одновременно, а также одновременно обрабатывать информацию различных типов. Это стало возможным после введения понятия порта, который является нумерованным сокетом на определенном компьютере. Серверу разрешено обслуживать несколько клиентов, подсоединенных к одному порту, но не одновременно. Для управления соединением нескольких клиентов процесс сервера должен быть многопоточным или иметь другие средства мультиплексирования одновременных операций ввода-вывода.
Зарезервированные сокеты
После физического подключения выбирается протокол высокого уровня, который зависит от используемого порта. Согласно спецификации протокола TCP/IP, первые 1024 порта резервируются для определенных задач. Порт номер 21 предназначен для протокола FTP, 23 – для Telnet, 25 – для электронной почты, 79 – дляпротокола finger, 80 – для HTTP, и т.д. Каждый протокол определяет, каким образом клиент должен взаимодействовать с портом. Например, протокол HTTP используется Web-броузерами и серверами для передачи гипертекстовых страниц и изображений. Работает он следующим образом. Когда клиент запрашивает файл от сервера HTTP (это действие известно под названием попадание – hit), он просто записывает имя файла в специальном формате в определенный порт и получает обратно содержимое файла. Сервер также возвращает код состояния, сообщающий клиенту о возможности удовлетворения запроса, и причину отказа.. Вот пример запроса клиентом файла /index.html, в ответ на который сервер передает содержимое файла.
СЕРВЕР КЛИЕНТ
Опрашивает порт 80 Подключается к порту 80
Определяет подключение Записывает «GET /index.html к серверу HTTP/1.0\n\n»
Считывает до второго символа
новой строки (\n)
Определяет команду GET как
известную команду и протокол HTTP/1.0.
Считывает файл /index.html
Записывает «HTTP/1.0 200 OK\n\n» («200» означает «дальше идет содержимое файла»)
Копирует содержимое файла в сокет Считывает файл и выводит его
Отключается Отключается
Транслирующие серверы
Транслирующие серверы (proxy servers) передают часть протокола клиента другому серверу. Это необходимо в случаях, когда клиенты имеют определенные ограничения при подключении к серверу. Таким образом, клиент может быть подключен к другому серверу, не имеющему подобных ограничений, а тот, в свою очередь, будет осуществлять все операции клиента. Транслирующий сервер имеет возможность фильтровать определенные запросы или накапливать (кэшировать) результаты этих запросов для дальнейшего использования. Транслирующий HTTP сервер, поддерживающий кэширование, в состоянии уменьшить количество запросов связи локальных сетей с Internet. Если популярная web-страница затребована сотнями пользователей, транслирующий сервер может, считав ее содержимое с web-сервера только один раз, сохранить ее в буфере и обеспечить более быстрый доступ к ней клиентов.
Адресация Internet
Каждый компьютер в Internet имеет адрес. Им является число, однозначно определяющее компьютер в сети. На IP-адрес отводится 32 бита и мы часто представляем подобные адреса в виде последовательности чисел в интервале от 0 до 255, разделенных точками. Это облегчает их запоминание, поскольку адреса присваиваются отнюдь не беспорядочно – прослеживается определенная иерархия.
Служба доменных имен (DNS)
Internet не была бы столь дружественной сетью, если бы существовала необходимость задавать адреса только числами. Например, сложно себе представить появление ссылки на адрес «http://192.9.9.1/» в рекламном объявлении. К счастью, существует служба, обеспечивающая поиск информации в Internet с помощью имен,- служба доменных имен (Domain Name Service - DNS). Точно так же, как четыре числа IP-адреса описывают сетевую иерархию слева направо, имя адреса Internet, называемое именем его домена, описывает положение машины в пространстве имен Internet справа налево. Например, www.starwave.com означает, что адресат находится в домене com (зарезервированном для коммерческих сетей США) и называется starwave (название компании), а www является именем определенного компьютера – в данном случае web-сервера компании starwave. www соответствует крайнему правому числу в эквивалентном IP-адресе.
2.4. Основы сетевой маршрутизации
Библиографическая справка
В общедоступном значении слова маршрутизация означает передвижение информации от источника к пункту назначения через объединенную сеть. При этом, как правило, на пути встречается по крайней мере один узел. Маршрутизация часто противопоставляется объединению сетей с помощью моста, которое, в популярном понимании этого способа, выполняет точно такие же функции. Основное различие между ними заключается в том, что объединение с помощью моста имеет место на Уровне 2 эталонной модели ISO, в то время как маршрутизация встречается на Уровне 3. Этой разницей объясняется то, что маршрутизация и объединение по мостовой схеме используют различную информацию в процессе ее перемещения от источника к месту назначения. Результатом этого является то, что маршрутизация и объединение с помощью моста выполняют свои задачи разными способами; фактически, имеется несколько различных видов маршрутизации и объединения с помощью мостов.
Тема маршрутизации освещалась в научной литературе о компьютерах более 2-х десятилетий, однако с коммерческой точки зрения маршрутизация приобрела популярность только в 1970 гг. В течение этого периода сети были довольно простыми, гомогенными окружениями. Крупномасштабное объединение сетей стало популярно только в последнее время.
Компоненты маршрутизации
Маршрутизация включает в себя два основных компонента: определение оптимальных трактов маршрутизации и транспортировка информационных групп (обычно называемых пакетами) через объединенную сеть. В настоящей работе последний из этих двух компонентов называется коммутацией. Коммутация относительно проста. С другой стороны, определение маршрута может быть очень сложным процессом.
Определение маршрута
Определение маршрута может базироваться на различных показателях (величинах, результирующих из алгоритмических вычислений по отдельной переменной - например, длина маршрута) или комбинациях показателей. Программные реализации алгоритмов маршрутизации высчитывают показатели маршрута для определения оптимальных маршрутов к пункту назначения.
Для облегчения процесса определения маршрута, алгоритмы маршрутизации инициализируют и поддерживают таблицы маршрутизации, в которых содержится маршрутная информация. Маршрутная информация изменяется в зависимости от используемого алгоритма маршрутизации.
Алгоритмы маршрутизации заполняют маршрутные таблицы неким множеством информации. Ассоциации "Пункт назначения/следующая пересылка" сообщают роутеру, что определенный пункт назначения может быть оптимально достигнут путем отправки пакета в определенный роутер, представляющий "следующую пересылку" на пути к конечному пункту назначения. При приеме поступающего пакета роутер проверяет адрес пункта назначения и пытается ассоциировать этот адрес со следующей пересылкой.
В маршрутных таблицах может содержаться также и другая информация. "Показатели" обеспечивают информацию о желательности какого-либо канала или тракта. Роутеры сравнивают показатели, чтобы определить оптимальные маршруты. Показатели отличаются друг oт друга в зависимости от использованной схемы алгоритма маршрутизации. Далее в этой главе будет представлен и описан ряд общих показателей.
Роутеры сообщаются друг с другом (и поддерживают свои маршрутные таблицы) путем передачи различных сообщений. Одним из видов таких сообщений является сообщение об "обновлении маршрутизации". Обновления маршрутизации обычно включают всю маршрутную таблицу или ее часть. Анализируя информацию об обновлении маршрутизации, поступающую ото всех роутеров, любой из них может построить детальную картину топологии сети. Другим примером сообщений, которыми обмениваются роутеры, является "объявление о состоянии канала". Объявление о состоянии канала информирует другие роутеры о состоянии каналов отправителя. Канальная информация также может быть использована для построения полной картины топологии сети. После того, как топология сети становится понятной, роутеры могут определить оптимальные маршруты к пунктам назначения.