3. Назначение уровней
●
●
●
●
Физический: управление средой, сигналом,
кодирование потока битов
Канальный: физическая адресация, передача между
двумя интерфейсами
Сетевой: логическая адресация, передача между двумя
хостами, передача в гетерогенных сетях
Транспортный: надежная доставка, передача между
двумя приложениями, управление потоком байтов
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 -Крикет Ли, Пол Альбитц
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 ?
●
Невозможно адресовать конкретное приложение
●
Нет надежной доставки данных
●
Нет порядка дейтограмм
●
Нет контроля потока
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 – управление соединением
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 – кодирование части
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