Web Request & Response – Internet evolution – Communication evolution



Web Request & Response – Internet evolution – Communication evolution

1 0


web-request-response-webinar

Internet Evolution, TCP/IP Model, Protocol, HTTP Protocol, Request/Response, Headers, Cookies, Session, NAT, DNS, URI/URL, Model OSI, Sniffers & Analyzers

On Github cursor-education / web-request-response-webinar

Web Request & Response

@itspoma / CURSOR Education

v1.92

Agenda

  • Evolution of Web
  • Model TCP/IP & OSI
  • Protocol definition & examples
  • IP Address & Socket & URL
  • NAT
  • DNS Service
  • HTTP protocol
  • Stateful (cookies & Sessions)
  • SSL & HTTPS
  • Packet analyzers & sniffers (\w browser extensions)
  • WebSockets overview
  • CDN & Checksum

Knowledge

  • How internet layers works?
  • What is IP and differences between IPv4/IPv6?
  • When the TCP & UDP uses?
  • What is DNS responsible for?
  • What are differences between GET/POST methods?
  • How to authorize user through the HTTP?
  • How real-time applications works?
  • How to use "Network" tag in Google DevTools.

Internet evolution

Internet Of Things (IoT)

Internet history timeline

  • 1961 – First packet-switching papers
  • 1966 – Merit Network founded
  • 1969 – ARPANET carries its first packets
  • 1980 – Ethernet standard introduced
  • 1982 – TCP/IP, SMTP
  • 1983 – Domain Name System (DNS)
  • 1985 – First .COM domain name registered
  • 1988 – OSI Reference Model released
  • 1990 – ARPANET decommissioned
  • 1990 – IMDb Internet movie database
  • 1991 – World Wide Web (WWW)
  • 1994 – Full text web search engines
  • 1995 – IPv6 proposed
  • 1998 – Google Search
  • 2001 – New top-level domain names activated
  • 2003 – Skype Internet voice calls
  • 2004 – Facebook social networking site
  • 2009 – Bing search engine
  • 2010 – Instagram

Internet evolution: 1969

  • United States Department of Defense
  • DARPA
  • Universities
  • ARPANET (Advanced Research Projects Agency Network)
  • 1st September - first server
  • Honeywell DP-516
  • 12/24 Kb RAM

1957 Советским Союзом
первого искусственного спутника Земли
Спутник-1
на случай войны Америке нужна надёжная система передачи информации

Міністерство оборони США
розробку проекту
надійної системи передачі інформації на випадок війни

Розробка була доручена
Каліфорнійському університету Лос-Анджелеса
Стенфордському дослідному центрові
Університету штату Юта
Університету штату Каліфорнія в Санта-Барбарі

Advanced Research Projects Agency Network
Мережа Агентства передових досліджень
мережа об'єднала названі заклади

рости і розвиватися
1 вересня 1969 року у Каліфорнійському університеті в Лос-Анджелесі

-
проблемою у створенні мережі було
об’єднання фізично розділених мереж
без зв’язку мережевих ресурсів постійними з’єднаннями

Техніка, яка вирішила проблему
отримала назву Комутація пакетів (packet switching)

передбачає розбиття запитів даних на маленькі частини (пакети)
              

Internet evolution: < 1971

  • 29th of October 1969 - first communication between computers ("LOG" message)
  • first email application (POP/IMAP protocol)
  • network used for sending emails
  • first mailing list, newsgroups, forums
  • actively evolve protocols

640 км
Калифорнийском университете Лос-Анджелеса (UCLA)
Стэнфордском исследовательском институте (SRI)
провели сеанс связи

LO, LOG, LOGIN

эту дату можно считать днём рождения интернета
              

Internet evolution: 1973-1974

  • UK & Norway
  • international network
  • Internet Transmission Control Program

трансатлантичний кабель

специфікація ITCP
контролю передачі даних в Інтернеті
              

Internet evolution: 1983

  • NCP > TCP/IP
  • "Internet" term

NCP - Network Control Protocol
              

Internet evolution: 1984

  • Domain Name System
  • NSFNet

Національний науковий фонд США
National Science Foundation Network
під'єдналось близько 10 тисяч комп'ютерів
              

Internet evolution: 1988

  • IRC (Internet Relay Chat)

стало можливим спілкування в реальному часі (чат)
27 years ago
              

Internet evolution: 1990

  • NSFNet owned
  • first Dial-up access

ARPANET припинила своє існування,
програвши конкуренцію NSFNet

підключення до Інтернету телефонною лінією
              

Internet evolution: 1991

  • NCSA Mosaic (till 1997)
  • http protocol, HTML, URI (Tim Berners-Li)

Internet evolution: 1991

  • NCSA Mosaic 1992

Internet evolution: 1992

  • HTML1

              

Internet evolution: 1994

  • internet providers
  • WWW Consorcium, W3C
  • HTML2
  • 10kk PCs, 30k web-sites

маршрутизацією всього трафіку Інтернету тепер займались мережеві провайдери (постачальники послуг), а не суперкомп'ютери Національного наукового фонду

Консорціум всесвітньої павутини

W3C
  HTML 4.0
  PNG
  CSS1, CSS2
              

Internet evolution: 1995

  • Netscape Navigator
  • Internet Explorer

Mosaic > IE
              

Internet evolution: 1998

  • Pope John Paul II founded "International Day for the Internet" (4th of March / 14th of December)
  • IE4, Netscape Navigator 4, IE5 beta (with javascript)
  • Web Standards Project
  • CSS Samurai

4 квітня

Web Standards Project, Проект Веб-стандарти
називати W3C стандартами, а не рекомендаціями

яка визначила 10 головних проблем підтримки CSS в Opera та інших браузерах
              

Internet evolution: 2000

  • HTML4
  • XHTML 1.0
  • IE5 for Macintosh
  • 327kk of users (100kk in USA)

default IE in MacOS
              

Internet evolution: 2004

  • Flash Lite 1.0
  • 700kk of users

Internet evolution: 2011

  • International Space Station
  • 2kkk of users

Международная космическая станция
              

Communication evolution

Communication evolution

Communication evolution

Communication evolution

Communication evolution

Communication evolution

Communication per-Computers

Request-Response Model (request–reply, synchronous)

establishing a connection data exchange end of session

общение компютеров
и общение людей между собой

установка соидинения
обмен
конец сессии
              

web browser

frontend html / css / js / etc

web server

backend database / server / data ops / cache / etc

Communications protocol

describes how devices can communicate, and defines the format of data beign exchanged

правила передачі даних між двома пристроями
метод компресії-стискання інформації, спосіб визначення завершення передачі
одні — більшою надійністю
другі — швидкістю передачі даних
треті — простотою
              

Real life example of protocol

What is a Protocol?

Protocol examples

  • Internet Protocol set of rules to send and receive messages at the Internet address level
  • File Transfer Protocol sets of rules to use with corresponding programs elsewhere on the Internet
  • Simple Mail Transfer Protocol
  • Secure Shell

              

Real life example of layered architecture

The pen

Real life example of layered architecture

The pen in box

Real life example of layered architecture

The pen in box with declaration

Real life example of layered architecture

The pen in box with declaration is delivering to receiver

Real life example of layered architecture

The pen in box with declaration is delivered to receiver.

  • He got it.

Real life example of layered architecture

The pen in box with declaration is delivered to receiver. He got it, confirmed that he is receiver and got the box.

Real life example of layered architecture

The pen in box with declaration is delivered to receiver. He got it & confirmed personality, unboxed and got the pen.

Real life example of layered architecture

(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)

Internet layers

Internet layers

протоколи поділяються на рівні
кожен з яких виконує певну та взаємодіє з іншими частинами протоколу за чітко розробленими схемами

інтернет працює на різних рівнях
  фізичний (кабелі, роутери, маршрутизатори, )
  поверх - є стек/набір мережевих протоколів (tcp/ip)
  перетворення інформації при її руху по рівнях
              

Internet layers

TCP and UDP protocols

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/IP Model

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.
              

TCP/IP Model

Transmission Control Protocol / Internet Protocol

набір мережевих протоколів передачі даних
IP & TCP - main protocols

чотири рівні стека
- (самий нижній) канальный (все шо звязано з фізичною передачою даних, пристрій до пристрою)
- мережений (IP, передача даних між різними мережами)
- транспортный (доставка даних, tcp, udp, ..)
- прикладной (з яким найчастіше маємо справу як користувачі - браузер, почтові клієнти, месенджери, і тд)

кожен рівень - абстрактний
прот кожного рівня працює завдяки протоколам нижче

в 1970 ARPA
мережі у світі могли бути об'єднані у формі віртуальної «мережі мереж»
ARPAnet була на основі TCP/IP

Сьогодні стек використовується для зв'язку комп'ютерів в Інтернет
              

TCP/IP Model: Application layer

  • units: data
  • protocols: FTP, HTTP, POP3, IMAP, telnet, SMTP, DNS, TFTP, ...

прикладний
данные

взаємодія програм з інформацією
програма-клієнт та програма-сервер

на кожному рівні дані називаються по своєму
потік (TCP) і повідомлення (UDP)
на транспортному — сегмент і пакет

поштові SMTP та POP3
передача файлів — FTP та TFTP
емуляція віддаленого терміналу — TELNET
HTTP, DNS
              

TCP/IP Model: Transport layer

  • units: segments
  • protocols: TCP, UDP, etc

транспортний
транспортні послуги прикладним процесам

TCP - Transmission Control Protocol
  забезпечує надійне доставляння байтових потоків

UDP - User Datagram Protocol
  без установлення з'єднання
  не гарантує їхнього доставляння

через порт
              

TCP/IP Model: Internet layer

  • units: packet
  • protocols: IP, ICMP, ARP, RARP, etc

міжмережевий

айпи
 ? структура пакетов (мало смысла, лучше общий принцип)
 уникальный идентификатор устройства
              

TCP/IP Model: Link layer

  • units: bit
  • protocols: Ethernet, Token Ring, FDDI, X.25, Frame Relay, RS-232, v.35, etc

  канальний
  рівень доступу до середовища передачі

  обмен сигналами
   закодироваными
   между 2ма устройствами
   как передать? как прочитать?
              

OSI Model

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

Представляє рівневий підхід до мережі
Вважається, що модель занадто складна, а її реалізація займе занадто багато часу
              

OSI Model: Application Layer

  • unit: data
  • Remote login to hosts: Telnet
  • File transfer: File Transfer Protocol (FTP), Trivial File Transfer Protocol (TFTP)
  • Electronic mail transport: Simple Mail Transfer Protocol (SMTP)
  • Networking support: Domain Name System (DNS)
  • ...

Прикладний рівень
забезпечує взаємодію мережі й користувача
всі прикладні програми, які використовують доступ до мережі
такі як оглядач веб-сторінок, електронна пошта, віддалений доступ до файлів та інші

used in TCP/IP

HTTP, Telnet, DNS, FTP, DHCP
              

OSI Model: Presentation Layer

  • unit: data
  • ASCII, Unicode
layers (transmit <--> receive) + functions

правильно відображає дані клієнту (якшо картинка)

Сетевые услуги для прикладных процессов,
таких как файловый доступ, печать, передача сообщений, базы данных
              

OSI Model: Session Layer

  • unit: data
  • SSL, TLS, SOCKS
layers (transmit <--> receive) + functions

для підтримки і встановлення зєднання

Стандартизированный интерфейс данных для прикладного уровня.
Кодирование MIME, шифрование данных, конвертация, форматирование, сжатие
              

OSI Model: Transport Layer

  • TCP, UDP, SMB
layers (transmit <--> receive) + functions

передача даних

Межхостовое взаимодействие.
Устанавливает, управляет и завершает соединения между приложениями
              

OSI Model: Network Layer

  • unit: segments
  • IPv4, IPv6, TCP/IP
layers (transmit <--> receive) + functions

адресація

Непрерывные соединения и надежность.
Сегментация данных и их сбор в правильном порядке.
Контроль потока передачи
              

OSI Model: Datalink Layer

  • unit: packet
  • Ethernet, PPP, PPPoE, PPTP
layers (transmit <--> receive) + functions

маршрутизатор

Логическая адресация и определение пути.
Маршрутизация.
Уведомления об ошибках доставки
              

OSI Model: Physical Layer

  • unit: images
layers (transmit <--> receive) + functions

Физическая адресация и доступ к среде передачи данных.
Состоит из двух подуровней:
- управление логической связью (LLC)
- и контроль доступа к среде (MAC)

кадры
мост, коммутатор, сетевая карта
              

TCP/IP vs OSI Model

IP Address

internet protocol address
              

IPv4

Internet Protocol version 4

RFC - вересень 1981 року (upd січень 1980 року)
4 байтну форму запису (32-бітні адреси)
4 294 967 296 (4 млд) unique
4 десяткових чисел від 0 до 255 (2^8)
              

IPv4 reserved

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-адрес
              

IPv6

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 reserved

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

                
              

Port

16-bit number google "well-known ports"

2^16 = 65536
ports opens & listen for incoming connection
root <= 2024 (well-known ports)
              

Роскомнадзор

The Golden Shield Project

NAT

Network Address Translation IP Masquerading, Network Masquerading и Native Address Translation

компьютер может быть подключен к Интернету
Напрямую / Через NAT (локальный  IP-адрес)

процесс трансляции локальных адресов во внешние

Статический NAT
Динамический NAT
Перегруженный NAT (PAT - Port Address Translation)
              

DNS

Domain Name System

для людей проще запоминать буквенные аддреса,
чем последовательность цифр IP-адреса

ієрархічна система
для отримання інфи по домену
найчастіше - для перетворення імені хоста в IP-адресу
одне централізоване джерело

кожен сервер делегировать відповідальність за іншу частину

кеширование информации
уменьшения нагрузки на сеть

сервера: авторитетні, неавторитетні

2014y - 308 root servers
divided to 13 groups (a*, b*)
              

Time To Live

lowest = 5 min default = 24 hours

Types of records

A (map IP to Host) CNAME (alias with different A record) MX (for sending an email)

Reverse Lookup

Lookup Hosts on specific IP

DNS request

➜ ✗ host cursor.education
cursor.education has address 91.194.250.152
cursor.education mail is handled by 10 mx.yandex.ru.
              

DNS request (detailed)

➜ ✗ 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
              

DNS query lookup

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)
              

DNS resource records (RR)

DNS /etc/hosts

Sockets in real life

Socket = IP + Port

  штекер/розетка
  port = ухо
  пара ip+port = socket
  возможность проложить трубку
              

Socket = IP + Port

URL

Uniform Resource Locator

Уніфіко́ваний лока́тор ресу́рсів
єдиний вказівник на ресурс

як документ, чи зображення
Тім Бернерс-Лі (HTTP, HTML, URI, W3C owner)

# - якір (для внутрішньої адресації)
              
            

URI

Uniform Resource Identifier

Уніфікований ідентифікатор ресурсів
ідентифікує окремий абстрактний чи фізичний ресурс

URIs identify and URLs locate
              
            

Relative vs Absolute URLs

https://www.example.com Absolute URLs:

  • http://yourdomain.com/images/example.png
  • //yourdomain.com/images/example.png
Relative URLs:
  • /images/example.png
  • images/example.png
  • file.php
  • ../.././../css/default.css

http://example.com
http://www.example.com

absolute includes protocol and domain
              
            

Trace Route

➜  ✗ 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 ms
              
http://www.monitis.com/traceroute/ (91.194.250.152)

TErminaL NETwork

Telnet SMTH

$ telnet smtp.gmail.com 587
EHLO localhost
STARTTLS
MAIL FROM: <support@gmail.com>
              

HTTP Protocol

HyperText Transfer Protocol

протокол прикладного рівня (osi)

протокол передачи гипертекста

гіпертекст - словник, енциклопедія
текст шо містить ссилки на інші частини цього тексту, яке має до нього відношення

сьогодні - використовується для передачі різних данних

client-server network protocol
запрос-ответ

in use by the World-Wide Web since 1990
              
            

http over telnet

$ telnet google.com 80

GET / HTTP/1.1
Host: google.com
              
https://www.ietf.org/rfc/rfc2616.txt

http: accessing resources

                 <protocol>://<server>/<path>
              

communication між client and the server
всі операції/маніпуляції над конкретним URI-ресурсом

фішкою протоколу - можливість клієнту задати в якому вигляді він хоче отримати відповідь
формат, кодування, мова, тд
              
            

http: characteristics

  • request-response mechanism client sending a request to server, server generates a response
  • resource identification each http request includes a URI
  • statelessness the server does not maintail any information about the transaction
  • meta data supportmetadata about information can be exchanged in the message

  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
              
            

http: request message/format

(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
              
            

http: request methods

  • GET to retreive whatever information
  • POST used to send data to the server for updates submit information to web server

  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
              
            

http: request method example

GET /wiki/HTTP HTTP/1.0
Host: ru.wikipedia.org
User-Agent: HTTPTool/1.0
              
willmake a "GET" requestto http://ru.wikipedia.org/wiki/HTTPusing HTTP v1.0with user-agent "HTTPTool/1.0"

http: other request methods

  • HEAD response does not include message body useful for getting metadata without transfering the resource
  • PUT creates the resource if it does not create
  • DELETE removes the web object
  • TRACE invokes a remove application layer feedback of the request message useful for testing what is being received at the server
  • OPTIONS requests information about communication options available to server

safe/idempotent methods

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 no

  idempotent
   can be called many times without different outcomes
   no effect when called one than once
   в алгебрі - повторное применение операции к объекту даёт тот же результат, что и одинарное

  safe
   must be used only for retrieval of data
              
            

http: response format

(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
              

http: result code and phrase

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 bad
              
Examples:
  • 200 OK
  • 301 Moved Permanently
  • 302 Found
  • 307 Temporary Redirect
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error

Redirection

http allows servers to redirect a client request to a different location

HTTP/1.1 302 Found
Location: ...
              

improvements in http/1.1

  • persistent connections keeps the connection open after the server response
  • request pipelining allow a client to send several requests without waiting for a response
  • chunked encoding allows sender to break a message into arbitrary sized chunks useful for dynamically created response messages

Реп'яшки

http is stateless protocol
manage state maintenance by shifting the burden to client
in clear text (security issue)
              
            

Session cookies

web-browsers normally delete session cookies when the user closes the browser
              
            

HTTP Setting Cookies

Name, Value, Expires, Path, Domain

HTTP Caching

Cache-Control, Last-Modified and Expires

HTTP Caching

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
              

HTTP Compression

Accept-Encoding: gzip, deflate
Content-Encoding: gzip
Content-Length: 1253
              

HTTP Basic Authentication

Response:

HTTP/1.1 401 Access Denied
WWW-Authenticate: Basic realm="My Server"
Content-Length: 0
              
Request:
GET /securefiles/ HTTP/1.1
Host: www.httpwatch.com
Authorization: Basic aHR0cHdhdGNoOmY=
              
example

...

HTTPS = Encrypted HTTP

used for securely transmitting the data between the browser and server

HTTP cons

HTTPS principle

Man-in-the-middle attack

When you need https?

  • online store (accept online stores, credit cards, etc
  • login & signin pages
  • stores personal user data
  • company with privacy & security requirements

HTTP vs HTTPs

question: чи будуть куки захищені?
              

FTP & sFTP & TFTP

port = 21 active & passive

TFTP = light ftp, read-only, udp port 69
              

SSH

Secury Shell, remote console access Auth by PKI, credentialsPuTTY

port 22, pki (publi key intrastructure), credentials (login & passw)
              

RDP

Remote Desktop Protocol, for remote graphical access

port = 3389
              

Google.com, and hit enter!

So, what are the steps to get the Google's page? connection, DNS, HTTP request, HTTP response, parse URL, render the page?

  • parsing of URL (detected HTTP protocol, and "/" resource)
  • DNS request to get a IP
  • open Socket connection over TCP (ip + port)
  • create HTTP packet & send
  • wait & get the HTTP response
  • close the TCP connection
  • parse & render the response body in browser

Sniffers / Analyzers

Fiddler

Chrome/Webkit inspector

Postman

http://www.getpostman.com/ https://echo.getpostman.com/

REST

(draw restful approach, frontend & backend separation via API)

REpresentational State Transfer

Resource naming:

/index.php?article_id=10 => GET /articles/10
/script.php?method=get_title&blogid=123 => GET /blogs/123/title
/all-posts/ => GET /posts
/orders/?getSum&order=218769 => GET /customers/15/orders/218769/sum

Swagger

google "swagger online example"

Real-time apps

  • real-time (event-driven) apps
  • social & online games
  • collaborative platforms
  • financial applications
  • social feeds
  • chats
  • etc

Real-time in HTTP (Polling Architecture)

Request every n seconds

Real-time in HTTP (Long-Polling Architecture)

Request every n seconds \w wait-delay

Real-time in HTTP (HTTP Streaming)

WebSockets

WebSockets architecture

WebSockets pros & cons

  • full-duplex (B-directional)
  • single TCP connection
  • only 2 bytes of overhead

WebSockets support in browsers

caniuse.com 89.42%

WebSockets Example

tbd

WebSockets vs. HTTP

CDN

Content Delivery Network

Subresource Integrity

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
              

THE END

Additional materials