Интернет Пресс - программы для Windows и Linux, статьи и материалы о компьютерах, бизнес-предложения.
Главная | Новости | Статьи | Веб-мастеру | Призы и подарки | Архив | RSS-канал | Карта сайта
Написать письмо автору сайта
Поиск
 

Интернет

Анатомия протокола
 | 16:41:00 , 11 Марта 2005

Автор: Дмитрий КОШЕВОЙ
http://www.mycomp.com.ua

Я почти уверен, что Интернет у многих ассоциируется с общением, а если точнее, то с общением по электронной почте. Эта служба самая старая, можно сказать, ветеран Сети, так как была выдумана еще до создания самого Интернета и использовалась на самом примитивном сетевом оборудовании, т.е. «письма» передавались не по TCP/IP (Transmission Control Protocol/Internet Protocol), а сугубо с сервера на клиент, причем сервер и клиент находились на малюсеньком расстоянии друг от друга (максимум 2–3 метра). Но прогресс не остановить, и уже через несколько лет после разработки TCP/IP, появился усовершенствованный вид электронной почты. В наше же время e-mail — это основное средство коммуникаций Интернета, сейчас трудно представить пользователя Сети, который не знал бы, как отправить или получить письмо/файл от друга из далекой Австралии или любого другого места.

Недавно мне подсунули заказ: написать программу, с помощью которой можно было бы отправлять письма целой куче народа, т.е. создать рассылочный модуль (не в целях спама). В то время о структуре электронной почты я знал немного: что такое The Вat! и как его настроить :-). Было несложно понять, что моих «знаний» не хватит для разработки этого проекта, и я решил заняться изучением внутренностей электронной почты. Много было потрачено бесценного unlimited’а и сил, бессонных ночей и нервов, пока я не понял всю систему отправки и принятия писем по e-mail. Проект был завершен в сроки, программа продалась :-). Теперь пришло время узнать и вам то, что узнал я — т.е. узнать ВСЕ про электронную почту.

Состав письма. Виды протоколов

Каждое письмо состоит из двух частей: заголовка и тела. Заголовок почтового сообщения содержит служебную информацию, то есть — дата и время создания, кому адресовано письмо, от кого идет, данные об использованной программе, в которой создавалось и отправлялось письмо. Тело хранит в себе текст и вставленные файлы. Если передается простой текст, то его передавать лучше в ASCII-кодах (размер письма явно уменьшается), а если вы хотите кому-то переслать дистрибутив Windows XP :-), то одними ASCII-символами тут не обойтись. Чтобы передать файлы, необходимо использовать двоичное кодирование, в котором можно отсылать любую информацию. Большинство современных почтовых программ (Outlook Express, Eudora, тот же the Bat!) обмениваются в кодировке MIME (аббревиатура MIME означает Multipurpose Internet Mail Extensions, хотя я не уверен — три изученных мною сайта выдали разные толкования).

Электронная почта во многом похожа на обычную почтовую службу, разница лишь в том, что электронное письмо идет очень быстро, да и стоит намного дешевле, так как марки и конверты не нужны :-).

Корреспонденция готовится примерно по такой схеме: написание письма > передача программе-клиенту > передача на SMTP-сервер (читать ниже) > программа-клиент > пользователь.

Для работы электронной почты в Интернете разработан специальный протокол Simple Mail Transfer Protocol (SMTP), который является протоколом прикладного уровня и использует транспортный протокол TCP. SMTP — самый популярный и качественный вид протоколов для электронной почты, хотя существуют и другие: UUCP, IMAP. В случае использования SMTP почта достигает почтового ящика получателя за считанные секунды, и время получения сообщения зависит только от того, как часто получатель просматривает свой почтовый ящик. При использовании UUCP почта передается по принципу stop-go, т.е. почтовое сообщение передается по цепочке почтовых серверов от одной машины к другой, пока не достигнет машины-получателя или не будет отвергнуто по причине отсутствия абонента-получателя. С одной стороны, UUCP позволяет доставлять почту по плохим телефонным каналам, т.к. не требуется поддерживать линию все время, пока сообщение доставляется от отправителя к получателю, но с другой стороны, обидно получить возврат сообщения через сутки-другие после его отправки из-за какой-нибудь неверной буквы в имени пользователя. В целом же общие рекомендации таковы: если имеется возможность надежно работать в режиме on-line, и это является нормой, то следует настраивать почту для работы по протоколу SMTP; если же линии связи плохие или on-line используется чрезвычайно редко, то лучше использовать UUCP.

Система адресов

Основой любой почтовой службы является система адресов. Без точного адреса невозможно доставить почту адресату. В Интернете принята система адресов, которая базируется на доменном адресе машины, подключенной к сети. Рассмотрим мой e-mail: koshewoy@mail.ru. Мы видим, что адрес электронной почты состоит из двух частей: идентификатора пользователя (koshewoy), который записывается перед знаком коммерческого эт, или, как говорят в народе, «сабаки» (пишется через «а») — @, и доменного адреса машины (mail.ru), который записывается после знака @.

SMTP-сервер. Основные команды

Simple Mail Transfer Protocol был разработан для обмена почтовыми сообщениями в сети Интернет. SMTP не зависит от транспортной среды и может использоваться для доставки почты в сетях с протоколами, отличными от TCP/IP и Х.25. Достигается это за счет концепции IPCE (InterProcess Communication Environment). IPCE позволяет взаимодействовать процессам, поддерживающим SMTP, в интерактивном режиме, а не в режиме stop-go.

Модель протокола

Взаимодействие в рамках SMTP строится по принципу двусторонней связи, которая устанавливается между отправителем и получателем почтового сообщения. При этом отправитель инициирует соединение и посылает запросы на обслуживание, а получатель на эти запросы отвечает. Фактически, отправитель выступает в роли клиента, а получатель — сервера.

Канал связи устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течение нескольких секунд после отправки.

Дисциплины работы и команды протокола

Обмен сообщениями и инструкциями в SMTP ведется в ASCII-кодах. В протоколе определено несколько видов взаимодействия между отправителем почтового сообщения и его получателем, которые здесь называются дисциплинами. Отправитель обозначен буквой S, а smtp-сервер — R.

Наиболее распространенной дисциплиной является отправка почтового сообщения, которая начинается по команде MAIL, идентифицирующей отправителя:

Следующей командой определяется адрес получателя:

После того как определен отправитель и получатель почтового сообщения, можно отправлять последнее:

Команда DATA вводится без параметров и идентифицирует начало ввода почтового сообщения. Сообщение вводится до тех пор, пока не будет введена строка с точкой в первой позиции. Согласно стандарту почтового сообщения RFC822, отправитель передает заголовок и тело сообщения, которые разделены пустой строкой. Сам протокол SMTP не накладывает каких-либо ограничений на информацию, которая заключена между командой DATA и . в первой позиции последней строки. Приведем пример обмена сообщениями при дисциплине отправки почты:

Если вы заметили, после некоторых команд smtp-сервер выдает трехзначные числа — это «реакция» сервера на ваши действия. В этих цифрах отображаются ошибки, замечания, сообщения и т.д. и т.п. К этим «цифрам» мы вернемся еще не раз.

Другой дисциплиной, определенной в протоколе SMTP, является перенаправление почтового сообщения (forwarding). Если получатель не найден, но известно его местоположение, то сервер может выдать сообщение:

Если сервер способен лишь сделать предположение о дальнейшей рассылке, то ответ будет несколько иным:

Верификация и расширение адресов составляют дисциплину верификации. В ней используются команды VRFY и EXPN. По команде VRFY сервер подтверждает наличие или отсутствие указанного пользователя:

Используя команду EXPN, можно получить список местных пользователей:

В список дисциплин, разрешенных протоколом SMTP, входит, кроме отправки почты, еще и прямая рассылка сообщений. В этом случае сообщение будет отправляться не в почтовый ящик, а непосредственно на терминал пользователя, если пользователь в данный момент находится за своим терминалом. Прямая рассылка осуществляется по команде SEND, которая имеет такой же синтаксис, как и команда MAIL. Кроме SEND, прямую рассылку осуществляют SOML (Send or Mail) и SAML (Send and Mail). Назначение этих команд легко понять из их названия.

Для инициализации канала обмена почтой и его закрытия используются команды HELO и QUIT соответственно. Первой командой сеанса должна быть команда HELO.

Протокол допускает рассылку почтовых сообщений в режиме оповещения. Для этой цели отправитель в адресе получателя может указать несколько пользователей или групповой адрес. Обычно программное обеспечение SMTP выбирает эту информацию из заголовка почтового сообщения и на ее основе формирует параметры команд протокола.

Если сообщение по какой-либо причине не может быть разослано, получатель формирует об этом сообщение:

При использовании доменных имен следует использовать канонические имена, т.к. некоторые системы не могут определить синоним по базе данных named.

В дополнение к перечисленным выше дисциплинам протокол позволяет отправителю и получателю меняться ролями друг с другом. Происходит это по команде TURN.

Для отладки или проверки соединения по SMTP можно использовать telnet. Для этого вслед за адресом машины следует ввести номер порта — для примера, введите в командной строке ( Пуск > Выполнить): telnet smtp.svitonline.com 25.

25 порт используется в Интернете для обмена сообщениями по протоколу SMTP. В интерактивном режиме пользователь сам изображает клиента SMTP и может посмотреть реакцию удаленной машины на его действия.

Формат почтового сообщения RFC-822

При обсуждении примеров отправки и получения сообщений уже упоминался формат почтового письма. Разберем его подробнее. Формат почтового интернет-сообщения определен в документе RFC-822 (Standard for ARPA Internet Text Message). Это довольно большой документ объемом в 47 страниц машинописного текста (найти его полный вариант мне не удалось, кто найдет — напишите), поэтому рассмотрим формат сообщения на примерах. Почтовое сообщение состоит из трех частей: конверта, заголовка и тела сообщения. Пользователь видит заголовок и тело сообщения. Конверт используется только программами доставки. Заголовок всегда находится перед телом сообщения и отделен от него пустой строкой. RFC-822 регламентирует содержание заголовка сообщения. Заголовок состоит из полей. Поля состоят из имени поля и содержания поля. Имя поля отделено от содержания символом :. Минимальный набор — поля Date, From, cc или To, например:

или

Поле Date определяет дату отправки сообщения, поле From — отправителя, а поля сс и To — получателя(ей). Чаще заголовок содержит дополнительные поля:

В данном случае поле Sender указывает, что дядя Вася не является автором сообщения. Он только переслал сообщение, которое получил от Secy@SHOST. Поле Message-ID содержит уникальный идентификатор сообщения и используется программами доставки почты. Следующее сообщение демонстрирует все возможные поля заголовка:

Поле Subject определяет тему сообщения, Reply-To — пользователя, которому отвечают, Comment — комментарий, In-Reply-To — показывает, что сообщение относится к типу «В ответ на Ваше сообщение, отвечающее на сообщение, отвечающее...».

Следует сказать, что формат сообщения постоянно дополняется и совершенствуется. В RFC-1327 введены дополнительные поля для совместимости с почтой X.400. Кроме того, следует обратить внимание на поля некоторых довольно часто встречающихся заголовков, которые не регламентированы в RFC-822. Так, первое предложение заголовка, которое начинается со слова From, содержит UUCP-путь сообщения, по которому можно определить, через какие машины сообщение «пробиралось». Поле Received: содержит транзитные адреса почтовых серверов с датой и временем прохождения сообщения. Вся эта информация полезна при разборе трудностей с доставкой почты.

Выводы и заключения

В заключение хотелось бы отметить, что возможности почты не ограничиваются только пересылкой корреспонденции. По почте можно получить доступ ко многим интернет-ресурсам, которые имеют почтовых роботов, отвечающих на запросы страждущих. Поэтому имеет смысл более детально изучить программное обеспечение, поддерживающее e-mail (авторам — намек). Время, затраченное на чтение документации и опыты, окупятся возможностью получения информации из информационных архивов Сети.

И защити вас Бог от СПАМА. Аминь :-).

Источник: http://www.izcity.com



Оценок этой статье - 14. Средний балл - 5.00 Просмотров - 27630

Выставить оценку статье:


Читайте также:

  • Обзор русских поисковых систем
  • Как "раскрутить" свой сайт?
  • РНР - что в этом слове?
  • Автоматизация автоматизации: шаблоны HTML-страниц, PHP
  • Использование каталогов как средство продвижения сайтов.
  • Оптимизация TCP/IP
  • Установка MySQL под Win9x/NT/2000
  • Домашний Apache
  • Apache: полезные советы
  • Использование IFRAME
  • Web-календарь
  • Эффективный баннер
  • Что такое Cookies и с чем их едят
  • Создание мета-тегов
  • Таблица базовых цветов BgColor
  • Описание SSI на русском языке
  • Keywords для начинающих
  • Search Engine marketing - основные проблемы, возникающие в процессе оптимизации сайтов.
  • Таблица основных тегов языка HTML
  • Очень интересный файл HOSTS - рулите своим браузером (Windows XP)

    Все статьи рубрики Интернет




  • Поиск
     

    Размещение рекламы | Контакты

    Главная | Новости | Статьи | Веб-мастеру | Призы и подарки | Архив | RSS-канал | Карта сайта

    Вверх
    Copyright © 2004 - 2024 г. При перепечатке гиперссылка на «Интернет Пресс» обязательна.