Книга: Искусство программирования для Unix

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

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

С: <клиент подключается к служебному порту 143>
S: * OK example.com IMAP4rev1 V12.264 server ready
С: А0001 USER "frobozz" "xyzzy"
S: * OK User frobozz authenticated
C: A0002 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
C: A0003 FETCH 1 RFC822.SIZE  получение размеров сообщений
S: * 1 FETCH (RFC822.SIZE 2545)
S: A0003 OK FETCH completed
C: A0004 FETCH 1 BODY[HEADER] получение заголовка первого
                              сообщения
S: * 1 FETCH (RFC822.HEADER {1425}
<сервер отправляет 1425 октетов полезной нагрузки сообщения>
S: )
S: А0004 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 IMAP4rev1 server terminating connection
S: A0006 OK LOGOUT completed
C: <клиент разрывает соединение>

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

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

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

Оглавление книги

Оглавление статьи/книги

Генерация: 1.141. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз