Замечания по UPD
24.03.2008 . Автор: adminКлиенты и серверы, использующие протокол UDP, не имеют никаких гарантий надежной доставки. После отправки клиентом запросы могут быть потеряны, продублированы, задержаны или доставлены не в том порядке, в каком были отправлены. Аналогичным образом, могут быть потеряны, продублированы, задержаны или доставлены не в том порядке ответы, отправленные сервером клиенту. Следовательно, клиентское или серверное программное обеспечение, в котором используется протокол UDP, должно включать код, позволяющий обнаруживать и исправлять подобные ошибки.
Сам протокол UDP не вносит ошибок, он просто полагается на протокол более низкого уровня, т.е. IP (Internet Protocol — Межсетевой протокол), который выполняет доставку пакетов. Успешное функционирование протокола IP, в свою очередь, зависит от работы базовых аппаратных сетей и промежуточных шлюзов. С точки зрения программиста, применение протокола UDP ведет к тому, что успешное функционирование разработанной им программы зависит от бесперебойной работы базовой объединенной сети. Например, протокол UDP хорошо работает в локальной сети, поскольку в ней редко возникают ошибки, которые приводят к снижению надежности. Ошибки обычно возникают, только если сетевое соединение проложено через глобальную объединенную сеть.
Программисты иногда совершают ошибку, выбрав транспортный протокол без установления логического соединения (т.е. UDP), а затем выполнив проверку своего клиентского и серверного программного обеспечения только в локальной сети. Поскольку в локальной сети почти не происходит задержка пакетов, их потеря или доставка с нарушением порядка, создается впечатление, что программное обеспечение работает хорошо. Однако после перехода к использованию того же программного обеспечения в глобальной объединенной сети оно иногда начинает давать сбои или вырабатывать неправильные результаты.
Не только начинающие разработчики, но и более опытные профессионалы предпочитают использовать не UDP, a TCP. Организация работы протокола TCP по принципу установления логического соединения упрощает программирование, а надежность этого протокола позволяет программисту снять с себя ответственность за обнаружение и исправление ошибок. По сути, попытка повысить надежность протокола UDP представляет собой нетривиальную задачу, решение которой обычно требует значительного опыта проектирования протоколов.
Как правило, протокол UDP используется в прикладных программах только при следующих условиях.
• во-первых, в спецификации прикладного протокола должно быть обусловлено применение протокола UDP (возможно, сам прикладной протокол был разработан с учетом требований обеспечения надежности и устранения ошибок передачи),
• во-вторых, прикладной протокол требует использования средств широковещательной или групповой рассылки,
• в-третьих,приложение работает в надежной локальной среде и нет смысла расходовать лишние ресурсы для повышения надежности.
Начинающим разработчикам, которые занимаются проектированием приложений, клиент/сервер, настоятельно рекомендуется использовать TCP, поскольку он полностью обеспечивает надежную связь и обмен данными по принципу установления логического соединения. В программах протокол UDP следует использовать только в тех случаях, когда прикладной протокол обеспечивает достижение требуемого уровня надежности, в приложении необходимо применять аппаратную широковещательную (или групповую) рассылку или нет смысла затрачивать ресурсы для повышения надежности.)
Замечание по вопросу «Адресация в TCP/IP (в Internet)».
(В стеке TCP/IP применяется доменная система имен, которая имеет иерархическую древовидную структуру, допускающую использование в имени произвольного количества составных частей (см Рисунок 4).
Рис 4.. Пространство доменных имен (DNS)
Иерархия доменных имен аналогична иерархии имен файлов, принятой во многих популярных файловых системах. Дерево имен начинается с корня, обозначаемого здесь точкой (.). Затем следует старшая символьная часть имени, вторая по старшинству символьная часть имени и т. д. Младшая часть имени соответствует конечному узлу сети.
В отличие от имен файлов, при записи которых сначала указывается самая старшая составляющая, затем составляющая более низкого уровня и т. д., запись доменного имени начинается с самой младшей составляющей, а заканчивается самой старшей. Составные части доменного имени отделяется друг от друга точкой.
ВНИМАНИЕ Термин «домен» очень многозначен, поэтому его нужно трактовать в рамках определенного контекста. Кроме доменов имен стека TCP/IP в компьютерной литературе также часто упоминаются домены Windows NT, домены коллизий н некоторые другие.
Общим у всех этих терминов является то, что они описывают некоторое множество элементов, обладающее каким-либо определенным свойством.
Необходимо подчеркнуть, что компьютеры входят в домен в соответствии со своими составными именами, при этом они могут иметь совершенно различные IP-адреса, принадлежащие к различным сетям и подсетям. Например, в домен mgu.ru могут входить хосты с адресами 132.13.34.15, 201.22.100.33, 14.0.0.6. Доменная система имен реализована в сети Internet, но она может работать и как автономная система имен в крупной корпоративной сети, использующей стек TCP/IP, но не связанной с Internet.
В Internet корневой домен управляется центром InterNIC. Домены верхнего уровня назначаются для каждой страны, а также на организационной основе. Имена этих доменов должны следовать международному стандарту ISO 3166.
Различают два типа адресов. На канальном уровне используют адреса, называемые физическим ( иногда говорят MAC-Media access control-адресами, управления доступом к среде). Это шестибайтовые адреса сетевых плат, присваиваемые изготовителем контроллеров (каждый изготовитель вместе с лицензией на изготовление получает уникальный диапазон адресов). На сетевом уровне используют сетевые адреса, иначе называемые виртуальными, или логическими. Эти адреса имеют иерархическую структуру, для них существуют цифровое и буквенное выражения.
Узлы в Internet имеют адрес и имя. Адрес - уникальная совокупность чисел: адреса сети и компьютера (хоста - узла в cети), которая указывает их местоположение. Имя характеризует пользователя. Оно составляется в соответствии с доменной системой имен. Соответствие между IP-адресом и IP-именем хоста устанавливается специальной службой директорий. В Internet это DNS (Domain Name Service), в ISO - стандарт X.500.
IP-имя, называемое также доменным именем, - удобное для человека название узла или сети. Имя отражает иерархическое построение глобальных сетей и потому состоит из нескольких частей (аналогично обычным почтовым адресам). Корень иеарахии обозначает либо страну, либо отрасль знаний, например:by – Белоруссия, ru - Россия, us - США, de - Германия, uk - Великобритания, edu - наука и образование, com - коммерческие организации, org - некоммерческие организации, gov - правительственные организации, mil - военные ведомства, net - служба поддержки Internet и т.д. Корень занимает в IP-имени правую позицию, левее записываются локальные части адреса и, наконец, перед символом @ указывается имя почтового ящика пользователя. Уже в 1997 г. число используемых доменных имен в сети Internet превысило один миллион.
IP-адрес - 32-битовое слово, записываемое в виде четырех частей (побайтно), разделенных точками. Каждые подсеть и узел в подсети получают свои номера, причем для сети (подсети) может использоваться от одного до трех старших байтов, а оставшиеся байты - для номера узла. Какая часть IP-адреса относится к сети, определяется ее маской, выделяющей соответствующие биты в IP-адресе. Например, для некоторой сети маска может быть 255.0.0.0, а для ее подсети - 255.255.0.0 и т.д. Тем самым описывается иерархия сетей.
Номера при включении нового хоста выдает организация, предоставляющая телекоммуникационные услуги и называемая провайдером. Провайдер, в частности, обеспечивает включение IP-адреса и соответствующего ему IP-имени в сервер службы адресов DNS. Это означает запись данных о хосте в DIB (Directory Information Base) локального узла DNS.
При маршрутизации имя переводится в адрес с помощью серверов DNS (Domain Name Service). Поскольку маршрутизация в сети осуществляется по IP-адресам, то перевод указанного пользователем IP-имени в IP-адрес с помощью DNS обязателен.
Маршрутизация в Internet организована по иерархическому принципу, имеются уровни ЛВС (корпоративных сетей), маршрутных доменов (RD - Routing Domains), в каждом из которых используются единые протоколы и алгоритмы маршрутизации, административных доменов (AD), каждый из которых соответствует некоторой ассоциации и имеет единое управляющее начало. В RD имеются внешние маршрутизаторы для связи с другими RD или с AD. Обращение из некоторого узла к Internet происходит к местному серверу (bmstu), и если там сведений об адресе назначения нет, то происходит переход к серверу следующего, более высокого уровня (ru) и далее по иерархии вниз до получения IP-адреса хоста назначения. В местном DNS сервере могут быть сведения об IP-адресах хостов из удаленных доменов, если к ним происходят достаточно частые обращения из данного домена.
DNS – представляет собой распределенную базу адресов, корневых серверов в Internet в 1995 г. было всего семь. Число уровней может быть большим . В каждой зоне (поддереве) сервер дублируется, его содержимое реплицируется через определенные промежутки времени. )