Протокол 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>.
Результатом буде список встановлених з'єднань між сокетами
нашого комп'ютера і видалених вузлів.
В результаті проведення таких операцій можна повністю проаналізувати підключення до двного сокета, та дозволити або заборонити дані підключення.

