SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Сетевые протоколы
Дмитрий Смаль
ISO - OSI
Назначение уровней
●

●

●

●

Физический: управление средой, сигналом,
кодирование потока битов
Канальный: физическая адресация, передача между
двумя интерфейсами
Сетевой: логическая адресация, передача между двумя
хостами, передача в гетерогенных сетях
Транспортный: надежная доставка, передача между
двумя приложениями, управление потоком байтов
Ethernet

Ethernet
Ethernet
Ethernet – формат кадра

●

Преамбула (7 байт) – стабилизация среды

●

SFD (0xab) – начало кадра

●

MAC адреса (broadcast, interface)

●

Протокол верхнего уровня

●

Данные – до 1500 байт

●

CRC-32 – контрольная сумма

●

EFD – конец кадра
Hub, Switch, ARP
Ограничения ЛВС

●

Физические ограничения
– Затухание
– Коллизии

●

Ограничение числа хостов
– Сложность топологии
– Огромные таблицы коммутации

●

Несовместимость различных архитектур
IP

Internet Protocol
Схема IP сети
Задачи IP протокола

●

Глобальная адресация

●

Передача в гетерогенной сети (сегментация)

●

Маршрутизация пакетов
IP – адресация
●

94.100.191.201 – один из адресов Mail.Ru

●

127.0.0.1 – всегда адрес лок. Компьютера

●

94.100.190.0/23 – адрес подсети

●

●

10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 – private ip (не
уникальные адреса)
224.0.0.0 – 239.255.255.255 – multicast ip
Иерархия IP адресов
IP дейтограмма
Алгоритм роутера
●

Получение дейтограммы, определение ip получателя

●

Поиск в таблице маршрутизации

●

Не найдено → отбрасываем пакет

●

●

Выбор наиболее приоритетного маршрута (по
префиксу, по дистанции, по ширине канала)
Передача дейтограммы через нужный интерфес
Маршрутизация
Статическая: конфиг
Внутренняя: RIP и OSPF
●

Работает в небольших сетях

●

Каждый марштизатор вычис полную таблицу маршрутов

Внешняя: BGP и EGP
●

Обмен маршрутами на уровне автономных систем (АС)

●

Маршрутные политики
DNS

Domain Name System
DNS
●

●

●

●

/etc/hosts – локальные DNS записи, имеют приоритет
Домен – поддерево в пространстве доменных имен,
домены обладают иерархией
DNS зона (сегмент) – часть базы DNS, хранящаяся по
единым административным управлением, зоны не
перекрываются
RR – resource record – данные связанные с доменом

DNS и BIND -Крикет Ли, Пол Альбитц
DNS – domain vs zone
DNS – domain vs zone
DNS zone file
example.com. IN SOA ns.example.com. username.example.com. (
2007120710 ; serial number of this zone file
1d

; slave refresh (1 day)

2h

; slave retry time in case of a problem (2 hours)

4w

; slave expiration time (4 weeks)

1h

; maximum caching time in case of failed lookups (1 hour)

)
example.com. NS

ns

example.com. NS

ns.somewhere.example. ; backup nameserver

example.com. MX

10 mail.example.com.

; mailserver for example.com

@

20 mail2.example.com.

; equivalent to above line

MX

; ns.example.com is a nameserver
DNS zone file
example.com. A

192.0.2.1

; IPv4 address for example.com

AAAA 2001:db8:10::1
ns

; IPv6 address for example.com

A

; IPv4 address for ns.example.com

192.0.2.2

AAAA 2001:db8:10::2
www

; IPv6 address for ns.example.com

CNAME example.com.

; www.example.com is an alias
; for example.com

wwwtest

CNAME www

; wwwtest.example.com is an alias
; for www.example.com

mail

A

192.0.2.3

; IPv4 address for mail.example.com,

mail2

A

192.0.2.4

; IPv4 address for mail2.example.com

mail3

A

192.0.2.5

; IPv4 address for mail3.example.com
DNS – что еще ?
●

Authoritative vs Cache

●

Primary vs Slave, перенос зоны

●

Negative caching, TTL

●

in-addr.arpa
Что НЕ решает IP ?

●

Невозможно адресовать конкретное приложение

●

Нет надежной доставки данных

●

Нет порядка дейтограмм

●

Нет контроля потока
TCP

Transmission Control Protocol
Задачи протокола TCP

●

Адресация приложения в пределах хоста

●

Последовательное двустороннее соединение

●

Надежная доставка

●

Управление потоком
TCP
●

Порты
– Well-known: SSH=20, FTP=21,22, HTTP=80, SMTP=25,
POP3=110
– Привилегированные (<1024)
– Остальные (>=1024)

●

Сокеты (sockets)
– Серверные (bind, listen, accept)
– Клиентские (connect, send, recv)
TCP сегмент
TCP handshake

Round Trip Time (0.5ms / 150ms)
TCP сервер
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1', 8080))
s.listen(10)
while True:
conn, addr = s.accept()
data = conn.recv(1024)
conn.send(data)
conn.close()
TCP клиент
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8080))
s.send('Hello world')
print s.recv(1024)
s.close()
Как правильно читать данные из
сокета
http://docs.python.org/2/howto/sockets.html
def myreceive(sock, msglen):
msg = ''
while len(msg) < msglen:
chunk = sock.recv(msglen-len(msg))
if chunk == '':
raise RuntimeError("broken")
msg = msg + chunk
return msg

Вопрос: откуда получить msglen ?
Как правильно писать данные в
сокет
http://docs.python.org/2/howto/sockets.html
def mysend(sock, msg):
totalsent = 0
while totalsent < len(msg):
sent = sock.send(msg[totalsent:])
if sent == 0:
raise RuntimeError("broken")
totalsent = totalsent + sent
HTTP

HyperText Transfer Protocol
HTTP – передача гипертекста
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
Accept: text/html
Connection: close
(пустая строка)
HTTP/1.1 200 OK
Server: Apache
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
(HTML)
URI vs URL
●

●

URI – идентификатор (mailto:me@tut.ru, tel:02, urn:isbn:0395-36341-1)
URL – определяет положение ресурса
(http://tom:abc@host.com/h/1.html?a=b)
http – протокол
tom:abc – логин / пароль
host.com – адрес сервера
/h/1.html – путь к ресурсу
a=b – параметры (query string)
Методы HTTP
OPTIONS – запрос методов сервера (Allow)
GET – запрос документа (Условный GET)
HEAD – аналог GET, но без тела запроса
POST – передача данных клиент
PUT – размещение файла по URI
DELETE – удаление файла по URI
TRACE, LINK, UNLINK, CONNECT - редко
Коды состояния HTTP
1xx – Информационные
2xx – Успешное выполнение
200 – OK
204 – NoContent (только заголовки)
206 – PartitialContent (часть ответа)
3xx – Перенаправления
301 – Moved Pemanently (SEO, кеширование)
302 – Found (логика работы сайта)
304 – Not Modified (при условном GET)
Коды состояния HTTP
4xx – Ошибка клиента
400 – Bad Request (размер, формат..)
401 – Unauthorized (запрос авторизации)
403 – Forbidden (allow, deny)
404 – Not Found
408 – Request Timeout (на чтение)
418 – I'm teapot
Коды состояния HTTP
5xx – Ошибка сервера
500 – Internal Server Error
502 – Bad Gateway (проксирование)
503 – Service Unavailable
504 – Gateway Timeout
505 – HTTP version not supported
507 – Insufficient Storage
Заголовки HTTP запросов
Host – указание домена, вирт. Хостинг
User-Agent – описание клиента
Accept-* - поддержка MIME типов, кодировок,
языков и т.п.
Cookie – куки для данной страницы
Referer – текущая страница
If-Modified-Since – условный GET
Connection – управление соединением
Заголовки HTTP ответов
Content-Type – MIME тип документа
Content-Length – размер документа
Content-Encoding – кодирование документа
Date – текущее время сервера
Expires – время актуальности документа
Last-Modified – время изменения файла
Set-Cookie – установка кук для данного URI
Connection – управление соединением
Email
Формат Email
From: Dmitry Smal <smal@corp.mail.ru>
To: Pupkin <v.pupkin@gmail.com>
Subject: party for everybody discuss
Date: Fri, 18 May 2012 08:17:59 -0700
Hi there!
Can't stop writing!
Bye bye!
Заголовки Email
●

From, To – от кого и кому письмо

●

Subject – тема письма

●

Date – дата отправки

Сс – “копия”, аналогичен To, но означает, что получатель
– не главный
●

Bcc – “скрытая копия”, аналогиче Сс, но получатели не
увидят email указанный в Bcc
●

●

Reply-To – email адрес, на который нужно отвечать
Multipurpose Internet Message
Extensions
MIME
Задачи:

●

Передача не-ASCII текста через ASCII канал

●

Передача не-текстовых приложений

Передача сообщений из нескольких частей (multipart
body messages)
●

●

Передача не-ASCII заголовков
MIME
Заголовки:

●

Content-ID – уникальный ID части, для ссылок

●

Content-Type – MIME тип сообщения или части

●

Content-Disposition – расположение части

●

Content-Transfer-Encoding – кодирование части
Multipart Messages
To: =?UTF-8?B?0JTQuNC80LA=?= <mialinx@gmail.com>
Content-Type: multipart/mixed;
boundary="----4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794"
------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Ym9keQ==
------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794
Content-Type: application/octet-stream;
name="=?UTF-8?B?ZmF2aWNvbi5pY28=?="
Content-Disposition: attachment
Content-Transfer-Encoding: base64
AAABAAEAEBAAAAEAIABoBA..........AAAAAAAA==
------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794--
Multipart HTTP POST
POST /send-message.html HTTP/1.1
Host: mail.example.com
Referer: http://mail.example.com/send-message.html
Content-Type: multipart/form-data; boundary=Asrf456BGe4h
Content-Length: (суммарный объём включая дочерние заголовки)
--Asrf456BGe4h
Content-Disposition: form-data; name="DestAddress"
brutal-vasya@example.com
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageTitle"
Hello world
Процесс передачи Email
Агенты
MUA – Mail User Agent – программа, предоставляющая
пользовательский интерфейс, например MS Outlook,
sendmail

MTA – Mail Transfer Agent (relay) – программа (почтовый
сервер), отвечающая за пересылку почты к по сети. SMTP
протокол.

MDA – Mail Delivery Agent – программа, отвечающая за
доставку почты конечному пользователю. POP3 и IMAP
Агенты
SMTP – отправка почты
●

Работает поверх TCP, порт 25

●

Текстовый протокол
Команды: MAIL FROM, RCPT TO, DATA, QUIT
Статусы ответа: 2xx – команды выполнена
3xx – ожидаются доп. данные
4xx – временная ошибка
5xx – неисправимая ошибка

●

ESMTP – набор расширений для SMTP:
TLS, Авторизация, Pipelining
SMTP Пример
C:HELO
S:250 domain name should be qualified
C:MAIL FROM: <someusername@somecompany.ru>
S:250 someusername@somecompany.ru sender accepted
C:RCPT TO:<user1@company.tld>
S:250 user1@company.tld ok
C:DATA
S:354 Enter mail, end with "." on a line by itself
C:from: someusername@somecompany.ru
C:to: user1@company.tld
C:subject: tema
C:
C:Hi!
C:.
S:250 769947 message accepted for delivery
C:QUIT
Полезные утилиты
ifconfig – узнать IP и MAC адреса
http://whatismyip.com - узнать внешний IP
ping 8.8.8.8 – проверить доступность хоста
tracerout 8.8.8.8 – показать путь к хосту
nmap 8.8.8.8 – поиск открытых портов
host mail.ru – DNS запросы (nslookup, dig)
telnet 127.0.0.1 11211 – подключиться к порту
ab -n 10000 -c 500 http://localhost/index.html
Домашнее задание
●

Настройка nginx для отдачи статики

●

Настройка apache для запуска WSGI скриптов

●

“Hello world” приложение на Django

●

Настройка проксирования в nginx

Подробности: http://tp.mail.ru/blog/Web
Спасибо за внимание
Дмитрий Смаль, smal@corp.mail.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
Technopark
 
Владислав Животнев - Основы DNS
Владислав Животнев - Основы DNSВладислав Животнев - Основы DNS
Владислав Животнев - Основы DNS
Yandex
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
Technopark
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
Technopark
 
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IPСтажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
SmartTools
 
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействияАлексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
Yandex
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
Media Gorod
 
Сети и протоколы
Сети и протоколыСети и протоколы
Сети и протоколы
yaevents
 
DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...
DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...
DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...
it-people
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
 
Снижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINXСнижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINX
Andrii Podanenko
 

Was ist angesagt? (20)

Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
 
Владислав Животнев - Основы DNS
Владислав Животнев - Основы DNSВладислав Животнев - Основы DNS
Владислав Животнев - Основы DNS
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
Http session
Http sessionHttp session
Http session
 
DrupalCafe #1: Екатерина Маршалкина - Права на файлы Drupal в Unix-системах
DrupalCafe #1: Екатерина Маршалкина - Права на файлы Drupal в Unix-системахDrupalCafe #1: Екатерина Маршалкина - Права на файлы Drupal в Unix-системах
DrupalCafe #1: Екатерина Маршалкина - Права на файлы Drupal в Unix-системах
 
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IPСтажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Dyn DNS story
Dyn DNS storyDyn DNS story
Dyn DNS story
 
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействияАлексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
 
Administrarea DSpace
Administrarea DSpaceAdministrarea DSpace
Administrarea DSpace
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 
Сети и протоколы
Сети и протоколыСети и протоколы
Сети и протоколы
 
LDAP in infrastructure (RootConf 2009)
LDAP in infrastructure (RootConf 2009)LDAP in infrastructure (RootConf 2009)
LDAP in infrastructure (RootConf 2009)
 
Kubasov
KubasovKubasov
Kubasov
 
Statutes and codes of HTTP
Statutes and codes of HTTPStatutes and codes of HTTP
Statutes and codes of HTTP
 
DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...
DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...
DUMP-2015: «Полнотекстовый поиск по почте Mail.Ru» Дмитрий Калугин-Балашов, M...
 
WWW
WWWWWW
WWW
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
Снижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINXСнижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINX
 

Ähnlich wie Web весна 2013 лекция 2

Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
7bits
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
Yandex
 
Web весна 2013 лекция 11
Web весна 2013 лекция 11Web весна 2013 лекция 11
Web весна 2013 лекция 11
Technopark
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP
7bits
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
Technopark
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3
Technopark
 
2013 09 14 http-протокол
2013 09 14 http-протокол2013 09 14 http-протокол
2013 09 14 http-протокол
Yandex
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
Alexey Androsov
 

Ähnlich wie Web весна 2013 лекция 2 (20)

архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложения
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2
 
Принципы работы интернет.
Принципы работы интернет. Принципы работы интернет.
Принципы работы интернет.
 
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
 
Лекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide WebЛекция #2. Принцип организации World Wide Web
Лекция #2. Принцип организации World Wide Web
 
Web весна 2013 лекция 11
Web весна 2013 лекция 11Web весна 2013 лекция 11
Web весна 2013 лекция 11
 
DNS
DNSDNS
DNS
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"
 
Информационные ресурсы и сервисы Интернета
Информационные ресурсы и сервисы ИнтернетаИнформационные ресурсы и сервисы Интернета
Информационные ресурсы и сервисы Интернета
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
 
Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"
Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"
Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"
 
Aleksey Androsov
Aleksey AndrosovAleksey Androsov
Aleksey Androsov
 
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. WebКурс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3
 
2013 09 14 http-протокол
2013 09 14 http-протокол2013 09 14 http-протокол
2013 09 14 http-протокол
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
 
Инфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от QlogikИнфрраструктура ЦОД - интерконнект от Qlogik
Инфрраструктура ЦОД - интерконнект от Qlogik
 

Mehr von Technopark

СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 

Mehr von Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Web весна 2013 лекция 2

  • 3. Назначение уровней ● ● ● ● Физический: управление средой, сигналом, кодирование потока битов Канальный: физическая адресация, передача между двумя интерфейсами Сетевой: логическая адресация, передача между двумя хостами, передача в гетерогенных сетях Транспортный: надежная доставка, передача между двумя приложениями, управление потоком байтов
  • 6. Ethernet – формат кадра ● Преамбула (7 байт) – стабилизация среды ● SFD (0xab) – начало кадра ● MAC адреса (broadcast, interface) ● Протокол верхнего уровня ● Данные – до 1500 байт ● CRC-32 – контрольная сумма ● EFD – конец кадра
  • 8. Ограничения ЛВС ● Физические ограничения – Затухание – Коллизии ● Ограничение числа хостов – Сложность топологии – Огромные таблицы коммутации ● Несовместимость различных архитектур
  • 11. Задачи IP протокола ● Глобальная адресация ● Передача в гетерогенной сети (сегментация) ● Маршрутизация пакетов
  • 12. IP – адресация ● 94.100.191.201 – один из адресов Mail.Ru ● 127.0.0.1 – всегда адрес лок. Компьютера ● 94.100.190.0/23 – адрес подсети ● ● 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 – private ip (не уникальные адреса) 224.0.0.0 – 239.255.255.255 – multicast ip
  • 15. Алгоритм роутера ● Получение дейтограммы, определение ip получателя ● Поиск в таблице маршрутизации ● Не найдено → отбрасываем пакет ● ● Выбор наиболее приоритетного маршрута (по префиксу, по дистанции, по ширине канала) Передача дейтограммы через нужный интерфес
  • 16. Маршрутизация Статическая: конфиг Внутренняя: RIP и OSPF ● Работает в небольших сетях ● Каждый марштизатор вычис полную таблицу маршрутов Внешняя: BGP и EGP ● Обмен маршрутами на уровне автономных систем (АС) ● Маршрутные политики
  • 18. DNS ● ● ● ● /etc/hosts – локальные DNS записи, имеют приоритет Домен – поддерево в пространстве доменных имен, домены обладают иерархией DNS зона (сегмент) – часть базы DNS, хранящаяся по единым административным управлением, зоны не перекрываются RR – resource record – данные связанные с доменом DNS и BIND -Крикет Ли, Пол Альбитц
  • 19. DNS – domain vs zone
  • 20. DNS – domain vs zone
  • 21.
  • 22. DNS zone file example.com. IN SOA ns.example.com. username.example.com. ( 2007120710 ; serial number of this zone file 1d ; slave refresh (1 day) 2h ; slave retry time in case of a problem (2 hours) 4w ; slave expiration time (4 weeks) 1h ; maximum caching time in case of failed lookups (1 hour) ) example.com. NS ns example.com. NS ns.somewhere.example. ; backup nameserver example.com. MX 10 mail.example.com. ; mailserver for example.com @ 20 mail2.example.com. ; equivalent to above line MX ; ns.example.com is a nameserver
  • 23. DNS zone file example.com. A 192.0.2.1 ; IPv4 address for example.com AAAA 2001:db8:10::1 ns ; IPv6 address for example.com A ; IPv4 address for ns.example.com 192.0.2.2 AAAA 2001:db8:10::2 www ; IPv6 address for ns.example.com CNAME example.com. ; www.example.com is an alias ; for example.com wwwtest CNAME www ; wwwtest.example.com is an alias ; for www.example.com mail A 192.0.2.3 ; IPv4 address for mail.example.com, mail2 A 192.0.2.4 ; IPv4 address for mail2.example.com mail3 A 192.0.2.5 ; IPv4 address for mail3.example.com
  • 24. DNS – что еще ? ● Authoritative vs Cache ● Primary vs Slave, перенос зоны ● Negative caching, TTL ● in-addr.arpa
  • 25. Что НЕ решает IP ? ● Невозможно адресовать конкретное приложение ● Нет надежной доставки данных ● Нет порядка дейтограмм ● Нет контроля потока
  • 27. Задачи протокола TCP ● Адресация приложения в пределах хоста ● Последовательное двустороннее соединение ● Надежная доставка ● Управление потоком
  • 28. TCP ● Порты – Well-known: SSH=20, FTP=21,22, HTTP=80, SMTP=25, POP3=110 – Привилегированные (<1024) – Остальные (>=1024) ● Сокеты (sockets) – Серверные (bind, listen, accept) – Клиентские (connect, send, recv)
  • 30. TCP handshake Round Trip Time (0.5ms / 150ms)
  • 31. TCP сервер import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1', 8080)) s.listen(10) while True: conn, addr = s.accept() data = conn.recv(1024) conn.send(data) conn.close()
  • 32. TCP клиент import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1', 8080)) s.send('Hello world') print s.recv(1024) s.close()
  • 33. Как правильно читать данные из сокета http://docs.python.org/2/howto/sockets.html def myreceive(sock, msglen): msg = '' while len(msg) < msglen: chunk = sock.recv(msglen-len(msg)) if chunk == '': raise RuntimeError("broken") msg = msg + chunk return msg Вопрос: откуда получить msglen ?
  • 34. Как правильно писать данные в сокет http://docs.python.org/2/howto/sockets.html def mysend(sock, msg): totalsent = 0 while totalsent < len(msg): sent = sock.send(msg[totalsent:]) if sent == 0: raise RuntimeError("broken") totalsent = totalsent + sent
  • 36. HTTP – передача гипертекста GET /wiki/страница HTTP/1.1 Host: ru.wikipedia.org Accept: text/html Connection: close (пустая строка) HTTP/1.1 200 OK Server: Apache Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close (пустая строка) (HTML)
  • 37. URI vs URL ● ● URI – идентификатор (mailto:me@tut.ru, tel:02, urn:isbn:0395-36341-1) URL – определяет положение ресурса (http://tom:abc@host.com/h/1.html?a=b) http – протокол tom:abc – логин / пароль host.com – адрес сервера /h/1.html – путь к ресурсу a=b – параметры (query string)
  • 38. Методы HTTP OPTIONS – запрос методов сервера (Allow) GET – запрос документа (Условный GET) HEAD – аналог GET, но без тела запроса POST – передача данных клиент PUT – размещение файла по URI DELETE – удаление файла по URI TRACE, LINK, UNLINK, CONNECT - редко
  • 39. Коды состояния HTTP 1xx – Информационные 2xx – Успешное выполнение 200 – OK 204 – NoContent (только заголовки) 206 – PartitialContent (часть ответа) 3xx – Перенаправления 301 – Moved Pemanently (SEO, кеширование) 302 – Found (логика работы сайта) 304 – Not Modified (при условном GET)
  • 40. Коды состояния HTTP 4xx – Ошибка клиента 400 – Bad Request (размер, формат..) 401 – Unauthorized (запрос авторизации) 403 – Forbidden (allow, deny) 404 – Not Found 408 – Request Timeout (на чтение) 418 – I'm teapot
  • 41. Коды состояния HTTP 5xx – Ошибка сервера 500 – Internal Server Error 502 – Bad Gateway (проксирование) 503 – Service Unavailable 504 – Gateway Timeout 505 – HTTP version not supported 507 – Insufficient Storage
  • 42. Заголовки HTTP запросов Host – указание домена, вирт. Хостинг User-Agent – описание клиента Accept-* - поддержка MIME типов, кодировок, языков и т.п. Cookie – куки для данной страницы Referer – текущая страница If-Modified-Since – условный GET Connection – управление соединением
  • 43. Заголовки HTTP ответов Content-Type – MIME тип документа Content-Length – размер документа Content-Encoding – кодирование документа Date – текущее время сервера Expires – время актуальности документа Last-Modified – время изменения файла Set-Cookie – установка кук для данного URI Connection – управление соединением
  • 44. Email
  • 45. Формат Email From: Dmitry Smal <smal@corp.mail.ru> To: Pupkin <v.pupkin@gmail.com> Subject: party for everybody discuss Date: Fri, 18 May 2012 08:17:59 -0700 Hi there! Can't stop writing! Bye bye!
  • 46. Заголовки Email ● From, To – от кого и кому письмо ● Subject – тема письма ● Date – дата отправки Сс – “копия”, аналогичен To, но означает, что получатель – не главный ● Bcc – “скрытая копия”, аналогиче Сс, но получатели не увидят email указанный в Bcc ● ● Reply-To – email адрес, на который нужно отвечать
  • 48. MIME Задачи: ● Передача не-ASCII текста через ASCII канал ● Передача не-текстовых приложений Передача сообщений из нескольких частей (multipart body messages) ● ● Передача не-ASCII заголовков
  • 49. MIME Заголовки: ● Content-ID – уникальный ID части, для ссылок ● Content-Type – MIME тип сообщения или части ● Content-Disposition – расположение части ● Content-Transfer-Encoding – кодирование части
  • 50. Multipart Messages To: =?UTF-8?B?0JTQuNC80LA=?= <mialinx@gmail.com> Content-Type: multipart/mixed; boundary="----4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794" ------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Ym9keQ== ------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794 Content-Type: application/octet-stream; name="=?UTF-8?B?ZmF2aWNvbi5pY28=?=" Content-Disposition: attachment Content-Transfer-Encoding: base64 AAABAAEAEBAAAAEAIABoBA..........AAAAAAAA== ------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794--
  • 51. Multipart HTTP POST POST /send-message.html HTTP/1.1 Host: mail.example.com Referer: http://mail.example.com/send-message.html Content-Type: multipart/form-data; boundary=Asrf456BGe4h Content-Length: (суммарный объём включая дочерние заголовки) --Asrf456BGe4h Content-Disposition: form-data; name="DestAddress" brutal-vasya@example.com --Asrf456BGe4h Content-Disposition: form-data; name="MessageTitle" Hello world
  • 53. Агенты MUA – Mail User Agent – программа, предоставляющая пользовательский интерфейс, например MS Outlook, sendmail MTA – Mail Transfer Agent (relay) – программа (почтовый сервер), отвечающая за пересылку почты к по сети. SMTP протокол. MDA – Mail Delivery Agent – программа, отвечающая за доставку почты конечному пользователю. POP3 и IMAP
  • 55. SMTP – отправка почты ● Работает поверх TCP, порт 25 ● Текстовый протокол Команды: MAIL FROM, RCPT TO, DATA, QUIT Статусы ответа: 2xx – команды выполнена 3xx – ожидаются доп. данные 4xx – временная ошибка 5xx – неисправимая ошибка ● ESMTP – набор расширений для SMTP: TLS, Авторизация, Pipelining
  • 56. SMTP Пример C:HELO S:250 domain name should be qualified C:MAIL FROM: <someusername@somecompany.ru> S:250 someusername@somecompany.ru sender accepted C:RCPT TO:<user1@company.tld> S:250 user1@company.tld ok C:DATA S:354 Enter mail, end with "." on a line by itself C:from: someusername@somecompany.ru C:to: user1@company.tld C:subject: tema C: C:Hi! C:. S:250 769947 message accepted for delivery C:QUIT
  • 57. Полезные утилиты ifconfig – узнать IP и MAC адреса http://whatismyip.com - узнать внешний IP ping 8.8.8.8 – проверить доступность хоста tracerout 8.8.8.8 – показать путь к хосту nmap 8.8.8.8 – поиск открытых портов host mail.ru – DNS запросы (nslookup, dig) telnet 127.0.0.1 11211 – подключиться к порту ab -n 10000 -c 500 http://localhost/index.html
  • 58. Домашнее задание ● Настройка nginx для отдачи статики ● Настройка apache для запуска WSGI скриптов ● “Hello world” приложение на Django ● Настройка проксирования в nginx Подробности: http://tp.mail.ru/blog/Web