Стек протоколов TCP/IP
Протокол • Протокол – это набор правил и процедур, регулирующих порядок осуществления связи. • Все компьютеры, участвующие в обмене, должны работать по одним и тем же протоколам, чтобы по завершении передачи вся информация восстанавливалась в первоначальном виде. • Стек протоколов – иерархически организованный набор сетевых протоколов, достаточный для организации взаимодействия узлов в сети.
Стек протоколов TCP/IP • = стек Internet = стек Do. D • Основы созданы в рамках проекта ARPANET • В настоящее время развивается IETF – Internet Engineering Task Force - Инженерный совет Интернета – Действует под эгидой ISOC (Общества Интернета, Internet Society) • Описан в виде набора спецификаций и стандартов RFC – RFC = Request for Comments – Каждый документ RFC имеет номер и текущий статус
Уровни стека TCP/IP • 1. Прикладной – HTTP, FTP, DNS • 2. Транспортный – TCP, UDP • 3. Сетевой – IP, ICMP, IGMP, RIP, IPsec, OSPF • 4. Канальный – Ethernet, Wireless Ethernet, Token Ring
Соответствие модели OSI
Стек протоколов TCP/IP Сетевой уровень
Протоколы сетевого уровня • • • IP/IPv 4/IPv 6 (Internet Protocol), ICMP (Internet Control Message Protocol), IGMP (Internet Group Management Protocol), RIP (Routing Information Protocol), OSPF (Open Shortest Path First). IPsec (Internet Protocol Security).
IP (Internet Protocol) • Базовый протокол • Адресация – IP-адрес • Фрагментация – Датаграммы (пакеты)-> фрагменты • RFC 791 – Обновления: RFC 1349, RFC 2474
IP-пакет (IP-datagram) Смеще ние в битах 0 -3 4 -7 8 -13 14 -15 0 Версия Размер заголовка DSCP ECN 32 64 Идентификатор Время жизни 16 -18 19 -31 Размер пакета Флаги Протокол Смещение фрагмента Контрольная сумма заголовка 96 Адрес источника 128 Адрес назначения 160 Опции (если размер заголовка > 5) 160 или 192+ Данные
IP-пакет (2) • Версия протокола – 4 бита – IPv 4 – 4, IPv 6 – 6 • Размер заголовка пакета – – в 32 -битных словах переменный, т. к. число опций не постоянно min – 5 (5× 32=160 бит, 20 байт), max – 15 (60 байт).
IP-пакет (3) • Differentiated Services Code Point (DSCP) – 5 бит – в первых спецификациях «тип обслуживания» (Type of Service) – используется для разделения трафика на классы обслуживания, например для установки приоритета • Explicit Congestion Notification (ECN) – Указатель перегрузки – Предупреждение о перегрузке сети без потери пакетов. – Является необязательной функцией и используется только если оба хоста её поддерживают.
IP-пакет (4) • Размер пакета – 16 -битный полный размер пакета в байтах, включая заголовок и данные; – min размер - 20 байт (заголовок без данных); – max — 65535 байт. – Пакеты большего размера, чем поддерживает канал связи, фрагментируются. • Идентификатор – используется для идентификации фрагментов пакета если он был фрагментирован.
IP-пакет (5) • Флаги контроля над фрагментацией – – 3 бита 0 (старший): должен быть равен 0 1: можно / нельзя фрагментировать (0/1) 2: последний фрагмент / есть еще фрагменты (0/1). • Смещение фрагмента – 13 бит, указывает смещение текущего фрагмента от начала передачи фрагментированного пакета в блоках по 8 байт, – Первый фрагмент в последовательности имеет нулевое смещение.
IP-пакет (6) • «Время жизни» (Time to Live, TTL) пакета – max количество маршрутизаторов (транзитных участков, hops); – каждый маршрутизатор уменьшает время жизни пакетов на единицу; – пакеты, время жизни которых стало равно нулю уничтожаются; – позволяет предотвратить хождение невостребованных пакетов; – отправившему посылается сообщение ICMP (Time Exceeded - 11).
IP-пакет (7) • Протокол – Указывает, данные какого протокола содержит пакет – Например: TCP (6), UDP (17), ICMP (1) • Контрольная сумма заголовка – 16 -битная контрольная сумма. – Каждый хост или маршрутизатор сравнивает контрольную сумму заголовка со значением этого поля и отбрасывает пакет, если они не совпадают. – Целостность данных IP не проверяет — она проверяется протоколами более высоких уровней (такими, как TCP или UDP), которые тоже используют контрольные суммы. – Пересчитывается на каждом шаге
IP-пакет (8) • Адрес источника – 32 -битный адрес отправителя пакета. – Может не совпадать с настоящим адресом отправителя из-за трансляции адресов (NAT). • Адрес назначения – 32 -битный адрес получателя пакета. • Опции – За адресом назначения может следовать поле дополнительных опций, но оно используется редко. – Размер заголовка в этом случае должен быть достаточным чтобы вместить все опции (с учетом дополнения до целого числа 32 -битных слов).
IP-адрес (v 4) • IPv 4 – 4 байта – Запись адреса: 195. 19. 243. 100 • IP-адрес состоит из двух частей: – Адрес подсети (начало) – Номер узла (окончание) • Информация о подсети необходима для маршрутизации • 2 способа определения адреса подсети – Классовая адресация – Бесклассовая адресация
Классовая адресация Leadi ng bits Bits for network number Bits for address Number of networks Addresses per network Start address End address Class A 0 8 24 128 16, 777, 216 0. 0 127. 255 Class B 10 16 16 16, 384 65, 536 128. 0. 0. 0 191. 255 Class C 110 24 8 2, 097, 152 256 192. 0. 0. 0 223. 255 Class D (multicast) 1110 not defined 224. 0. 0. 0 239. 255 Class E (reserved) 1111 not defined 240. 0 255
Замечание • В настоящее время классы адресов на практике не используются. Выделение адреса подсети выполняется с помощью маски подсети переменной длины (Variable Length Subnet Mask, VLSM).
Маска подсети • Маска подсети - битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. • Структура: – – непрерывный блок из « 1» , затем непрерывный блок из « 0»
Бесклассовая адресация • Запись: «IP-адрес/количество единичных бит в маске» • Чтобы получить адрес полсети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (побитового умножения) • Используется маршрутизаторами для перенаправления пакетов в нужную подсеть
Частные IP-адреса • Диапазоны адресов, выделенные для использования в локальных сетях • 10. 0 — 10. 255, • 172. 16. 0. 0 — 172. 31. 255, • 192. 168. 0. 0 — 192. 168. 255.
IP (v 6) • 16 байт (128 бит) – 2001: 0 db 8: 85 a 3: 0042: 0000: 8 a 2 e: 0370: 7334 • Бесклассовая адресация • В настоящее время поддерживается новыми устройствами и ОС – и не поддерживается старыми • Пока мало распространен в России
Коммутация пакетов • Фрагментирование, пересылка и “сборка” пакетов (datagramm) • Достоинства – Эффективное использование пропускной способности – Надежность • Недостатки – Замедляет скорость взаимодействия конкретной пары узлов
IP: надежность • IP – протокол без установки соединения (connectionless). • IP – протокол с негарантированной доставкой (best-effort delivery).
Протокол ICMP (Internet Control Message Protocol) • Протокол межсетевых управляющих сообщений • Обязательный протокол стека TCP/IP • Работает на сетевом уровне поверх протокола IP – Однако необходим для работы IP • RFC 792 – Обновления: RFC 950, 1122, 1812, 4443 и др. • Версии – ICMPv 4 – ICMPv 6
Назначение ICMP • Передача сообщений о проблемах, возникших при передаче данных – Узел недоступен, – Время жизни истекло, – Неверный параметр и др. • Сервисные функции – Перенаправление – Объявление, запрос маршрутизатора – Запрос маски адреса подсети • Диагностические приложения – ping – traceroute
Пакет ICMP Bits 0– 7 8– 15 0 Тип Код 32 16– 23 24– 31 Контр. сумма Данные • Объем и характер данных зависит от типа пакета
Правила генерации ICMP-пакетов • При потере ICMP-пакета никогда не генерируется новый. • ICMP-пакеты не генерируются в ответ на IPпакеты с широковещательным или групповым адресом – чтобы не вызывать перегрузку в сети. • При повреждении фрагментированного IP-пакета ICMP-сообщение отправляется только после получения первого повреждённого фрагмента – поскольку отправитель всё равно повторит передачу всего IP-пакета целиком.
Протокол IGMP (Internet Group Management Protocol) • Протокол управления групповой (multicast) передачей данных в IP-сетях – например, для поддержки потокового видео и онлайнигр • Работает на сетевом уровне поверх протокола IP • RFC 3376 • Версии – в Ipv 4 - IGMPv 3 – в IPv 6 заменен протоколом Multicast Listener Discovery
IGMP • Реализован в виде серверной и клиентской частей – Сервер – маршрутизатор – Клиент – узел сети, получающий групповой трафик. • Клиент – посылает уведомление о принадлежности к какойлибо группе локальному маршрутизатору • Маршрутизатор (сервер) – находится в ожидании уведомлений и периодически рассылает клиентам запросы.
Передаваемая информация • Запрос принадлежности (Membership Query Message) – рассылаются маршрутизаторами для выяснения принадлежности каждого узла к каким-либо группам (group membership state) и получения списка источников информации, от которых данный узел хочет получать сообщения (reception state). – Отчёт о принадлежности (Membership Report Message) – Возвращает маршрутизатору информацию о принадлежности к группе
Типы запросов принадлежности • Общие запросы (General Queries) – позволяют получить полную информацию для каждого из узлов; – маршрутизатор периодически рассылает эти запросы всем узлам, подключенным к его сети. • Запросы с указанием группы (Group-Specific Queries) – используются для определения состояния подписки для заданной группы узлов; – рассылаются по соответствующему групповому адресу.
Типы запросов принадлежности (2) • Запросы с указанием группы и источника (Groupand-Source-Specific Queries) – позволяет для каждого узла заданной группы определить, какие сообщения из всех, посылаемых заданными источниками, этот узел хочет получать.
Протоколы маршрутизации • Предназначены для обновления маршрутной информации – Используется маршрутизаторами • RIP (Routing Information Protocol) • OSPF (Open Shortest Path First) • BGP (Border Gateway Protocol)
Протокол RIP (Routing Information Protocol) • Первый протокол маршрутизации сети ARPANET • Работает на прикладном уровне поверх протокола UDP • RFC 1058 • Применяется в небольших сетях
RIP • Маршрутная информация – вектор, компонентами которого являются расстояния от данного маршрутизатора до всех известных ему сетей – метрика – “прыжки” (hops) – max = 15 hops – дополняется (удлиняется) за счет информации от других маршрутизаторов – периодически (раз в 30 сек) рассылается по сети • широковещательно => загрузка сети • Алгоритм Беллмана – Форда – поиск кратчайших путей в графе • Не годится для крупных сетей
Протокол OSPF (Open Shortest Path First) • Протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) • Работает на сетевом уровне поверх протокола IP • RFC 2328 • Учитывает состояние сети – метрика – «стоимость» пересылки данных по каналу • Используется для взаимодействия маршрутизаторов одной автономной системы (autonomous system)
Автономная система (AS) • Система IP-сетей и маршрутизаторов, управляемых одним или несколькими операторами, имеющими единую политику маршрутизации • ≈ провайдер • RFC 1930 • Каждая AS имеет уникальный номер (ASN) • На настоящий момент зарегистрировано около 40 тысяч автономных систем
OSPF: алгоритм • Поиск смежных (соседних) маршрутизаторов • Смежные маршрутизаторы синхронизирует между собой базу данных состояния каналов – обмен состояниями каналов между смежными маршрутизаторами – передача копии данных другим смежным маршрутизаторам. • Построение таблицы маршрутизации – каждый маршрутизатор строит граф – дерево кратчайших путей от себя к каждому известному пункту назначения (Алгоритм Дейкстры) – таблица маршрутизации формируется из своего дерева кратчайших путей.
Протокол BGP (Border Gateway Protocol) • Протокол граничного шлюза • Предназначен для обмена информацией между автономными системами (AS) – информация включает в себя список AS, к которым имеется доступ через данную систему. • Выбор наилучших маршрутов выполняется, исходя из правил, принятых в сети данной AS. • Является протоколом прикладного уровня и функционирует поверх протокола TCP.
Стек протоколов TCP/IP Транспортный уровень
Протокол TCP (Transmission Control Protocol) • Один из основных транспортных протоколов Интернета • Работает на транспортном уровне • Надежность – поток данных с предварительной установкой соединения – повторный запрос утерянных данных – уведомление о доставке • RFC 793 – обновления: RFC 1122, 3168, 6093, 6528
TCP • Порт – Числовой идентификатор – Возможность работы с несколькими клиентами на одном компьютере • адрес + порт = сокет (socket) • Данные – сегмент (segment) • Алгоритм работы – Установка соединения ( «рукопожатие» ) – Передача данных – Завершение соединения
Сегмент TCP Бит 0 0 — 3 4 — 9 10 — 15 16 — 31 Порт источника Порт назначения 32 Номер последовательности 64 Номер подтверждения 96 128 Смещение Зарезервиданных ровано Флаги Контрольная сумма Размер Окна Указатель важности 160 Опции (необязательное, но используется практически всегда) 160/ 192 + Данные
Сегмент TCP (2) • Порт источника – 16 бит – идентифицирует приложение клиента, с которого отправлены пакеты; – по возвращении данные передаются клиенту на основании номера порта источника. • Порт назначения – 16 бит – порт, на который отправлен пакет.
Стандартные TCP-порты • • • 20/21 — FTP 22 — SSH 23 — Telnet 25 — SMTP 80 — HTTP 110 — POP 3 443 — HTTPS (Secure HTTP) 1863 — MSN Messenger 2000 — Cisco SCCP (Vo. IP) 3389 — RDP 8080 — альтернативный порт HTTP
Сегмент TCP (3) • Номер последовательности (Sequence Number) – каждый байт передаваемых данных идентифицирован номером последовательности – 32 бита – это позволяет контролировать корректность передачи данных – операции с номером последовательности выполняются по модулю 2^32 – При установке соединения задается начальный номер – initial sequence number (ISN)
Сегмент TCP (4) • Номер подтверждения (Acknowledgment number) – если установлен флаг ACK – содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения • Смещение данных (Data offset ) – размер заголовка TCP в 4 -байтных (4 -октетных) словах. – начало блока данных – min = 5 слов, max = 15 (от 20 до 60 байт)
Сегмент TCP (5) • Зарезервировано (Reserved) – 6 бит – для будущего использования (дополнительные флаги) – должны устанавливаться в ноль – 5 -й и 6 -й уже определены: • Для уведомлений о перегрузках в сети • => зарезервировано 4 бита
Сегмент TCP (6) • Флаги (управляющие биты, управляющее слово) – 6 битовых флагов: • URG — использовать поле «Указатель важности» • ACK — использовать поле «Номер подтверждения» • PSH — (Push function) инструктирует получателя протолкнуть данные, накопившиеся в приемном буфере, в приложение пользователя • RST — оборвать соединения, сбросить буфер • SYN — синхронизация номеров последовательности • FIN — завершение соединения.
Сегмент TCP (7) • Окно (Window) – число, определяющее в байтах размер данных, которые отправитель готов принять. • Контрольная сумма – Рассчитывается на основании заголовка, псевдозаголовка (!) и данных – Сегмент должен быть кратен 16 -битам • Если длина сегмента не кратна 16 -ти битам, то она увеличивается до кратной 16 -ти за счет нулевых битов. • Биты заполнения (0) не передаются в сообщении и служат только для расчёта контрольной суммы. • При расчёте контрольной суммы значение самого поля контрольной суммы принимается равным 0.
Псевдозаголовок Биты 0 – 7 8 – 15 16 – 31 0 -31 IP-адрес отправителя 32 -63 IP-адрес получателя 64 -95 0 0 0 0 Протокол Длина TCP-сегмента • Для надежности передачи требуется контроль адреса отправителя и получателя – не передается в TCP-сегменте, – учитывается при расчете контрольной суммы.
Псевдозаголовок (2) • IP-адрес отправителя (Source address) • IP-адрес получателя (Destination address) • Протокол (Protocol) – 6 (=TCP) – см. поле «Протокол» в IP-пакете • Длина TCP-сегмента (TCP length) – TCP-заголовок + данные – без учета псевдозаголовка
Сегмент TCP (8) • Указатель важности – 16 -бит – порядковый номер октета (байта), которым заканчиваются важные (urgent) данные; – принимается во внимание только для пакетов с установленным флагом URG. • Опции – применяются в некоторых случаях для расширения протокола; – иногда используются для тестирования; – практически всегда включают: • No-operation (0 x 1, 1 байт) + End of option list (0 x 0, 1 байт) • Временные отметки (timestamps) (4 байта).
Логика работы TCP • Установка соединения ( «рукопожатие» ) – 0) пассивное открытие (сервер) • привязка к порту (Bind), • открытие порта для подключений (Listen) – 1) SYN (клиент) • Случайный номер последовательности (A) – 2) SYN-ACK (сервер) • Номер подтверждения = A + 1 • Случайный номер последовательности (B) – 3) ACK (клиент) • Номер последовательности = A + 1 • Номер подтверждения = B + 1
Логика работы TCP (2) • Передача данных – Упорядоченная передача данных • учет номера последовательности – Неподтвержденные пакеты высылаются заново – Контроль ошибок • повторная отправка пакетов с неверной контрольной суммой – Контроль передачи (flow control) • управление объемом передаваемых данных путем изменения размеров окна • при переполнении буфера приема передача приостанавливается (размер окна = 0) – Контроль перегрузки сети
Логика работы TCP (3) • Завершение соединения (Close) – 1) FIN (узел 1) – 2) FIN-ACK (узел 2) – 3) ACK (узел 1)
Применение TCP • • • RDP (Remote Desktop Protocol) HTTP (Hyper. Text Transfer Prоtocоl), SMTP (Simple Mail Transfer Protocol), POP 3 (Post Office Protocol Version 3), IMAP (Internet Message Access Protocol), FTP (File Transfer Protocol), SSH (Secure Shell), Работа с базами данных Удаленное взаимодействие программ – Компонентное программирование
Протокол UDP (User Datagram Protocol) • Один из основных транспортных протоколов Интернета • Работает на транспортном уровне • Простая модель передачи – – – без предварительной установки соединения без контроля порядка прихода и целостности данных высокая производительность – низкая надежность «Unreliable Datagram Protocol» Надежная передача в случае необходимости должна реализовываться пользовательским приложением • RFC 768
Датаграмма UDP Биты 0 - 15 16 - 31 0 -31 Порт отправителя (Source port) Порт получателя (Destination port) 32 -63 Длина датаграммы (Length) Контрольная сумма (Checksum) 64 -. . . Данные (Data)
Датаграмма UDP (2) • Порт отправителя – 16 бит – идентифицирует приложение клиента, с которого отправлены данные; – задает точку возврата (для отсылки ответных датаграмм). • Порт получателя – 16 бит – порт, на который отправлена датаграмма.
Датаграмма UDP (3) • Длина датаграммы – длина всей датаграммы (заголовок + данные) в байтах – min = 8 байт (только заголовок) – max = 65507 = 65535 - 8 (UDP-заголовок) - 20 (IPзаголовок). • Контрольная сумма – для проверки заголовка и данных на ошибки. – вычисляется на основании заголовка, псевдозаголовка (!) и данных – использование не обязательно • заполняется нулями
Псевдозаголовок Биты 0 – 7 8 – 15 0 -31 IP-адрес отправителя 32 -63 16 – 31 IP-адрес получателя 64 -95 0 0 0 0 Протокол Длина UDPдатаграммы • Для контроля адресов отправителя и получателя – не передается в самой UDP-датаграмме, – учитывается при расчете контрольной суммы.
Применение UDP • • • DNS (Domain Name System) SNMP (Simple Network Management Protocol) RIP (Routing Information Protocol) DHCP (Dynamic Host Configuration Protocol) Голосовой и видеотрафик – при потере отдельных пакетов качество уменьшается, но незначительно
Стек протоколов TCP/IP Безопасность передачи данных
Безопасность передачи данных • Необходимо защищать критические важные данные при передаче по открытым каналам связи • Шифрование данных – Симметричное (закрытый ключ) – Ассиметричное (закрытый + открытый ключ) = шифрование с открытым ключом • Основные протоколы (стандарты IETF) – IPSec – SSL (TLS) – SSH
IPSec • IP Security • Набор протоколов для обеспечения защиты данных, передаваемых по протоколу IP – подтверждение подлинности – шифрование IP-пакетов – протоколы для защищённого обмена ключами • Функционирует на сетевом уровне • Используется для безопасной передачи IPпакетов по любому транспортному протоколу – VPN (Virtual Private Network)
VPN (Virtual Private Network) • Технологии, позволяющие обеспечить одно или несколько защищенных сетевых соединений (защищенную логическую сеть) поверх другой сети (Интернет) • Виды соединений: – узел-узел, – узел-сеть, – сеть-сеть. • Туннелирование
Туннелирование (tunneling) • Процесс создания защищенного логического соединения между двумя узлами посредством инкапсуляции различных протоколов • Особенность – инкапсулируемый протокол относится к тому же (в IPSec) или более низкому уровню (в SSH), чем используемый в качестве тоннеля.
Особенности IPSec • Преимущества: – работа на сетевом уровне (ниже, чем другие стандарты) • любой IP-трафик; – поддержка разных транспортных протоколов. • Недостатки: – сложность реализации; – дополнительные требования к оборудованию сети (маршрутизаторы, шлюзы); – отдельные реализации не всегда корректно взаимодействуют друг с другом.
SSL/TLS • Secure Sockets Layer • Transport Layer Security – развивает стандарт SSL – основан на SSL 3. 0 • Функционирует на прикладном уровне – поверх транспортного протокола TCP • Ориентирован на клиент-серверные приложения – дает возможность осуществлять взаимодействие клиента и сервера, чтобы предотвратить прослушивание и несанкционированный доступ
SSL/TLS (2) • Применение – – Web (HTTPS) E-mail (SMTP, POP 3, IMAP поддерживают SSL), обмен мгновенными сообщениями (instant messaging) VPN
Особенности SSL/TLS • Преимущества: – популярен в Интернет (используется в большинстве защищенных соединений) • Недостатки: – основан на транспорте TCP (нет возможности использовать UDP) • ограничение производительности; – дополнительные требования к программному обеспечению для поддержки TLS.
SSH • Secure Shell (SSH) • Функционирует на прикладном уровне – поверх транспортного протокола TCP • Назначение – проектировался для удаленного доступа к компьютеру через командную оболочку (как TELNET, но защищенный) – безопасная передача данных любой природы (файлы, потоки звука, видео) – туннелирование TCP-соединений (VPN)
Особенности SSH • Преимущества: – удобен для создания туннеля для приложений, использующих TCP/IP; – передача данных любой природы. • Недостатки: – трудность использования в сетях с большим числом шлюзов (брандмауэры); – большая нагрузка на внутрисетевой трафик; • транспорт – TCP (нет возможности использовать UDP).
Стек протоколов TCP/IP Прикладной уровень
Протокол HTTP • Hyper. Text Transfer Prоtocоl – Гипертекст – это набор элементов информации (объектов), организованных в сеть с помощью логических связей (гиперссылок) • Основной протокол Web • Работает на прикладном уровне – поверх транспортного протокола TCP • RFC 2616 (версия 1. 1) – Обновления: 2817, 5785, 6266
Протокол HTTP (2) • Основан на архитектуре клиент-сервер – Web-сервер = HTTP-сервер – клиент – Web-браузер – схема «запрос-ответ» • обмен HTTP-сообщениями • Основной объект манипуляции в HTTP – запрашиваемый ресурс – на ресурс указывает URI (Uniform Resource Identifier) в запросе клиента
Протокол HTTP (3) • Может поддерживать постоянное соединение • HTTP 1. 0 – одно TCP-соединение на запрос • HTTP 1. 1 позволяет использовать одно соединение на весь сеанс работы • Не поддерживает состояний – Не «помнит» предыдущих действий клиента – Поддержка состояний обычно реализуется серверным приложением (Web-сервером) • cookie-less • Предусматривает кэширование – Proxy-серверы – кэш Web-браузера
HTTP-сообщение • Стартовая строка (Starting line) – определяет тип сообщения; – обязательный элемент • Заголовки (Header Fields) – характеризуют тело сообщения, параметры передачи и прочие сведения; • Тело сообщения (Message Body) – данные сообщения – должно отделяться от заголовков пустой строкой.
Запрос (Request) • Стартовая строка – METHOD URI HTTP/Version – Метод (Method) – название запроса, одно слово заглавными буквами – URI определяет путь к запрашиваемому документу • обычно относительно данного сервера – Версия (Version) – 1. 1 или 1. 0
Запрос (2) • Основные методы – GET • используется для простого запроса содержимого указанного ресурса – HEAD • аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. • обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) – GET и HEAD – минимальный обязательный набор для реализации сервером
Запрос (3) • Основные методы – POST • применяется для передачи пользовательских данных заданному ресурсу (для обработки) • данные форм, загрузка файлов на сервер – PUT • применяется для загрузки ресурса на сервер (для изменения или создания ресурса с указанным URI) – OPTIONS • используется для определения возможностей Webсервера (список доступных методов) для ресурса (URI) • URI – «*» позволяет узнать возможности всего сервера • В ответ серверу следует включить заголовок Allow со списком поддерживаемых методов.
Запрос (4) • Пример: GET /html/rfc 2616 HTTP/1. 1 Host: tools. ietf. org Connection: keep-alive User-Agent: Mozilla/5. 0 (Windows NT 6. 1; WOW 64) Apple. Web. Kit/537. 4 (KHTML, like Gecko) Chrome/22. 0. 1229. 94 Safari/537. 4 Accept: text/html Accept-Encoding: gzip, deflate, sdch Accept-Language: ru-RU, ru; q=0. 8, en. US; q=0. 6, en; q=0. 4 Accept-Charset: windows-1251, utf-8; q=0. 7, *; q=0. 3 (пустая строка)
Ответ (Response) • Стартовая строка – HTTP/Version Status. Code Reason – Версия (Version) – как в запросе – Код состояния (Status Code) – трехзначное число • По коду статуса определяется дальнейшее содержимое сообщения и поведение клиента – Пояснение (Reason Phrase) — текстовое короткое пояснение к коду ответа для пользователя • не влияет на сообщение и является необязательным.
Ответ (2) • Коды состояния HTTP – 1 xx: Informational (информационные) • коды, информирующие о процессе передачи – 2 xx: Success (успешно) • запрос принят и оработан, в зависимости от статуса передаются заголовки и тело сообщения – 3 xx: Redirection (перенаправление) • для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI – 4 xx: Client Error (ошибка клиента) • в теле сообщения гипертекстовое пояснение – 5 xx: Server Error (ошибка сервера) • в теле сообщения – пояснение для пользователя
• Пример: Ответ (3) HTTP/1. 1 200 OK Date: Wed, 24 Oct 2012 11: 20: 59 GMT Server: Apache/2. 2. 21 (Debian) Content-Location: rfc 2616. html Last-Modified: Sat, 04 Aug 2012 22: 23: 52 GMT ETag: "1826238 -80871 -4 c 67819702 e 00; 4 cd 38 ac 2 bfd 5 e" Accept-Ranges: bytes Content-Encoding: gzip Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8 (пустая строка) . . .
Прокси-сервер (Proxy server) • Сервер (компьютер или программа), выступающий в качестве «посредника» между клиентом и удаленным сервисом – HTTP-proxy (Web-proxy) • Назначение – трансляция адресов • сервер «видит» IP-адрес прокси – кэширование данных • TTL = HTTP-заголовок Expires: • уменьшает сетевой трафик – фильтрация
Виды прокси-серверов • Forward proxy – «пересылающий» – на стороне клиента • Reverse proxy – «обратный» – на стороне сервера • Open proxy – «открытый»
DNS (Domain Name System) • Cистема доменных имён • Иерархическая распределённая система именования для компьютеров (хостов), ипользуемая в Интернете или в частной сети • Чаще всего используется для получения IPадреса по имени хоста (компьютера или устройства) • RFC 1034, RFC 1035
DNS (2) • Замена архитектуре с передачей файла hosts • Клиент-серверая модель • Иерархически организованные DNS-серверы взаимодействуют по определённому протоколу, образуя распределённую базу данных DNS • Протокол передачи информации в DNS – использует UDP в качестве транспорта – прикладной уровень
Соответствие имени и IP-адреса • Один IP-адрес может иметь множество имён – позволяет поддерживать на одном компьютере множество веб-сайтов – виртуальный хостинг • Одному имени может сопоставляться множество IP-адресов – позволяет балансировать нагрузку – для сильно востребованных ресурсов
Дерево доменных имен • Домен (domain) – узел в дереве имён – Может содержать подчиненные домены • • Max – 127 уровней Каждое имя – до 63 символов Max дляина доменного имени <= 254 символов Корень всего дерева DNS – корневой домен «. » – корневые серверы DNS • 13 серверов (A-M) + зеркала • Домены верхнего (первого) уровня (TLD) – Выделяются IANA (Internet Assigned Numbers Authority) – http: //www. iana. org/domains/root/db/
Дерево доменных имен (2) • Зона (zone) — часть дерева доменных имен, размещаемая как единое целое на некотором DNSсервере – Выделяется с целью делегирования ответственности за соответствующий (под)домен другому лицу или организации. – Зона – тоже дерево – Для повышения устойчивости системы обычно используется множество серверов • За счет делегирования и разделения на зоны в DNS обеспечивается распределенность администрирования и хранения имен
Дерево доменных имен (3)
Алгоритм работы DNS • Браузер – запрашивает IP-адрес для доменного имени (например, apmath. spbu. ru) у своего DNS-сервера – рекурсивный запрос (ответ содержит нужный ip-адрес) • DNS-сервер – если запись для имени есть в кэше – вернуть требуемый ip -адрес клиенту – иначе – запросить адрес у корневого сервера DNS • нерекурсивный запрос • Корневой сервер DNS – если запись для имени есть в кэше – вернуть ip-адрес – иначе – вернуть адрес домена 1 уровня (ru)
Алгоритм работы DNS (2) • DNS-сервер – если получен требуемый адрес – вернуть клиенту – иначе – запросить адрес у DNS- сервера 1 уровня • DNS-сервер домена 1 уровня (ru) – если запись для имени есть в кэше – вернуть ip-адрес – иначе – вернуть адрес домена 2 уровня (spbu. ru) • DNS-сервер – если получен требуемый адрес – вернуть клиенту – иначе – запросить адрес у DNS- сервера 2 уровня • DNS-сервер домена 2 уровня (spbu. ru) – вернуть ip-адрес
Итог • Рассмотрены отдельные протоколы, организующие работу стека TCP/IP на различных уровнях • Существуют и другие стеки протоколов – менее распространенные
Другие стеки протоколов • Стек протоколов OSI – реальный стек протоколов OSI, разработанный как часть проекта вместе с эталонной моделью OSI – оказался сложным и порой противоречивым в реализации, предполагал замену большинства существующих протоколов новыми на всех уровнях – не получил широкого распространения • Стек IPX/SPX – основные протоколы: Internetwork Packet Exchange (IPX) и Sequenced Packet Exchange (SPX) – использовался операционной системой Novell Net. Ware
Другие стеки протоколов (2) • Стек Net. BIOS/SMB – основные протоколы: Net. BEUI (Net. BIOS Extended User Interface) и NBF (Net. BEUI Frame), SMB (Server Message Block) – применялся в продуктах IBM и ранних версиях Windows NT • Стек Apple. Talk – применялся корпорацией Apple для Mac OS • Стек SNA (Systems Network Architecture) – набор протоколов, применяемых для сетей мейнфреймов (mainframe) IBM


