- Поговоримо трохи про мережу.
- Розглянемо пристрій клієнт-серверної та трирівневої архітектури.
- Розберемося з протоколами HTTP/HTTPS.
- Дізнаємося все, що потрібно, про Maven.
- Поговоримо про сервлети.
- Контейнери сервлетів.
- І нарешті – про MVC.
Частина 1. Поговоримо трохи про мережу
Почнемо з найголовнішого і поговоримо про те, на основі чого будуються всі соціальні мережі, web-сервіси та додатки, месенджери та простенькі сайти - про мережу (в контексті цього циклу статей під терміном "мережа" мається на увазі Глобальна мережа Інтернет ) . Мережа складається з величезної кількості комп'ютерів: вони з'єднані між собою і здатні спілкуватися. Важливо розуміти, як вони це роблять, тому що web-програми якраз і займаються передачею інформації від одного комп'ютера іншому.Мережева модель OSI
Модель OSI (Open Systems Interconnection) створює рівневий підхід до побудови мережі. Вона чітко показує, як і на якому рівні між собою можуть взаємодіяти члени однієї мережі. Усього дана модель містить 7 рівнів:7 | Прикладний |
6 | Уявлення |
5 | Сеансовий |
4 | Транспортний |
3 | Мережевий |
2 | Канальний |
1 | Фізичний |
-
1. Фізичний рівень – тут свою справу роблять закони фізики, а завдання людини – використовувати та спрямовувати це у своїх цілях. Наприклад, створення кабелів та прокладання їх до членів мережі.
Нам не цікавий.
-
Канальний рівень - відповідає за передачу даних мережевим вузлам, створення каналів передачі на фізичних об'єктах.
Нам не цікавий, якщо немає бажання писати прошивку для каналоутворювальної апаратури.
-
Мережевий рівень — для визначення адреса окремих користувачів мережі та маршрутів до них. На цьому рівні варто зупинитися докладніше, а саме на адресаі користувача в мережі.
Він визначається спеціальним протоколом: найпоширеніший - IPv4 (Internet Protocol version 4). Саме його потрібно використовувати веб-програміст для звернення до іншого абонента мережі.
IPv4 складається з чотирьох байтових значень, розділених точкою, наприклад: 192.0.2.235. Варто пам'ятати, що значення байтові, отже, вони лежать у межах 0..255.
IP-адресаи, у свою чергу, діляться на класи, і просто так привласнити собі гарну комбінацію циферок не вийде, але так сильно заглиблюватись ми не станемо. Досить розуміти, що IP-адресаа — це унікальний ідентифікатор абонента в мережі, яким ми зможемо до нього звернутися.
-
Транспортний рівень займається доставкою інформації адресаату. Для цього використовуються різні протоколи, які нам поки що не цікаві. Набагато більше за нас цікавить поняття, яке з'являється на цьому рівні, — port .
Порти відповідають за ідентифікацію конкретної програми на комп'ютері. Наприклад, ти написав чат на Java, встановив на 2 комп'ютери і хочеш відправити своєму співрозмовнику. Твоє повідомлення упаковується, відправляється за конкретною IP-адресаою, доставляється твоєму співрозмовнику, але його ПК не знає, що робити з отриманою інформацією, тому що не розуміє, який додаток має обробити твоє повідомлення. Для цього і вказуються порти під час спілкування абонентів у мережі.
Порт є числом від 0 до 65535. Він додається до IP-адресаи після двокрапки: 192.0.2.235:8080 . Але не можна використовувати всі порти із зазначеного діапазону: частина з них зарезервована під операційну систему, ще частину прийнято використовувати з обумовленою метою. На призначення різних портів заглиблюватися не будемо, поки що достатньо розуміти їх роль у процесі спілкування в мережі.
-
Сеансовий рівень — створює та керує сеансами зв'язку додатків. На цьому рівні стає можливою взаємодія додатків, надсилання запитів службового рівня. Для нас важливо знати, що на цьому рівні між двома абонентами відкривається сесія (session) , з якою нам часто доведеться працювати.
Сесія – сутність, яка створюється під час встановлення зв'язку між двома користувачами. У ньому можна зберігати необхідну нам інформацію про користувача, історію їх взаємодії. Важливою деталлю є те, що при зупинці обміну інформацією сесія не пропадає, а зберігає свій стан протягом встановленого проміжку часу, тому користувачі можуть продовжити обмін інформацією після перерви.
Якщо програма спілкується одночасно з кількома користувачами, встановлюється відповідна кількість з'єднань, а отже, і сесій. Кожна сесія має унікальний ідентифікатор (ID) , що дозволяє додатку розрізняти користувачів, з якими відбувається спілкування.
-
Рівень подання – відповідає за кодування/декодування даних. Очевидно, якщо нам потрібно передати іншому користувачі рядок “Hello web”, спочатку він перетворюється (кодується) в бінарний код, і лише потім відправляється. Досягши адресаата, повідомлення перетворюється назад (декодується), і адресаат може побачити вихідний рядок. Ці дії відбуваються лише на рівні уявлення.
-
Прикладний рівень – найцікавіший рівень для нас. Він забезпечує взаємодію програм з мережею. На цьому рівні ми прийматимемо, надсилатимемо повідомлення, робитимемо запити до сервісів і віддалених баз даних.
Існує безліч протоколів, які використовуються на цьому рівні: POP3, FTP, SMTP, XMPP, RDP, SIP, TELNET і, звичайно, HTTP/HTTPS. Протокол — це загальна угода, яку ми дотримуємося, складаючи повідомлення. Про протоколи HTTP/HTTPS ми обов'язково поговоримо окремо та докладніше.
- IP-адресаа - адресаа абонента в мережі;
- Порт - адресаа програми конкретного абонента;
- Сесія - сутність яка існує протягом усього спілкування двох абонентів;
- Прикладні протоколи (HTTP/HTTPS) — правила, якими ми керуватимемося при складанні та надсиланні повідомлень.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ