Private-Bookers
Искусство программирования для Unix
вернуться

Реймонд Эрик Стивен

Шрифт:

C: LIST

S: +OK 2 messages (320 octets)

S: 1 120

S: 2 200

S: .

C: RETR 1

S: +0K 120 octets

S: <P0P3-сервер отправляет текст сообщения 1>

S: .

С: DELE 1

S: +0К message 1 deleted

С: RETR 2

S: +0K 200 octets

S: <P0P3-сервер отправляет текст сообщения 2>

S: .

С: DELE 2

S: +ОК message 2 deleted

С: QUIT

S: +0K dewey РОРЗ server signing off (maildrop empty)

С: <клиент разрывает соединение>

В то же время существует несколько отличий. Наиболее очевидным из них является то, что в протоколе РОРЗ используются маркеры состояния вместо трехзначных кодов состояния, применяемых в SMTP. Несомненно, семантика запросов различна, однако "семейное сходство" (которое более подробно будет описано далее в настоящей главе при рассмотрении общего метапротокола Internet) очевидно.

5.3.3. Учебный пример: IMAP, протокол доступа к почтовым сообщениям

Чтобы завершить рассмотрение примеров с протоколами прикладного уровня Internet, рассмотрим протокол IMAP (Internet Message Access Protocol — протокол доступа к почтовым сообщениям в Internet). IMAP — другой почтовый протокол, спроектированный в несколько ином стиле. Как и в предыдущих примерах, строки, начинающиеся с С:, отправляются клиентом, а строки, начинающиеся с 5:, отправляются почтовым сервером. Текст, выделенный курсивом, представляет собой комментарии и не является частью реальной транзакции.

Пример 5.9. IMAP-сеанс

С: <клиент подключается к служебному порту 143>

S: * ОК example.com IMAP4revl V12.264 server ready

С: А0001 USER "frobozz" "xyzzy"

S: * OK User frobozz authenticated

C: AO002 SELECT INBOX

S: * 1 EXISTS

S: * 1 RECENT

S: * FLAGS (\Answered \Flagged \Deleted \Draft \Seen)

S: * OK [UNSEEN 1] first unseen message in /var/spool/mail/esr

S: A0002 OK [READ-WRITE] SELECT completed

С: A0003 FETCH 1 RFC822.SIZE получение размеров сообщений

S: * 1 FETCH (RFC822.SIZE 2545) S: A0003 OK FETCH completed

C: AO004 FETCH 1 BODY[HEADER] получение заголовка первого

сообщения

S: * 1 FETCH (RFC822.HEADER {1425}

<сервер отправляет 1425 октетов полезной нагрузки сообщения> S: )

S: АО004 OK FETCH completed

С: А0005 FETCH 1 BODY[TEXT] получение тела первого

сообщения

S: * 1 FETCH (BODY[TEXT] {1120}

<сервер отправляет 1120 октетов полезной нагрузки сообщения> S: )

S: * 1 FETCH (FLAGS (\Recent \Seen)) S: А0005 OK FETCH completed С: A0006 LOGOUT

S: * BYE example.com IMAP4revl server terminating connection S: A0006 OK LOGOUT completed С: <клиент разрывает соединение>

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

Кроме того, следует заметить, что каждый ответ маркируется последовательной меткой, передаваемой в запросе. В данном примере такие метки имеют форму АОООп, однако клиент может генерировать любой маркер в данном поле. Данная особенность позволяет направлять серверу поток IMAP-команд, не ожидая ответов. Конечный автомат клиента может затем просто интерпретировать ответы и блоки полезной нагрузки по мере их возвращения. Данная методика сокращает задержку.

Протокол IMAP (который был разработан для замены РОРЗ) является превосходным образцом продуманной и мощной конструкции прикладного протокола в Internet, примером, достойным изучения и подражания.

  • Читать дальше
  • 1
  • ...
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка