Рассмотрим теперь некоторые трассировки, показывающие, как работает почта SMTP в реальной жизни. Для создания соединения SMTP с Exchange требуется пять кадров и 420 байтов. Это включает трехходовое квитирование, кадр готовности службы SMTP и еще один кадр подтверждения (АСК). Посмотрим на кадр готовности службы на распечатке ниже. Код ответа 220, как мы знаем из таблицы, означает, что служба готова. Этот кадр поступает из порта 25, который используется для службы SMTP. Код 220 посылается как стандартный код ASCII и показан в шестнадцатеричной панели как 32 32 30. Символ ASCII для 20 равен 50 и преобразуется в шестнадцатеричное 32. Символ ASCII для 0 равен 48 и преобразуется в шестнадцатеричное 30.
Хотя TCP является дуплексным протоколом, SMTP действует только в полудуплексном режиме. Это означает, что посылаемый символ должен быть подтвержден перед посылкой следующего символа. Это требование создает большой объем трафика подтверждения (АСК). Например, просто отправка команды HELO требует 11 кадров и 695 байтов. Когда посылается и подтверждается HELO, следующий кадр с клиентской машины посылает 0D OA (ASCII 13, возврат каретки, и ASCII 10, перевод строки), как видно на распечатке ниже.
Протокол РОРЗ используется как упрощенный протокол почты, который хранит сообщения на сервере, пока клиентская машина не соединится и не выгрузит их по запросу. Он делает не слишком много по обработке сообщения на сервере; служба РОРЗ просто слушает порт TCP 110, пока почта не будет извлечена, и удаляет ее из почтового хранилища. Это не очень развитый протокол, но он достаточно эффективен.
Когда клиент РОРЗ хочет создать соединение, он следует схеме одиночных рабочих команд. Подобно протоколу SMTP, который был рассмотрен ранее, команды состоят из символов ASCII, разделенных пробелами. Эти команды имеют длину в три или четыре символа. Модификаторы для команд РОРЗ могут быть до 40 символов длиной.
Сервер РОРЗ дает два типа ответов. Первый ответ является положительным. Отрицательным ответом является -ERR. Оба эти ответа должны быть представлены заглавными буквами и содержать либо знак -, либо знак +.
Некоторые команды будут создавать многострочный ответ с сервера (например, команда list), и каждая строка будет заканчиваться комбинацией возврата каретки и перевода строки (та же самая комбинация ASCII 13 и ASCII 10 использовалась в протоколе SMTP). Когда все строки будут посланы, сервер пошлет . (ASCII 46) и дополнительный перевод строки. Это та же комбинация <RLF>.[T04Ka]<RLF>, которую мы видели в протоколе SMTP.
Четыре состояния РОРЗ Во время процесса соединения клиента и получения почты РОРЗ проходит через четыре состояния. После начального соединения TCP и последующего приветствия сервер входит в состояние авторизации, в котором клиент идентифицирует себя. Вслед за состоянием авторизации РОРЗ входит в состояние транзакции и получает команды с клиентской машины для обработки почты. После успешной обработки почты и отправки клиентом команды завершения quit сеанс входит в фазу обновления и освобождает ресурсы, использованные во время состояния транзакции. Затем соединение TCP закрывается. Эта последовательность событий для успешного сеанса подробно описана в следующем списке.
1. Клиентская машина запрашивает у DNS адрес.
2. Когда адрес получен, машина инициирует трехходовое квитирование на порте 110.
3. Вслед за трехходовым квитированием сервер посылает приветствие.
4. Клиент отвечает именем пользователя.
5. Сервер проверяет, существует ли пользователь в системе, и отвечает с помощью +ОК.
6. Клиент отвечает паролем.
7. Сервер отвечает +ОК.
8. Клиент запрашивает состояние почтового ящика.
9. Сервер отвечает, посылая число и размер сообщений в почтовом ящике.
10. Клиент запрашивает список сообщений.
11. Сервер отвечает.
12. Клиент пересылает себе сообщения.
13. Клиент стирает сообщения на сервере.
14. Когда все сделано, он посылает команду завершения quit.
15. Сервер отвечает с помощью+ОК
Таблица 8.2 суммирует команды РОРЗ, которые обычно встречаются в трассировках сетевого мониторинга.
