C: QUIT
S: 221 cpmy.com closing connection
С:
SMTP один из двух или трех старейших протоколов прикладного уровня, которые до сих пор используются в Internet. Он прост, эффективен и выдержал проверку временем. Особенности, описанные здесь, часто повторяются в других Internet-протоколах. Если существует какой-либо один образец того, как выглядит хорошо спроектированный протокол Internet-приложения, то им, несомненно, является SMTP.
5.3.2. Учебный пример: POP3, почтовый протокол 3-й версии
Другим классическим Internet-протоколом является POP3 (Post Office Protocol — почтовый протокол 3-й версии). Он также используется для транспортировки почты, но если SMTP является 'толкающим' протоколом с транзакциями, инициированными отправителем почты, то POP3 является протоколом 'тянущим', а его транзакции инициируются получателем почты. Internet-пользователи с непостоянным доступом (например, по коммутируемым соединениям) могут накапливать свою почту на почтовом сервере, а затем, подключившись к POP3-серверу, получать почту на персональные машины.
В примере 5.8. показан POP3-сеанс. В данном примере строки, начинающиеся с
С:
S: +OK POP3 server ready <[email protected]>
С: USER bob
S: +OK bob
C: PASS redqueen
S: +OK bob's maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: .
С: DELE 1
S: +OK message 1 deleted
С: RETR 2
S: +OK 200 octets
S: .
С: DELE 2
S: +OK message 2 deleted
С: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
В то же время существует несколько отличий. Наиболее очевидным из них является то, что в протоколе POP3 используются маркеры состояния вместо трехзначных кодов состояния, применяемых в SMTP. Несомненно, семантика запросов различна, однако 'семейное сходство' (которое более подробно будет описано далее в настоящей главе при рассмотрении общего метапротокола Internet) очевидно.
5.3.3. Учебный пример: IMAP, протокол доступа к почтовым сообщениям
Чтобы завершить рассмотрение примеров с протоколами прикладного уровня Internet, рассмотрим протокол IMAP (Internet Message Access Protocol — протокол доступа к почтовым сообщениям в Internet). IMAP — другой почтовый протокол, спроектированный в несколько ином стиле. Как и в предыдущих примерах, строки, начинающиеся с
, представляет собой комментарии и не является частью реальной транзакции.
С:
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}
S: )
S: А0004 OK FETCH completed
С: А0005 FETCH 1 BODY[TEXT]