Форум системного администратора

Объявление

Форум системного администратора рад приветствовать Вас. Наша основная цель заключается в качественном обмене опытом в сфере высоких технологий. Спешите зарегистрироваться и вступить в наше сообщество IT-специалистов. Администрация сайта была бы очень признательна, если бы вы заходили на рекламу: вам это ничего не стоит, а нам хоть какие-то начисления:)
Администрация.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Протокола

Сообщений 1 страница 4 из 4

1

Описание различных протоколов, начнем с POP3:

POP3 - одна из реализаций протокола входящей почты. Именно по нему ваш почтовый
клиент получает почту с вашего почтового сервера. Так исторически сложилось, что
сервер входящей почты крутиться на 110-м порту, и обмен данными по протоколу
POP3 между клиентом и сервером идет именно через этот порт.
Команда протокола представляет из себя следующую структуру:

COMM [arg1] [arg2] … [argn]

Сдесь COMM - сама команда. Она может состоять из трех или четырех символов.
[arg1] [arg2] … [argn] - аргументы передаваемые команде.

В ответ на команду сервер отвечает следующей структурой:

STATUS [info]

STATUS может принимать только два значения - +OK (свидетельствует об успешном
выполнении команды) и -ERR (соответственно ошибка). Обычно (хотя совсем не
обязательно) после STATUS следует какая-то информация о результате.
Ниже приведены команды и возможные ответы сервера:

STAT - используется для просмотра состояния текущего почтового ящика.
Ответ сервера: "+OK nn mm" nn - кол-во сообщений, mm - их общий объем.

LIST [msg]  - может передаваться как с аргументом msg - номером сообщения, так
и без аргумента. Если команда содержит аргумент, и сообщение с указанным номером
существует, ответом на нее будет "информационная строка", которая содержит номер
сообщения и размер сообщения в байтах. Если аргумент не указан - ответом будет
список информационных строк обо всех сообщениях в данном почтовом ящике.
Сообщения, помеченные на удаление не фигурируют в этом списке

RETR msg - передать клиенту сообщение с указанным номером (msg). В ответ сервер
выводит +OK [инфо] [текст сообщения]

DELE msg - Пометить сообщение с указанным номером к удалению. Возможный ответ
сервера: +OK [msg] delited

NOOP - Используется для проверки состояния соединения. Ответом на нее будет +OK
если соединение не разорвано

RSET - откат. Если есть помеченные к удалению сообщения, пометки снимаются.
Возможно только внутри одной сессии.

TOP msg n - В ответ на эту команду сервер выдаст первые n строк сообщения msg

USER user - Используется при авторизации на сервере чтобы ввести логин

PASS pass - Используется при авторизации на сервере чтобы ввести пароль.
ВНИМАНИЕ!!! Протокол POP3 не предусматривает шифрование данных. Т.е. пароль
передается в не зашифрованном виде ( как есть).

QUIT - эта команда отправляется без аргументов и всегда сервер на нее возвращает
+OK =)

Теперь давай посмотрим на практике что же представляет собой сеанс работы по
POP3. Для этого нам понадобиться только одна программа. Она есть во всех без
исключения операционных системах. Называется она telnet =) И так, запускай
командный интерпретатор своей операционки и вперед:

$telnet pop.newmail.ru 110 // соединяемся с сервером
USER vasya@nm.ru //афторизация на сервере
+OK
PASS fuckoff
+OK
STAT             // проверка состояния
+OK 14 252914
LIST             // список сообщений
+OK
1 2008
2 1268
3 1240
4 867
5 818
6 852
7 199690
8 4083
9 1665
10 3336
11 6586
12 9871
13 15149
14 5481
.
RETR 1  //прочитаем первое в списке
+OK
Return-Path:
Delivered-To: vasya@nm.ru
X-String-ID: 39
Received:(qmail 21381 invoked from network);
9 Oct 2005 14:53:16 -0000
Received: from omr-r01.mx.aol.com
(HELO omr-r01.mail.aol.com) (152.163.225.129)
by grif.newmail.ru with SMTP; 9 Oct 2005 14:53:16 -0000
Received: from icq.com (205.188.251.66)
by omr-r01.mail.aol.com with SMTP; 09 Oct 2005 10:53:15 -0400
Message-Id: <42fghj$q3otg5@omr-r01.mail.aol.com>
Subject: Your New ICQ Password
From: ICQ Password Assistance
To: vasya@nm.ru
Content-Type: text/html; charset=utf-8
MIME-Version: 1.0
X-SpamTest-Info: Profile: Formal (269/050913)
X-SpamTest-Info: Profile: Archiving (2/030321)
X-SpamTest-Status: Not detected
X-SpamTest-Version: SMTP-Filter Version 2.0.0 [0125], KAS/Release

Хрен тебе а не новый пароль!
С уважением,
Администрация icq.com

.
RETR 15 //читаем 15-e сообщение
-ERR not that many messages    //ошибка

QUIT              //отключаемся
+OK

Отредактировано finn (2007-07-04 21:32:52)

0

2

НУ после POP3 само собой идет протокол SMTP

SMTP (Simple Mail Transfer Protocol) - Простой Протокол Передачи Почты. Прочитав
эту статью вы действительно убедитесь что это очень простой протокол =)
Сервер пересылки почты обычно крутиться на 25-м порту.
Клиент посылает серверу запрос вида COMM [параметры], где COMM четырехсивольная
команда. А сервер в ответ посылает номер ответа и результирующую информацию.
Вот список стандартных команд сервера:

HELO  - "авторизация" на сервере

MAIL FROM: - послать сообщение по одному или более адресам.

RCPT TO: - определить получателя

DATA - получатель получает данные о дате отправки

RSET - сброс параметров

SEND FROM: - Эта команда используется для возможности отправки
почтовых данных на один или больше почтовых терминалов. Аргумент команды
содержит в себе обратный маршрут.

SOML FROM: - Эта команда используется что бы произвести отправку
почты на один или более терминалов или почтовых ящиков. Для каждого получателя
почтовые данные доставляются на терминал (если получатель имеет права снимать
почту с терминала) иначе на почтовый ящик.

SAML FROM: - Эта команда используется что бы произвести отправку
почты на один или более терминалов и почтовых ящиков. Для каждого получателя
почтовые данные доставляются на терминал (если получатель имеет права снимать
почту с терминала) и для всех получателей на их почтовые ящики.

VRFY  - просит сервер проверить, является ли переданный аргумент именем
пользователя. В случае успеха сервер возвращает полное имя пользователя. На
многих серверах команда заблокирована в целях безопасности.

EXPN  - просит сервер подтвердить, что переданный аргумент - это список
почтовой группы, и если так, то сервер выводит членов этой группы. многих
серверах команда заблокирована в целях безопасности.

HELP  - возвращает описание как ответ.

NOOP - команда вынуждает получателя ответить ОК.

QUIT - завершить сеанс.

Как вы наверно заметили команд протокола не так уж и много. Давайте чтоб вам
было понятнее разберем пример сессии SMTP.

$telnet smtp.server.ru 25      //соединяемся с сервером
HELLO myIP                     //представляемся ему
250 smtp.server.ru
MAIL FROM:         //указываем отправителя
250 ok
RCPT TO:            //указываем получателя
250 ok
DATA                             //вводим текст
354 Start mail input; end with .
250 ок
From: Я
To: Катя
Subject: Hello
Привет Катюх!
Как житуха?
.                               //конец текста
250 ok
QUIT                            //рвем соединение

0

3

Как же я мог забыть, вот протокол HTTP

HTTP (HyperText Transfer Protocol) - Протокол Передачи ГиперТекста. Сервер HTTP
работает на 80 порту. Некоторые админы обычно меняют этот порт на какой-либо
нестандартный с известной им одним целью.

Запросы клиента разбиваются на три раздела. Первая строка сообщения всегда
содержит:
Метод URL версия_протокола
Метод может принимать следущие значения:
______
GET - запрос документа. Наиболее часто употребляемый метод.

HEAD - запрос заголовка документа. Сам документ не выдается.

POST - этот метод применяется для передачи данных CGI-скриптам. Сами данные
следуют в последующих строках запроса в виде параметров.

PUT - разместить документ на сервере. Запрос с этим методом имеет тело, в
котором передается сам документ.

LINK - Связывает информацию заголовка с документом на сервере.

UNLINK - Отменяет связь информации заголовка с документом на сервере.

DELETE Удаляет данные, находящиеся на сервере по заданному URI.

OPTIONS Запрашивает информацию о коммуникационных параметрах сервера. Чтобы
запросить данные обо всем сервере в целом, вместо URI запроса следует
использовать символ *.

TRACE Требует, чтобы тело содержимого запроса было возвращено без изменений.
Используется для отладки.
___________________________________
Следующие строки запроса клиента содержат информацию заголовка. Информация
заголовка содержит сведения о клиенте. Эти данные обрабатываются различными
скриптами сервера, чтобы сформировать страницу специфичную для клиента.
Вот некоторые из параметров заголовка:
______
Connection (соединение)- может принимать значения Keep-Alive и close.
Keep-Alive ("оставить в живых") означает, что после выдачи данного документа
соединение с сервером не разрывается, и можно выдавать еще запросы. Большинство
браузеров работают именно в режиме Keep-Alive, так как он позволяет за одно
соединение с сервером "скачать" html-страницу и рисунки к ней. Будучи однажды
установленным, режим Keep-Alive сохраняется до первой ошибки или до явного
указания в очередном запросе Connection: close.
close ("закрыть") - соединение закрывается после ответа на данный запрос.
Если Connection не указано то используется close.

User-Agent - значением является "кодовое обозначение" браузера, например:
Mozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt)

Accept - список поддерживаемых браузером типов содержимого в порядке их
предпочтения данным браузером, например:
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

Referer - URL, с которого перешли на этот ресурс.

Host - имя хоста, с которого запрашивается ресурс. Используется, если на сервере
имеется несколько виртуальных серверов под одним IP-адресом. В этом случае имя
виртуального сервера определяется по этому полю.

Accept-Language - поддерживаемый язык. Имеет значение для сервера, который может
выдавать один и тот же документ в разных языковых версиях.
_____________________________________
Третья часть клиентского запроса представляет собой тело содержимого -
собственно данные, посылаемые серверу.

Например:

GET /index.html HTTP/1.О
Connection: Keep-Alive
User-Agent: Mozilla/4.05 (WinNT; 1)
Host: wwwora.com
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

В данном примере методом GET запрашивается документ index.html по протоколу
HTTP 1.0. Третья часть в данном примере отсутствует, т.к. запрашиваемая
страница не принимает какие-либо данные.

Еще пример:

POST /cgi-bin/birthday.pl HTTP/1.0
User-Agent; Mozilla/4.05 (WinNT; 1)
Accept: image/gif, iinage/x-xbj.tmap, image/jpeg, J.mage/pjpeg, */*
Host: wwwora.com
Content-type: application/x-www-form-ur.lencoded
Content-Length: 20
nionth=august&date=24

Тут все тоже самое за исключением того что теперь мы кроме заголовка передаем
методом POST скрипту /cgi-bin/birthday.pl два параметра nionth=august и date=24
________________________________________
Ответ сервера очень похож на запрос. Он тоже состоит из трех частей:

Первая строка - это строка ответа сервера
Она содержит номер версии HTTP; код ошибки; и краткое описание кода ошибки.
В случае успешного завершения код ошибки равен 200 а описание - "ОК"

Вторая часть - информация заголовка
Она может иметь следующие значения:
______
Connection - тоже что и при запросе. По этому значению можно судить установленно
ли еще соединение или разорвано.

Content-Type - тип содержимого может иметь следущее значение:
text/html - текст в формате HTML (веб-страница);
text/plain - простой текст (аналогичен "блокнотовскому");
image/jpeg - картинка в формате JPEG;
image/gif - то же, в формате GIF;
application/octet-stream - поток "октетов"(т.е. просто байт) для записи на диск.
Это далеко не полный список.

Content-Length - длина содержимого ответа в байтах.

Last-Modified - дата последнего изменения документа.
_________________________________________

Третья часть - тело содержимого если оно конечно присутствует.
________________________________________________________________________________
Ну вот и фсе. Сдесь приведено далеко не полное описание протокола, но основные
принципы прочитав эту статью ты усвоить сможешь.

0

4

НУ а теперь, что-нибудь более экзотичное и трудно понимаемое обычным пользователем, поговорим о SSL

ТЕОРИЯ:
SSL (Secure Sockets Layer — протокол защищённых сокетов) —
криптографический протокол, призваный обеспечить безопасную передачу данных
по сети Интернет.

При работе по этому протоколу создаётся защищённое соединение
между клиентом и сервером. По стандарту протокол работает на 443-м порту. Но
админ всегда может сменить номер порта чтобы скрыть от такого злоумышленника
как ты свои сервисы =).

SSL изначально разработан компанией Netscape Communications и сейчас
поддерживается всеми популярными браузерами. Для работы по SSL вместо
перфикса http:\ применяется перфикс https:\.

SSL представляет из себя 128 битовую систему шифрования данных с открытым
ключем. Для каждого сервера в интернете, использующего данную систему
шифрования, создаются 2 ключа, один общественный, к которому имеют доступ
все юзеры сервиса, второй устанавливается на сервере и недоступен ни для кого.
Эти 2 ключа зависят один от другого и друг без друга смысла не имеют.

Для того чтобы включить на своем сервере потдержку SSL необходимо
преобрести ключи и сертификат. Стоимость колеблется от 30$ до 500$ в
звисимости от вида сертификата. Сертификат предназначен для подтверждения
принадлежности ключей данному серверу или домену.

Многие хостеры по дефолту предоставляют так называемый "общий" SSL.
Единственное отличие - то что по мимо твоего сайта, те же ключи будут
использоваться и на других сайтах размещенных на этом хостере, что,
соглась, не совсем секурно.

ПРАКТИКА:
Вообще, протокол SSL не такая простая штука как многие думают. Писать
использующие SSL приложения довольно сложное занятие. Но как известно,
изобретать велосипед не придеться. Существуют готовые библиотеки
для реализации функций данного протокола. Вот некоторые из них:

* SSLeay
* OpenSSL

Я не буду сдесь вдаваться во все тонкости практического применения
этого протокола. Есле же ты захочешь с ним разобраться, то вооружись
хорошим снифером и wwwggogle.ru тебе в помощь =). Я же остановлюсь
на приблизительном описании принципов:

Пример соединения через SSL:

Клиент (К): посылает серверу слуяайное сообщение
Сервер (С): выдает свой сертификат
К: запрашивает подтверждение сертификата
С: передает подтверждение, один раз открыто, и один раз шифрованое
   приватным ключем.
К: посылает секретное сообщение шифрованое публичным ключем.
С: посылает сообщение зашифрованое темже секретным ключем (например
   сообщением клиента).
   
Сертификат содержит в себе следущие сведения:

  * Имя человека/организации выпускающего сертификат.
  * Для кого был выпущен данный сертификат (субъект сертификата).
  * Публичный ключ субъекта.
  * Некоторые временные параметры (срок действия сертификата и т.п.).

Полезные ссылки по теме:
* http://inssl.com - проект посвященный SSL

0