— Привіт, Аміго!
— Привіт, Білаабо!
Що нового розкажеш сьогодні?
— Багато всього. Але почати думаю з роботи з мережею та інтернетом. Цікаво?
— Ага. Галактичний Інтернет – це крута річ.
— Ось, але почнемо з історії. На початку 21 століття справи були таким чином…
У кожного комп'ютера, підключеного до інтернету, є його унікальний номер. Як номер використовується звичайне чотирибайтове число. Такий номер прийнято називати IP-адресою. Але, т.к. пам'ять у людей погана і їм складно запам'ятати щось типу 2108458776, вони часто записують його байти окремо. Якщо розбити чотирибайтове число 2108458776 на окремі байти, то вийде таке число «125.172.135. Кожен байт, як ти пам'ятаєш, складається з 8 бітів і може містити числа від 0 до 255.
— Тобто. це той самий запис числа?
— Так. Просто легша для запам'ятовування (у людей) форма запису чотирибайтового числа. До речі, ідея вибрати всього 4 байти незабаром зіграла з ними злий жарт. Кількість пристроїв, підключених до інтернету, зросла так швидко, що незабаром вільні номери закінчилися.
— І як вони вийшли із цієї ситуації?
— По-людськи. Хе-хе.
Вони придумали новий стандарт IP-адреси, гордо названий IP v6 – IP-address version 6.
У ньому, на відміну від звичайної IP-адреси (яку називають IP v4), для унікального номера використовуються на 4 байти, а 16.
Ти тільки подумай, люди не могли запам'ятати 10 цифр у звичайному номері (як 2108458776), для чого їм довелося розбити на 4 частини, а тут вигадали номери, що складаються з 16 байт.
— Так, іноді люди такі дивні.
— Ага. Люди вони і є люди.
Хоча вони викрутилися і з цієї ситуації.
Їм набридло запам'ятовувати цифри, і вони вирішили замінити їх словами.
— Це як це? А чи можна приклад?
Звичайно: web.mail.com, google.com .ua, new.books.amazon.com, …
Таке ім'я називається доменом.< /p>
Для того щоб такий інтернет працював правильно, була придумана спеціальна таблиця – DNS (Domain Name System), в якій для кожного доменного імені зберігалася його IP-адреса.
Ось як це працює.
1) Користувач вводить у браузері адресу, наприклад, web.mail.com.
2) Браузер звертається до DNS і по доменному імені отримує IP-адресу.
3) За цією IP-адресою надсилається запит, що містить потрібне посилання (URL).
— Виглядає не дуже просто.
— Але такий підхід має і кілька переваг:
1) Люди легко запам'ятовують словесні імена.
2) Доменні імена можна будувати у вигляді дерева, додаючи на початку імені піддомени. Точнісінько, як package в Java.
3) Якщо треба змінити IP-адресу веб-сервера, то достатньо поміняти запис в DNS , і все буде працювати як раніше, а користувачам не доведеться вивчати нову адресу.
Виглядає ця DNS приблизно так:
Domain Name | IP-Address |
---|---|
mail.com | 128.35.36.189 |
web.mail.com | 145.12.17.13 |
new.mail.com | 192.155.15.3 |
google.com | 92.117.151.100 |
google .com.ua | 193.168.0.1 |
docs.google.com | 217.12.222.1 |
… |
— ; Зрозуміло.
— Ну, домен - це ім'я комп'ютера, але нам потрібен не комп'ютер, а те, що в ньому лежить. Для цього використовують посилання (URL)
Спочатку URL фактично являв собою посилання на файл на чужому комп'ютері. Приклад:
Приклад |
---|
http://info.javarush.com/user/info/profile.html |
Опис |
http – це протокол – стандарт спілкування клієнта та сервера info.javarush.com – доменне ім'я комп'ютера.< br /> user/info/profile.html – це шлях до файлу на комп'ютері |
На самому початку розвитку мережі web-сервер умів тільки віддавати файли за урлом (посиланням), які у нього десь зберігалися. URL фактично був глобальним шляхом до файлу (ім'я комп'ютера + шлях). Потім, коли веб-сервера почали самі генерувати файли, що віддаються, сенс урла трохи змінився, і він став запитом до web-сервера . До нього також додалися параметри запити.
Сьогодні вже рідко побачиш розширення файлу в кінці URL. Сучасні URL – це просто деяке унікальне посилання з параметрами. Більше схоже на виклик методу, а не на глобальну адресу файлу.
Сучасний класичний Url виглядає так:
Розбір посилання |
---|
http://javarush .com/alpha/api/contacts?userid=13&filter=none&page=3 |
Опис частин посилання |
javarush.com – це домен — унікальне ім'я (адреса) комп'ютера в інтернеті |
http — це протокол (стандарт) взаємодії клієнта та сервера. веб-сторінки на сервері |
userid=13 & filter=none & page=3 – параметри запиту |
— Ага, пам'ятаю. Нещодавно ти вже розповідав мені про посилання.
І про порти теж. На прикладі багатоквартирного будинку.
Краще розкажи мені, що таке http. Бо скрізь написано – протокол, а що це таке – не ясно.
— Ок. Зараз розкажу. id="b9c0d4a4-fd9c-4886-9c1e-3ba127af71ee" data-max-width="1024" alt="IP-address, domain, URL - 1" src="https://cdn.javarush.com/images/ article/b9c0d4a4-fd9c-4886-9c1e-3ba127af71ee/original.jpeg">
HTTP – це HyperTextTransport< span class="text-red">Protocol – протокол для передачі гіпертексту.
— А що таке гіпертекст?
— Це HTML.
Протокол, це грубо кажучи, стандарт взаємодії. У ньому описано, які запити можна надсилати веб-серверу і в якому форматі, і як цей веб-сервер повинен відповідати. Між клієнтом та сервером пересилаються звичайні текстові файли, ну, або якщо хочеш – великі шматки тексту.
До сервера надходить запит (request< /strong>), і на кожен запит сервер віддає відповідь (response).
Ось приклади таких запиту та відповіді:
GET alpha/api/contacts HTTP/1.1 Host: javarush.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Accept: text/ html Connection: close
GET – підтип запиту alpha/api/contacts – запит до веб -серверу HTTP/1.1 – версія протоколу – HTTP/1.1 Host: javarush.com – доменне ім'я User-Agent: Mozilla/ 5… – унікальне ім'я браузера Accept: text/html – тип запитуваного документа: HTML Connection: close – закрити з'єднання сервером після обробки запиту.
Перший рядок – це фактично запит. Потім йдуть додаткові параметри запиту, так звані заголовки запиту (Headers).
А ось і приклад відповіді:
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: uk Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close <html><body><a href="http://ample.com/about .html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - Відповідь «200 ОК» - все добре. Date: Wed, 11 Feb 2009 - Дата обробки запиту Server: Apache - Ім'я веб-сервера X-Powered-By: PHP - Сервер працює на мові PHP Last-Modified: Wed, 11 Feb 2009 - Час останнього оновлення запитуваного файлу Content-Language: ru - Мова файлу Content-Type: text/html; charset=utf-8 – Відповідь – це HTML-файл у UTF-8 кодуванні Content-Length: 1234 - Довжина відповіді – 1234 байти Connection: close - З'єднання буде закрито після обробки запиту <html><body><a href="http://ample - Сам HTML-файл.
Хочу звернути твою увагу на дві речі:
По-перше, що б ти не просив, для сервера це виглядає як запит файлу . Неважливо, чи є такий файл на сервері або він його сам генерує у відповідь на запит.
По-друге, сам файл-відповідь< /span> передається як частина відповіді протоколу HTTP. Тобто. спочатку у відповіді сервера ми бачимо якісь додаткові дані, а потім просто пішло тіло файлу, який віддає сервер.
— Як цікаво. Не впевнений, що все зрозумів. Потім перечитаю ще раз.
— Ну і ще хочу розповісти тобі про одну маленьку, але цікаву річ – Cookie.
— Що це ще таке?
Відповідно до протоколу HTTP, Cookie - це маленькі шматочки інформації, які сервер відправляє клієнту, щоб той зберігав їх у себе . І за наступних запитів передавав їх назад до сервера.
— Це ще навіщо?
— Наприклад, користувач авторизувався на головній сторінці сайту, тоді сервер створює об'єкт сесії на сервері для цього користувача, а унікальний номер цієї сесії передає клієнту як Cookie. При наступному запиті від клієнта до сервера, цей номер сесії разом з іншими Cookie знову буде відправлений на сервер. Таким чином, сервер дізнається користувача, який надіслав йому новий запит.
— Як цікаво.
— Коли ти будеш писати свої сервлети, ми познайомимося з цією темою ближче, а зараз давай зробимо перерву.
— Як скажеш.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ