Главная » Просмотр файлов » tanenbaum_seti_all.pages

tanenbaum_seti_all.pages (525408), страница 149

Файл №525408 tanenbaum_seti_all.pages (Таненбаум Э. - Компьютерные сети) 149 страницаtanenbaum_seti_all.pages (525408) страница 1492013-09-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 149)

Затем он может обработать полученный модуль и послать ответ. Такая схема прекрасно работает, пока обе стороны помнят, чей черед посылать, а чей — принимать. Обратите внимание на то, что па сетевом уровне даже простая однонаправленная пересылка данных оказывается сложнее, чем на транспортном уровне.

Каждый посланный пакет данных будет, в конце концов, подтвержден. Пакеты, содержащие управляюшие модули данных, также подтверждаются, явно или неявно. Эти подтверждения управляются транспортными сушностями при помощи протокола сетевого уровня и не видны пользователям транспортного уровня. Аналогично транспортным сущностям нет необходимости беспокоиться о таймерах и повторных передачах.

Все зти механизмы не видны пользователям транспортного уровня, для которых соединение представляется надежным битовым каналом. Один пользователь помещает в канал биты, которые волшебным образом появляются на другом конце канала. Эта способность скрывать сложность от пользователей свидетельствует о том, что многоуровневые протоколы являются довольно мощным инструментом. Когда соединение больше не требуется, оно должно быть разорвано, чтобы можно было освободить место в таблицах двух транспортных сущностей. Разъединение сушествует в двух вариантах: симметричном и асимметричном. В асимметричном варианте любой пользователь транспортной службы может вызвать примитив 015СОММЕСТ, в результате чего удаленной транспортной сущности будет послан управляюший модуль ТРПЕ) 015СОММЕСТ10М МЕООЕ5Т (запрос разъединения).

После получения модуля ТР1Н) удаленной транспортной сущностью соединение разрывается. В симметричном варианте каждое направление закрывается отдельно, независимо от другого. Когда одна сторона выполняет примитив 015СОММЕСТ, зто означает, что у нее больше нет данных для передачи, но что опа все еше готова принимать данные от своего партнера. В этой схеме соединение разрывается, когда обе стороны выполняют примитив 015СОММЕСТ. Диаграмма состояний для установки и разрыва соединения показана на рис. Б.З. Каждый переход вызывается каким-то событием или примитивом, выполненным локальным пользователем транспортной службы или входящим пакетом.

Для простоты мы будем считать, что кюкдый модуль ТРЕП1 подтверждается отдельно. Транспортная служба 557 Мы также предполагаем, что используется модель симметричного разъединения, в которой клиент делает первый ход. Обратите внимание на простоту этой моде- ли. Позднее мы рассмотрим более реалистичные модели. Получен ТРРй-модуль с запросом соединено Выполнен примитив ! Выполнен примитив СОЕДИНИТЬ Полу ми ТРПЬ' с запросом рвзь дуль ем ПАССИВНОЕ РАЗЪЕДИНЕНИЕ одуль с запросом рвзьединеноя Выполнен примитив РАЗЪЕДИНИТЬ Рис. В.З.

Диаграмма состояний для простой схемы управления соединениями. Переходы, обозначен ныа курсивом, вызываются прибытием пакетов. Сплошными линиями показана последовательность состояний клиента. Пунктирными линиями показана последовательность состояний сервера Сокеты Беркли Теперь рассмотрим другой набор транспортных примитивов — примитивы сокетов (иногда называемых гнездами), используемые в операционной системе Вег(се1еу (1(к(1Х для протокола ТСР (Тгапзш(зз!оп Сов!го! Ргососо1 — протокол управления передачей).

Они приведены в табл. 6.2. Модель сокетов во многом подобна рассмотренной ранее модели транспортных примитивов, но обладает большей гибкостью и предоставляет больше возможностей. Модули ТРЭУ, соответствуюшие этой модели, будут рассматриваться далее в атой главе, когда мы будем изучать ТСР. Первые четыре примитива списка выполняются серверами в таком же порядке. Примитив 50ЕКЕТ создает новый сокет и выделяет для него место в таблице транспортной сущности. Параметры вызова указывают используемый формат адресов, тип требуемой услуги (например, надежный байтовый поток) и протокол. В случае успеха примитив 50СКЕТ возвращает обычный описатель файла, ис- $58 Глава 6.

Транспортный уровень пользуемого при вызове следующих примитивов, подобно тому, как возвращает описатель файла процедура ОРЕИ. Таблица 6.2. Примитивы сокетов для ТОР Зивчеиив Примитив Создать новый сокет (гнездо связи) Связать локальный адрес с сскетом Объявить о желании принять соединение; указать размер очереди Блокировать звонящего дс получения попытки соединения Активно пытаться установить соединение Посылать данные по соединению Получать данные у соединения Разрывать соединение ЗОСКЕТ (СОКЕТ) В(МО (СВЯЗАТЫ ЫЗТЕМ (ОЖИДАТЫ АССЕРТ(ПРИНЯТЬ) СОйй ЕСТ (СОЕДИН ИТЫ 8 Ей О (ПОСЛАТЬ) ЯЕСЕ(УЕ(ПОЛУЧИТЬ) с(.ОЗе (здкРытЫ У только что созданного сокета нет сетевых адресов. Они назначаются с помощью примитива 81ИО. После того как сервер привязывает адрес к сокету, с ним могут связаться удаленные клиенты, Вызов 50СКЕТ не создает адрес напрямую, так как некоторые процессы придают адресам большое значение (например, они использовали один и тот же адрес годами, и этот адрес всем известен), тогда как другим процессам это не важно.

Следом идет вызов С15ТЕИ, который выделяет место для очереди входящих звонков на случай, если несколько клиентов попытаются соединиться одновременно. В отличие от примитива С15ТЕИ в нашем первом примере, примитив С15ТЕИ гнездовой модели не является блокирующим вызовом. Чтобы заблокировать ожидание входящих соединений, сервер выполняет примитив АССЕРТ. Получив ТРП()-модуль с запросом соединения, транспортная сущность создает новый сокет с теми же свойствами, что и у исходного сокета, и возвращает описатель файла для него.

При этом сервер может разветвить процесс или поток, чтобы обработать соединение для нового сокета и вернуться к ожиданию следующего соединения для оригинального сокета. Теперь посмотрим на этот процесс со стороны клиента. В этом случае также сначала с помощью примитива 50СКЕТ должен быть создан сокет, но примитив 61ИО здесь не требуется, так как используемый адрес не имеет значения для сервеРа. Примитив СОИИЕСТ блокирует вызывающего и инициирует активный процесс соединения. Когда этот процесс завершается (то есть когда соответствующий ГРЮШЭ()-модуль, посланный сервером, получеп), процесс клиента разблокируется и соединение считается установленным. После этого обе стороны могут использовать примитивы 5ЕИО и ВЕСУ для передачи и получения данных по полнодуплексному соединению.

Могут также применяться стандартные Е)Х1Х-вызовы ИЕАО и ИИ1ТЕ, если нет нужды в использовании специальных свойств 5ЕИО и ЙЕСУ. В модели сокетов используется симметричный разрыв соединения. Соединение разрывается, когда обе стороны выполняют примитив С!05Е. Транспортная служба 669 Пример программирования сокета: файл-сервер для Интернета В качестве примера использования вызовов сокета рассмотрим программу, демонстрирующую работу клиента и сервера, представленную в листинге 6.1.

Имеется примитивный файл-сервер, работающий в Интернете и использующий его клиент. У программы много ограничений (о которых еше будет сказано), но, в принципе, данный код, описывающий сервер, может быть скомпилирован и запущен на любой Е)Х1Х-системе, подключенной к Интернету. Код, описывающий клиента, может быть запущен с определенными параметрами.

Это позволит ему получить любой файл, к которому у сервера есть доступ. Файл отображается на стандартном устройстве вывода, но, разумеется, может быть перенаправлен на диск или какому-либо процессу. Рассмотрим сперва ту часть программы, которая описывает сервер. Она начинается с включения некоторых стандартных заголовков, последние три из которых содержат основные структуры и определения, связанные с Интернетом. Затем 5ЕйЧЕк РОЮТ определяется как 12 345. Значение выбрано случайным образом.

Любое число от 1024 до 65 535 подойдет с не меныпим успехом, если только оно не используется каким-либо другим процессом. Понятно, что клиент и сервер должны обращаться к одному и тому же порту. Если сервер в один прекрасный день станет популярным во всем мире (что маловероятно, учитывая то, насколько ои примитивен), ему будет присвоен постоянный порт с номером менее 1024, который появится на аачоапа,огй.

В последующих двух строках определяются две необходимые серверу константы. Первая из них задает размер участка данных для файловой передачи. Вторая определяет максимальное количество незавершенных соединений, после установки которых новые соединения будут отвергаться. После объявления локальных переменных начинается сама программа сервера. Вначале она инициализирует структуру данных, которая будет содержать 1Р- адрес сервера. Эта структура будет связана с серверным сокетом.

Вызов аеазе1 полностью обнуляет структуру данных. Последующие три присваивания заполняют три поля этой структуры. Последнее из них содержит порт сервера. Функции Ыоп1 и бгспз занимаются преобразованием значений в стандартный формат, что позволяет программе нормально выполняться на машинах с представлением числовых разрядов как в возрастающем порядке (например, 5РАКС), так и в убывающем (напрнмер, Репг1пт).

Детали их семантики здесь роли не играют. После этого сервером создается н проверяется на ошибки (определяется по з < О) сокет. В конечной версии программы сообщение об ошибке может быть чуть более понятным. Вызов зе1зсс1орг нужен для того, чтобы порт мог использоваться несколько раз, а сервер — бесконечно, обрабатывая запрос за запросом. Теперь 1Р-алрес привязывается к сокету и выполняется проверка успешного завершения вызова с1пб.

Конечным этапом инициализации является вызов Пзгеп, свидетельствующий о готовности сервера к приему входящих вызовов и сообщающий системе о том, что нужно ставить в очередь до 00ене 5!ее вызовов, пока сервер обрабатывает текущий вызов. При заполнении очереди прибытие новых запросов спокойно игнорируется. 660 Глава 6. Транспортный уровень В этом месте начинается основной блок программы, который никогда не пропускается, Его можно остановить только извне. Вызов ассерт блокирует сервер на то время, пока клиент пытается установить соединение.

Характеристики

Тип файла
DJVU-файл
Размер
11,16 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6488
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее