Протокол IMAP представляет собой альтернативу POP3.

Некоторые команды SMTP

HELO {SP} {string}{CRLF} Идентифицирует SMTP-сервер отправителя, открывает сеанс {SP} пробел  
QUIT{CRLF} Завершает SMTP-сеанс.  
MAIL {SP} FROM:{reverse-path} {CRLF} Задает адрес отправителя.  
RCPT {SP} TO:{forward-path} {CRLF} Задает адрес получателя.  
DATA {CRLF} Указывает на начало сообщения. Для окончания сообщения указывается {CRLF}.  
VRFY {SP} {string}{CRLF} проверяет существование получателя.  
EXPN {SP} {string}{CRLF} показывает список адресов для списка рассылки.  
NOOP{CRLF} пустая операция  
TURN{CRLF} сервер и клиент меняются ролями после ответа сервера 200 OK  
RSET{CRLF} сброс сессии в исходное состояние  
HELP{CRLF} информация о поддерживаемых командах  
     

Простейший пример SMTP-сессии С: - клиент, S: - сервер

S: (ожидает соединения)

C: (Подключается к порту 25 сервера)

S:220 mail.company.tld ESMTP CommuniGate Pro 5.1.4i is glad to see you!

C:HELO

S:250 domain name should be qualified

C:MAIL FROM:

S:250 someusername@somecompany.ru sender accepted

C:RCPT TO:

S:250 user1@company.tld ok

C:RCPT TO:

S:550 user2@company.tld unknown user account

C:DATA

S:354 Enter mail, end with "." on a line by itself

C:Hi!

C:.

S:250 769947 message accepted for delivery

C:QUIT

S:221 mail.company.tld CommuniGate Pro SMTP closing connection

S: (закрывает соединение)

В результате такой сессии письмо будет доставлено адресату user1@company.tld, но не будет доставлено адресату user2@company.tld, потому что такого адреса не существует.

17) Pop3 (англ. Post Office Protocol Version 3 — протокол почтового отделения, версия 3) — стандартный Интернет-протокол прикладного уровня, используемый клиентами электронной почты для извлечения электронного сообщения с удаленного сервера по TCP/IP-соединению. POP3 прост в реализации и предоставляет минимальные необходимые возможности для работы с почтовым ящиком. Вопреки распространенному мнению, третья версия протокола POP дает возможность работать не только с ящиком в целом, но и с отдельными сообщениями, находящимися в нем, позволяя просматривать информацию о письмах, получать и удалять их по отдельности.

Основные команды

STAT

В ответ на команду STAT сервер возвращает количество сообщений в почтовом ящике и общий размер ящика в октетах. Сообщения, помеченные для удаления, при этом не учитываются. Например, ответ " +OK 4 223718" означает, что в почтовом ящике имеется 4 сообщения общим объемом 223718 октет.

LIST

Ответ на команду LIST без аргумента: список сообщений в почтовом ящике, содержащий их порядковые номера и размеры в октетах.

Пример:

C LIST
S +OK 4 visible messages (223718 octets)
S 1 333
S 2 111293
S 3 111285
S 4 807
S .

В данном примере в ящике имеется 4 сообщения, длины которых, соответственно, 333, 111293, 111285 и 807 октет.

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

Если в качестве аргумента команды LIST указать номер сообщения, то в ответе будет содержаться информация только об одном запрошенном сообщении:

C LIST 2
S + OK 2 111293

RETR

Требует в качестве аргумента номер существующего и не помеченного для удаления сообщения.

В ответ сервер присылает запрошенное сообщение.

DELE

Требует в качестве аргумента номер существующего и не помеченного для удаления сообщения. Указанное сообщение помечается для удаления. До конца сеанса обращаться к нему становится невозможно. После окончания диалога, когда сеанс переходит в состояние обновления, сообщение удаляется окончательно.

NOOP

На эту команду сервер должен дать положительный ответ. Никаких других действий не производится.

RSET

Сервер снимает все установленные ранее пометки для удаления.

QUIT

Завершение сеанса. Если в ходе сеанса какие-то сообщения были помечены для удаления, то после выполнения команды QUIT они удаляются из ящика.

18) IMAP (англ. Internet Message Access Protocol) — протокол прикладного уровня для доступа к электронной почте.

Базируется на транспортном протоколе TCP и использует порт 143.

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

Протокол IMAP представляет собой альтернативу POP3.

POP3 имеет ряд недостатков, и наиболее серьёзный из них — отсутствие возможностей по управлению перемещением и хранением сообщений на сервере. Сообщения, как правило, загружаются с почтового сервера все сразу, после чего они с сервера удаляются, то есть отсутствует возможность выбирать сообщения для получения.

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

При использовании POP3 клиент подключается к серверу только на промежуток времени, необходимый для загрузки новых сообщений. При использовании IMAP соединение не разрывается, пока пользовательский интерфейс активен, а сообщения загружаются только по требованию клиента. Это позволяет уменьшить время отклика для пользователей, в чьих ящиках имеется много сообщений большого объёма.

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

Благодаря системе флагов, определенной в IMAP4, клиент может отслеживать состояние сообщения (прочитано, отправлен ответ, удалено и т. д.); данные о флагах хранятся на сервере.

Клиенты IMAP4 могут создавать, переименовывать и удалять ящики и перемещать сообщения между ящиками. Кроме того, можно использовать расширение IMAP4 Access Control List (ACL) Extension (RFC 4314) для управления правами доступа к ящикам.

Поиск сообщений происходит на стороне сервера.

IMAP4 имеет явный механизм расширения.

Команды протокола IMAP

LOGIN

Позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде. Это не самый лучший метод, но иногда это единственная возможность подключиться к серверу.

AUTHENTICATE

Позволяет клиенту использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, сервер отвечает на неё строкой вызова в кодировке base64. Далее клиент должен отправить ответ на вызов сервера о проверке подлинности, также закодированный base64. Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он включает в свой ответ слово NO. После этого клиент должен продолжить переговоры по согласованию метода проверки подлинности. Если все попытки определить метод проверки подлинности потерпели неудачу, то клиент предпринимает попытку зарегистрироваться на сервере посредством команды LOGIN.

CLOSE

Закрывает почтовый ящик. Когда почтовый ящик закрыт, то все сообщения, помеченные флагом \DELETED, физически удаляются из него. Не имеет параметров.

LOGOUT

Завершает сеанс для текущего идентификатора пользователя и закрывает все открытые почтовые ящики. Если какие-либо сообщения были помечены флагом \deleted, то с помощью этой команды они будут физически удалены из почтового ящика.

CREATE

Создаёт новый почтовый ящик. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями сервера.

DELETE

Применяется к почтовым ящикам. Сервер IMAP при получении этой команды попытается удалить почтовый ящик с именем, указанным в качестве аргумента команды. Сообщения удаляются вместе с ящиками и восстановлению не подлежат.

RENAME

Изменяет имя почтового ящика. Эта команда имеет два параметра — имя почтового ящика, который требуется переименовать, и новое имя почтового ящика.

SUBSCRIBE

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

UNSUBSCRIBE

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

LIST

Получить список всех почтовых ящиков клиента; имеет два параметра.

LSUB

В отличие от команды LIST используется для получения списка ящиков, активизированных командой SUBSCRIBE. Параметры — такие же, как у LIST.

STATUS

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

Пользователь может получить информацию по критериям:

· MESSAGES — общее число сообщений в почтовом ящике

· RECENT — число сообщений с флагом \recent

· UIDNEXT — идентификатор UID, который будет назначен новому сообщению

· UIDVALIDITY — уникальный идентификатор почтового ящика

· UNSEEN — число сообщений без флага \seen

APPEND

Добавляет сообщение в конец указанного почтового ящика. В качестве аргументов указываются имя ящика, флаги сообщения (не обязательно), метка времени (не обязательно) и само сообщение — заголовок и тело.

Имеются следующие флаги сообщений:

· \Seen — прочитано

· \Answered — написан ответ

· \Flagged — срочное

· \Deleted — помечено для удаления

· \Draft — черновик

· \Recent — новое сообщение, оно поступило в почтовый ящик после окончания прошлого сеанса

Если в команде указаны флаги, то они устанавливаются для добавляемого сообщения. В любом случае для сообщения устанавливается флаг \Recent.

Если в команде задана метка времени, то это время будет установлено в качестве времени создания сообщения, в противном случае за время создания принимается текущее время.

Поскольку сообщение состоит не из одной строки, используются литералы.

Пример:

C A003 APPEND saved-messages (\Seen) {247}S + Ready for literal dataC Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)C From: Fred Foobar <foobar@Blurdybloop.COM>C Subject: afternoon meetingC To: mooch@owatagu.siam.eduC Message-Id: <B27397-0100000@Blurdybloop.COM>C C Hello Joe, do you think we can meet at 3:30 tomorrow?S A003 OK APPEND completed

Расширение MULTIAPPEND, описанное в RFC 3502, позволяет одной командой добавлять в почтовый ящик несколько сообщений.

CHECK

Устанавливает контрольную точку в почтовом ящике. Любые операции, такие, например, как запись данных из памяти сервера на его жёсткий диск, должны выполняться при соответствующем состоянии почтового ящика. Именно для проверки целостности почтового ящика после дисковых и других подобных им операций и применяется команда CHECK. Эта команда используется без параметров.

EXPUNGE

Удаляет из почтового ящика все сообщения, помеченные флагом \DELETED, при этом почтовый ящик не закрывается. Ответ сервера на команду EXPUNGE представляет собой отчёт о новом состоянии почтового ящика.

SEARCH

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

Возможен поиск сообщений, в теле которых имеется определённая текстовая строка, или имеющих определённый флаг, или полученных до определённой даты и т. д.

FETCH

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

STORE

Изменяет информацию о сообщении.

COPY

Копирует сообщения из одного почтового ящика в другой.

UID

Используется в связке с командами FETCH, COPY, STORE или SEARCH. С её помощью в этих командах можно использовать реальные идентификационные номера UID вместо последовательности чисел из диапазона номеров сообщений.

CAPABILITY

Запрос у сервера IMAP информацию о его возможностях.

NOOP

Команда ничего не делает. Она может применяться для поддержки активности во время сеанса для того, чтобы сеанс не прекратился по таймеру интервала ожидания. Ответ сервера на команду NOOP всегда должен быть положительным. Так как сервер часто в ответе возвращает состояние выполнения той или иной команды, то NOOP вполне можно использовать как триггер для периодического запроса о состоянии сервера.

 

 

19) Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью. NTP — один из старейших используемых протоколов. NTP разработан Дэвидом Л. Миллсом (David L. Mills) из университета Дэлавера в 1985 году и в настоящее время продолжает совершенствоваться. Текущая версия — NTP 4.

NTP использует иерархическую систему «часовых уровней» (stratum). Уровень 1 синхронизирован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.

Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 232 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 50 лет). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать почти 70 лет (с учётом високосных лет), чтобы корректно совместить время с Windows или Unix-системами. Наиболее широкое применение протокол NTP находит для реализации серверов точного времени. Для достижения максимальной точности предпочтительна постоянная работа программного обеспечения NTP в режиме системной службы. В семействе операционных систем Microsoft Windows, — это служба W32Time (модуль w32time.dll, выполняющийся в svchost.exe), Linux - сервис Ntpd.

Более простая реализация этого алгоритма известна как SNTP — простой синхронизирующий сетевой протокол. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени.

20) QoS (англ. Quality of Service — качество обслуживания) — этим термином в области компьютерных сетей называют вероятность того, что сеть связи соответствует заданному соглашению о трафике, или же, в ряде случаев, неформальное обозначение вероятности прохождения пакета между двумя точками сети.

Механизм работы

Для большинства случаев качество связи определяется четырьмя параметрами:

  • Полоса пропускания (Bandwidth), описывает номинальную пропускную способность среды передачи информации, определяет ширину канала. Измеряется в bit/s (bps), kbit/s (Kbps), Mbit/s (Mbps), Gbit/s (Gbps).
  • Задержка при передаче пакета (Delay), измеряется в миллисекундах.
  • Колебания (дрожание) задержки при передаче пакетов — джиттер.
  • Потеря пакетов (Packet loss). Определяет количество пакетов, потерянных в сети во время передачи.

Для простоты понимания канал связи можно представить в виде условной трубы, а пропускную способность описать как функцию двух параметров: диаметра трубы и её длины.

Когда передача данных сталкивается с проблемой «бутылочного горлышка» для приёма и отправки пакетов на маршрутизаторах, то обычно используется метод FIFO: первый пришел — первый ушёл (First In — First Out). При интенсивном трафике это создаёт заторы, которые разрешаются крайне простым образом: все пакеты, не вошедшие в буфер очереди FIFO (на вход или на выход), игнорируются маршрутизатором и, соответственно, теряются безвозвратно. Более разумный метод — использовать «умную» очередь, в которой приоритет у пакетов зависит от типа сервиса — ToS. Необходимое условие: пакеты должны уже нести метку типа сервиса для создания «умной» очереди. Обычные пользователи чаще всего сталкиваются с термином QoS в домашних маршрутизаторах с поддержкой QoS. Например, весьма логично дать высокий приоритет пакетам VoIP и низкий — пакетам FTP, SMTP и клиентам файлообменной сети.