Сетевое ПО Лекция 2 (1061283), страница 4
Текст из файла (страница 4)
Но на практике сообщения могут теряться.Предположим, что для обмена сообщениями используются блокирующиепримитивы. Когда отправитель посылает сообщение, то он приостанавливаетсвою работу до тех пор, пока сообщение не будет послано. Однако нетникаких гарантий, что после того, как он возобновит свою работу,сообщение будет доставлено адресату.Для решения этой проблемы существуют три подхода. Первый подход заключается в том, что система не берет на себя никакихобязательств по поводу доставки сообщений. Такой способ доставкисообщений обычно называют дейтаграммньм (datagram). Реализациянадежного взаимодействия при его применении целиком становится заботойприкладного программиста. Второй подход заключается в том, что ядро принимающей машины посылаетСетевое ПО.
Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.)квитанцию-подтверждение ядру отправляющей машины16пакаждоесообщение или на группу последовательных сообщений. Посылающее ядроразблокирует пользовательский процесс только после получения такогоподтверждения. Обработкой подтверждений занимается подсистема обменасообщениями ОС, ни процесс-отправитель, ни процесс-получатель их невидят. Третийподходзаключаетсявиспользованииответавкачествеподтверждения в тех системах, в которых запрос всегда сопровождаетсяответом, что характерно для клиент-серверных служб.
В этом случаеслужебные сообщения-подтверждения не используются, так как в их роливыступаютпользовательскиесообщения-ответы.Процесс-отправительостается заблокированным до получения ответа. Если же ответа нетслишком долго, то после истечения тайм-аута ОС отправителя повторнопосылает запрос.Надежная передача сообщений может подразумевать не только гарантиюдоставки отдельных сообщений, но и упорядоченность этих сообщений, прикоторой процесс-получатель извлекает из системного буфера сообщения в томже порядке, в котором они были отправлены.Для надежной и упорядоченной доставки чаще всего используется обмен спредварительным установлением соединения, причем на стадии установлениясоединения (называемого также сеансом) стороны обмениваются начальныминомерами сообщений, чтобы можно было в процессе обмена отслеживать какфакт доставки отдельных сообщений последовательности, так и упорядочиватьих (сами сетевые технологии не всегда гарантируют, что порядок доставкисообщений будет совпадать с порядком их отправки, например из-за того, чторазные сообщения могут доставляться адресату по разным маршрутам).В хорошей подсистеме обмена сообщения должны поддерживаться какненадежные примитивы, так и надежные.
Это позволяет прикладному17Сетевое ПО. Лекция 2(2014г.)(Механизмы межпроцессноговзаимодействия(Inter-Process Communication, IPC) в сети.)программисту использовать тот тип примитивов, который в наибольшейстепени подходит для организации взаимодействия в той или иной ситуации.Например, для передачи данных большого объема, транспортируемыхпо сети в нескольких сообщениях (в сетях обычно существует ограничение намаксимальный размер поля данных, из-за чего данные приходится пересылать внескольких сообщениях), больше подходит надежный вид обмена супорядочиванием сообщений.А для взаимодействия типа «короткий запрос — короткий ответ»предпочтительны ненадежные примитивы.
Действительно, вероятностьпотери отдельного сообщения не так уж велика, а скорость такого обмена будетвыше, чем при применении надежных примитивов, поскольку на установлениенеобходимого в этом случае соединения тратится дополнительное время.Для реализации примитивов с различной степенью надежности передачисообщенийсистемаобменасообщениямиОСиспользуетразличныекоммуникационные протоколы.Так, если сообщения передаются через IP-сеть, то для надежной передачисообщений используется протокол транспортного уровня TCP, работающий сустановлениемсоединений,обеспечивающийгарантированнуюиупорядоченную доставку и управляющий потоком данных при обмене.Если же надежность при передаче сообщений не требуется, то будетиспользован протокол UDP, обеспечивающий быструю доставку небольшихсообщений без всяких гарантий..