Веб-сервер. Взаємодія клієнт-сервер
Сервер
Сервер (англ. server — «служка», від англ. to serve — служити, множ. се́рвери) — у комп'ютерній термінології термін може стосуватися окремого комп'ютера чи програми. Головною ознакою в обох випадках є здатність машини чи програми переважну кількість часу працювати автономно, без втручання людини, реагуючи на зовнішні події відповідно до встановленого програмного забезпечення. Втручання людини відбувається під час встановлення серверу і під час його сервісного обслуговування. Часто це роблять окремі адміністратори серверів з вищою кваліфікацією.
Сервер як комп'ютер — це комп'ютер у локальній чи глобальній мережі, який надає користувачам свої обчислювальні і дискові ресурси, а також доступ до встановлених сервісів; найчастіше працює цілодобово, чи у час роботи групи його користувачів.
Сервер як програма — програма, що надає деякі послуги іншим програмам (клієнтам). Зв'язок між клієнтом і сервером зазвичай здійснюється за допомогою передачі повідомлень, часто через мережу, і використовує певний протокол для кодування запитів клієнта і відповідей сервера. Серверні програми можуть бути встановлені як на серверному, так і на персональному комп'ютері, щоразу вони забезпечують виконання певних служб (наприклад, сервер баз даних чи вебсервер).
Комп'ютер або програма, що установлена на цьому комп'ютері, здатні автоматично розподіляти інформацію чи файли під керуванням мережної ОС або у відповідь на запити, надіслані у режимі on-line користувачами, і таким чином надавати послуги іншим комп'ютерам мережі (клієнтам).
Загальне призначення сервера
У більшості загального користування сервер фізичного комп'ютера (система комп'ютерної техніки) призначений запустити одну або декілька послуг (як приймаюча сторона) для задоволення потреб користувачів інших комп'ютерів в мережі. В залежності від обчислювальних послуг, які вона пропонує, це може бути сервер баз даних, файловий сервер, поштовий сервер, сервер друку, вебсервер, ігровий сервер, або якийсь інший сервер. У контексті архітектури клієнт-сервер, сервер являє собою комп'ютерну програму, яка обслуговує запити інших програм — «клієнтів». Таким чином, сервер виконує деякі обчислювальні завдання від імені «клієнтів». Сервери часто надають основні послуги через мережу, або в приватних користувачів — всередині великої організації або громадським користувачам — через Інтернет. Мережевий сервер являє собою комп'ютер, призначений для обробки запитів і передачі даних на інші (клієнт) комп'ютери по локальній мережі або через Інтернет. Мережеві сервери зазвичай конфігуруються з додатковою пам'яттю і ємністю для обробки навантаження з обслуговування клієнтів.
Вебсервер
Вебсервер (до 2019 — веб-сервер, англ. Web Server) — це сервер, що приймає HTTP-запити від клієнтів, зазвичай веббраузерів, видає їм HTTP-відповіді, зазвичай разом з HTML-сторінкою, зображенням, файлом, медіа-потоком або іншими даними. Вебсервер — одна із основ Всесвітньої павутини.
Вебсервером називають як програмне забезпечення, що виконує функції вебсервера, так і комп'ютер, на якому це програмне забезпечення працює.
Клієнти дістаються вебсервера за URL-адресою потрібної їм вебсторінки або іншого ресурсу.

Додатковими функціями багатьох вебсерверів є:
- Ведення журналу серверу про звернення користувачів до ресурсів
- Автентифікація користувачів
- Підтримка сторінок, що динамічно генеруються
- Підтримка HTTPS для захищених з'єднань з клієнтами
Як клієнти для звернення до вебсерверів можуть використовуватися абсолютно різні пристрої:
- Веббраузер — найпоширеніший спосіб
- Спеціальне програмне забезпечення може самостійно звертатися до вебсерверів для отримання оновлень або іншої інформації
- Мобільний телефон може дістатися до ресурсів вебсервера за допомогою протоколу WAP або HTTP
- Інші інтелектуальні пристрої або побутова техніка
Взаємодія клієнт-сервер
Клієнт-серверна архітектура
Архітектура клієнт-сервер є одним із архітектурних шаблонів програмного забезпечення та є домінуючою концепцією у створенні розподілених мережних застосунків і передбачає взаємодію та обмін даними між ними. Вона передбачає такі основні компоненти:
- набір серверів, які надають інформацію або інші послуги програмам, які звертаються до них;
- набір клієнтів, які використовують сервіси, що надаються серверами;
- мережа, яка забезпечує взаємодію між клієнтами та серверами.
Сервери є незалежними один від одного. Клієнти також функціонують паралельно і незалежно один від одного. Немає жорсткої прив'язки клієнтів до серверів. Більш ніж типовою є ситуація, коли один сервер одночасно обробляє запити від різних клієнтів; з іншого боку, клієнт може звертатися то до одного сервера, то до іншого. Клієнти мають знати про доступні сервери, але можуть не мати жодного уявлення про існування інших клієнтів.
Клієнт та сервер
Дуже важливо ясно уявляти, хто або що розглядається як «клієнт». Можна говорити про клієнтський комп'ютер, з якого відбувається звернення до інших комп'ютерів. Можна говорити про клієнтське та серверне програмне забезпечення. Нарешті, можна говорити про людей, які бажають за допомогою відповідного програмного та апаратного забезпечення отримати доступ до тієї чи іншої інформації.
Загальноприйнятим є положення, що клієнти та сервери — це перш за все програмні модулі. Найчастіше вони знаходяться на різних комп'ютерах, але бувають ситуації, коли обидві програми — і клієнтська, і серверна, фізично розміщуються на одній машині; в такій ситуації сервер часто називається локальним.
Обов'язки та взаємодія
Модель клієнт-серверної взаємодії визначається перш за все розподілом обов'язків між клієнтом та сервером. Логічно можна відокремити три рівні операцій:
- рівень представлення даних, який по суті являє собою інтерфейс користувача і відповідає за представлення даних користувачеві і введення від нього керуючих команд;
- прикладний рівень, який реалізує основну логіку застосунку і на якому здійснюється необхідна обробка інформації;
- рівень управління даними, який забезпечує зберігання даних та доступ до них.
Дворівнева клієнт-серверна архітектура передбачає взаємодію двох програмних модулів — клієнтського та серверного. В залежності від того, як між ними розподіляються наведені вище функції, розрізняють:
- модель тонкого клієнта, в рамках якої вся логіка застосунку та управління даними зосереджена на сервері. Клієнтська програма забезпечує тільки функції рівня представлення;
- модель товстого клієнта, в якій сервер тільки керує даними, а обробка інформації та інтерфейс користувача зосереджені на стороні клієнта. Товстими клієнтами часто також називають пристрої з обмеженою потужністю: кишенькові комп'ютери, мобільні телефони та ін.