неділя, 12 листопада 2017 р.


Протокол TCP/IP або як працює Інтернет


У основі роботи глобальної мережі Інтернет лежить  набір (стек) протоколів TCP/IP. На перший погляд ці терміни здаються складними. Насправді стек протоколів TCP/IP — це простий набір правил обміну інформацією. В принципах, що лежать в основі протоколів TCP/IP, немає нічого нового: все нове — це добре забуте старе.


Філософія.

Людина може вчитися двома шляхами:
1.Через тупе зазубрювання стандартних способів  рішення  типових завдань (чому зараз в основному і вчать в школі). Таке навчання малоефективне. Напевно вам доводилося спостерігати паніку і повну безпорадність бухгалтера при зміні версії офісного софту - при щонайменшій зміні послідовності кликів мишки, потрібних для виконання звичних дій. Чи  доводилося бачити людину, що впадає в ступор при зміні інтерфейсу робочого столу?

2.Через розуміння суті проблем, явищ, закономірностей. Через розуміння принципів побудови тієї або іншої системи. В цьому випадку володіння енциклопедичними знаннями не грає великої ролі – інформацію якої невистачає, легко знайти. Головне - знать, що шукати. А для цього потрібне не формальне знання предмета, а розуміння суті.

Пропоную піти другим шляхом, оскільки розуміння принципів, що лежать в основі роботи Інтернету, дадуть можливість почувати себе в Інтернеті упевнено та вільно — швидко  вирішувати виникаючі проблеми.
Принципи роботи інтернет-протоколів TCP/IP по своїй сутті дуже прості та дуже нагадують роботу  старої доброї пошти.
Згадайте, як працює наша звичайна пошта. Спочатку ви на папері пишете лист, потім кладете його в конверт, заклеюєте, на зворотному боці конверта пишете адреси відправника та одержувача, а потім відносите в найближче поштове відділення. Далі лист проходить через ланцюжок поштових відділень до найближчого поштового відділення одержувача, звідки лист листоношею доставляється за вказаною адресою одержувачеві та опускається в його поштову скриньку (з номером його квартири) або вручається особисто. Усе, лист дійшов до одержувача. Коли одержувач захоче вам відповісти листа, то він у своєму листі - відповіді поміняє місцями адреси одержувача та відправника, і лист відправитися до вас по тому ж ланцюжку, але у зворотному напрямку.
Розібравши принцип роботи пошти, можна приступити до розгляду взаємодії комп'ютерів і додатків в мережі Інтернет (та в локальній мережі). Зверніть увагу, що аналогія із звичайною поштою буде майже повною.
Кожен комп'ютер (він же : вузол, хост) у рамках мережі Інтернет теж має унікальну адресу, який називається IP-адресою (Internet Protocol Address), наприклад: 192.168.32.116. IP адреса складається з чотирьох десяткових чисел (від 0 до 255), розділених крапкою. Але знати тільки IP адреса комп'ютера ще недостатньо, оскільки кінець кінцем обмінюються інформацією не комп'ютери самі по собі, а додатки, працюючі на них. А на комп'ютері може одночасно працювати відразу декілька додатків (наприклад поштовий сервер, веб-сервер  та ін.). Для доставки звичайного паперового листа (на почті) недостатньо знати тільки адресу будинку — необхідно ще знати номер квартири. Також і кожен програмний додаток має подібний номер, що називається номером порту. Більшість серверних додатків мають стандартні номери, наприклад: поштовий сервіс прив'язаний до порту з номером 25 (ще говорять: «слухає» порт, приймає на нього повідомлення), веб-сервіс прив'язаний до порту 80, FTP — до порту 21 і так далі.
Таким чином маємо наступну практично повну аналогію з нашою звичайною поштовою адресою:
"адреса будинку" = "IP комп'ютера"
"номер квартири" = "номер порту"
У комп'ютерних мережах, що працюють за протоколом  TCP/IP, аналогом паперового листа в конверті є пакет, який містить дані що передаються та інформацію про адресну, — адреса відправника та адреса одержувача.
Зверніть увагу, комбінація: "IP адреса та номер порту" - називається  "сокет".
Наприклад, з сокета 196.146.49.55:2324 посилаємо пакет на сокет 195.34.32.116:53, тобто пакет піде на комп'ютер, IP адреса, що має, 195.34.32.116, на порт 53. А порту 53 відповідає сервер розпізнавання імен (DNS - сервер), який прийме цей пакет. Знаючи адресу відправника, цей сервер  зможе після обробки нашого запиту сформувати пакет у відповідь, який піде у зворотному напрямі на сокет відправника 196.146.49.55:2324, який для DNS сервера буде сокетом одержувача.
Як правило взаємодія здійснюється за схемою «клієнт-сервер»: «клієнт» просить яку-небудь інформацію (наприклад сторінку сайту), сервер приймає запит, обробляє його і посилає результат.
Більшість програм на домашньому комп'ютері є клієнтами - наприклад поштовий клієнт Outlook, веб-оглядачі IE, FireFox і ін.
Номери портів клієнта не фіксовані як у сервера, а призначаються операційною системою динамічно. Фіксовані серверні порти як правило мають номери до 1024 (але є виключення), а клієнтські починаються після 1024.
І так, IP — це адреса комп'ютера (вузла, хоста) в мережі, а порт — номер конкретного додатку, працюючого на цьому комп'ютері.
Проте людині запам'ятовувати цифрові IP адреси важко — куди зручніше працювати з буквеними іменами. Адже набагато легше запам'ятати слово, чим набір цифр. Так і зроблено — будь-яку цифрову IP адресу можна зв'язати з  буквено-цифровим ім'ям. В результаті наприклад замість 212.42.76.252 можна використати ім'я ukr.net.  А перетворенням доменного імені в цифрову IP адресу займається сервіс доменних імен — DNS (Domain Name System).
Розглянемо детальніше, як це працює. Ваш провайдер або неявно надає вам IP адресe сервера імен (DNS). На комп'ютері з цією IP адресою працює додаток (сервер імен), який знає усі доменні імена в Інтернеті і цифрові IP адреси, що відповідають їм. DNS -сервер «слухає» 53-й порт, приймає на нього запити і видає відповіді, наприклад:
Запит від нашого комп'ютера: "Який IP адреса відповідає імені www.ukr.net "?
Відповідь сервера : "212.42.76.252 ".
Тепер розглянемо, що відбувається, коли у своєму браузері ви набираєте доменне ім'я (URL) цього сайту (www.ukr.net) і, натиснувши <enter>, у відповідь від веб-сервера отримуєте сторінку цього сайту.
Наприклад:
IP адреса нашого комп'ютера : 196.168.65.216
Браузер: Internet Explorer (IE)
DNS сервер: 195.34.32.116 (у вас може бути інший), Сторінка, яку ми хочемо відкрити : www. ukr.net.
Набираємо в адресному рядку браузеру доменне ім'я www. ukr.net  і тиснемо <enter>. Далі операційна система виконує приблизно наступні дії:
Вирушає запит (точніше пакет із запитом) DNS серверу на сокет 195.34.32.116:53. Як був розглянутий вище, порт 53 відповідає DNS - серверу - додатку,  що займається розпізнаванням імен. А DNS - сервер, обробивши наш запит, повертає IP - адресу, яка відповідає введеному імені.
Діалог приблизно наступний:
- Яка IP адреса відповідає імені www. ukr.net?
- 212.42.76.252.
Далі наш комп'ютер встановлює з'єднання з портом 80 комп'ютера  212.42.76.252 і посилає запит (пакет із запитом) на отримання сторінки www. ukr.net 80-й порт відповідає веб-серверу.
Прийнявши від нас запит, веб-сервер обробляє його і в декількох пакетах посилає нам сторінку на мові HTML - мова розмітки тексту, який розуміє браузер.
Наш браузер, отримавши сторінку, відображає її. В результаті ми бачимо на екрані головну сторінку цього сайту.
Навіщо ці принципи потрібно розуміти?
Наприклад, ви помітили дивну поведінку свого комп'ютера - незрозуміла мережева активність, комп’ютер. Що робити? Відкриваємо консоль (натискаємо кнопку «Пуск» - «Виконати» - набираємо cmd - «Ок»). У  консолі набираємо команду netstat - anи тиснемо <Enter>. Ця утиліта відобразить список встановлених з'єднань між сокетами нашого комп'ютера і сокетами віддалених вузлів. Якщо ми бачимо в колонці «Зовнішню адресу» якісь чужі IP адреси, а через двокрапку 25-й порт, що це може означати? (Пам'ятайте, що 25-й порт відповідає поштовому серверу?) Це означає те, що ваш комп'ютер встановив з'єднання з якимсь поштовим сервером (серверами) і шле через нього якісь листи. І якщо ваш поштовий клієнт (Outlook наприклад) в цей час не запущений, та якщо ще таких з'єднань на 25-й порт багато, то, ймовірно, у вашому комп'ютері завівся вірус, який розсилає від вашого імені спам або пересилає номери ваших кредитних карток укупі з паролями зловмисникам.
Також розуміння принципів роботи Інтернету потрібне для правильного налаштування файервола (простіше кажучи брандмауера). Ця програма (яка часто поставляється разом з антивірусом), призначена для фільтрації пакетів - "своїх" і "чужих". Свої пропускати, чужих не приймати. Наприклад, якщо ваш фаєрвола повідомляє вас, що хтось хоче встановити з'єднання з яким-небудь портом вашого комп'ютера. Дозволити або заборонити?

Наостанок приведу список портів, з якими вам, ймовірно, доведеться зіткнутися:

135-139ці порти використовуються Windows для доступу до загальних ресурсів.
21порт FTP сервера.
25порт поштового SMTP сервера. Через нього ваш поштовий клієнт відправляє листи. IP адресу SMTP сервера і його порт (25-й) слід вказати в налаштуваннях вашого поштового клієнта.

110порт POP3 сервера. Через нього поштовий клієнт забирає листи з вашої поштової скриньки. IP адресу POP3 сервера і його порт (110-й) також слід вказати в налаштуваннях поштового клієнта.

80порт WEB -сервера.

3128, 8080 проксі-сервери (налаштовуються в параметрах браузера).

Що таке маска під мережі та шлюз (роутер, маршрутизатор)?

Усе просто. Комп'ютери об'єднуються в локальні мережі. У локальній мережі комп'ютери безпосередньо «бачать» тільки один одного. Локальні мережі з'єднуються один з одним через шлюзи (роутери, маршрутизатори). Маска підмережі призначена для визначення — чи належить комп'ютер-одержувач до цієї ж локальної мережі або ні. Якщо комп'ютер-одержувач належить цій же мережі, що і комп'ютер-відправник, то пакет передається йому безпосередньо, інакше пакет вирушає на шлюз за, який далі, по відомих йому маршрутах, передає пакет в іншу  мережу, тобто в інше поштове відділення (по аналогії з поштою).
Наостанок розглянемо що ж означають незрозумілі терміни:
TCP/IP — ця назва набору мережевих протоколів. Насправді переданий пакет проходить декілька рівнів. (Як на пошті: спочатку пишемо лист, потім поміщаєте в конверт з адресою, потім на пошті ставиться штамп і так далі).
IP протокол — це протокол так званого мережевого рівня. Завдання цього рівня — доставка ip -пакетів від комп'ютера відправника до комп'ютера одержувачеві. Пакети цього рівня мають ip -адресу відправника і ip -адресу одержувача. Номери портів на мережевому рівні не використовуються. Якому порту, тобто додатку адресований цей пакет, чи був цей пакет доставлений чи був втрачений, на цьому рівні невідомо — це не його завдання, це завдання транспортного рівня.
TCP і UDP — це протоколи так званого транспортного рівня. Транспортний рівень знаходиться над мережевим. На цьому рівні до пакету додається порт відправника та порт одержувача.
TCP — це протокол зі встановленням з'єднання та з гарантованою доставкою пакетів. Спочатку здійснюється обмін спеціальними пакетами для встановлення з'єднання, відбувається щось подібне до рукостискання (-Привіт. -Привіт. -Поговорим? -Давай.). Далі по цьому з'єднанню туди і назад посилаються пакети (йде бесіда), причому з перевіркою, чи дійшов пакет до одержувача. Якщо пакет не дійшов, то він посилається повторно («повтори, не розчув»).
UDP — це протокол без встановлення з'єднання та з негарантованою доставкою пакетів. (Типу: крикнув що-небудь, а почують тебе чи ні — неважливо).
Над транспортним рівнем знаходиться прикладний рівень. На цьому рівні працюють такі протоколи, як http, ftp та ін. Наприклад HTTP і FTP — використовують надійний протокол TCP, а DNS -сервер працює через ненадійний протокол UDP.

Як подивитися поточні з'єднання?

Поточні з'єднання можна подивитися за допомогою команди

netstat - an

(параметр n вказує виводити IP адреси замість доменних імен).


     Запускається ця команда таким чином: «Пуск« - »Виконати« - набираємо cmd - »Оки«. У консолі (чорне вікно), що з'явилася, набираємо команду netstat - an і тиснемо <Enter>.  
        Результатом буде список встановлених з'єднань між сокетами нашого комп'ютера і видалених вузлів.
         В результаті проведення таких операцій можна повністю проаналізувати підключення до двного сокета, та дозволити або заборонити дані підключення.