У цій статті буде розказано основи моделі TCP/IP. Для кращого розуміння описані основні протоколи і служби. Головне – не поспішати і намагатися розуміти кожну річ поетапно. Всі вони взаємопов’язані і без розуміння однієї, важко буде зрозуміти іншу. Тут скомпонована вельми поверхнева інформація, так що цю статтю сміливо можна назвати «стеком протоколів TCP/IP для чайників». Однак, багато речей тут не так важкі для розуміння, як може здатися на перший погляд.
TCP/IP
Стек TCP/IP – мережева модель передачі даних в мережі, вона визначає порядок взаємодії пристроїв. Дані надходять на канальний рівень і обробляються по черзі кожним рівнем вище. Стек представлений у вигляді абстракції, яка пояснює принципи обробки і прийому даних.
Стек протоколів мережі TCP/IP має 4 рівня:
Прикладний рівень
Прикладний рівень забезпечує можливість взаємодії між додатком і іншими рівнями стека протоколів, аналізує і перетворює інформацію, що надходить у формат, придатний для програмного забезпечення. Є найближчим до користувача і взаємодіє з ним безпосередньо.
Найпоширеніші протоколи:
- HTTP;
- FTP;
- SMTP;
- DNS.
Кожен протокол визначає власний порядок і принципи роботи з даними.
HTTP (HyperText Transfer Protocol) призначений для передачі даних. За нього надсилаються, наприклад, документи у форматі HTML, які служать основою веб-сторінки. Спрощено схема роботи представляється як «клієнт – сервер». Клієнт надсилає запит, сервер його приймає, належним чином обробляє і повертає кінцевий результат.
FTP (File Transfer Protocol) служить стандартом передачі файлів в мережі. Клієнт посилає запит на якийсь файл, сервер шукає файл у своїй базі і при успішному виявленні відправляє його як відповідь.
SMTP (Simple Mail Transfer Protocol) використовується для передачі електронної пошти. SMTP-операція включає в себе три послідовних кроки:
Заголовок (Header)
У заголовку містяться службові дані. Важливо розуміти, що вони призначені тільки для конкретного рівня. Це означає, що як тільки пакет відправиться до одержувача, то буде оброблений там по такій ж моделі, але в зворотному порядку. Вкладений заголовок буде нести спеціальну інформацію, яка може бути оброблена певним чином.
Наприклад, заголовок, вкладений на транспортному рівні, на іншій стороні може бути оброблений тільки транспортним рівнем. Інші просто проігнорують.
Транспортний рівень
На транспортному рівні отримана інформація обробляється як єдиний блок, незалежно від вмісту. Отримані повідомлення діляться на сегменти, до них додається заголовок, і все це відправляється нижче.
Протоколи передачі даних:
- TCP;
- UDP.
TCP (Transmission Control Protocol) – найпоширеніший протокол. Він відповідає за гарантовану передачу даних. При відправленні пакетів контролюється їх контрольна сума, процес транзакції. Це означає, що інформація дійде «в цілості й схоронності, незалежно від умов.
UDP (User Datagram Protocol) – другий за популярністю протокол. Він також відповідає за передачу даних. Відмітна властивість полягає в його простоті. Пакети просто відправляються, не створюючи особливою зв’язку.
TCP або UDP?
У кожного з цих протоколів є своя область застосування. Вона логічно обумовлена особливостями роботи.
Основна перевага UDP полягає у швидкості передачі. TCP є складним протоколом з безліччю перевірок, в той час як UDP представляється більш спрощеним, а значить, і більш швидким.
Недолік криється в простоті. Через відсутність перевірок не гарантується цілісність даних. Таким чином, інформація просто відправляється, а всі перевірки і подібні маніпуляції залишаються за додатком.
UDP використовується, наприклад, для перегляду відео. Для відеофайлу не критична втрата невеликої кількості сегментів, у той час як швидкість завантаження – найважливіший фактор.
Однак якщо необхідно надіслати паролі або реквізити банківської картки, то необхідність використання TCP очевидна. Втрата навіть мізерної частини даних може спричинити за собою катастрофічні наслідки. Швидкість в цьому випадку не так важлива, як безпека.
Мережевий рівень
Мережевий рівень отриманої інформації утворює пакети і додає заголовок. Найбільш важливою частиною даних є IP і MAC-адреси відправників і одержувачів.
IP-адреса (Internet Protocol address) – логічний адресу пристрою. Містить інформацію про місце розташування пристрою в мережі. Приклад запису: [192.168.33.4].
Адреса MAC (Media Access Control address) – фізична адреса пристрою. Використовується для ідентифікації. Присвоюється мережного обладнання на етапі виготовлення. Представлений як шестибайтный номер. Наприклад: [08-00-27-AB-0E-25].
Мережевий рівень відповідає за:
- Визначення маршрутів доставки.
- Передачу пакетів між мережами.
- Присвоєння унікальних адрес.
Маршрутизатор – це пристрій мережевого рівня. Вони прокладають шлях між комп’ютером і сервером на основі отриманих даних.
Найпопулярніший протокол цього рівня – IP.
IP (Internet Protocol) – протокол, призначений для адресації в мережі. Використовується для побудови маршрутів, по яких відбувається обмін пакетами. Не володіє ніякими засобами перевірки та підтвердження цілісності. Для забезпечення гарантій доставки використовується TCP, який використовує IP в якості транспортного протоколу. Розуміння принципів цієї транзакції багато в чому пояснює основу того, як працює стек протоколів TCP/IP.
Види IP-адрес
В мережах використовуються два види IP-адрес:
Публічні (Public) використовуються в Інтернеті. Головне правило – абсолютна унікальність. Приклад їх використання – маршрутизатори, кожен з яких має свою IP-адреса для взаємодії з мережею Інтернет. Такий адресу називається публічним.
Приватні (Private) не використовуються в Інтернеті. У глобальній мережі такі адреси не є унікальними. Приклад – локальна мережа. Кожному пристрою присвоюється унікальний в межах даної мережі IP-адресу.
Взаємодія з мережею Інтернет здійснюється через маршрутизатор, який, як вже було сказано вище, має свій публічний IP-адресу. Таким чином, всі комп’ютери, підключені до маршрутизатора, представляються в мережі Інтернет від імені одного публічного IP-адреси.
IPv4
Найпоширеніша версія інтернет-протоколу. Передує IPv6. Формат запису – чотири восьмибітних числа, розділені крапками. Через знак дробу зазначається маска підмережі. Довжина адреси – 32 біта. У переважній більшості випадків, коли мова йде про IP-адресу, мається на увазі саме IPv4.
Формат запису: [192.168.7.2/24].
IPv6
Ця версія призначена для вирішення проблем попередньою версією. Довжина адреси – 128 біт.
Основна проблема, яку вирішує IPv6 – це вичерпання адрес IPv4. Передумови почали виявлятися вже на початку 80-х років. Незважаючи на те, що ця проблема вступила в гостру стадію вже в 2007-2009 роках, впровадження IPv6 дуже повільно «набирає обертів».
Головна перевага IPv6 – більш швидке інтернет-з’єднання. Це відбувається з-за того, що для цієї версії протоколу не потрібно трансляції адрес. Виконується проста маршрутизація. Це є менш витратним і, отже, доступ до інтернет-ресурсів надається швидше, ніж в IPv4.
Приклад запису: [4003:0af3:06s8:11f3:8b4e:09d8:623b:d34f].
Існує три типи IPv6 адрес:
Unicast – тип одноадресних IPv6. При відправці пакет досягає тільки інтерфейсу, розташованого на відповідному адресі.
Anycast відноситься до групових IPv6-адреси. Відправлений пакет потрапить в найближчий мережевий інтерфейс. Використовується тільки маршрутизаторами.
Multicast є багатоадресними. Це означає, що відправлений пакет досягне всіх інтерфейсів, які перебувають групі мультивещания. На відміну від broadcast, який є «мовленням для всіх», multicast мовить лише певній групі.
Маска підмережі
Маска підмережі виявляє з IP-адреси підмережі і номер хоста.
Наприклад, IP-адресу [192.168.38.2] має маску [255.255.255.0]. У такому разі формат запису буде виглядати так [192.168.38.2/24]. Число «24» – це кількість біт у масці. Вісім біт дорівнює одному октету, який також може називатися байтом.
Якщо детальніше, то маску підмережі [255.255.255.0] можна представити у двійковій системі числення таким чином: [11111111.11111111.11111111.00000000]. У ній є чотири октету, і запис складається з «1» і «0». Якщо скласти кількість одиниць, то отримаємо в сумі «24». На щастя, вважати за одиницю не обов’язково, адже в одному октете – 8 значень. Бачимо, що три з них заповнені одиницями, складаємо [8+8+8+0] і отримуємо «24».
Якщо говорити саме про масці підмережі, то в двійковому представленні вона має в одному октете або одиниці, або нулі. При цьому послідовність така, що спочатку йдуть байти з одиницями, а тільки потім з нулями.
Розглянемо невеликий приклад. Є IP-адресу [192.168.46.2] і маска підмережі [255.255.255.0]. Вважаємо і записуємо: [192.168.46.2/24]. Тепер зіставляємо маску з IP-адресою. Ті октеты маски, в яких всі значення дорівнюють одиниці (255) залишають відповідні їм октеты в IP-адресі без зміни. Якщо ж у значенні нулі (0), то октеты в IP-адресі також стають нулями. Таким чином, в значенні адреси підмережі отримуємо [192.168.46.0].
Підмережа і хост
Підмережа відповідає за логічне поділ. По суті, це пристрої, що використовують одну локальну мережу. Визначається діапазон IP-адрес.
Хост – це мережевого інтерфейсу (мережевої карти). Визначається з IP-адреси з допомогою маски. Наприклад: [192.168.15.2/24]. Так як перші три октету – підмережа, то залишається [0.0.0.2]. Це і є номер хоста.
Діапазон адрес хоста – від 0 до 255. Хост під номером «0» є, власне, адресою самої підмережі. А хост під номером «255» є широкомовним.
Адресація
Для адресації в стеку протоколів TCP/ІР використовуються три типи адрес:
Локальними називаються MAC-адреси. Вони використовуються для адресації в таких технологіях локальної мережі як, наприклад, Ethernet. У контексті TCP/IP слово «локальні» означає, що вони діють лише в межах підмережі.
Мережевою адресою в стеку протоколів TCP/IP є IP-адресу. При відправці файлів з його заголовка зчитується адресу одержувача. З його допомогою маршрутизатор дізнається номер хоста і підмережа і, грунтуючись на цій інформації, прокладає маршрут до кінцевого вузла.
Доменні імена – це удобочитаемые адреси веб-сайтів в Інтернеті. Веб-сервери в мережі Інтернет доступні за публічному IP-адресою. Він успішно обробляється комп’ютерами, однак для людей представляється дуже незручним. Для того щоб уникнути подібних труднощів, використовуються доменні імена, що складаються з областей, званих «доменами». Вони розташовуються в порядку суворої ієрархії, від верхнього рівня до нижнього.
Домен першого рівня представляє конкретну інформацію. Загальні (.org, .net) не обмежені якимись чіткими кордонами. Зворотна ситуація – з локальними (.us .ru). Вони, як правило, прив’язані територіально.
Домени нижчих рівнів – це все інше. Він може бути будь-якого розміру і містити будь-яку кількість значень.
Наприклад, “www.test.quiz.sg” – коректне доменне ім’я, де «sg» – локальний домен першого (верхнього) рівня, «quiz.sg» – домен другого рівня, «test.quiz.sg» – домен третього рівня. Доменні імена також можуть називатися DNS-іменами.
DNS (Domain Name System) встановлює відповідність між доменними іменами та публічним IP-адресою. При наборі доменного імені в рядку браузера DNS виявить відповідний IP-адресу і повідомить пристрою. Пристрій обробить цей машинний код і поверне його у вигляді веб-сторінки.
Канальний рівень
На канальному рівні визначається взаємозв’язок між пристроєм і фізичним середовищем передачі, додається заголовок. Відповідає за кодування даних і підготовку кадрів для передачі по фізичному середовищі. На цьому рівні працюють мережеві комутатори.
Найпоширеніші протоколи:
Ethernet – найпоширеніша технологія проводових локальних мереж.
WLAN – локальна мережа на основі бездротових технологій. Взаємодія пристроїв відбувається без фізичних кабельних з’єднань. Приклад самого поширеного методу – Wi-Fi.
TCP/IP для статичного IPv4-адреси
Статичний IPv4-адресу призначається безпосередньо у налаштуваннях пристрою або автоматично при підключенні до мережі і є постійним.
Для налаштування стека протоколів TCP/IP на використання постійного IPv4-адреси необхідно ввести в консолі команду ipconfig/all і знайти наступні дані.
Далі потрібно зайти у властивості потрібного з’єднання, відкрити властивості IPv4 і поставити відмітки так, як вказано на малюнку. Знайдені раніше дані ввести у відповідні поля.
TCP/IP для використання динамічного IPv4-адреси
Динамічний IPv4-адресу використовується якийсь час, здається в оренду, після чого змінюється. Присвоюється пристрою автоматично при підключенні до мережі.
Щоб налаштувати стек протоколів TCP/IP на використання непостійного IP-адреси необхідно зайти у властивості потрібного з’єднання, відкрити властивості IPv4 і поставити відмітки так, як зазначено.
Способи передачі даних
Дані передаються через фізичне середовище трьома способами:
- Simplex.
- Half-duplex.
- Full Duplex.
Simplex – це односторонній зв’язок. Передача ведеться тільки одним пристроєм, в той час як інша тільки приймає сигнал. Можна сказати, що інформація транслюється тільки в одному напрямку.
Приклади симплексного зв’язку:
- Телемовлення.
- Сигнал від супутників GPS.
Half-duplex – це двосторонній зв’язок. Однак тільки один вузол може передавати сигнал в певний момент часу. При такій зв’язку два пристрої не можуть одночасно використовувати один канал. Повноцінна двостороння зв’язок може бути фізично неможлива або призводити до колізій. Кажуть, що вони конфліктують за середовище передачі. Цей режим застосовується при використанні коаксіального кабелю.
Приклад напівдуплексного зв’язку – спілкування по рації на одній частоті.
Full Duplex – повноцінна двостороння зв’язок. Пристрої можуть одночасно транслювати сигнал і виробляти прийом. Вони не конфліктують за середовище передачі. Цей режим застосовується при використанні технології Fast Ethernet і з’єднанні з допомогою витої пари.
Приклад дуплексного зв’язку – спілкування по телефону через мобільну мережу.
TCP/IP vs OSI
Модель OSI визначає принципи передачі даних. Рівні стека протоколів TCP/IP прямо відповідають цій моделі. На відміну від чотирирівневого TCP/IP має 7 рівнів:
В даний момент не варто сильно заглиблюватися в цю модель, але необхідно хоча б поверхневе розуміння.
Прикладний рівень у моделі TCP/IP відповідає трьом верхнім рівнями OSI. Всі вони працюють з додатками, тому можна чітко простежити логіку такого об’єднання. Така узагальнена структура стека протоколів TCP/IP сприяє полегшеному розуміння абстракції.
Транспортний рівень залишається без змін. Виконує однакові функції.
Мережевий рівень також не змінено. Виконує ті ж завдання.
Канальний рівень TCP/IP відповідає двом останнім рівнів OSI. Канальний рівень встановлює протоколи передачі даних через фізичне середовище.
Фізичний являє собою власне фізичний зв’язок – проводи, кабелі, електричні сигнали, конектори і т. п. В стеку протоколів TCP/IP було вирішено об’єднати ці два рівня в один, так як вони обидва працюють з фізичним середовищем.