1957 Советским Союзом первого искусственного спутника Земли Спутник-1 на случай войны Америке нужна надёжная система передачи информации Міністерство оборони США розробку проекту надійної системи передачі інформації на випадок війни Розробка була доручена Каліфорнійському університету Лос-Анджелеса Стенфордському дослідному центрові Університету штату Юта Університету штату Каліфорнія в Санта-Барбарі Advanced Research Projects Agency Network Мережа Агентства передових досліджень мережа об'єднала названі заклади рости і розвиватися 1 вересня 1969 року у Каліфорнійському університеті в Лос-Анджелесі - проблемою у створенні мережі було об’єднання фізично розділених мереж без зв’язку мережевих ресурсів постійними з’єднаннями Техніка, яка вирішила проблему отримала назву Комутація пакетів (packet switching) передбачає розбиття запитів даних на маленькі частини (пакети)
640 км Калифорнийском университете Лос-Анджелеса (UCLA) Стэнфордском исследовательском институте (SRI) провели сеанс связи LO, LOG, LOGIN эту дату можно считать днём рождения интернета
трансатлантичний кабель специфікація ITCP контролю передачі даних в Інтернеті
NCP - Network Control Protocol
Національний науковий фонд США National Science Foundation Network під'єдналось близько 10 тисяч комп'ютерів
стало можливим спілкування в реальному часі (чат) 27 years ago
ARPANET припинила своє існування, програвши конкуренцію NSFNet підключення до Інтернету телефонною лінією
маршрутизацією всього трафіку Інтернету тепер займались мережеві провайдери (постачальники послуг), а не суперкомп'ютери Національного наукового фонду Консорціум всесвітньої павутини W3C HTML 4.0 PNG CSS1, CSS2
Mosaic > IE
4 квітня Web Standards Project, Проект Веб-стандарти називати W3C стандартами, а не рекомендаціями яка визначила 10 головних проблем підтримки CSS в Opera та інших браузерах
default IE in MacOS
Международная космическая станция
Request-Response Model (request–reply, synchronous)
establishing a connection data exchange end of sessionобщение компютеров и общение людей между собой установка соидинения обмен конец сессии
frontend html / css / js / etc
backend database / server / data ops / cache / etc
describes how devices can communicate, and defines the format of data beign exchanged
правила передачі даних між двома пристроями метод компресії-стискання інформації, спосіб визначення завершення передачі одні — більшою надійністю другі — швидкістю передачі даних треті — простотою
The pen
The pen in box
The pen in box with declaration
The pen in box with declaration is delivering to receiver
The pen in box with declaration is delivered to receiver.
The pen in box with declaration is delivered to receiver. He got it, confirmed that he is receiver and got the box.
The pen in box with declaration is delivered to receiver. He got it & confirmed personality, unboxed and got the pen.
(sender) sender (pen) -> (sender) sender (pen + box) -> (provider) sender (pen + box + declaration) -> (delivery service) sender (pen + box + declaration + delivering) -> (delivery service) receiver (delivering + declaration + box + pen) -> (provider) receiver (declaration + box + pen) -> (receiver) receiver (box + pen) -> (receiver) receiver (pen)
протоколи поділяються на рівні кожен з яких виконує певну та взаємодіє з іншими частинами протоколу за чітко розробленими схемами інтернет працює на різних рівнях фізичний (кабелі, роутери, маршрутизатори, ) поверх - є стек/набір мережевих протоколів (tcp/ip) перетворення інформації при її руху по рівнях
TCP - Connection-oriented (3-way handshake) UDP - Connectionless
A three-way-handshake is a method used in a TCP/IP network to create a connection between a local host/client and server. It is a three-step method that requires both the client and server to exchange SYN and ACK (acknowledgment) packets before actual data communication begins. port UDP can use "0" port (means no port)
TCP - Connection-oriented (3-way handshake) UDP - Connectionless
A three-way-handshake is a method used in a TCP/IP network to create a connection between a local host/client and server. It is a three-step method that requires both the client and server to exchange SYN and ACK (acknowledgment) packets before actual data communication begins.
набір мережевих протоколів передачі даних IP & TCP - main protocols чотири рівні стека - (самий нижній) канальный (все шо звязано з фізичною передачою даних, пристрій до пристрою) - мережений (IP, передача даних між різними мережами) - транспортный (доставка даних, tcp, udp, ..) - прикладной (з яким найчастіше маємо справу як користувачі - браузер, почтові клієнти, месенджери, і тд) кожен рівень - абстрактний прот кожного рівня працює завдяки протоколам нижче в 1970 ARPA мережі у світі могли бути об'єднані у формі віртуальної «мережі мереж» ARPAnet була на основі TCP/IP Сьогодні стек використовується для зв'язку комп'ютерів в Інтернет
прикладний данные взаємодія програм з інформацією програма-клієнт та програма-сервер на кожному рівні дані називаються по своєму потік (TCP) і повідомлення (UDP) на транспортному — сегмент і пакет поштові SMTP та POP3 передача файлів — FTP та TFTP емуляція віддаленого терміналу — TELNET HTTP, DNS
транспортний транспортні послуги прикладним процесам TCP - Transmission Control Protocol забезпечує надійне доставляння байтових потоків UDP - User Datagram Protocol без установлення з'єднання не гарантує їхнього доставляння через порт
міжмережевий айпи ? структура пакетов (мало смысла, лучше общий принцип) уникальный идентификатор устройства
канальний рівень доступу до середовища передачі обмен сигналами закодироваными между 2ма устройствами как передать? как прочитать?
All People Seem To Need Data Processing
Open Systems Interconnection Basic Reference Model Первая вещь, с которой сталкивается любой, кто изучает сети — это модель OSI семиуровневая эталонная модель encapsulation Модель OSI была задумана ещё в 70-е годы позиционировалась как соперник стеку TCP/IP OSI помогает иллюстрировать зависимость одних протоколов от других the need for layered architecture Представляє рівневий підхід до мережі Вважається, що модель занадто складна, а її реалізація займе занадто багато часу
Прикладний рівень забезпечує взаємодію мережі й користувача всі прикладні програми, які використовують доступ до мережі такі як оглядач веб-сторінок, електронна пошта, віддалений доступ до файлів та інші used in TCP/IP HTTP, Telnet, DNS, FTP, DHCP
правильно відображає дані клієнту (якшо картинка) Сетевые услуги для прикладных процессов, таких как файловый доступ, печать, передача сообщений, базы данных
для підтримки і встановлення зєднання Стандартизированный интерфейс данных для прикладного уровня. Кодирование MIME, шифрование данных, конвертация, форматирование, сжатие
передача даних Межхостовое взаимодействие. Устанавливает, управляет и завершает соединения между приложениями
адресація Непрерывные соединения и надежность. Сегментация данных и их сбор в правильном порядке. Контроль потока передачи
маршрутизатор Логическая адресация и определение пути. Маршрутизация. Уведомления об ошибках доставки
Физическая адресация и доступ к среде передачи данных. Состоит из двух подуровней: - управление логической связью (LLC) - и контроль доступа к среде (MAC) кадры мост, коммутатор, сетевая карта
internet protocol address
Internet Protocol version 4
RFC - вересень 1981 року (upd січень 1980 року) 4 байтну форму запису (32-бітні адреси) 4 294 967 296 (4 млд) unique 4 десяткових чисел від 0 до 255 (2^8)
Subnetwork Purpose 0.0.0.0/8 Current network 10.0.0.0/8 Private network 100.64.0.0/10 Shared Address Space 127.0.0.0/8 Loopback 169.254.0.0/16 Link-local 172.16.0.0/12 Private network 192.0.0.0/24 IETF Protocol Assignments 192.168.0.0/16 Private network
зарезервовані (не можуть бути глобально маршрутизованими) 2011 року виділила останні п’ять блоків IP-адрес
Internet Protocol version 6 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/ 0000:0000:0000:0000:0000:0000:ae21:ad12 => ::ae21:ad12
IPv5 - всі непарні версії експериментальні розробка почалася 1992 року 2006 release раніше на інтернет-адресу виділяли 4 байти а протокол IPv6 виділяє на адресу 16 байтів 340 трильйонам адрес основний заголовок пакета збільшився лише у 2 рази: з 20 до 40 байт
IPv6 address IPv4 alias :: 0.0.0.0 ::1 127.0.0.1 ::xx.xx.xx.xx in-box IPv4 ::ffff:xx.xx.xx.xx IPv4 for servers without IPv6 support fe80:: — febf:: 169.254.0.0/16 fec0:: — feff:: site-local
16-bit number google "well-known ports"
2^16 = 65536 ports opens & listen for incoming connection root <= 2024 (well-known ports)
Network Address Translation IP Masquerading, Network Masquerading и Native Address Translation
компьютер может быть подключен к Интернету Напрямую / Через NAT (локальный IP-адрес) процесс трансляции локальных адресов во внешние Статический NAT Динамический NAT Перегруженный NAT (PAT - Port Address Translation)
Domain Name System
для людей проще запоминать буквенные аддреса, чем последовательность цифр IP-адреса ієрархічна система для отримання інфи по домену найчастіше - для перетворення імені хоста в IP-адресу одне централізоване джерело кожен сервер делегировать відповідальність за іншу частину кеширование информации уменьшения нагрузки на сеть сервера: авторитетні, неавторитетні 2014y - 308 root servers divided to 13 groups (a*, b*)
lowest = 5 min default = 24 hours
A (map IP to Host) CNAME (alias with different A record) MX (for sending an email)
Lookup Hosts on specific IP
➜ ✗ host cursor.education cursor.education has address 91.194.250.152 cursor.education mail is handled by 10 mx.yandex.ru.
➜ ✗ host -a cursor.education Trying "cursor.education" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43851 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0 ;; ANSWER SECTION: cursor.education. 14399 IN SOA ns7.rehost.com.ua. hostmaster.redo.com.ua. 2016021502 10200 3600 1209600 86400 cursor.education. 14399 IN NS ns8.rehost.com.ua. cursor.education. 14399 IN NS ns7.rehost.com.ua. cursor.education. 14399 IN A 91.194.250.152 cursor.education. 14399 IN TXT "v=spf1 a mx ip4:91.194.250.152 ~all" cursor.education. 14399 IN MX 10 mx.yandex.ru. Received 227 bytes from 8.8.8.8#53 in 128 ms
Field Description A Address AAAA / A6 Address IPv6 CNAME Canonical name MX Mail Exchanger NS Authoritative name server (DNS) SOA Start of Authority TXT Text string
ресурсний запис одиниці зберігання і передачі інформації в DNS інформація про домен кожен рес.запис: імя, тип і поле даних A - hostname <--> ip CNAME - псевдоним (для перенаправлення на інше ім'я) MX - Адрес почтового шлюза для домена (SMTP)
штекер/розетка port = ухо пара ip+port = socket возможность проложить трубку
Uniform Resource Locator
Уніфіко́ваний лока́тор ресу́рсів єдиний вказівник на ресурс як документ, чи зображення Тім Бернерс-Лі (HTTP, HTML, URI, W3C owner) # - якір (для внутрішньої адресації)
Uniform Resource Identifier
Уніфікований ідентифікатор ресурсів ідентифікує окремий абстрактний чи фізичний ресурс URIs identify and URLs locate
https://www.example.com Absolute URLs:
http://example.com http://www.example.com absolute includes protocol and domain
➜ ✗ traceroute cursor.education traceroute to cursor.education (91.194.250.152), 64 hops max, 52 byte packets 1 192.168.0.1 (192.168.0.1) 1.946 ms 5.349 ms 0.761 ms 2 77-123-168-1-ptr.volia-lviv.com (77.123.168.1) 17.323 ms 13.195 ms 37.056 ms 3 unknown.volia-lviv.com (77.120.32.202) 12.616 ms 11.017 ms 11.824 ms 4 v973.tengig3-2.diamond.volia.net (77.120.0.73) 32.960 ms 21.498 ms 39.309 ms 5 * * * 6 176.241.108.214 (176.241.108.214) 18.866 ms 19.270 ms 19.739 ms 7 * * * 8 dd.rehost.com.ua (91.194.250.152) 22.207 ms 20.224 ms 22.833 mshttp://www.monitis.com/traceroute/ (91.194.250.152)
$ telnet smtp.gmail.com 587 EHLO localhost STARTTLS MAIL FROM: <support@gmail.com>
HyperText Transfer Protocol
протокол прикладного рівня (osi) протокол передачи гипертекста гіпертекст - словник, енциклопедія текст шо містить ссилки на інші частини цього тексту, яке має до нього відношення сьогодні - використовується для передачі різних данних client-server network protocol запрос-ответ in use by the World-Wide Web since 1990
$ telnet google.com 80 GET / HTTP/1.1 Host: google.comhttps://www.ietf.org/rfc/rfc2616.txt
<protocol>://<server>/<path>
communication між client and the server всі операції/маніпуляції над конкретним URI-ресурсом фішкою протоколу - можливість клієнту задати в якому вигляді він хоче отримати відповідь формат, кодування, мова, тд
request-response mechanism client sending a request to server server generates a response resource identification each http request includes a URI (uniform resource identifier) statelessness the server does not maintail any information about the transaction meta data support metadata about information can be exchanged in the message
(request line) GET /index.html HTTP/1.0 (headers lines) Host: www.site.com Date: 123 User-Agent: Mozilla/1.0 (Chrome v0.5) Accept-Language: ru, en *Content-Length: message-payload (carriage line feed) (message body)request-line format (with examples):
(method) (resource-url) HTTP/(version) GET /index.html HTTP/1.0 GET http://ya.ru/index.html HTTP/1.1 POST http://olx.ua/post HTTP/1.1 HEAD /ping HTTP/1.0
anatomy of http request/response request-line = тип повідомлення хедерс - заголовки, характеризують тіло повідомлення Message-Body - тіло повідомлення, дані HTTP/1.0 - 1996 HTTP/1.1 - 1999 - keep-connection HTTP/2 - 2015 - binary, priorities
GET information is identified by the request-uri can Get static content POST (posting to blog, submission of user form) information is included in message body the actual function depends on request uri
GET /wiki/HTTP HTTP/1.0 Host: ru.wikipedia.org User-Agent: HTTPTool/1.0willmake a "GET" requestto http://ru.wikipedia.org/wiki/HTTPusing HTTP v1.0with user-agent "HTTPTool/1.0"
idempotent: a=4; non-idempotent: a++;
Method Idempotent Safe OPTIONS yes yes GET yes yes HEAD yes yes PUT yes no POST no no DELETE yes noidempotent can be called many times without different outcomes no effect when called one than once в алгебрі - повторное применение операции к объекту даёт тот же результат, что и одинарное safe must be used only for retrieval of data
(status line) HTTP/1.0 200 OK (header lines) Data: 123 Server: Apache/1.3.12 (Unix) Last-Modified: (data) Content-Type: text/html Content-Length: (message-payload) (carriage line feed) (message body)status-line format (with examples):
HTTP/(version) (status-code) (status-message) HTTP/1.0 200 OK HTTP/1.1 403 Forbidden HTTP/1.1 404 Not Found
1xx: Informational - not done yet 2xx: Success - you win 3xx: Redirection - you lose but try again 4xx: Client Error - you lose, your fault 5xx: Server Error - you lose, my badExamples:
http allows servers to redirect a client request to a different location
HTTP/1.1 302 Found Location: ...
http is stateless protocol manage state maintenance by shifting the burden to client in clear text (security issue)
web-browsers normally delete session cookies when the user closes the browser
Name, Value, Expires, Path, Domain
Cache-Control, Last-Modified and Expires
Cache-Control: no-cache Pragma: no-cache Cache-Control: private/public Cache-Control: max-age=31536000 Last-Modified: Wed, 25 Feb 2015 12:00:00 GMT Expires: Thu, 25 Feb 2016 12:00:00 GMT If-Modified-Since: Wed, 25 Feb 2015 17:42:04 GMT
Accept-Encoding: gzip, deflate Content-Encoding: gzip Content-Length: 1253
Response:
HTTP/1.1 401 Access Denied WWW-Authenticate: Basic realm="My Server" Content-Length: 0Request:
GET /securefiles/ HTTP/1.1 Host: www.httpwatch.com Authorization: Basic aHR0cHdhdGNoOmY=example ...
used for securely transmitting the data between the browser and server
question: чи будуть куки захищені?
port = 21 active & passive
TFTP = light ftp, read-only, udp port 69
Secury Shell, remote console access Auth by PKI, credentialsPuTTY
port 22, pki (publi key intrastructure), credentials (login & passw)
Remote Desktop Protocol, for remote graphical access
port = 3389
So, what are the steps to get the Google's page? connection, DNS, HTTP request, HTTP response, parse URL, render the page?
(draw restful approach, frontend & backend separation via API)
Resource naming:
google "swagger online example"
Request every n seconds
Request every n seconds \w wait-delay
caniuse.com 89.42%
tbd
Content Delivery Network
https://www.srihash.org/
механізм який дає можливість користувачу (браузеру) перевірити чи отриманий ресурс отримаманий без unexpected змін curl https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css > bootstrap.min.css cat bootstrap.min.css | openssl dgst -sha256 -binary | openssl enc -base64 -A show bad example with jsfiddle.net