tanenbaum_seti_all.pages (525408), страница 183
Текст из файла (страница 183)
Ку-ку С; С: --циегсуцторазбтдцдд1вхсчЬпю С; Сопсепс-Туре: Сехг/г1слгехС С; С: Нарру Ьтгддбау Со уоц С: Нарру Ь1гсдбау со уоц С: Нарру Ьтгспбау беаг <Ьо1б> Саго1уп </Ьо1б> С: Нарру Ь1гслбау Со уоц С: С: --оиегсуцторазбтдпйк1гхсчЬпш С: Соптепг-Туре: юезваде/ехгегпа1-Ьобу; Электронная почта 688 С: ассевв-суре-"аппп-Твр": С: язве-"Ьтсус1е.аЬс соя"; С: Озгестогу-"роЬ", С; паве-"Ьзгвпеау.впс" С: С: с оп де от - буре: аосте/Ьа в1с С: сопвепв-ВгапвТег-епсоэтпд: Ьавеб4 С: --днегвуыторавптдЬЗЫ1гхсуэпи С: 5: 250 сообиение принято С: ОШТ 5: 221 худ.сои разрываю соединение Несколько комментариев к листингу 7.3. Сначала клиент, естественно, посылает приветствие серверу.
Таким образом, первая команда клиеьп а выглядит как НЕЕО, что представляет собой наиболее удачный из двух вариантов сокращения слова НЕСЛО до четырех символов. Зачем все эти команды было нужно сокращать до четырех букв, сейчас уже никто не помнит. В нашем примере сообщение должно быть втослано только одному получателю, поэтому используется только одна команда )ТСРТ (сокращение от слова гес!Р1- епг — получатель). Использование этой команды несколько раз позволяет посылать одно сообщение нескольким получателям. Каждое из них подтверждается или отвергается индивидуально. Несмотря на то, что попытки пересылки сообщения некоторым получателям оказываются неудачными (например, из-за отсутствия адресатов), это сообщение все равно может быть доставлено остальным адресатам, числящимся в списке рассылки.
Наконец, хотя синтаксис четырехсимвольных команд строго определен, синтаксис ответов не столь строг. Правила опрелеляют только числовой код в начале строки. Все, что следует за этим кодом, может считаться комментарием и зависит от конкретной реализации протокола. Чтобы лучше понять, как работают БМТР и другие рассмотренные в этой главе протоколы, попробуйте сами поработать с ними.
В любом случае, для начала найдите машину, подключенную к Интернету. В системе ())х!!Х наберите в командной строке: ве1пед еа11.1вр.сои 25 подставив вместо тат(вяз.сои П)х!5-имя почтового сервера провайдера. В системе Ж!пт)отчз щелкните на кнопке пуск, затем на кнопке Выполнить и наберите команду в диалоговом окне. В результате выполнения этой команды будет установлено ге)пес-соедипение (то есть соединение ТСР) с портом 25 данной машины. Как было показано в табл.
6.3, порт 25 является 5МТР-портом, В ответ на введенную команду вы получите что-то вроде этого: Тгутпд 192.30.200,66.. Соппестео Ьо еа11.!вр.сои Евсаре спагасвег тв '"Р, 220 еат 1.1вр.совз 5еа11 074 геаоу ав Тпо, 25 5ерв 2002 12н 26 +0200 Первые три строки посылаются ве!пег и поясняют для вас происходящее. Последняя строка посылается сервером 3МТР удаленной машины и сообщает о го- ВВВ Главе 7. Прикладной уровень тонности к общению с вашей машиной и приему почты.
Чтобы узнать о доступ- ных командах, наберите НЕЕР Начиная с этого момента, возможен обмен последовательностями команд, показанными в листинге 7.3. Начинаться обшение должно с команды клиента НЕЕО. Стоит отметить, что использование строк АЗСП-текста в качестве команд не случайно. Большинство протоколов Интернета работают именно таким образом. Применение АБСП-текста упрошает тестирование и отладку протоколов. Тестирование можно производить, набирая команды вручную, как было показано ранее. Легко читаются выведенные в ответ сообщения. Несмотря на то, что протокол ЯМТР определен довольно четко, все же могут возникать определенные проблемы.
Одна из них связана с длиной сообщений. Некоторые старые реализации не поддерживали сообщения длиннее 64 Кбайт. Еше одна проблема связана с тайм-аутами. Если таймеры клиента и сервера настроены на разное время ожидания, один из них может внезапно разорвать соединение, в то время как противоположная сторона будет продолжать передачу.
Наконец, иногда могут возникать бесконечные «почтовые штормы». Например, если хост 1 хранит список рассылки А, а хост 2 — список рассылки В и они содержат записи друг о друге, то письмо, посланное по одному из списков, будет создавать бесконечный объем графика, пока кто-нибудь не заметит это. Для решения некоторых из этих проблем был разработан расширенный протокол ЯМТР, ЕЯМТР. Он описан в КРС 2821. Клиенты, желающие использовать его, должны начинать сессию связи с посылки приветствия ЕНЕО вместо НЕЕО. Если команда не принимается сервером, значит, сервер поддерживает только обычный протокол 8МТР и клиенту следует работать в обычном режиме.
Если же ЕНЕО принято, значит, установлена сессия ЕБМТР и возможна работа с новыми параметрами и командами. Доставка сообщений До сих пор мы предполагали, что все пользователи работают на машинах, способных посылать и получать электронную почту. Как мы уже знаем, электронная почта доставляется, когда отправитель устанавливает ТСР-соединение с получателем и посылает по нему сообщения. Такая модель прекрасно работала тогда, когда все хосты сети АКРАХЕТ (а позднее — Интернет) были, по сути, постоянно на линии и могли принимать ТСР-соединения. Однако с появлением пользователей, связывающихся с провайдерами с помошью модема, такой подход перестал оправдывать себя.
Проблема вот в чем: что буллит, если Элинор захочет отправить письмо Кэролайн, а та в данный момент не работает в Интернете? Получается, что Элинор не сможет установить ТСР- соединение с Кэролайн, следовательно, невозможно будет запустить протокол 8МТР, и Кэролайн так и не получит поздравление с днем рождения. Одно из решений заключается в создании агента передачи сообщений на машине провайдера, который бы принимал и хранил почту для своих пользовате- Электронная почта 687 лей в их почтовых ящиках. Поскольку такой агент может быть на линии посто- янно, электронная почта может отправляться ему круглосуточно. РОРЗ К сожалению, такое решение создает новую проблему: как пользователю забрать свою почту у агента передачи сообщений провайдера7 Ответ таков: следует создать специальный протокол, который позволил бы пользовательскому агенту (на машине клиента) соединиться с агентом передачи сообщений провайдера (на машине провайдера) и скопировать хранящуюся для него почту.
Одним из таких протоколов является РОРЗ (Розг 0(йсе Ргогосо1 у. 3 — почтовый протокол, 3-я версия), определенный в документе КРС 1939. Ситуация, при которой доставка осуществляется в условиях постоянного соединения с Интернетом отправителя и получателя, показана на рис. 7.5, а. Иллюстрация ситуации, в которой отправитель находится в текущий момент на линии, а приемник — нет, приведена на рис. 7.5, б. пе вчи Пользовательский Аинт Интернет сообщений агент Почтовый Хост- ящик приемник Хост- Постоянное отправитель подключение 8 Пользовательский агент Агент передач РОРЗ- иентский ПК Почтовый Машине ящик проввйдерв б Модемное подключение Хост- отправитель Рис.
7.5. Отправка и прием почты, когда приемник постоянно находится в подключенном состоянии и пользовательский агент работает не одной машине с агентом передачи сообщений (в1; прием почты при модемном соединении получателя с проввйдерам (б1 Протокол РОРЗ начинает свою работу, когда пользователь запускает почтовый редактор. Последний дозванивается до провайдера (если только машина уже не находится в подключенном состоянии) и устанавливает ТСР-соединение с агентом передачи сообщений с использованием порта 110. После установки соединения протокол РОРЗ проходит три последовательных состояния.
1. Авторизация. 2. Транзакции. 3. Обновление. 688 Глава 7. Прикладной уровень Авторизация связана с процессом входа пользователя в систему. В состоянии транзакций пользователь забирает свою почту и может пометить ее для удаления из почтового ящика. В состоянии обновления происходит удаление помеченной корреспонденции.
Можно посмотреть, как все это происходит, набрав команду нида Се)пев аа1).)зр.сов 110, где лшт71пхсогл следует заменить на ЭХБ-имя почтового сервера провайдера. Те!пес устанавливает ТСР-соединение с портом 110, прослушиваемым РОРЗ-сервером. После установки ТСР-соединения сервер посылает АЯСП-сообщение, объявляя о своем присутствии, Обычно оно начинается с иОК, затем следует комментарий. Возможный сценарий после установки ТСР-соединения показан в листинге 7.4.
Как и раньше, строки, начинающиеся с С;. говорят о том, что данная команда исходит от клиента (пользователя), а начинающиеся с 5: — что это сообщения сервера (агента передачи сообщений на машине провайдера). Листинг 7.4. Получение трех сообщений по протоколу РОРО 5: тОК РОРЗ-сервер готов С: 05ЕЙ саго)уп 5: яОК С: РА55 иедесаЫев 5: ОК вход в сисгеиу произведен С: !.15Т 5: 1 2505 5: 2 14302 5: 3 8122 5: С: ЙЕТЙ 1 5: (отправляет сообщение 1) С: ОЕ).Е 1 С: ЙЕТЙ 2 5: !отправляет сообщение 2) С: ОЕСЕ 2 С: ЙЕТЙ 3 5: !отправляет сообщение 3) С: ОЕСЕ 3 С: 00!Т 5: +ОК Конец соединения с РОРЗ-серверои В состоянии авторизации клиент должен сообтцить имя пользователя и паРоль. После успешного входа в систему клиент может послать команду 1!5Т для запроса списка писем, хранящихся в почтовом ящике.
Каждая строка списка соответствует одному письму, в ней указываются его номер и размер. Точка является признаком конца списка. После этого пользователь может запросить особи)ения командой ЙЕТЙ и пометить их для удаления командой ОЕ!Е. После получения (и, возможно, установки меток удаления) всех писем пользователь посылает команду 00!Т для завершения состояния транзакций и входа в состояние обновления.