Особенности приема и передачи информации по сети.
Распределенная система состоит из компьютеров, соединенных коммуникационной средой, например локальной сетью.В распределенной среде желательно обеспечить независимость вызывемых программ-сервисов от их местоположения.
Связь между наиболее употребительными протоколами при соединении компонентов: Уровень 2 –Internet, уровень 3- транспортный, уповень 4 – пользовательский.
Уровень сетевого интерфейса составляют протоколы, которые обеспечивают передачу данных между узлами связи физически соединенными друг с другом, или подключенными к одному сегменту сети, для соответствующих физические средства передачи данных. К этому уровню относятся протоколы Ethernet, Token Ring, SLIP, PPP, работающие с такими физическими средствами как витая пара, коаксиальный кабель, оптоволоконный кабель и т.д. Формально протоколы сетевого интерфейса не являются частью уровней TCP/IP, но стандарты определяютпередачу данных в TCP/IP с использованием протоколов сетевого уровня. В операционной системе UNIX на уровне сетевого интерфейса обычно функционируют драйверы различных сетевых плат.
Передача информации на уровне сетевого интерфейса производится на основании физических адресов, соответствующих точкам входа сети в узлы связи (например, физических адресов сетевых карт). Каждая точка входа имеет свой уникальный адрес – MAC-адрес (Media Access Control), физически зашитый в нее на этапе изготовления. Так, например, каждая сетевая плата Ethernet имеет собственный уникальный 48-битовый номер.
Науровне 2 (Internet)действуетICMP – Internet Control Message Protocol. Протокол обработки ошибок и обмена управляющей информацией между узлами сети. Протокол этого уровня IP – Internet Protocol. Это протокол, который обеспечивает доставку пакетов информации для обработки протоколами ICMP и протоколамитранспортного уровня TCP и UDP. Протокол ARP – Address Resolution Protocol это протокол для отображения адресов Internet (IP) в адреса уровня сетевого интерфейса. RARP – ReverseAddressResolutionProtocol. Этот протокол служит для решения обратной задачи: отображения адресов уровня сетевого интерфейса в адреса уровня Internet.
Центральным протоколом уровня является протокол IP. Вся информация, поступающая к нему от других протоколов, оформляется в виде IP-пакетов данных (IP datagrams). Каждый IP-пакет содержит адреса компьютера отправителя и компьютера получателя, поэтому он может передаваться по сети независимо от других пакетов и, даже, по своему собственному маршруту.IP вычисляет и проверяет контрольную сумму, которая покрывает только его 20-байтовый заголовок для пакета информации (включающий, например, адреса отправителя и получателя). Если IP-заголовок пакета при передаче оказывается испорченным, то весь пакет просто отбрасывается. Ответственность за повторную передачу пакета тем самым возлагается на вышестоящие уровни.
12.3. IP-адреса.Поскольку на уровне Internet информация передается от компьютера-отправителя к компьютеру-получателю, ему требуются специальные IP-адреса компьютеров (а точнее, их точек подсоединения к сети – сетевых устройств) Мы будем далее говорить оIP версии 4 (IPv4), которая предполагает наличие у каждого сетевого интерфейса уникального 32-битового адреса.
Каждый из IP-адресов классов A–C логически делится на две части: номер сети и номер узла в этой сети. Идентификаторы сетей в настоящее время присваиваются локальным сетям специальной международной организацией – корпорацией Internet по присвоению имен и номеров (ICANN). Класс A предназначен для небольшого количества сетей, содержащих много компьютеров, класс C – напротив, для большого количества сетей с малым числом компьютеров. Класс B занимает среднее положение. Надо отметить, что все идентификаторы сетей классов A и B к настоящему моменту уже задействованы.
Допустим, что вам выделен адрес сети класса C, в котором под номер узла сети отведено 8 бит. Если нужно присвоить IP-адреса 100 компьютерам, которые организованы в 10 Ethernet-сегментов по 10 компьютеров в каждом, можно поступить по-разному. Можно присвоить номера от 1 до 100 компьютерам, игнорируя их принадлежность к конкретному сегменту – воспользовавшись стандартной формой IP-адреса. Или же можно выделить несколько старших бит из адресного пространства идентификаторов узлов для идентификации сегмента сети, например 4 бита, а для адресации узлов внутри сегмента использовать оставшиеся 4 бита. Последний способ получил название адресации с использованием подсетей.
Запоминать четырехбайтовые числа для человека достаточно сложно, поэтому принято записывать IP-адреса в символической форме, переводя значение каждого байта в десятичный вид по отдельности и разделяя полученные десятичные числа в записи точками, начиная со старшего байта: 192.168.253.10.
Протокол ARP позволяет компьютеру для поискаMAC-адресов разослать специальное сообщение по всему сегменту сети, которое требует от компьютера, имеющего содержащийся в сообщении IP-адрес, откликнуться и указать свой физический адрес. Это сообщение поступает всем компьютерам в сегменте сети, но откликается на него только тот, кого спрашивали. После получения ответа запрашивавший компьютер может установить необходимое соответствие между IP-адресом и MAC-адресом.
Когда рабочая станция с операционной системой, сгенерированной без назначения IP-адреса, начинает свою работу, она получает MAC-адрес от сетевого карты и рассылает соответствующий RARP -запрос, содержащий этот адрес, всем компьютерам сегмента сети. Только RARP -сервер, содержащий информацию о соответствии указанного физического адреса и выделенного IP-адреса, откликается на данный запрос и отправляет ответ, содержащий IP-адрес.
За передачу данных из сети Интернет пользователю отвечают два протокола транспортного уровня- UDP (User Datagram Protocol) и TCP (Transmission Control Protocol).По протоколу UDP отправитель данных не получает подтверждения их доставки получателю. Этот протокол не упорядочивает передаваемые пакеты, некоторые из них могут быть потеряны или, наоборот, возможно дублирование пакетов. UDP работает быстрее, чем TCP (ведь заголовки пакетов у него в пять раз короче - 8 против 40 байт!).
Компонент, желающий послать сообщение другому компоненту не обязан знать, как добраться до адресуемого компьтера. Соединение компонентов обеспечивается совместным использованием портов и IPадресов. Порт – номер логическиого канала ввода или вывода для процесса -сервиса, передающего и принимающего данные. Номер канала ввода/вывода ( его адрес) процесса-сервиса накрепко закреплен за этим процессом-сервисом и название«номер порта». Порт - это адрес памяти программы для приема потоков информации при обмене данными. Номер порта дается в диапазоне от нуля до 65535. В семействе протоколов TCP/IP адресные пространства портов представляют собой положительные значения целого 16-битового числа.
Порт вместе с IP адресами хост-компьютеров и сетей на коммуникационном уровне Internetа образует сокет (socket - разъем). Интерфейс сокета определяет набор операций, доступных приложению для организации обмена данными по сети с другим приложением. Сокеты не обязательно базируются на протоколе TCP/IP, они могут также базироваться на IPX/SPX, etc. Можно трактовать номер порта как номер сервиса(услуги).Если в запросе от клиента указывается номер порта, то ВЕБ сервер вызывает у себя на компьютере соответствующую службу-процесс. Для каждого транспортного протокола при связи с IP существуют собственные сокеты: UDP сокеты и TCP сокеты, имеющие различные адресные пространства своих локальных адресов – портов.
Процедура распределения протоколами TCP и UDP поступающих от сетевого уровня пакетов между прикладными процессами называется демультиплексированием
Данные для передачи программами-приложениями,реализующими протоколы, помещаются в "конверты" с набором соответствующих заголовков и только после этого передаются по сети.Для установления двусторонней связи путем задания, доставки и получения ответа нужно указать пять параметров: <транспортный протокол,IP-адрес отправителя, порт отправителя, IP-адрес получателя, порт получателя>.И клиент, и сервер должны использовать один и тот же протокол транспортного уровня.
12.4 Службы (стандартные услуги)WWW.Служба именования «сервер имен» хранит имена глобальных сервисов. Предполагается, что местоположение самого сервера имен известно. Если клиент хочет получить доступ к некоторой услуги- сервису, он запрашивает информацию о нем у сервера имен. Пример службы имен – это система доменных имен (DNS), используемая в сети Internet.Общее пространство имён Интернета функционирует благодаря DNS . Домен – это адресс сайта или группы сайтов, имеющих общее имя. Полное доменное имя состоит из непосредственного имени домена и далее имён всех доменов, в которые он входит, разделённых точками.Например, полное имя «ru.wikipedia.org» обозначает домен третьего уровня «ru», который входит в домен второго уровня «wikipedia», который входит в домен верхнего уровня «org», который входит в безымянный корневой домен «.» (точка). Доменные имена дают возможность адресации интернет-узлов и расположенных на них сетевых ресурсов (веб-сайтов, серверов электронной почты, других служб) в удобной для человека форме. Обычно под доменным именем понимают именно полное доменное имя.
Рассмотрим на примере работу всей системы.Предположим, мы набрали в браузере адрес ru.wikipedia.org. Браузер спрашивает у сервера DNS: «какой IP-адрес у ru.wikipedia.org»? Однако сервер DNS может ничего не знать не только о запрошенном имени, но и даже обо всём домене wikipedia.org. В этом случае сервер обращается к корневому серверу — например, 198.41.0.4. Этот сервер сообщает — «У меня нет информации о данном адресе, но я знаю, что 204.74.112.1 является ответственным за зону org.» Тогда сервер DNS направляет свой запрос к 204.74.112.1, но тот отвечает «У меня нет информации о данном сервере, но я знаю, что 207.142.131.234 является ответственным за зону wikipedia.org.» Наконец, тот же запрос отправляется к третьему DNS-серверу и получает ответ — IP-адрес, который и передаётся клиенту — браузеру.В данном случае при разрешении имени, то есть в процессе поиска IP по имени:браузер отправил известному ему DNS-серверу рекурсивный запрос — в ответ на такой тип запроса сервер обязан вернуть «готовый результат», то есть IP-адрес, либо пустой ответ и код ошибки NXDOMAIN;DNS-сервер, получивший запрос от браузера, последовательно отправлял нерекурсивные запросы, на которые получал от других DNS-серверов ответы, пока не получил ответ от сервера, ответственного за запрошенную зону;остальные упоминавшиеся DNS-серверы обрабатывали запросы нерекурсивно (и, скорее всего, не стали бы обрабатывать запросы рекурсивно, даже если бы такое требование стояло в запросе).
DNS используется в первую очередь для преобразования символьных имён в IP-адреса, но он также может выполнять обратный процесс. Для этого используются имеющиеся средства DNS. Существует специальный домен in-addr.arpa, записи в котором используются для преобразования IP-адресов в символьные имена. Например, для получения DNS-имени для адреса 11.22.33.44 можно запросить у DNS-сервера запись 44.33.22.11.in-addr.arpa, и тот вернёт соответствующее символьное имя. Обратный порядок записи частей IP-адреса объясняется тем, что в IP-адресах старшие биты расположены в начале, а в символьных DNS-именах старшие (находящиеся ближе к корню) части расположены в конце.
12.4.1Связывание клиентов и серверов. Статическое связывание выполняется на этапе компиляции и означает, что все обращения клиента к серверу жестко «зашиты» в код услуги. Статический (или постоянный) IP-адрес является зафиксированным за линией абонента адресом в интернете. Главное отличие статического IP-адреса от динамического состоит в том, что динамический IP-адрес будет меняться при каждом новом интернет-подключении. А это влечет за собой неудобства при использовании онлайн-сервисов, в которых подлинность пользователя определяется по его IP-адресу. Статический IP закрепляется за конкретным абонентом и остается неизменным в течение всего периода пользования услугой.
Динамическое связывание производится во время выполнения запроса. Оно характеризуется большей гибкостью, чем статическое, но меньшей эффективностью. Для динамического связывания необходимо указать имя сервера, который ведет справочник имен и адресов серверов. Каждый сервер регистрирует свое местоположение и предоставляемые сервисы у программы «сервеа имен». Клиент посылает запрос серверу имен, передавая имя серверного объекта, и получает ссылку на него. Затем эта ссылка используется для доступа к удаленному серверу.
12.5Обмен сообщениями между распределенными задачами можно реализовать с помощью распределенного ядра распределенной операционной системы. В тех распределенных приложениях, где число задач относительно постоянно, каждое распределенное ядро также может содержать собственную копию таблицы имен. На стадии начальной загрузки системы распределенное ядро посылает запрос серверу имен с просьбой загрузить таблицу имен.Когда отправитель посылает сообщение получателю, локальное ядро определяет местоположение адресата по своей таблице имен. Если получатель находится в том же узле, что и отправитель, то локальное ядро направляет сообщение непосредственно по назначению, программе которая вызвала. Так, на Рис. 2 сообщение от задачи В доставляется напрямую задаче С, так как обе они работают в узле 1. Если же задача-получатель находится в другом узле, то локальное ядро посылает сообщение удаленному ядру, расположенному на нужном узле. Получив сообщение, удаленное ядро переправляет его задаче-получателю.