Как мы видели, существуют два принципиально разных способа идентификации хостов: с помощью имен и с помощью IP-адресов. Имя хоста удобно для людей в силу своей мнемоничности, а IP-адрес, являющийся компактной числовой величиной фиксированного размера, проще обрабатывать маршрутизаторами. Для того чтобы установить связь между этими двумя идентификаторами, используется система доменных имен (Domain Name System, DNS). DNS представляет собой, с одной стороны, базу данных, распределенную между иерархически структурированными серверами имей, и, с другой стороны, протокол прикладного уровня, организующий взаимодействие между хостами и серверами имен для выполнения операций преобразования. Зачастую серверы имен являются UNIX-машинами, использующими программное обеспечение BIND (Berkeley Internet Name Domain — домен имен Интернета Беркли). Протоколу DNS назначен порт с номером 53, и работает DNS поверх протокола UDP транспортного уровня. На сайте _http://www.awl.com.kurose-ross, посвященном этой книге, вы можете найти интерактивные ссылки на DNS-программы, осуществляющие преобразование произвольных имен хостов в IP-адреса.
Читать далее »
‘Принципы работы протоколов прикладного уровня’
Функции DNS
Почти всегда программное обеспечение является «ядром» приложения
Несмотря на разнообразие сетевых приложений и большое число их взаимодействующих компонентов, почти всегда программное обеспечение является «ядром» приложения. Как было сказано в главе 1, программное обеспечение приложения распределяется между двумя или более оконечными системами (хостами). Так, например, web-приложения обычно состоят из двух взаимодействующих частей: браузера, находящегося на стороне пользователя, и программного обеспечения сервера. Аналогично приложение Telnet состоит из программы на локальном компьютере и программы на удаленном компьютере. Приложение, обеспечивающее проведение видеоконференций, состоит из множества программ, находящихся на всех участвующих в конференции хостах.
Читать далее »
Новые приложения для Интернета
Новые приложения для Интернета разрабатываются практически каждый день. Вместо того чтобы сводить разговор об Интернет-приложениях к их простому перечислению, мы ограничимся лишь несколькими наиболее важными и популярными приложениями: web-приложениями, приложениями для передачи файлов и электронной почтой, системами доменных имен (Domain Name System, DNS) и одноранговыми системами обмена файлами. Сначала мы рассмотрим web-приложения, поскольку используемый ими протокол HTTP весьма наглядно иллюстрирует основные принципы построения сетевых протоколов. Затем мы изучим протокол передачи файлов, сравним его с HTTP и выделим несколько дополнительных принципов. Далее предметом нашего рассмотрения станет электронная почта. Мы узнаем о том, что современные приложения электронной почты используют не один, а несколько протоколов прикладного уровня. Затем мы познакомимся с системой доменных имен, с помощью которой производится трансляция адресов в Интернете. Большинство пользователей взаимодействует с DNS не напрямую, а через другие приложения, в частности через web-приложения, а также приложения электронной почты и передачи файлов. DNS замечательно иллюстрирует организацию распределенной базы данных в Интернете. Наконец, последним приложением, которое мы рассмотрим, будет являться одноранговая система обмена файлами, часто используемая музыкальными сайтами, хранящими общедоступные коллекции МРЗ-файлов.
Протокол UDP
Протокол UDP предоставляет приложению весьма простую и бесхитростную модель обслуживания. Логическое соединение между сокетами не устанавливается, следовательно, процедура рукопожатия в протоколе отсутствует. UDP обеспечивает ненадежную передачу данных, означающую отсутствие приложения, посылающего пакет гарантии того, что этот пакет будет получен адресатом. Более того, протокол не гарантирует, что порядок получения информации будет соответствовать порядку ее отправления.
Читать далее »
Протокол TCP
Модель обслуживания протокола TCP опирается на установление логического соединения и надежную передачу данных. Поясним, что означают эти два термина.
□ Установление логического соединения. Протокол TCP обеспечивает обмен управляющей информацией между клиентом и сервером до начала передачи «полезных» данных. Этот предварительный обмен, называемый процедурой рукопожатия, предназначен для подготовки обеих сторон к передаче серии пакетов. После удачного завершения процедуры рукопожатия между соке-тами клиента и сервера устанавливается TCP-соединение. ТСР-соединение является дуплексным, то есть стороны могут осуществлять передачу информации друг другу одновременно. После окончания обмена соединение должно быть автоматически разорвано. ТСР-соединение называется логическим потому, что представляет собой совокупность информационных единиц (переменных).
Читать далее »
Два транспортных протокола
В Интернете и других сетях, использующих семейство протоколов TCP/IP, существуют два транспортных протокола: TCP (Transmission Control Protocol — протокол управления передачей) и UDP (User Datagram Protocol — протокол пользовательских дейтаграмм). При создании нового Интернет-приложения разработчику необходимо выбрать, каким из двух протоколов, TCP или UDP, будет пользоваться его продукт. Эти протоколы предлагают приложениям принципиально разные модели обслуживания.
Время передачи
Последнее требование приложений к транспортному уровню заключается в гарантированном времени доставки данных. Интерактивные приложения реального времени, такие как Интернет-телефония, виртуальные миры, телеконференции и многопользовательские компьютерные игры, накладывают жесткие временные ограничения на время доставки данных (сотни миллисекунд и менее). Невыполнение временных ограничений в Интернет-телефонии приводит к длительным паузам в разговоре, а в компьютерных играх – к задержке реакции окружения и, следовательно, к потере реалистичности. В приложениях, не относящихся к приложениям реального времени, временные ограничения на доставку данных не являются столь принципиальными, однако меньшая задержка всегда предпочтительней, чем большая.
Читать далее »
Скорость передачи
Для эффективной работы некоторым приложениям необходимо осуществлять передачу данных с определенной скоростью. Например, если приложение Интернет-телефонии кодирует аналоговые голосовые сообщения в цифровые с интенсивностью 32 Кбит/с, то для успешного функционирования необходимо обеспечить передачу данных этого приложения со скоростью 32 Кбит/с. В противном случае между фразами пользователей будут ощущаться задержки. Для избежания таких ситуаций приложение должно либо снизить интенсивность кодирования до величины, согласующейся со скоростью передачи, либо завершить свою работу. Приложения, эффективность которых зависит от скорости передачи данных, называют чувствительными к скорости передачи данных. На сегодняшний день многие мультимедиа-приложения являются чувствительными к скорости передачи, однако в будущем ожидается кардинальное усовершенствование систем кодирования, которые позволят приложениям адаптироваться к используемому каналу связи. Такой способностью обладают приложения электронной почты, web-приложения и приложения для передачи файлов, относящиеся к классу эластичных приложений. Разумеется, наличие высокоскоростного канала связи никогда не повредит работе сети; здесь весьма актуально утверждение о том, что полоса пропускания никогда не бывает слишком широкой.
Надежная передача данных
Некоторые приложения, например приложения электронной почты, обмена сообщениями в реальном времени, передачи файлов, просмотра web-документов, финансовых операций и т. д., требуют надежной передачи данных, то есть исключения вероятности потерь данных при передаче. Как правило, потери данных приводят к крайне нежелательным для пользователей последствиям (представьте обмен между банком или его клиентом!). Тем не менее существует вид приложений, толерантных к потерям данных. К нему относится большинство мультимедийных приложений, например аудио и видео реального времени. Небольшие потери данных в таких приложениях оборачиваются помехами (звуковые щелчки и «дергающееся» изображение), не приводящими к сбоям или серьезным потерям качества. Степень толерантности приложения к потере данных определяет максимальную долю данных, которая может быть потеряна, и, как правило, зависит от назначения приложения и использующейся схемы кодирования.
Сокет является интерфейсом между прикладным процессом и протоколом транспортного уровня
Вспомним, что сокет является интерфейсом между прикладным процессом и протоколом транспортного уровня. На передающей стороне сообщения через сокет оказываются на транспортном уровне, где получают возможность перемещаться внутри сети. Сетевые службы обеспечивают доставку сообщения на транспортный уровень адресата, где оно через сокет попадает в нужное приложение и обрабатывается им. Многие компьютерные сети, включая Интернет, используют более одного транспортного протокола. При разработке приложения необходимо выбрать один из транспортных протоколов, к службам которого оно будет обращаться. Как сделать выбор? Нужно изучить перечень служб, поддерживаемых каждым из протоколов, и выбрать тот, который способен обслужить ваше приложение наилучшим способом. Подобный выбор вы совершаете, решая, следует ли вам воспользоваться в путешествии поездом или самолетом. У каждого вида транспорта есть свои преимущества (например, поезд совершает остановки между конечными пунктами, а самолет тратит меньше времени в пути).
Читать далее »