Сетевое ПО Лекция 2 (1061283), страница 3
Текст из файла (страница 3)
Хотя этотметод и уменьшает вероятность потери сообщений, он порождаетпроблему хранения и управления преждевременно поступившимисообщениями.размещать,Необходимы буферы,освобождать,тоестькоторыеследуетгде-токоторыминужнокак-тоуправлять, что создает дополнительную нагрузку на операционнуюсистему.6 Способы адресации при передаче сообщенийДля того чтобы послать сообщение, необходимо указать адресполучателя. В очень простой сети адрес может задаваться в видеконстанты, но в сложных сетях нужен более гибкий способ адресации.Однимизвариантовадресацииявляетсяиспользованиеаппаратных адресов сетевых адаптеров.
Если в получающем компьютеревыполняется только один процесс, то ядро ОС будет знать, что делать споступившим сообщением - передать его этому процессу. Однако если намашине выполняется несколько процессов, то ядру не известно, какому изних предназначено сообщение. Поэтому использование сетевого адресаадаптера в качестве адреса получателя приводит к очень серьезномуограничению - на каждой машине должен выполняться только один процесс.11Сетевое ПО. Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.)Кроме того, на основе аппаратного адреса сетевого адаптера сообщенияможно передавать только в пределах одной локальной сети, в более сложныхсетях, состоящих из нескольких подсетей, в том числе и глобальных, дляпередачи данных между узлами требуются числовые адреса, несущиеинформацию как о номере узла, так и о номере подсети, например IPадреса.Наибольшее распространение получила система адресации, вкоторой адрес состоит из двух частей, определяющих компьютер ипроцесс, которому предназначено сообщение, то есть адрес имеет видпары числовых идентификаторов: machinejd@process_id.Вкачествеидентификаторакомпьютераmachine_idнаиболееупотребительным на сегодня является использование IP-адреса, которыйпредставляет собой 32-битовое число, условно записываемое в видечетырех десятичных чисел, разделенных точками, например 185.23.123.26.Для адресации процесса в этом способе применяется числовойидентификатор process__id, имеющий уникальное в пределах узла machine_idзначение.
Этот идентификатор может однозначно указывать на конкретныйпроцесс,работающийнаданномкомпьютере,тоестьявлятьсяидентификатором типа processed.другой подход, функциональный, при котором используется адресслужбы, которой пересылается сообщение, при этом идентификатор принимаетвид service_id.Последний вариант более удобен для отправителя, так как службы,поддерживаемые сетевыми операционными системами, представляют собойдостаточно устойчивый набор (в него входят, как правило, наиболеепопулярные службы (FTP, SMB, NFS, HTTP) и этим службам можно датьвполне определенные адреса, заранее известные всем отправителям. Такиеадреса называют «хорошо известными» (well-known).12Сетевое ПО. Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.)Примером хорошо известных адресов служб являются номера портов впротоколах TCP и UDP.
Отправитель всегда знает, что, посылая с помощьюэтих протоколов сообщение на порт 21 некоторого компьютера, он посылает егослужбе FTP, то есть службе передачи файлов. При этом отправителя неинтересует,какойименнопроцесс(скакимлокальнымидентификатором) реализует в настоящий момент времени услуги FTP наданном компьютере.Ввиду повсеместного применения стека протоколов TCP/IP номера портовявляются на сегодня наиболее популярными адресами служб в системах обменасообщениями сетевых ОС.Порт TCP/UDP является не только абстрактным адресом службы, но ипредставляет собой нечто более конкретное — для каждого порта операционнаясистема поддерживает буфер в системной памяти, куда помещаютсяотправляемые и получаемые сообщения, адресуемые данному порту. Портзадается в протоколах TCP/UDP двухбайтным адресом, поэтому ОС можетподдерживать до 65 535 портов.Кроме хорошо известных номеров портов, которым отводится диапазон от1 до 1023, существуют и динамически используемые порты со старшиминомерами.
Значения этих портов не закрепляются за определеннымислужбами, поэтому они часто дополняют хорошо известные порты для обмена врамках обслуживания некоторой службы сообщениями специфическогоназначения. Например, клиент FTP всегда начинает взаимодействие с серверомFTP отправкой сообщения на порт 21, а после установления сеанса обменданными между клиентом и сервером выполняется уже по порту, номеркоторого динамически выбирается в процессе установления сеанса.Описанная схема адресации типа «машина-процесс» или «машинаслужба» хорошо зарекомендовала себя, работая уже на протяжении многих летв Интернете, а также в корпоративных сетях IP и IPX (в этих сетях такжеиспользуется адресация службы, а не процесса).13Сетевое ПО.
Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.)Однако эта схема имеет один существенный недостаток - она не гибка ине прозрачна, так как пользователь должен явно указывать адрес машиныполучателя. В этом случае, если машина, на которой работает некоторая служба,отказывает, то программа, в которой все обращения к данной службевыполняются по жестко заданному адресу, не сможет использоватьаналогичную службу, установленную на другой машине.Основным способом повышения степени прозрачности адресации являетсяиспользование символьных имен вместо числовых.Примером такого подхода является характерная для сегодняшнегоИнтернета нотация URL (Universal Resource Locator, универсальный указательресурса), в соответствии с которой адрес состоит из символьного имени узлаи символьного имени службыНапример, если в сообщении указан адрес ftp://arc.bestcompany.ru/, тоэто означает, что оно отправлено службе ftp, работающей на компьютереarc.bestcompany.ru.Использование символьных имен требует создания в сети службыоперативногоотображениясимвольныхименначисловыеидентификаторы, поскольку именно в таком виде адреса распознаютсясетевым оборудованием.Применение символьного имени позволяет разорвать жесткую связьадреса с одним-единственным компьютером, так как символьное имя передотправкой сообщения в сеть заменяется на числовое, например на IP-адрес.Этап замены позволяет сопоставить с символьным именем различные числовыеадреса и выбрать тот компьютер, который в данный момент в наибольшейстепени подходит для выполнения запроса, содержащегося в сообщении.Например, отправляя запрос на получение услуг службы Web от компанииMicrosoft по адресу http: //www.
microsof t. com/, точно неизвестно, какой изнескольких серверов этой компании, предоставляющих данный вид услуг иобслуживающих один и тот же символьный адрес, ответит.Для замены символьных адресов на числовые применяются две схемы:Сетевое ПО. Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.) широковещание14 централизованная служба имен.Широковещание удобно в локальных сетях, в которых все сетевыетехнологии нижнего уровня, такие как Ethernet, Token Ring, FDDI,поддерживают широковещательные адреса в пределах всей сети, а пропускнойспособности каналов связи достаточно для обслуживания таких запросов длясравнительного небольшого количества клиентов и серверов.В этой схеме сервер периодически широковещательно рассылает по сетисообщения о соответствии числовым адресам его имени и имен служб, которыеон поддерживает.
Клиент также может сделать широковещательный запрос оналичии в сети сервера, поддерживающего определенную службу, и если такойсервер в сети есть, то он ответит на запрос своим числовым адресом. Послеобмена подобными сообщениями пользователь должен явно указать в своемзапросе имя сервера, к ресурсам которого он обращается, а клиентская ОСзаменит это имя на числовой адрес в соответствии с информацией,широковещательно распространенной сервером.Однако широковещательный механизм разрешения адресов плохоработает в территориальных сетях, так как наличие большого числа клиентови серверов, а также использование менее скоростных по сравнению слокальными сетями каналов делают широковещательный трафик слишкоминтенсивным, практически не оставляющим пропускной способности дляпередачи пользовательских данных.В территориальных сетях для разрешения символьных имен компьютеровприменяется другой подход, основанный на специализированных серверах,хранящих базу данных соответствия между символьными именами ичисловыми адресами.
Эти серверы образуют распределенную службу имен,обрабатывающую запросы многочисленных клиентов.Хорошо известным примером такой службы является служба доменныхимен Интернета (Domain Name Service, DNS). Эта служба позволяет обрабатывать15Сетевое ПО. Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.)в реальном масштабе времени многочисленные запросы пользователейИнтернета, обращающихся к ресурсам серверов по составным именам, таким какhttp://www.microsoft.com/ или http://www.gazeta.ru/.Централизованнаяслужбаименнасегоднясчитаетсянаиболееперспективным средством повышения прозрачности услуг для пользователейсетей. С такой службой связывают и перспективы дальнейшего повышенияпрозрачности адресации сетевых ресурсов, когда имя ресурса будет полностьюнезависимо от компьютера, предоставляющего этот ресурс в общее пользование.По пути применения централизованной службы-посредника междуклиентами и ресурсами идут и разработчики распределенных приложений,напримерразработчикитехнологииCORBA,вкоторойзапросыкпрограммным модулям приложений обрабатывает специальный элемент брокер запросов.7 Надежные и ненадежные примитивы передачисообщенийРанее подразумевалось, что когда отправитель посылает сообщение,адресат его обязательно получает.