FTP

advertisement
Основные протоколы
прикладного уровня
стека TCP/IP
Дроздов Алексей Владимирович
БГТУ 2008
«Ключевые» прикладные
протоколы






HTTP - гипертекстовый протокол
FTP – протокол передачи файлов
SMTP – протокол пересылки почтовых
сообщений
POP3, IMAP – протоколы получения
почтовых сообщений
DNS - протокол преобразования
доменных имен
SNMP – протокол управления сетями
Понятие HTTP
HTTP – HyperText Transfer Protocol
Является протоколом прикладного уровня.
Описание HTTP можно найти в RFC 1945 и
RFC 2616. Протокол HTTP реализуется с
помощью двух программ: клиента и сервера,
которые, находясь на разных оконечных
системах, обмениваются HTTP-сообщениями.
Версии протокола HTTP
1997 г. - практически все web-браузеры и web-серверы
стали поддерживать протокол HTTP версии 1.0,
описанный в документе RFC 1945.
1998 г. - переход к версии 1.1, которая была описана в
RFC 2616. Версия 1.1 имеет обратную совместимость
с версией 1.0, т.е. любой сервер и браузер,
использующий версию 1.1, может а полной мере
взаимодействовать с браузером или сервером,
поддерживающий версию 1.0.
HTTP использует TCP в качестве протокола
транспортного уровня. HTTP-клиент сначала
устанавливает TCP-соединение с сервером, а после
создания соединения клиент и сервер начинают
взаимодействовать с протоколом TCP, например, через
механизм сокетов.
Формат строки подключения
URL — Uniform Resource Locator.
Единый указатель ресурсов
<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>
Общий формат строки подключения,
воспринимаемый практически всеми
браузерами выглядит следующим образом:
http://host[:port][/virtual_dir]
Протокол HTTP. Запросы/ответы
Постоянные и непостоянные
соединения
Протокол HTTP поддерживает постоянные и
непостоянные соединения (версия 1.0 –
только непостоянные). При непостоянном
соединении протокол TCP получает только
один объект, а при постоянном соединении
(для версии 1.1 используется по
умолчанию) – все объекты. Клиенты и
серверы с поддержкой HTTP 1.1 можно
настроить и для непостоянного соединения.
Пример запроса по HTTP
произвольного файла
Общий формат HTTP-запроса
Пример запроса к серверу
GET / HTTP/1.1
Host: iipo.tu-bryansk.ru
User-Agent: Mozilla/5.0
Connection: keep-alive
Keep-Alive: 300
Accept-Encoding: gzip,deflate
Accept: text/css,*/*;q=0.1
Accept-Language: ru-ru,ru
Accept-Charset: windows-1251,utf-8
Формат HTTP-ответа
Пример ответа сервера
HTTP/1.0 200 OK
Date: Sun, 18 Nov 2007 22:45:58 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: PHP/5.2.3
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Sun, 18 Nov 2007 22:45:58 GMT
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 4657
Content-Type: text/html
Connection: keep-alive
(data data data …)
HTTP методы




HTTP/1.0
GET
POST
HEAD

Запрос только
заголовков отклика
без возврата объекта
HTTP/1.1
 GET, POST, HEAD
 PUT


Загрузка объекта на
сервер по указанному
URL
DELETE

Удаление объекта на
сервере по
указанному URL
Коды HTTP-откликов





200 OK:
Запрос успешно обработан, объект получен и включен в
ответ.
301 Moved Permanetly:
Объект перемещен; новый URL-адрес указан в строке
ответа Location:. Программа клиента автоматически
выполнит запрос по новому адресу.
400 Bad Request:
Общая ошибка, вызванная невозможностью
интерпретации запроса сервером.
404 Not Found:
Запрашиваемый объект не найден на сервере.
505 HTTP Version Not Supported:
Указанная в запросе версия HTTP не поддерживается
сервером.
Проксирование HTTP-трафика

Цель проксирования – предоставление
клиенту результата без обращения к
оригинальному серверу
Использование прокси серверов
Пример эффективного
проксирования
Достоинства HTTP



Простота. Протокол настолько прост в реализации, что
позволяет с лёгкостью создавать не только клиентские
приложения, но и простые сервера.
Расширяемость. Вы можете легко расширять
возможности протокола благодаря внедрению своих
собственных заголовков сохраняя совместимость с
другими клиентами и серверами. Они будут игнорировать
неизвестные им заголовки, но при этом вы можете
получить необходимый вам функционал при решении
специфической задачи.
Распространённость. При выборе протокола HTTP для
решения конкретных задач немаловажным фактором
является его распространённость. Как следствие, это
обилие различных документаций по, включение удобных
в использовании средств разработки в популярные IDE,
поддержка протокола в качестве клиента многими
программами и обширный выбор среди хостинговых
компаний с серверами HTTP.
Недостатки HTTP



Большой размер пакетов. Использование текстового формата в
протоколе порождает соответствующий недостаток: большой размер
сообщений по сравнению с передачей двоичных данных. Из-за этого
возрастает нагрузка на оборудование при формировании, обработке
и передаче сообщений. Для решения данной проблемы в протокол
встроены средства для обеспечения кэширования на стороне
клиента.
Отсутствие «навигации». Хотя протокол разрабатывался как
средство работы с ресурсами сервера, у него отсутствуют в явном
виде средства навигации среди этих ресурсов. Например, клиент не
может явным образом запросить список доступных файлов как в
протоколе FTP.
Нет поддержки распределенности. Протокол HTTP
разрабатывался для решения типичных бытовых задач где само по
себе время обработки запроса должно занимать незначительное
время или вообще не приниматься в расчёт.
Понятие FTP
File Transfer Protocol («протокол передачи
файлов») или просто FTP — сетевой
протокол, предназначенный для передачи
файлов в компьютерных сетях. Протокол
FTP позволяет подключаться к серверам
FTP, просматривать содержимое каталогов и
загружать файлы с сервера или на сервер,
кроме того, возможен режим передачи
файлов между серверами.
Спецификация FTP
Первоначальная спецификация протокола
описана в RFC 959. В настоящее время
разработаны версии FTP для работы с IPv6
(RFC 2428 – FTP Extensions for IPv6 and
NATs).
Протокол файлового обмена
Режимы работы FTP
Существуют два возможных режима работы
FTP клиента и сервера:


активный
пассивный
Схема работы протокола ftp в
активном режиме
Схема работы протокола ftp в
пассивном режиме
FTP-команды и ответы
Примеры команд:
 USER username
 PASS password
 LIST возвращает список
объектов в текущей
директории
 RETR filename
получение файла
 STOR filename
загрузка файла на
сервер
Примеры кодов возврата:
 331 Username OK,
password required
 125 data connection
already open;
transfer starting
 425 Can’t open data
connection
 452 Error writing
file
Формат строки подключения
Общий формат строки подключения, воспринимаемый
практически всеми выглядит следующим образом:
ftp://[user[:password]]@host[:port][/dir],
где user – логин пользователя, password – пароль
пользователя, host – доменное имя сервера или его IPадрес, port – номер сетевого порта (в случае, если сервер
работает на нестандартном порту), dir – каталог, который
должен стать текущим после подключения к FTP-серверу.
Логин пользователя и его пароль записываются в открытом
виде. Например:
ftp://admin:super_passwd@iipo.tu-bryansk.ru
ftp://admin@iipo.tu-bryansk.ru:21
ftp://192.168.128.5:21/pub
ftp://82.179.88.34
Электронная почта – e-mail
Адрес электронной почты – обозначение, установленное
RFC 2822, однозначно идентифицирующее почтовый
ящик, в который следует доставить сообщение электронной
почты.
Адрес состоит из двух частей, разделённых символом «@».
Левая часть указывает имя почтового ящика, часто оно
совпадает с логином пользователя. Правая часть адреса
указывает доменное имя того сервера, на котором
расположен почтовый ящик.
Например:
admin@ctam.tu-bryansk.ru, где
admin – имя пользователя;
ctam.tu-bryansk.ru – доменное имя сервера, на котором
располагается электронный ящик.
Базовые сведения о протоколе
SMTP
В качестве транспортного средства доставки
сообщений в Интернет выступает SMTP
(Simple Mail Transfer Protocol, простой
протокол передачи почты), который был
стандартизован в виде RFC 821.
Упрощенная схема передачи
почтовых сообщений
Примерная схема работы webпочты
Этапы передачи почтового
сообщения






Соединение почтового клиента с SMTP-сервером
отправителя;
Передача SMTP-серверу информации о том, кому
предназначается почта и кто является отправителем;
Проверка SMTP-сервером корректности данных об
адресате и адресанте и принятие письма (с
заголовками и телом письма);
Постановка письма в очередь доставки;
DNS-запрос о почтовых серверах (MX-записи) для
домена адресата;
Попытка соединения SMTP-сервера отправителя с
почтовыми серверами адресата, имеющими
наибольший приоритет. Если попытка неудачна,
делаются ещё попытки соединения с резервными
почтовыми серверами домена адресата;
Этапы передачи почтового
сообщения: 2





Передача письма в случае удачного соединения
с почтовым сервером домена адресата, либо
постановка в очередь для попытки переслать
письмо позже, в случае неудачи;
Прием SMTP-сервером домена адресата письма
Проверка письма на предмет его похожести на
спам (опционально)
Передача его модулю, который занимается
хранением писем и выдачей их адресатам по
протоколу POP3, IMAP или другим;
Соединение адресата с POP3 или IMAP сервером,
аутентификация и получение письма адресатом.
Пример взаимодействия с
SMTP-сервером
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 ctam.tu-bryansk.ru
HELO yandex.ru
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <user@yandex.ru>
250 user@yandex.ru... Sender ok
RCPT TO: <admin@ctam.tu-bryansk.ru>
250 admin@ctam.tu-bryansk.ru ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 ctam.tu-bryansk.ru closing connection
Базовые команды SMTP













HELO <SP> <domain> <CRLF>
MAIL <SP> FROM:<reverse-path> <CRLF>
RCPT <SP> TO:<forward-path> <CRLF>
DATA <CRLF>
RSET <CRLF>
SEND <SP> FROM:<reverse-path> <CRLF>
SOML <SP> FROM:<reverse-path> <CRLF>
SAML <SP> FROM:<reverse-path> <CRLF>
VRFY <SP> <string> <CRLF>
EXPN <SP> <string> <CRLF>
HELP <SP> <string> <CRLF>
NOOP <CRLF>
QUIT <CRLF>
Пример заголовков письма
Received: from smtp1.yandex.ru (smtp1.yandex.ru [213.180.223.87])
by tower.tts.debryansk.ru (8.13.8/8.13.8) with ESMTP id kBEMe5U9026669
for <phantom@online.debryansk.ru>; Fri, 15 Dec 2006 01:40:05 +0300
Received: from [84.42.57.195] ([84.42.57.195]:41232 "EHLO [84.42.57.195]"
smtp-auth: "user" TLS-CIPHER: <none> TLS-PEER-CN1: <none>)
by mail.yandex.ru with ESMTP id S2077041AbWLNWj5 (ORCPT
<rfc822;phantom@online.debryansk.ru>);
Fri, 15 Dec 2006 01:39:57 +0300
X-Comment: RFC 2476 MSA function at smtp1.yandex.ru logged sender identity as: user
Date: Fri, 15 Dec 2006 01:35:14 +0300
From: user <user@yandex.ru>
X-Mailer: The Bat! (v3.71.03) Professional
Reply-To: user <user@yandex.ru>
X-Priority: 3 (Normal)
Message-ID: <169155069.20061215013514@yandex.ru>
To: phantom@online.debryansk.ru
Subject: Test mail message
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----------681C016910860C8F"
X-Virus-Scanned: ClamAV 0.88.5/2334/Thu Dec 14 22:46:52 2006 on tower.tts.debryansk.ru
X-Virus-Status: Clean
X-UIDL: 6P4!!RS`"!daU!!dLp!!
That all...
MIME расширения


MIME: multimedia mail extension, RFC 2045, 2056
additional lines in msg header declare MIME content type
MIME version
method used
to encode data
multimedia data
type, subtype,
parameter declaration
encoded data
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
Базовые сведения о протоколе
POP3
В некоторых небольших узлах Интернет бывает
непрактично поддерживать систему передачи сообщений
(MTS – Message Transport System).
Но доступ к электронной почте необходим как для таких
малых узлов, так и индивидуальных ЭВМ. Для решения этой
проблемы разработан протокол POP3 (Post Office
Protocol – Version 3, STD: 53. M. Rose, RFC-1939). Этот
протокол обеспечивает доступ узла к базовому почтовому
серверу.
POP3 (порт 110) не ставит целью предоставление широкого
списка манипуляций с почтой, он лишь получает и стирает
почтовые сообщения.
Более продвинутый и сложный протокол IMAP4
обсуждается в RFC-2060 (порт 143). Об аутентификации в
POP3 можно прочесть в документе RFC-1734.
POP3 протокол








авторизация
client commands:
 user: declare username
 pass: password
server responses
 +OK
 -ERR
транзакции, client:
list: list message numbers
retr: retrieve message by
number
dele: delete
quit
S:
C:
S:
C:
S:
+OK POP3 server ready
user bob
+OK
pass hungry
+OK user successfully logged
C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:
list
1 498
2 912
.
retr 1
<message 1 contents>
.
dele 1
retr 2
<message 1 contents>
.
dele 2
quit
+OK POP3 server signing off
on
Понятие доменов
Домен – область иерархического пространства доменных
имён сети Интернет, которая обозначается уникальным
доменным именем.
Доменное имя – символьное имя домена. Должно быть
уникальным в рамках одного домена. Полное имя домена
состоит из имён всех доменов, в которые он входит,
разделённых точками. Например, полное имя www.tubryansk.ru. обозначает домен третьего уровня www, который
входит в домен второго уровня tu-bryansk, который входит в
домен .ru, который входит в корневой домен.
Доменное имя служит для адресации узлов сети Интернет и
расположенных на них сетевых ресурсов в удобной для
человека форме.
Доменная зона – совокупность доменных имён определённого
уровня, входящих в конкретный домен.
Например, зона ctam.tu-bryansk.ru. означает все доменные
имена третьего уровня в этом домене.
Система доменных имен
DNS - Domain Name System — система
доменных имён распределённая система
(распределённая база данных), способная по
запросу, содержащему доменное имя хоста
(компьютера или другого сетевого
устройства), сообщить IP адрес или (в
зависимости от запроса) другую
информацию
Иерархия доменных имен
DNS протокол
DNS функционирует на принципе делегирования полномочий.
Каждая машина либо знает ответ на вопрос, либо знает кого
спросить. При правильном функционировании система
замкнута, т.е. если запрошенная информация имеется у коголибо, то она будет найдена и сообщена клиенту, либо, если
вопрос не имеет ответа, клиент получит сообщение о
невозможности получения ответа на вопрос.
В основе работы DNS лежит соответствующий сетевой
протокол также с названием DNS. DNS-протокол использует
для работы TCP- или UDP-порт 53 для ответов на запросы.
Например, браузер перед запросом некоторого ресурса
выделяет из URL имя, посылает запрос на преобразование
DNS серверу, который в свою очередь в случае успешного
преобразования, возвращает пакет с запрошенной клиентом
информацией. После чего браузер может выполнять
необходимые операции по запросу ресурсов с сервера с
заданным IP–адресом.
Дополнительные функции DNS
Помимо преобразования имени хостов в IP-адреса,
DNS выполняет еще несколько важных функций:
 Поддержка псевдонимов серверов.
 Поддержка псевдонимом почтовых серверов.
 Распределение загрузки.
Основные спецификации DNS содержатся в
документах RFC 1034 и RFC 1035. Кроме того,
некоторые дополнения можно найти и в других
RFC. В виду достаточно высокой сложности DNS,
мы с вами коснемся только базовых ее понятий.
Пример итеративного разрешения
DNS имени
Размещение корневых доменных
серверов
?
Download