|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   Web - технологии
|
|
|
   Базы Данных
|
|
|
|
Возможно вас заинтересует
|
|
POP3
Базовые операции
Первоначально, сервер прослушивает TCP соединение на порту 110. Когда клиент желает воспользоваться сервисом POP3, он должен установить соединение с сервером. После установки соединения сервер посылает клиенту приветствие. Клиент и POP3 сервер обмениваются командами и ответами (в указанном порядке) до тех пор, пока соединение не будет закрыто или прервано. Команды POP3 состоят из ключевого слова, за которым может следовать один или несколько параметров. Все команды заканчиваются парой CRLF. Ключевые слова и аргументы состоят из печатаемых ASCII символов. Ключевые слова и аргументы разделены одиночным пробелом. Ключевые слова состоят из 3-х или 4-х символа, каждый аргумент может быть длиной до 40 символов.
Ответы состоят из индикатора состояния и ключевого слова. Все ответы заканчиваются парой CRLF. В настоящее время есть два индикатора состояния: положительный (+OK) и отрицательный (-ERR).
Определенные ответы могут быть многострочными. В этом случае, после первой строки ответа заканчивающейся CRLF, каждая дополнительно посланная строка заканчивается парой CRLF. После того как все строки ответа посланы, последняя строка будет заканчиваться завершающим октетом - символом . (".", десятичный код 46) и парой CRLF. POP3 сессия состоит из нескольких стадий. После установки TCP соединения, сервер посылает приветствие и сессия переходит в состояние AUTHORIZATION. На этом этапе клиент должен идентифицировать себя на сервере. После успешной идентификации сессия переходит в состояние TRANSACTION. В этой стадии клиент запрашивает выполнение команд на сервере. Когда клиент посылает команду QUIT сессия переходит в состояние UPDATE. На этом этапе POP3 сервер освобождает все ресурсы занятые в стадии TRANSACTION и заканчивает работу. TCP соединение после этого закрывается. POP3 сервер МОЖЕТ иметь inactivity autologout таймер (таймер авто-завершения сессии при бездействии). Такой таймер ДОЛЖЕН быть установлен как минимум на 10 минут. Если клиент не передает серверу команды заданный интервал времени, то сервер разрывает TCP соединение без перехода в состояние UPDATE, т.е. без удаления сообщений и посылки каких либо ответов клиенту.
Состояние AUTHORIZATION
После открытия клиентом TCP соединения, сервер посылает однострочное приветствие. Строка должна заканчиваться CRLF.
Пример:
Примечание:
В качестве приветствия POP3 сервер должен всегда посылать положительный ответ.
Теперь сессия находится в состоянии AUTHORIZATION. Клиент должен идентифицировать себя на сервере. В данном документе описано два способа, комбинация команд USER и PASS и команда APOP. Для идентификации с помощью команд USER и PASS, клиент должен сначала послать команду USER. Если сервер ответил положительным индикатором состояния (+OK), то клиент должен послать команду PASS чтобы закончить авторизацию или послать команду QUIT для завершения сессии. Если сервер отправил отрицательный ответ (-ERR) на команду USER, то можно повторить авторизацию или закончить сессию командой QUIT.
После получения команды PASS, сервер использует пару аргументов USER и PASS для определения доступа к почтовому ящику.
Как только сервер определил с помощью какой либо команды идентификации, что клиенту нужно дать доступ к соответствующему почтовому ящику, POP3 сервер получает монопольный доступ к почтовому ящику, чтобы предотвратить изменение или удаление сообщений до состояния UPDATE. Если блокировка прошла успешно, сервер посылает положительный ответ и строку приветствия. Теперь сессия переходит в состояние TRANSACTION без сообщений помеченных как удаленные. Если почтовый ящик не может быть открыт по каким либо причинам (например, не может быть выполнена блокировка или клиенту отказано в доступе к соответствующему почтовому ящику), сервер отвечает отрицательным индикатором состояния. После отрицательного ответа сервер может закрыть соединение. Если сервер не закрыл соединение, клиент может послать новую команду идентификации и начать все заново или послать команду QUIT.
После того как сервер открыл почтовый ящик, он присваивает номер каждому сообщению и отмечает размер сообщения в октетах. Первое сообщение будет иметь номер 1, следующее – номер 2 и так далее. В POP3 командах все числа представлены в десятичной системе.
Вот резюме по трем командам рассмотренным к настоящему времени:
USER имя
Аргументы:
Строка идентификации почтового ящика (обязательный).
Ограничения:
Может быть передана только в состоянии AUTHORIZATION после POP3 приветствия или неуспешной команды USER или PASS.
Возможные ответы:
+OK name is a valid mailbox
-ERR never heard of mailbox name
|
|
Примеры:
C: USER mrose
S: +OK mrose is a real hoopy frood
...
C: USER frated
S: -ERR sorry, no mailbox for frated here
|
|
PASS строка
Аргументы:
пароль к почтовому ящику (обязательный).
Ограничения:
Может быть передана только в состоянии AUTHORIZATION после успешной команды USER.
Подробности:
Команда PASS имеет только один аргумент, сервер может трактовать пробел в параметре как часть пароля, вместо разделителя аргументов.
Возможные ответы:
+OK maildrop locked and ready
-ERR invalid password
-ERR unable to lock maildrop
|
|
Примеры:
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: +OK mrose's maildrop has 2 messages (320 octets)
...
C: USER mrose
S: +OK mrose is a real hoopy frood
C: PASS secret
S: -ERR maildrop already locked
|
|
QUIT
Аргументы:
нет
Ограничения:
нет
Возможные ответы:
Примеры:
C: QUIT
S: +OK dewey POP3 server signing off
|
|
Состояние TRANSACTION
После того как клиент успешно идентифицировал себя на сервере и сервер заблокировал и открыл соответствующий почтовый ящик, сессия переходит в состояние TRANSACTION. Теперь клиент может запрашивать информацию. После каждой команды сервер отправляет ответ. В конце клиент отправляет команду QUIT и сессия переходит в состояние UPDATE.
STAT
Аргументы:
нет
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
POP3 сервер отправляет положительный ответ со строкой содержащей информация о почтовом ящике. Эта строка называется "drop listing". Для легкого разбора, POP3 сервера использую определенный формат для "drop listing". Положительный ответ включает в себя: индикатор состояния (+OK), дальше следуют число сообщений и размер сообщений в октетах, разделенные одиночным пробелом. Сообщения, помеченные как удаленные, не учитываются.
Возможные ответы:
Примеры:
LIST сообщение
Аргументы:
Номер сообщения (необязательный), сообщения, помеченные как удаленные, не учитываются.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
Если задан аргумент, сервер передает положительный ответ со строкой информации для заданного сообщения. Такая строка называется "scan listing". Если аргумент не задан и то сервер посылает многострочный ответ. После индикатора состояния (+OK), для каждого сообщения в почтовом ящике, POP3 сервер посылает строку содержащую информацию для данного сообщения. Эта строка называется “scan listing”. Все POP3 сервера используют определенный формат для “scan listing”. “scan listing” состоит из номера сообщения после которого, через одиночный пробел следует точный размер сообщения в октетах. Данный документ не указывает что должно следовать за размером сообщения, единственное требование чтобы ответ заканчивался парой CRLF. Различные расширения могут включать дополнительную информацию.
Примечание:
Этот документ СТРОГО не рекомендует добавлять дополнительную информацию в “scan listing”.
Возможные ответы:
+OK scan listing follows
-ERR no such message
|
|
Примеры:
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
...
C: LIST 2
S: +OK 2 200
...
C: LIST 3
S: -ERR no such message, only 2 messages in maildrop
|
|
RETR сообщение
Аргументы:
Номер сообщения (обязательный), сообщения, помеченные как удаленные, не учитываются.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
При положительном ответе, после положительного индикатора состояния сервер передает многострочный ответ, содержащий заданное сообщение.
Возможные ответы:
+OK message follows
-ERR no such message
|
|
Примеры:
C: RETR 1
S: +OK 120 octets
S: the POP3 server sends the entire message here
S: .
|
|
DELE сообщение
Аргументы:
Номер сообщения (обязательный), сообщения, помеченные как удаленные, не учитываются.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
POP3 сервер помечает сообщение как удаленное. Все последующие обращения к этому сообщению будут вызывать ошибку. Фактически сервер не удаляет сообщение, пока не наступит состояние UPDATE.
Возможные ответы:
+OK message deleted
-ERR no such message
|
|
Примеры:
C: DELE 1
S: +OK message 1 deleted
...
C: DELE 2
S: -ERR message 2 already deleted
|
|
NOOP
Аргументы:
Нет.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
Сервер ничего не делает и отвечает только положительно.
Возможные ответы:
Примеры:
RSET
Аргументы:
Нет.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
Если сообщение было помечено как удаленное, то сервер снимает эту отметку. Ответ всегда положительный.
Возможные ответы:
Примеры:
C: RSET
S: +OK maildrop has 2 messages (320 octets)
|
|
Состояние UPDATE
Когда клиент посылает команду QUIT в состоянии TRANSACTION, сервер переходит на стадию UPDATE (Обратите внимание, что если клиент посылает команду в состоянии AUTHORIZATION, то сервер завершает сессию и не входит в стадию UPDATE). Если сессия завершается по каким-либо другим причинам, без посылки команды QUIT, POP3 сессия не входит в стадию UPDATE и ни одно сообщение из почтового ящика не должно быть удаленно.
QUIT
Аргументы:
Нет.
Ограничения:
Нет.
Подробности:
Сервер удаляет все сообщения помеченные как удаленные. Посылается ответ. TCP соединение закрывается.
Возможные ответы:
Примеры:
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
...
C: QUIT
S: +OK dewey POP3 server signing off (2 messages left)
...
|
|
Необязательные команды
POP3 команды, описанные выше должны поддерживаться всеми POP3 серверами. Дополнительные команды дают клиенту большую свободу в обработке сообщений. Примечание: этот документ поощряет поддержку дополнительных команд, вместо внесений дополнительных сведений в “drop listing” и “scan listing”.
TOP сообщение n
Аргументы:
Номер сообщения (обязательный) и неотрицательное число, указывающее на количество строк тела сообщения которое сервер передаст клиенту, аргумент обязательный. Нельзя обращаться к сообщениям помеченным как удаленные.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
После положительного ответа сервер посылает многострочный ответ. После начального +OK, сервер посылает заголовок сообщения, пустую строку и указанное количество строк из тела сообщения.
Примечание:
Если число строк, которые требует клиент, больше числа строк в сообщение, то сервер передает все сообщение полностью.
Возможные ответы:
+OK top of message follows
-ERR no such message
|
|
Примеры:
C: TOP 1 10
S: +OK
S:
S: .
...
C: TOP 100 3
S: -ERR no such message
|
|
UIDL сообщение
Аргументы:
Номер сообщения (необязательный). Нельзя обратиться к сообщению помеченному как удаленное.
Ограничения:
Может быть передана только в состоянии TRANSACTION.
Подробности:
Если аргумент задан, сервер посылает положительный ответ со строкой содержащей информацию о заданном сообщении. Эта строка называется "unique-id listing".
Если аргумент не задан, то при положительном ответе сервер посылает многострочный ответ. После индикатора состояния (+OK), и строку содержащую информацию о сообщении.
Для упрощения синтаксического разбора все сервера должны использовать определенный формат "unique-id listing”. "unique-id listing” состоит из номера сообщения и уникального идентификатора разделенные одиночным пробелом. За уникальным идентификатором не должно следовать ни какой дополнительной информации.
Уникальный идентификатор это произвольная, определяемая сервером, строка, содержащая символы в диапазоне от 0x21 до 0x7E, которая однозначно идентифицирует сообщение в пределах почтового ящика. Идентификатор сохраняется на все время сессии. Сервер не должен многократно использовать идентификатор для данного почтового ящика, пока существует объект использующий его. Сообщения помеченные как удаленные не учитываются.
Возможные ответы:
+OK unique-id listing follows
-ERR no such message
|
|
Примеры:
C: UIDL
S: +OK
S: 1 whqtswO00WBw418f9t5JxYwZ
S: 2 QhdPYR:00WBw1Ph7x7
S: .
...
C: UIDL 2
S: +OK 2 QhdPYR:00WBw1Ph7x7
...
C: UIDL 3
S: -ERR no such message, only 2 messages in maildrop
|
|
APOP имя digest (шифрованная строка пароля)
Аргументы: Строка идентифицирующая почтовый ящик и MD5 digest (шифрованная (по алгоритму MD5) строка пароля), оба параметра обязательные.
Данный раздел находится в стадии доработки...
Резюме по командам POP3
Основные команды:
USER имя
PASS строка
QUIT
STAT
LIST сообщение
RETR сообщение
DELE сообщение
NOOP
RSET
QUIT
|
|
Дополнительные команды:
APOP имя digest
TOP сообщение номер
UIDL сообщение
|
|
Ответы:
Обратите внимание что на все команды за исключением STAT, LIST и UIDL, ответ, данный сервером важно только +OK и -ERR. Любой текст встречающийся после этого ответа может игнорироваться клиентом.
Пример POP3 сессии
S: wait for connection on TCP port 110
C: open connection
S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose'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:
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S:
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: close connection
S: wait for next connection
|
Последние статьи: Web - технологии / Протоколы /
| |
| | |
Как известно, Internet основана на семействе протоколов tcp/ip, определяющих, каким образом осуществляется взаимодействие между подключенными к сети компьютерами. Идентификация этих компьютеров осуществляется с помощью так называемых IP-адресов... подробнее
|
Кол. просмотров: общее - 4100 сегодня - 0
|
|
О чем вы думаете, когда слышите фразу устранение неисправностей с TCP/IP? Люди, которые обладают хорошим воображением могут сразу представить блок-схему... подробнее
|
Кол. просмотров: общее - 4349 сегодня - 0
|
|
Все знают о таких программах для работы в одноранговой сети, как Napster, Kazaa и т.д. Однако сколько человек знают о новостных группах в двоичном формате? Держу пари, что немногие. Подобные группы основаны на протоколе NNTP, который и является основной целью написания настоящей статьи. Итак, читайте, чтобы узнать больше о NNTP... подробнее
|
Кол. просмотров: общее - 4295 сегодня - 0
|
|
Из огромного количества существующих протоколов только некоторые были созданы для передачи данных. Вопреки расхожему мнению Интернет - это не только HTTP и веб-сайты. В данной статье дается обзор протокола FTP и передачи данных с его помощью... подробнее
|
Кол. просмотров: общее - 12986 сегодня - 1
|
|
Передача информации из интернет происходит при помощи транспортных протоколов. Существует два транспортных протокола - TCP и UDP. В этой статье мы рассмотрим User Datagram Protocol или UDP... подробнее
|
Кол. просмотров: общее - 4408 сегодня - 0
|
|
|
|