> For the complete documentation index, see [llms.txt](https://swit-school.gitbook.io/qa-book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://swit-school.gitbook.io/qa-book/testuvannya-igor/ponyattya-pro-kliyent-servernu-arkhitekturu/merezhevi-protokoli.md).

# Мережеві протоколи

Архітектура клієнт-сервер визначає принципи спілкування між комп'ютерами, а правила і взаємодії визначені в протоколі.

**Мережевий протокол** – це набір правил, за якими відбувається взаємодія між комп'ютерами в мережі.

**Мережеві протоколи:**

**TCP/IP** – набір (стек) протоколів передачі даних. TCP/IP – це позначення всієї мережі, яка працює на основі двох протоколів – TCP і IP.

**TCP (Transfer Control Protocol)** – протокол, який служить для встановлення надійного з'єднання між двома пристроями, передачі інформації і підтвердження її отримання.

**IP (Internet Protocol)** – інтернет протокол, який відповідає за правильність доставки повідомлень за певною адресою. При цьому дані розбиваються на пакети, які можуть доставлятися по-різному.

**MAC (Media Access Control)** – протокол, за допомогою якого відбувається ідентифікація мережевих пристроїв. Всі пристрої, підключені до інтернету, мають свою унікальну MAC адресу.

**ICMP (Internet control message protocol)** – протокол, який відповідає за обмін інформацією, але не використовується для передачі даних.

**UDP (User datagram protocol)** – протокол, який керує передачею інформації, але інформація не проходить перевірку при отриманні. Даний протокол працює швидше, ніж TCP.

**HTTP (Hyper Text Transfer Protocol)** – протокол передачі гіпертексту, на основі якого працюють всі сайти. Він запитує необхідні дані у віддаленій системи (веб-сторінки, файли).

**FTP (File Transfer Protocol)** – протокол передачі файлів зі спеціального файлового сервера на комп'ютер користувача.

**SSH (Secure Shell)** – протокол, який служить для забезпечення віддаленого керування системою по захищеному каналу.

**POP3 (Post Office Protocol)** – стандартний протокол поштового з'єднання, який відповідає за доставку пошти.

**SMTP (Simple Mail Transfer Protocol)** – протокол, який визначає правила для передачі пошти. Відповідає за повернення або підтвердження про доставку, оповіщення про помилку.

<figure><img src="https://lh6.googleusercontent.com/6EG8fbJB6WFH5wk0cX_jPe0tlKccByyicNLG_gmxmngJP26rNAczjvyH35bZgmN1oBvDTdSuS0XLaUNeEJzdw9rkC9-c_UrFALyioGoD1nIMxWxG1yXowWnwc5i4qOggQLBuAp6VAP2J5dYuk_sORDVDUw=s2048" alt=""><figcaption></figcaption></figure>

Існують концепції побудови системи клієнт-сервер:

1. **Слабкий клієнт** – потужний сервер. У такій моделі вся обробка інформації перенесена на сервер, а у клієнта права доступу суворо обмежені. Сервер відправляє відповідь, яка не вимагає додаткової обробки. Клієнт взаємодіє з користувачем: складає та відправляє запит, приймає результат і виводить інформацію на екран.
2. **Сильний клієнт** – концепція, в якій частина обробки інформації надається клієнтові. У такому випадку сервер виступає сховищем даних, а вся робота по обробці та подання інформації переноситься на комп'ютер клієнта.

Система (додаток), яка заснована на клієнт-серверній взаємодії, включає три основних компоненти: представлення даних, прикладний компонент, компонент управління ресурсами і їх зберігання.

**Існують дворівнева і трирівнева клієнт-серверні архітектури.**

### Дворівнева архітектура складається з двох вузлів:

* сервер, який відповідає за отримання запитів і відправку відповідей клієнту, використовуючи при цьому лише власні ресурси;
* клієнт, який представляє користувацький інтерфейс.

Принцип роботи полягає в тому, що сервер отримує запит, обробляє його і відповідає безпосередньо, без використання сторонніх ресурсів.

<figure><img src="https://lh3.googleusercontent.com/egfyerkhuOuR2zfegEwR0tN2VFps2JYGnreUIgienx6JfArJGfDfeacCRw4L0m6tVyY8VS3l7_oRIn-A0aXcGgRXCUd-WefGZZSB7TElIMURvTQvvnYLcQAro7OoP2iyuQ1uD3IiTSfrOZK-OdhAnFA" alt=""><figcaption></figcaption></figure>

### **Трирівнева архітектура складається з наступних компонентів:**

* представлення даних – призначений для користувача інтерфейс;
* прикладний компонент – сервер додатків;
* керування ресурсами – сервер бази даних, який надає інформацію.

Принцип роботи полягає в тому, що декілька серверів обробляють запит клієнта. Розподіл операцій знижує навантаження на сервер.

<figure><img src="https://lh3.googleusercontent.com/OB7Cqs3v8gaNQaeJWgjGblIJ49UZ0Zr7BfPdwT1qefF3RaF5-6O4neuLNZgKpka5E7R_lEhkJj69gvUhBktkpc1cLE8-vG4Ry3ggVp0vfJu0hMJABzk-n7p5FVP1ZpEe9fK6CFX4b07fAntnn6V2dek" alt=""><figcaption></figcaption></figure>

Трирівневу архітектуру можна розширити до багаторівневої (N-tier, Multi-tier) способом встановлення додаткових серверів. Багаторівнева архітектура дозволяє підвищити ефективність роботи інформаційної системи, а також оптимізувати розподіл її програмно-апаратних ресурсів.

<figure><img src="https://lh3.googleusercontent.com/kj0fKrH35e2BylYBUITkQvbiKu7whZm_e4CCACD4gOQcK5AT_ylwGQGZfq1VwWYv-nzgiHYrGUq9tNfw43DmXF3U3cfuf3bkHwVZp7oyHEj8kFczWcaNd31ujh-PMbAwfoqkG51czT12cGhXoJh33bo" alt=""><figcaption></figcaption></figure>

Взаємодія клієнт-сервер дозволяє розділяти функціонал і обчислювальне навантаження між клієнтськими додатками (замовниками послуг) і серверними додатками (постачальниками послуг). Знання архітектури додатка дозволяє тестувальнику більш якісно провести функціональне, крос-браузерне тестування, тестування юзабіліті і швидкодії.

<br>
