Web, HTTP, TCP/IP
Денис Нелюбин
Internet и Web
Internet
• ARPANET
• 1970-e — -1980-e
• TCP/IP
• E-mail, FTP, IRC…
Web (World Wide Web)
• CERN (Tim Berners-Lee)
• 1989
• HTTP
• HTML (hypertext)
HTTP
Кэш и файлы
Браузер
1. Разобрать URL
2. Отрезолвить имя сервера
3. Отправить HTTP запрос
4. Получить HTML
5. Распарсить и отобразить HTML
Архитектура клиент-сервер
URL и URI
URL — Uniform Resource Locator —
адреса в HTTP
URI — Uniform Resource Identifier —
прочие идентификаторы в Internet
URL и URI
URL — Uniform Resource Locator
URI — Uniform Resource Identifier
Domain Name System
https://openclassrooms.com/courses/gerer-son-nom-de-domaine
Domain Name System
https://openclassrooms.com/courses/gerer-son-nom-de-domaine
Стек TCP/IP
HTTP
IP
HTTP
TCP
Ethernet
• IEEE 802.3u, 100BASE-TX
• Витая пара, RJ-45
• MAC адрес
• Фреймы
• 1500 байт
IP
• IP адрес
• DNS
• Пакеты
• Маршрутизация
• Связность
IPv4, IPv6
TCP
• Порт
• Потоки
данных
• Гарантия
доставки
HTTP
HyperText Transfer Protocol
• Поверх TCP, порт 80
• URL — адрес ресурса
• Без сохранения состояния (stateless)
• Текстовый
HTTPS
HTTP Secure
• Поверх TCP, порт 443
• HTTP, зашифрованный TLS
• Сертификат сервера
• Сертификат клиента (не обязательно)
HTTP запрос
1. Метод, URI, параметры, протокол
2. Заголовки
3. Тело запроса
HTTP запрос
GET /news/recent HTTP/1.1
Host: www.example.com
HTTP методы
• GET
• POST
• PUT
• DELETE
…и другие
HTTP заголовки запроса
Host
User-Agent
Accept
Cookie
If-Modified-Since
Range
Authorization
Referer
Content-Type
Connection
Upgrade
HTTP запрос
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/5.0 (X11; U;
Linux i686; ru; rv:1.9b5)
Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
(пустая строка)
HTTP ответ
1. Код состояния
2. Заголовки
3. Тело запроса
Коды состояния HTTP
Код состояния = код ответа +
поясняющая фраза
200 OK
303 See Other
404 Not Found
500 Internal Server Error
HTTP заголовки ответа
Server
Date
Cache-Control
Expires
Last-Modified
Location
Content-Length
Сontent-Type
Content-Disposition
Content-Range
HTTP ответ
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59
GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
Cookie и сессии
Инструменты разработчика
Инструменты разработчика
% curl http://example.com -v
* Rebuilt URL to: http://example.com/
* Trying 93.184.216.34...
* Connected to example.com
(93.184.216.34) port 80 (#0)
> GET / HTTP/1.1
...
Инструменты разработчика
https://www.getpostman.com/
• Apache
• Nginx
• Lighttpd
• Microsoft IIS
• ...
HTTP cервера
• Apache Tomcat (Java)
• Phusion Passenger (Ruby, Python, Node.
js)
• Unicorn, thin (Ruby)
• gUnicorn, uWSGI (Python)
Сервера приложений
AJAX
WebSocket
HTTP клиент в Java
URL url = new URL("http://example.com");
URLConnection connection =
url.openConnection();
try (InputStream in =
connection.getInputStream()) {
int b;
while ((b = in.read()) >= 0) {
System.out.write(b);
}
}
HTTP/2
Почитать
https://ru.wikipedia.org/wiki/HTTP
https://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP
https://ru.wikipedia.org/wiki/Список_заголовков_HTTP
https://ru.wikipedia.org/wiki/HTTP/2
https://ru.wikipedia.org/wiki/REST

Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP