Академический Документы
Профессиональный Документы
Культура Документы
П еди ловие 1
По ему написал ту книгу 2
К а ка и о и веба 3
Как ее итат ? 6
Глава 0. Ф ндамен ал н е кон е ии 8
Терминологи 8
Две модели е ев иложений 9
Клиен -Се ве на а и ек а 10
Client-Side (Клиентска аст ) 11
Веб-страни 12
Мобил н е веб-приложени 13
Server-Side (Серверна аст ) 14
TCP/IP 14
Канал н й уровен 15
Сетевой уровен 15
Транспортн й уровен 16
Прикладной уровен 17
HTTP-сервер 18
Протокол HTTP 19
Анатоми HTTP сооб ений 19
HTTP Метод (Methods) 21
HTTP Заголовки (Headers) 21
HTTP статус код (Status Codes) 21
URI и URL 21
URL Query / Query string 22
HTTP Cookie 22
HTTP(S) 23
Изу аем HTTP запрос на практике 23
API 25
Домен и DNS 26
Хостинг 26
Что стоит за простой загрузкой веб-страни в браузере? 26
В вводите запрос в адресну строку 26
Поиск IP-адреса 26
TCP соединение и HTTP запрос 27
1
Предисловие
Однако проблема современного образовани закл аетс в том то при бол ом обилии
информа ии становитс трудно в строит план обу ени и структурировано подойти к
освоени какой либо тем .
До окон ани 2020-го работал Backend инженером в компании Medstar Solutions, где м
с командой разрабат вали интересн е в сокотехнологи н е продукт в области
здравоохранени . Закон ив работу над последним проектом ре ил вз т небол у
паузу тоб дописат ту книгу, записат много образовател ного контента дл YouTube
и вернутс к Fullstack разработке.
Я не понасл ке зна , как может б т трудно в строит план обу ени , особенно в
на але своего пути. По той при ине многие на ина ие программист могут тратит
сли ком много времени на написание примитивн х Hello World, кал кул торов и
подобн х программ, не продвига с вперед к более важн м и практи еским нав кам.
Она будет интересна как на ина им разработ икам, котор е тол ко на ина т свой
пут так и более оп тн м спе иалистам, котор е хот т прока ат свои нав ки в
проектировании веб-приложений.
На собеседовани х асто зада т вопрос по темам, затронут м в книге. Она может стат
ва им настол н м путеводителем при подготовке к собеседовани м на Junior/Middle
пози ии.
Я помн как в 2009 зарегистрировал свой перв й аккаунт в ВК (или “Вконтакте” как он
тогда наз валс ) и добавилс в друз к парн из России, с котор м м познакомилис
на отд хе летом в Кр му. Нас раздел ли т с и километров, но м могли с ним без
проблем об ат с . Уже тогда тот факт мне сносил кр у.
Никогда ранее у л дей не б ло таких возможностей как сей ас. М можем найти л бу
интересу у нас информа и по ел ку пал а. Об ат с по видеосв зи с л д ми,
4
У каждого из нас в кармане лежит карта л бого города планет , сама бол а
библиотека книг, аудиозаписей и фил мов из когда-либо ранее су ествовав их.
Интернет переосм слил то, как м взаимодействуем с вне ним миром и окружа ими
нас л д ми. Он дал возможност л д м работат и строит собственн й бизнес не
в ход из дому. Он переосм слил ел е индустрии, изменил подход в рекламе и
маркетинге, сопутствовал создани кардинал но нов х идей в мире кономики.
Работу над данной книгой на ал в кон е но бр 2020-го, увидит свет она в 2021.
Забавно, то как раз в том году будет ровно 50 лет с момента отправки первого E-Mail.
Про ло пол столети , а интернет успел плотно укоренитс в на и жизни.
Сама иде интернета зародилас в середине 60- х годов XX столети в армии США.
Изна ал ной ел интернета б ла возможност об единит комп тер , разбросан
по всей территории стран в едину сет , в которой можно б ло обмениват с разн ми
данн ми и файлами.
Так по вилас сет ARPANET, котора одна из перв х реализовала стек протоколов
TCP/IP и положила на ало современному интернету.
Как уже сказал, в 1971 году по вилас возможност обмениват с пис мами по сети.
Однако интернет тогда б л сложной технологией, котора б ла доступна немногим. На
тот момент е е не б ло прив н х нам браузеров, веб-сайтов, Telegram и Skype.
В кон е 80- х, на але 90- х, Тим Бернерс Ли увидел в интернете гораздо бол е
потен иал н х возможностей, ем б ло доступно на тот момент. Так на алас работа
над так наз ваем м WWW (World Wide Web).
По сути веб (World Wide Web) - то распределенна система, котора работает поверх
самого интернета и дает возможност полу ат доступ к разли н м документам и
страни ам, испол зу URL-адрес (Uniform Resource Locator).
5
В кон е 1990 года (ровно 30 лет назад на момент написани данной глав ), Тим
опубликовал перву веб-страни у и разработал перв й веб-браузер. Самой страни
уже нету, но ее копи можно посмотрет тут.
С того времени на алос активное развитие всемирной сети. В 1992 году б ла загружена
перва фотографи . В 1994 по вилс перва поискова система WebCrawler и перв й
ли н й блог.
В 2006 соу редител твиттера Джек Дорси сделал перв й твит. В том же году, 14 лет
назад, по вилс перв й профил в со иал ной сети ВК с ID 1 (страни а Павла Дурова).
Когда м хотим найти каку нибуд информа и , м перв м делом идем в Google. Все
а е нам про е написат сооб ение в мессенджере, ем позвонит .
10 лет назад один парен заказал пи у1 за 10 000 биткоинов. Сегодн та сумма равна
~ $ 190 000 000.
Однако с ростом коли ества доступн х технологий и по влением все бол его
коли ества пол зователей, систем с кажд м годом станов тс все сложнее и сложнее.
1
https://vc.ru/crypto/2385-million-dollar-pizza
6
Эта книга призвана структурироват все основн е аспект и дат отли н й фундамент
дл дал ней его, более глубокого изу ени данной сфер .
Как ее итат ?
Одна из при ин бол ой скорости прогресса вл етс возможност работат на в соких
уровн х абстрак ии. Дл того тоб написат простен ку программу сегодн не нужно
понимат устройство транзистора и про ессора, оперативной пам ти и даже
опера ионной систем .
Мо философи закл аетс в том, то обу ение необходимо на инат с пон тного дл
вас, в сокого уровн абстрак ии, и уже по необходимости копат глубже дл более
об ирного понимани .
В всегда можете пойти дал е. И насто тел но рекоменду вам углубл т с в более
низкоуровнев е ве и, поскол ку то необходимо дл ва его профессионал ного
развити . А данна книга вам даст еткое понимание куда именно стоит копат .
Чтоб стат хоро им разработ иком не достато но ли итат книги и проходит курс .
Хоро ими разработ иками становит с тол ко при посто нной и усердной практике,
регул рному написани кода и разработке приложений.
2
Низкоуровнев й з к программировани , в котором программист пи ет инструк ии
непосредственно под конкретн й набор аппаратного обеспе ени .
7
Наде с , в уже знаком со мной в со . сет х. Если нет, то подпис вайтес на мои
канал в YouTube и Telegram, где регул рно публику образовател н й материал и
дел с собственн м оп том.
Е , -
, hashkevychmaksim@gmail.com.
z
Т ,
.
Ну а тепер , после небол ого лири еского отступление, давайте приступим к изу ени
интересного мира современн х веб-приложений!
8
Т.С. Э
Терминологи
Дл сности давайте разберем нескол ко терминов, котор е асто будут испол зоват с
по ходу изложени материала в данной книге.
На нем с двух основн х пон тий, котор е асто испол зу тс взаимозамен емо ( то не
совсем корректно): веб-сайт и веб-приложение.
Веб- ай то одна или нескол ко логи ески св занн х между собой веб-страни , котор е
доступн по об ему доменному имени и разме ен хот б на одном веб-сервере.
Доступ к сайту осу ествл етс с помо веб-браузера.
Клиен - устройство или программное обеспе ение, которое делает запрос на сервер.
● Модел “клиент-сервер”
● P2P (Peer-to-peer) сет
Разни а между ними закл аетс в том, то перва модел - ентрализованна , а втора
- де ентрализованна .
Если в ска ивали игр , программ и фил м с торрент-трекеров в свое врем , то с P2P
сет в уже знаком . Торрент работа т по данной модели. Технологи блок ейн
также испол зует тот подход.
В моделе P2P ест отдел н е узл (нод ), котор е абсол тно равноправн между
собой и могут одновременно в ступат как в роли клиента, так и сервера. Все узл
коллективно испол зу т свои ресурс и об а тс друг с другом напр му .
Р . 1.1
Клиент-Серверна архитектура
Клиент-серверна архитектура испол зует иной подход. Сервер предоставл ет одному
или нескол ким клиентам сервис. Сервис в данном контексте - предоставл ем й
сервером набор функ ионала.
Ини иатором об ени всегда в ступает клиент, производ запрос на сервер. Клиент
не могут об ат с между собой и не зна т о су ествовании друг друга.
Например, когда вам нужно найти каку -то информа и в интернете в пи ете
поисков й запрос в строку поиска google. По нажати на нтер, ва комп тер делает
запрос на сервер google.com, а тот в сво о еред прис лает вам ответ с резул татами
поисковой в да и.
Р . 1.2
Коне но в той схеме все намного сложнее, однако наде с сут подхода “запрос - ответ”
в уловили.
В ,
.
Клиентска аст предоставл ет коне ному пол зовател интерфейс, котор й умеет
отправл т на сервер запрос и обрабат ват ответ .
Толст е клиент , в отли ии от тонких, могут в полн т бол инство логики приложени
при слабом интернете или полном его отсутствии.
Веб-страни
Сам й распространенн й формат веб-приложений - то веб-сайт, к которому
пол зовател полу ает доступ испол зу браузер на своем комп тере, смартфоне,
план ете, Smart TV, микроволновке и тд.
3
Бизнес-логика - набор функ ионал н х требований к программному продукту, его поведени и
пол зовател ских с енариев.
4
https://stadia.google.com/
5
Более подробно про браузерн й рендеринг: https://habr.com/ru/post/484900/
13
HTML и CSS опис ва т наполнение и вне ний вид страни , однако “умной” она
становитс благодар скриптовому з ку JavaScript, котор й также вл етс стандартом
разработки веб-сайтов.
В наверн ка знаете, или хот б сл али о таком пон тии как Frontend разработка.
Верстка веб-страни и написание логики веб-сайтов, котора в полн етс в браузере -
то и ест Frontend. Данн й термин асто испол зуетс в ка естве синонима клиентской
асти.
Мобил н е веб-приложени
Е е один о ен распространенн й формат клиентской асти - мобил н е приложени ,
котор е запуска тс под iOS или Android.
● Нативн й
● Кроссплатформенн й
6
Single Page Application. Подробнее об том в следу ей главе.
14
Это имеет место, когда у компании нету достато н х ресурсов нан т отдел н х
спе иалистов под кажду платформу. По тому нанима т кроссплатформенн х
разработ иков, котор е могут создат приложени сразу под все нужн е платформ .
Однако данн й подход не пана е , поскол ку наклад вает определенн е техни еские
ограни ени .
Ест разн е тип серверов: веб-сервер , по тов е, файлов е, игров е сервер и тд.
Тип определ етс программн м обеспе ением, которое на нем установлено.
Разн е тип серверов испол зу т разн е протокол прикладного уровн 8 стека TCP/IP,
про котор й м поговорим далее.
TCP/IP
TCP/IP - стек протоколов, на котором построен современн й интернет. Название состоит
из двух основн х протоколов семейства, а именно:
7
Software Development Kit - набор средств разработки под конкретну платформу.
8
https://en.wikipedia.org/wiki/Application_layer
15
Канал н й уровен
Канал н й уровен опис вает, как кодиру тс данн е дл переда и пакетов9 на слое
“железа”. Основн е протокол тут то Ethernet (тот сам й нур котор й в подкл аете
к модему или напр му в ПК) и WLAN (всем прив н й Wi-Fi или мобил на св з ).
Сетевой уровен
Протокол сетевого уровн уже отве а т за то, как происходит коммуника и между
двум разн ми сет ми. Грубо говор , здес ре аетс зада а мар рутиза ии пакетов по
сети от одного комп тера к другому. На том уровне работает протокол IP.
Р 1.3
9
При сетевой коммуника ии, передаваем е сооб ени разбива тс на более мелкие пакет .
Это позвол ет поп тат с заново отправит небол ой кусо ек сооб ени при о ибках, вместо
повторной отправки елого сооб ени . Это также позвол ет вам смотрет видео на YouTube е е
до того, как оно полност передалос по сети на ва е устройство.
16
IP-адрес можно воспринимат как об н й физи еский адрес. Когда в в з ваете такси
в указ ваете адрес приб ти . Адрес определ ет территориал ное расположение
коне ного пункта назна ени .
Транспортн й уровен
Транспортн й уровен отве ает непосредственно за переда у данн х по сети. На том
уровне су ествует свой набор протоколов, главн ми вл тс TCP и UDP. Основна
разни а между ними закл аетс в том, то TCP гарантирует доставку сооб ени
адресату, а также сохран ет правил ну последовател ност отправл ем х пакетов (в
TCP они наз ва тс сегментами). Это достигаетс за с ет предварител ного
установлени соединени с адресатом.
Протокол сетевого уровн отве ает за мар рутиза и по IP-адресу. А как тепер по
тому адресу определит конкретн й про есс, к которому м хотим обратит с ?
Тут нам в помо приходит так наз ваем й “Порт” - елое неотри ател ное исло,
которое запис ваетс в заголовках сооб ений протоколов транспортного уровн (TCP,
UDP и тд.). Порт отве ает за полу ение пакета в пределах одного про есса.
10
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
17
Прикладной уровен
Сам й в сокий, прикладной уровен , обеспе ивает взаимодействие пол зовател с
прикладн м софтом котор й работает по сети, предоставл протокол дл приложений
разного типа.
Например, на том уровне су ествует протокол HTTP (про него м поговорим далее) дл
работ с веб-сайтами, FTP дл переда и файлов, SMTP дл работ с лектронной
по той и много других.
Благодар портам и разн м протоколам прикладного уровн , один физи еский сервер
может без проблем в ступат в ка естве HTTP-сервера на 80-м порту, FTP-сервера на
20-м, SMTP на 25 или 587 порту и игров м сервером на л бом другом порту.
Р . 1.4
Как в можете увидет на рисунке 1.4, зна IP-адрес и нужн й порт, клиент может
пос лат запрос на сервер, испол зу формат <протокол>://<IP-адрес>:<порт>/
18
К , http://google.com/ ,
80,
HTTP. А ttps://google.com (П
h HTTPS) - 443
.
HTTP-сервер
Дл класси еских веб-сайтов и приложений испол зуетс протокол HTTP.
HTTP-сервер - приложение или набор программного обеспе ени , которое запу ено на
сервере и обрабат вает вход ие запрос на 80 порту.
На самом деле, вас никто не ограни ивает запустит его и на другом порту, например
8000. В разработке так асто дела т дл тестов х, или так наз ваем х “стейджинг”
серверов, на котор х происходит тестирование приложений или веб-сайтом перед их
релизом в продак н (рабо у среду, котора доступна коне н м пол зовател м).
Дл запуска HTTP сервера су еству т уже готов е ре ени , например NGINX, Apache
HTTP Server или Caddy. Однако вам никто не запре ает написат собственн й
HTTP-сервер, испол зу ва л бим й з к программировани .
HTTP-сервер могут б т стати еские и динами еские. Стати еские просто отда т
файл браузеру, котор й их отрисов вает. Например, однострани н е лендинги
(посадо н е страни ) могут б т прост м набором HTML, CSS и JS файлов, котор е
лежат на удаленном сервере.
Динами еские сервер за асту работа т с базой данн х или другими веб-сервисами, и
наполнение страни или тело ответа динами ески определ етс на сервере при
запросе в соответствии с данн ми из вне них исто ников.
В
- .
19
Также, как и Frontend то синоним клиента, термин Backend - синоним серверной асти
приложени . В следу их главах книги м будем рассматриват разли н е лемент
серверн х приложений, такие как баз данн х, о ереди сооб ений и тд. Все то входит
в област Backend разработки.
Протокол HTTP
HTTP (HyperText Transfer Protocol) - об еприн т й протокол переда и данн х и вл етс
основн м протоколом дл коммуника ии веб-приложений.
HTTP работает поверх протокола TCP - одного из основн х протоколов переда и данн х
по сети.
Перв х две асти об зател н , в то врем как тело сооб ени может б т пуст м.
Стартова строка разли аетс дл запросов и ответов. При запросе указ ваетс метод,
URI запроса и верси протокола. При ответе же отправл етс верси протокола, статус
код и его текстовое по снение.
11
https://ru.wikipedia.org/wiki/HTTP/2
20
GET / HTTP/ .
Где:
GET / HTTP/ .
Host: youtube.com
У , youtube.com, HTTP ,
, .
Н , User-Agent,
, - ОС.
Обработав запрос, сервер прис лает ответ, стартова строка которого имеет следу ий
вид:
HTTP/ . OK
Где:
М затронули такие пон ти как метод , заголовки, URI и статус код . Давайте разберем
каждое из них подробнее.
21
URI и URL
URI (Uniform Resource Identifier) - набор символов, котор е идентифи иру т физи еский
или абстрактн й ресурс по лока ии или имени.
12
https://developer.mozilla.org/ru/docs/Web/HTTP/Methods
13
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
14
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
22
https://www.example.com/search?query abcd
HTTP Cookie
HTTP cookie (куки) - то небол ой набор данн х, котор е сервер прис лает
веб-браузеру в спе иал ном заголовке при ответе. Браузер сохран ет их у себ в пам ти
и может испол зоват при дал ней их запросах на тот сервер.
Когда браузер видит тот заголовок в ответе, он сохран ет зна ени в свое хранили е.
При последу их запросах на сервер, браузер будет добавл т к запросу заголовок:
HTTP(S)
Сегодн бол инство сайтов работа т по рас иренному HTTP протоколу - HTTPS.
Приставка S в кон е озна ает Secure (т.е. безопасн й). Данн й протокол по умол ани
испол зует 443-ий TCP-порт.
HTTPS работает ерез ифрованн й транспортн й механизм TLS15 (а до того SSL). TLS
то криптографи еский протокол, котор й обеспе ивает за и енну переда у данн х
по сети.
С помо curl можно делат HTTP запрос пр мо из терминала и видет пример тела
запроса и ответа. Как в уже могли догадат с , приложение curl в терминале в данном
слу ае в ступает клиентом.
Да, клиент также могут б т в формате консол н х утилит! Однако такие инструмент
не предназна ен дл комфортного серфинга по сети и испол зу тс дл других елей.
curl youtube.com -v
* Trying . . . ...
* TCP_NODELAY set
* Connected to youtube.com ( . . . ) port (
15
https://mnorin.com/tls-ssl-neobhodimy-j-minimum-znanij.html
16
h ps://scoop.sh/
24
GET / HTTP/ .
Host: youtube.com
User-Agent: curl/ . .
Accept: */*
И zhashkevych.com:
curl zhashkevych.com -v
* Trying . . . ...
* TCP_NODELAY set
* Connected to zhashkevych.com ( . . . ) port ( )
GET / HTTP/ .
Host: zhashkevych.com
User-Agent: curl/ . .
Accept: */*
GMT; path /
Set-Cookie:
ipp_uid /E JSqY dOurU eGj/Yy v Ts/jO rcBINLEIQ ;
expires Tue, Dec : : GMT; path /
Set-Cookie: rerf AAAAAF gKFF xFxAw MAg ; expires Wed, -Dec-
: : GMT; path /
P P: policyref /w c/p p.xml , CP CUR ADM OUR NOR STA NID
В данн х примерах возвра аем й статус код 301, поскол ку при запросе на домен
youtube.com и zhashkevych.com сервера настроенн делат редирект клиентов на
https://youtube.com/ и https://zhashkevych.com/ соответственно.
API
Поскол ку клиент об аетс с сервером с помо запросов, ему абсол тно не важно
какие технологии испол зу тс на сервере, также как серверу все равно как в гл дит
клиентска аст . Они об а тс на основании некоего формал ного договора, описани
набора предоставл ем х сервисом услуг.
Этот договор (его е е могут наз ват контрактом или спе ифика ией) наз ваетс API
(Application Programming Interface). Это достато но ирокое пон тие, которое
примен етс к многим аспектам разработки программного обеспе ени . API - то
описание способов, котор ми одна комп терна программа может взаимодействоват с
другой.
Домен и DNS
Домен - то символ ное определение адреса. Согласитес , б ло б неудобно вместо
google.com вбиват в адресну строку IP-адрес по типу 178.42.76.111.
Она позвол ет мар рутизироват пол зовател ские запрос по доменному имени на
IP-адрес. Когда в вбиваете в браузере google.com, ва комп тер делает запрос на
DNS сервер, полу ает IP-адрес нужного сервера и уже по нему обра аетс к сервису.
Хостинг
При желании, сервер можно развернут хот у себ дома. Дл того понадобит с
комп тер со спе иал но установленн м софтом и посто нн м доступом к сети 24/7.
Однако то далеко не практи но и требует от вас много административной работ и
посто нной поддержки.
Поиск IP-адреса
Поскол ку протокол HTTP работает поверх протоколов TCP и IP, дл установки
соединени с веб-сервером необходимо имет его IP-адрес. Дл того браузеру
необходимо найти DNS записи дл данного им хоста (google.com).
27
Скорее всего, http сервер перенаправл ет запрос на приложение, запу енное в про ессе
ОС, которое реализует бизнес-логику и написано на каком-нибуд з ке
программировани по типу PHP, Python, Ruby, Go, JS, C#, Java, C++ и тд. Оно
обрабат вает запрос и формирует ответ.
Или же, в слу ае стати еского сервера, он просто собирает стати еские файл и
самосто тел но формирует ответ дл клиента.
Р 1.5
Рез ме
В данной главе поп талс описат все фундаментал н е кон еп ии работ
веб-приложений. Современн е приложени могут отли ат с особой сложност
ре аем х проблем и техни еской реализа ией, однако в основу положен базов е
прин ип и об еприн т е протокол .
● Клиент-серверна архитектура
● Стек протоколов TCP/IP
● Протокол HTTP
Наде с в откр ли дл себ то-нибуд новое или освежили стар е знани , и тепер
готов двигат с дал е к более детал ному изу ени серверн х приложений.
29
Если на момент про тени данной глав книги е е нету в продаже, следите за
обновлени ми в моем телеграмм-канале.