В сучасному світі інформація поширюється за лічені секунди. Ось тільки що з'явилася новина, а через секунду вона вже доступна на будь-якому сайті в мережі інтернет. Інтернет вважається однією з найбільш корисних розробок людського розуму. Щоб користуватися всіма благами, які надає інтернет, необхідно підключитися до цієї мережі.

Мало хто знає, що простий процес відвідування веб-сторінок на увазі непомітну для користувача, складну систему дій. Кожен перехід по посиланню активує сотні різних обчислювальних операцій в серце комп'ютера. У їх числі передачі запитів, прийом відповідей і багато іншого. За кожну дію в мережі відповідають так звані протоколи TCP / IP. Що вони собою являють?

Будь-протокол інтернету TCP / IP працює на своєму рівні. Іншими словами, кожен займається своєю справою. Все сімейство TCP / IP протоколів одночасно виконує колосальну роботу. А користувач в цей час бачить тільки яскраві картинки і довгі рядки тексту.

Поняття стека протоколів

Стек протоколів TCP / IP - це організований набір основних мережевих протоколів, який ієрархічним способом розділений на чотири рівні і являє собою систему транспортного розподілу пакетів з комп'ютерної мережі.

TCP / IP - це найбільш відомий стек мережевих протоколів, який використовується на даний момент. Принципи стека TCP / IP застосовуються як в локальних, так і в глобальних мережах.

Принципи використання адрес в стекупротоколів

Стек мережевих протоколів TCP / IP описує шляхи та напрямки відправки пакетів. Це основне завдання всього стека, що виконується на чотирьох рівнях, які взаємодіють між собою протоколювати алгоритмом. Для правильної відправки пакета і його доставки рівно в ту точку, яка його запросила, була введена і стандартизована адресація IP. Цьому послужило наявність наступних завдань:

  • Адреси різного типу, повинні бути узгоджені. Наприклад перетворення домену сайту в IP адресу сервера і назад, або перетворення імені вузла на адресу і назад. Таки чином стає можливий доступ до точки не тільки за допомогою IP адреси, а й по інтуїтивного назвою.
  • Адреси повинні бути унікальні. Це викликано тим, що в деяких окремих випадках пакет повинен потрапити тільки в одну конкретну точку.
  • Необхідність конфігурації локальних обчислювальних мереж.

У малих мережах, де використовується кілька десятків вузлів, всі ці завдання виконуються елементарно, за допомогою найпростіших рішень: складання таблиці з описом приналежність машини і відповідного їй IP адреси, або можна вручну роздати всім мережевим адаптерам IP адреси. Однак для великих мереж на тисячу або дві тисячі машин задача ручної видачі адрес не здається такою здійсненним.

Саме тому для мереж TCP / IP був винайдений спеціальний підхід, який і став відмінною рисою стека протоколів. Було введено поняття - масштабованість.

Рівні стека протоколів TCP / IP

Тут існує певна ієрархія. Стек протоколів TCP / IP передбачає чотири рівні, кожен з яких обробляє свій набір протоколів:

прикладний рівень: Створено для забезпечення роботи користувача з мережею На цьому рівні обробляється все те, що бачить і робить користувач. Рівень дозволяє користувачеві отримати доступ до різних мережних служб, наприклад: доступ до баз даних, можливість прочитати список файлів і відкрити їх, відправити повідомлення електронної пошти або відкрити веб-сторінку. Разом з одними даними і діям, на цьому рівні передається службова інформація.

Транспортний рівень: це механізм передачі пакетів в чистому вигляді. На цьому рівні абсолютно не має значення ні вміст пакету, ні його приналежність до якого б то не було дії. На цьому рівні має значення тільки адреса вузла відправки пакета і адреса вузла, на який пакет повинен бути доставлений. Як правило, розмір фрагментів, що передаються з використанням різних протоколів, може змінюватися, тому на цьому рівні блоки інформації можуть дробитися на виході і збиратися в єдине ціле в точці призначення. Цим обумовлена \u200b\u200bможлива втрата даних, якщо в момент передачі чергового фрагмента відбудеться короткочасний розрив з'єднання.

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

Даний рівень, надає вищестоящому (прикладному) два типи сервісу:

  • Здійснює гарантовану доставку, за допомогою протоколу ТСР.
  • Здійснює доставку по можливості по протоколу UDP .

Щоб забезпечити гарантовану доставку, згідно з протоколом TCP встановлюється з'єднання, яке дозволяє виставляти на пакетах нумерацію на виході і підтверджувати їх прийом на вході. Нумерація пакетів і підтвердження прийому - це так звана службова інформація. Цей протокол підтримує передачу в режимі "Дуплекс". Крім того, завдяки продуманому регламенту протоколу, він вважається дуже надійним.

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

Мережевий рівень або "рівень інтернету": базовий рівень для всієї моделі TCP / IP. Основний функціонал цього рівня ідентичний однойменним рівню моделі OSI і описує переміщення пакетів в складовою мережі, що складається з декількох, більш дрібних підмереж. Він пов'язує сусідні рівні протоколу TCP / IP.

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

На цьому рівні використовуються наступні мережеві протоколи TCP / IP: ICMP, IP, RIP, OSPF. Основним, і найбільш популярним на мережевому рівні, звичайно ж є протокол IP (Internet Protocol). Основним його завданням є передача пакетів від одного роутера до іншого до тих пір, поки одиниця даних не потрапить на мережевий інтерфейс вузла призначення. Протокол IP розгортається не тільки на хостах, але і на мережевому обладнанні: маршрутизаторах і керованих комутаторах. Протокол IP працює за принципом негарантованої доставки з максимальними зусиллями. Т. е., Для відправки пакета немає необхідності заздалегідь встановлювати з'єднання. Такий варіант призводить до низького споживання каналу і часу на русі зайвих службових пакетів. Пакет направляється в сторону призначення, і цілком можливо, що вузол залишиться недоступним. В такому випадку повертається повідомлення про помилку.

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

  • Кодування пакета в одиницю даних проміжної мережі.
  • Перетворення інформацію щодо кінцевого пункту в стандарти необхідної підмережі і відправка одиниці даних.

Цей підхід дозволяє постійно розширювати кількість підтримуваних технологій побудови мереж. Як тільки з'являється нова технологія, вона відразу потрапляє в стек проколів TCP / IP і дозволяє мережам зі старими технологіями передавати дані в мережі, побудовані із застосуванням більш сучасних стандартів і способів.

Одиниці переданих даних

За час існування такого явища, як протоколи TCP / IP, встановилися стандартні терміни по частині одиниць переданих даних. Дані при передачі можуть дробитися по-різному, в залежності від технологій, які використовуються мережею призначення.

Щоб мати уявлення про те, що і в який момент часу відбувається з даними, потрібно було придумати таку термінологію:

  • потік даних - дані, які надходять на транспортний рівень від протоколів вищого прикладного рівня.
  • Сегмент - фрагмент даних, на які дробиться потік по стандартам протоколу TCP.
  • датаграма (Особливо безграмотні вимовляють як "Дейтаграмма") - одиниці даних, які виходять шляхом дроблення потоку за допомогою протоколів, що працюють без встановлення з'єднання (UDP).
  • пакет - одиниця даних, вироблена за допомогою протоколу IP.
  • Протоколи TCP / IP упаковують IP-пакети в передані по складовим мереж блоки даних, які називаються кадрами або фреймами.

Типи адрес стека протоколів TCP / IP

Будь-протокол передачі даних TCP / IP для ідентифікації вузлів використовує один з наступних типів адрес:

  • Локальні (апаратні) адреси.
  • Мережеві адреси (IP адреси).
  • Доменні імена.

Локальні адреси (MAC-адреси) - використовуються в більшості технологій локальних обчислювальних мереж, для ідентифікації мережевих інтерфейсів. Під словом локальний, кажучи про TCP / IP, слід розуміти інтерфейс, який діє не в складовою мережі, а в межах окремо взятої підмережі. Наприклад, підмережа інтерфейсу, підключеного до інтернет - буде локальною, а мережа інтернет - складовою. Локальна мережа може бути побудована на будь-якої технології, і незалежно від цього, з точки зору складовою мережі машина, яка перебуває в окремо виділеної підмережі, буде називатися локальної. Таким чином, коли пакет потрапляє в локальну мережу, далі його IP адреса асоціюється з локальною адресою, і пакет направляється вже на MAC-адресу мережевого інтерфейсу.

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

В результаті була розроблена система, при якій вузлів призначається IP адреса і маска підмережі. Маска підмережі показує, яка кількість біт відводиться під номер мережі, а яка кількість під номер вузла. IP адреса складається з 32 біт, розділених на блоки по 8 біт.

При передачі пакета йому призначається інформація про номер мережі і номер вузла, в який пакет повинен бути спрямований. Спочатку маршрутизатор направляє пакет в потрібну підмережа, а потім вибирається вузол, який його чекає. Цей процес здійснюється протоколом дозволу адрес (ARP).

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

Крім мережі інтернет, є можливість видавати комп'ютерів доменні імена. Таким чином, спрощується процес роботи в локальній мережі. Пропадає необхідність запам'ятовувати всі IP-адреси. Замість них можна придумати кожному комп'ютеру будь-яке ім'я і використовувати його.

IP-адреса. Формат. Складові. Маска підмережі

IP адреса - 32-бітове число, яке в традиційному уявленні записується у вигляді чисел, від 1 до 255, розділених між собою крапками.

Вид IP адреси в різних форматах запису:

  • Десятковий вид IP адреси: 192.168.0.10.
  • Двійковий вид того ж IP адреси: 11000000.10101000.00000000.00001010.
  • Запис адреси в шістнадцятковій системі числення: C0.A8.00.0A.

Між ID мережі і номером точки в запису немає розділового знака, але комп'ютер здатний їх розділяти. Для цього існує три способи:

  1. Фіксована межа. При цьому способі весь адреса умовно ділиться на дві частини фіксованої довжини побайтно. Таким чином, якщо під номер мережі віддати один байт, тоді ми отримаємо 2 8 мереж по 2 24 вузлів. Якщо кордон зрушити ще на байт вправо, на той час мереж стане більше - 2 16, а вузлів стане менше - 2 16. На сьогоднішній день підхід вважається застарілим і не використовується.
  2. Маска підмережі. Маска йде в парі з IP адресою. Маска має послідовність значень "1" в тих розрядах, які відведені під номер мережі, і певну кількість нулів у тих місцях IP адреси, які відведені на номер вузла. Кордон між одиницями і нулями в масці - це межа між ідентифікатором мережі і ID вузла в IP-адресу.
  3. Метод класів адрес. Компромісний метод. При його використанні розміри мереж не можуть бути обрані користувачем, однак є п'ять класів - А, В, С, D, Е. Три класи - А, В і С - призначені для різних мереж, а D і Е - зарезервовані для мереж спеціального призначення . В класової системі кожен клас має свою межу номера мережі і ID вузла.

Класи IP адрес

До класу А відносяться мережі, в яких мережа ідентифікується по першому байту, а три залишилися є номером вузла. Всі IP адреси, які мають в своєму діапазоні значення першого байта від 1 до 126 - це мережі класу А. Кількісно мереж класу А виходить зовсім мало, зате в кожній з них може бути до 2 24 точок.

клас В - мережі, в яких дві вищі біти рівні 10. У них під номер мережі і ідентифікатор точки відводиться по 16 біт. В результаті виходить, що кількість мереж класу В у велику сторону відрізняється від кількості мереж класу А кількісно, \u200b\u200bале вони мають меншу кількість вузлів - до 65 536 (2 16) шт.

У мережах класу С - зовсім мало вузлів - 2 8 у кожній, але кількість мереж величезна, завдяки тому, що ідентифікатор мережі в таких структурах займає цілих три байта.

мережі класу D - вже відносяться до особливих мереж. Він починається з послідовності 1110 і називається груповою адресою (Multicast adress). Інтерфейси, які мають адреси класу А, В і С, можуть входити в групу і отримувати додатково до індивідуального ще й груповий адресу.

адреси класу Е - в резерві на майбутнє. Такі адреси починаються з послідовності 11110. Швидше за все, ці адреси будуть застосовуватися в якості групових, коли настане брак IP адрес в глобальній мережі.

Налаштування протоколу TCP / IP

Налаштування протоколу TCP / IP доступна на всіх операційних системах. Це - Linux, CentOS, Mac OS X, Free BSD, Windows 7. Протокол TCP / IP вимагає тільки наявності мережевого адаптера. Зрозуміло, серверні операційні системи здатні на більше. Дуже широко, за допомогою серверних служб, налаштовується протокол TCP / IP. IP адреси в в звичайних настільних комп'ютерах задаються в настройках здійснювати підключення до мережі. Там налаштовується мережеву адресу, шлюз - IP адреса точки, що має вихід в глобальну мережу, і адреси точок, на яких розташовується DNS сервер.

Протокол інтернету TCP / IP може налаштовуватися в ручному режимі. Хоча не завжди в цьому є необхідність. Можна отримувати параметри протоколу TCP / IP з динамічно-роздає адреси сервера в автоматичному режимі. Такий спосіб використовують у великих корпоративних мережах. На DHCP сервер можна зіставити локальну адресу до мережевого, і як тільки в мережі з'явиться машина з заданим IP адресою, сервер відразу дасть йому заздалегідь підготовлений IP адреса. Цей процес називається резервування.

TCP / IP Протокол дозволу адрес

Єдиний спосіб встановити зв'язок між MAC-адресою та IP адресою - ведення таблиці. При наявності таблиці маршрутизації кожен мережевий інтерфейс обізнаний про свої адреси (локальному і мережевому), однак постає питання, як правильно організувати обмін пакетами між вузлами, застосовуючи протокол TCP / IP 4.

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

ARP таблиця

Так виглядає приклад складеної ARP таблиці.

стеки протоколів

Стек протоколів - це ієрархічно організований набір мережевих протоколів різних рівнів, достатній для організації і забезпечення взаємодії вузлів в мережі. В даний час в мережах використовується велика кількість стеків комунікаційних протоколів. Найбільш популярними є стеки: TCP / IP, IPX / SPX, NetBIOS / SMB, Novell NetWare, DECnet, XNS, SNA і OSI. Всі ці стеки, крім SNA, на нижніх рівнях - фізичному і канальному - використовують одні і ті ж добре стандартизовані протоколи Ethemet, Token Ring, FDDI і деякі інші, які дозволяють використовувати у всіх мережах одну і ту ж апаратуру. Зате на верхніх рівнях всі стеки працюють по своїх власних протоколах. Ці протоколи часто не відповідають рекомендованому моделлю OSI розбиття на рівні. Зокрема, функції сеансового і представницького рівня, як правило, об'єднані з прикладним рівнем. Така невідповідність пов'язано з тим, що модель OSI з'явилася як результат узагальнення вже існуючих і реально використовуваних стеків, а не навпаки.

Всі протоколи, що входять в стек, розроблені одним виробником, тобто вони здатні працювати максимально швидко і ефективно.

важливим моментом у функціонуванні мережевого обладнання, зокрема мережевого адаптера, є прив'язка протоколів. Вона дозволяє використовувати різні стеки протоколів при обслуговуванні одного мережевого адаптера. Наприклад, можна одночасно використовувати стеки TCP / IP і IPX / SPX. Якщо раптом при спробі встановлення зв'язку з адресатом за допомогою першого стека сталася помилка, то автоматично відбудеться перемикання на використання протоколу з наступного стека. Важливим моментом в даному випадку є черговість прив'язки, оскільки вона однозначно впливає на використання того чи іншого протоколу з різних стеків.

Незалежно від того, яка кількість мережевих адаптерів встановлено в комп'ютері, прив'язка може здійснюватися як «один до декількох», так і «кілька до одного», тобто один стек протоколів можна прив'язати відразу до декількох адаптерів або кілька стеків до одного адаптера.

NetWare - мережева операційна система і набір мережевих протоколів, які використовуються в цій системі для взаємодії з комп'ютерами-клієнтами, підключеними до мережі. В основі мережевих протоколів системи лежить стек протоколів XNS. В даний час NetWare підтримує протоколи TCP / IP і IPX / SPX. Novell NetWare була популярна в 80-е і 90-е роки через більшої ефективності в порівнянні з операційними системами загального призначення. Нині це застаріла технологія.

Стек протоколів XNS (Xerox Network Services Internet Transport Protocol) розроблений компанією Xerox для передачі даних по мережах Ethernet. Містить 5 рівнів.

Рівень 1 - середовище передачі - реалізує функції фізичного і канального рівня в OSI-моделі:

* Управляє обміном даними між пристроєм і мережею;

* Маршрутизує дані між пристроями однієї мережі.

Рівень 2 - міжмережевий - відповідає мережному рівню в OSI- моделі:

* Управляє обміном даними між пристроями, що знаходяться в різних мережах (забезпечує дейтаграммний сервіс в термінах IEEE- моделі);

* Описує спосіб проходження даних через мережу.

Рівень 3 - транспортний - відповідає транспортному рівню в OSI-моделі:

* Забезпечує зв'язок "end-to-end" між джерелом і приймачем даних.

Рівень 4 - контрольний - відповідає сесійної і представницькому рівню в OSI-моделі:

* Управляє поданням даних;

* Управляє контролем над ресурсами пристроїв.

Рівень 5 - прикладний - відповідає вищих рівнів в OSI- моделі:

* Забезпечує функції обробки даних для прикладних задач.

Стек протоколів TCP / IP (Transmission Control Protocol / Internet Protocol) на сьогодні є найбільш поширеним і функціональним. Він працює в локальних мережах будь-яких масштабів. Даний стек є основним стеком в глобальній мережі Інтернет. Підтримка стека була реалізована в комп'ютерах c операційною системою UNIX. В результаті популярність протоколу TCP / IP зросла. В стек протоколів TCP / IP входить досить багато протоколів, що працюють на різних рівнях, але свою назву він отримав завдяки двом протоколам - TCP і IP.

TCP (Transmission Control Protocol) - транспортний протокол, призначений для керуванням передачею даних в мережах, що використовують стек протоколів TCP / IP. IP (Internet Protocol) - протокол мережевого рівня, призначений для доставки даних в складовою мережі з використанням одного з транспортних протоколів, наприклад TCP або UDP.

Нижній рівень стека TCP / IP використовує стандартні протоколи передачі даних, що уможливлює його застосування в мережах з використанням будь-яких мережевих технологій і на комп'ютерах з будь-якою операційною системою.

Спочатку протокол TCP / IP розроблявся для застосування в глобальних мережах, саме тому він є максимально гнучким. Зокрема, завдяки здатності фрагментації пакетів дані, незважаючи на якість каналу зв'язку, в будь-якому випадку доходять до адресата. Крім того, завдяки наявності IP-протоколу стає можливою передача даних між різнорідними сегментами мережі.

Недоліком TCP / IP-протоколу є складність адміністрування мережі. Так, для нормального функціонування мережі потрібна наявність додаткових серверів, наприклад DNS, DHCP і т. Д., Підтримку роботи яких і займає більшу частину часу системного адміністратора. Лімончелло Т., Хоган К., Чейлап С. - Сестемное та мережеве адміністрування. 2-е изд. 2009 рік. 944с

Стек протоколів IPX / SPX (Internetwork Packet Exchange / Sequenced Packet Exchange) є розробкою і власністю компанії Novell. Він був розроблений для потреб операційної системи Novell NetWare, яка ще донедавна займала одну з лідируючих позицій серед серверних операційних систем.

Протоколи IPX і SPX працюють на мережному і транспортному рівнях моделі ISO / OSI відповідно, тому відмінно доповнюють один одного.

Протокол IPX може передавати дані за допомогою датаграмм, використовуючи для цього інформацію про маршрутизації в мережі. Однак для того, щоб передати дані по знайденому маршруту, необхідно спочатку встановити з'єднання між відправником і отримувачем. Цим і займається протокол SPX або будь-який інший транспортний протокол, який працює в парі з IPX.

На жаль, стек протоколів IPX / SPX від початку орієнтований на обслуговування мереж невеликого розміру, тому у великих мережах його використання малоефективно: зайве використання широкомовного мовлення на низькошвидкісних лініях зв'язку неприпустимо.

На фізичному і канальному рівнях стек OSI підтримує протоколи Ethernet, Token Ring, FDDI, а також протоколи LLC, X.25 і ISDN, тобто використовує всі розроблені поза стека популярні протоколи нижніх рівнів, як і більшість інших стеків. Мережевий рівень включає порівняно рідко використовуються протоколи Connectionoriented Network Protocol (CONP) і Connectionless Network Protocol (CLNP). Протоколи маршрутизації стека OSI це ES-IS (End System - Intermediate System) між кінцевою і проміжною системами і IS-IS (Intermediate System - Intermediate System) між проміжними системами. Транспортний рівень стека OSI приховує відмінності між мережевими сервісами з встановленням з'єднання і без встановлення з'єднання, так що користувачі отримують необхідну якість обслуговування незалежно від нижчого мережного рівня. Щоб забезпечити це, транспортний рівень вимагає, щоб користувач задав потрібну якість обслуговування. Служби прикладного рівня забезпечують передачу файлів, емуляцію термінала, службу каталогів і пошту. З них найбільш популярними є служба каталогів (стандарт Х.500), електронна пошта (Х.400), протокол віртуального терміналу (VTP), протокол передачі, доступу та управління файлами (FTAM), протокол пересилки і управління роботами (JTM).

Досить популярний стек протоколів, розробкою якого займалися компанії IBM і Microsoft, відповідно, орієнтований на використання в продуктах цих компаній. Як і у TCP / IP, на фізичному і канальному рівні стека NetBIOS / SMB працюють стандартні протоколи, такі як Ethernet, Token Ring і інші, що робить можливим його використання в парі з будь-яким активним мережевим обладнанням. На верхніх же рівнях працюють протоколи NetBIOS (Network Basic Input / Output System) і SMB (Server Message Block).

Протокол NetBIOS був розроблений в середині 80-х років минулого століття, але незабаром був замінений на більш функціональний протокол NetBEUI (NetBIOS Extended User Interface), що дозволяє організувати дуже ефективний обмін інформацією в мережах, що складаються не більше ніж з 200 комп'ютерів.

Для обміну даними між комп'ютерами використовуються логічні імена, що привласнюються комп'ютерам динамічно при їх підключенні до мережі. При цьому таблиця імен поширюється на кожен комп'ютер мережі. Підтримується також робота з груповими іменами, що дозволяє передавати дані відразу декільком адресатам.

Головні плюси протоколу NetBEUI - швидкість роботи і дуже малі вимоги до ресурсів. Якщо потрібно організувати швидкий обмін даними в невеликої мережі, що складається з одного сегмента, кращого протоколу для цього не знайти. Крім того, для доставки повідомлень встановлене з'єднання не є обов'язковою вимогою: в разі відсутності з'єднання протокол використовує Датаграммним метод, коли повідомлення забезпечується адресою одержувача та відправника і «пускається в дорогу», переходячи від одного комп'ютера до іншого.

Однак NetBEUI володіє й істотним недоліком: він повністю позбавлений поняття про маршрутизації пакетів, тому його використання в складних складових мережах не має сенсу. Пятібратов А.П., Гудино Л.П., Кириченко А.А.Вичіслітельние машини, мережі і телекомунікаційні системи Москва 2009рік. 292с

Що стосується протоколу SMB (Server Message Block), то з його допомогою організовується робота мережі на трьох самих високих рівнях - сеансовому, рівні уявлення і прикладному рівні. Саме при його використанні стає можливим доступ до файлів, принтерів та інших ресурсів мережі. Даний протокол кілька разів був удосконалений (вийшло три його версії), що дозволило застосовувати його навіть в таких сучасних операційних системах, як Microsoft Vista і Windows 7. Протокол SMB універсальний і може працювати в парі практично з будь-яким транспортним протоколом, наприклад TCP / IP і SPX.

Стек протоколів DECnet (Digital Equipment Corporation net) містить 7 рівнів. Незважаючи на різницю в термінології, рівні DECnet дуже схожі на рівні OSI-моделі. DECnet реалізує концепцію мережевої архітектури DNA (Digital Network Architecture), розроблену фірмою DEC, згідно з якою різнорідні обчислювальні системи (ЕОМ різних класів), що функціонують під управлінням різних операційних систем, можуть бути об'єднані в територіально-розподілені інформаційно-обчислювальні мережі.

Протокол SNA (System Network Architecture) компанії IBM призначений для віддаленого зв'язку з великими комп'ютерами і містить 7 рівнів. SNA заснована на концепції головною (хост) -машини і забезпечує доступ віддалених терміналів до мейнфреймам IBM. Основною відмінною рисою SNA є наявність можливості доступу кожного терміналу до будь-якої прикладної програми головною ЕОМ. Системна мережна архітектура реалізована на базі віртуального телекомунікаційного методу доступу (Virtual Telecommunication Access Method - VTAM) в головній ЕОМ. VTAM управляє всіма лініями зв'язку і терміналами, причому кожен термінал має доступ до всіх прикладних програм.

У цій статті будуть розказані основи моделі TCP / IP. Для кращого розуміння описані основні протоколи і служби. Головне - не поспішати і намагатися розуміти кожну річ поетапно. Всі вони взаємопов'язані і без розуміння однієї, важко буде зрозуміти іншу. Тут скомпонована досить поверхнева інформація, так що цю статтю сміливо можна назвати «стеком протоколів TCP / IP для чайників». Однак, багато речей тут не так важкі для розуміння, як може здатися на перший погляд.

TCP / IP

Стек TCP / IP - мережева модель передачі даних в мережі, вона визначає порядок взаємодії пристроїв. Дані надходять на канальний рівень і обробляються по черзі кожним рівнем вище. Стек представлений у вигляді абстракції, яка пояснює принципи обробки і прийому даних.

Стек протоколів мережі TCP / IP має 4 рівня:

  1. Канальний (Link).
  2. Мережевий (Internet).
  3. Транспортний (Transport).
  4. Прикладний (Application).

прикладний рівень

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

  • HTTP;
  • SMTP;

Кожен протокол визначає власний порядок і принципи роботи з даними.

HTTP (HyperText Transfer Protocol) призначений для передачі даних. По ньому відправляються, наприклад, документи в форматі HTML, які служать основою веб-сторінки. Спрощено схема роботи представляється як «клієнт - сервер». Клієнт відправляє запит, сервер його приймає, належним чином обробляє і повертає кінцевий результат.

Служить стандартом передачі файлів в мережі. Клієнт посилає запит на якийсь файл, сервер шукає цей файл у своїй базі і якщо виявлено відправляє його як відповідь.

Використовується для передачі електронної пошти. SMTP-операція включає в себе три послідовні кроки:

  1. Визначення адреси відправника. Це необхідно для повернення листів.
  2. Визначення одержувача. Цей крок може повторюватися кілька разів при вказівці декількох адресатів.
  3. Визначення вмісту повідомлення і відправка. Як службової інформації передаються дані про тип повідомлення. Якщо сервер підтверджує готовність прийняти пакет, то відбувається сама транзакція.

Тема (Header)

У заголовку містяться службові дані. Важливо розуміти, що вони призначаються тільки для конкретного рівня. Це означає, що як тільки пакет відправиться до одержувача, то буде оброблений там за такою ж моделлю, але в зворотному порядку. Вкладений заголовок буде нести спеціальну інформацію, Яка може бути оброблена тільки певним чином.

Наприклад, заголовок, вкладений на транспортному рівні, на іншій стороні може бути оброблений тільки транспортним рівнем. Інші просто його проігнорують.

транспортний рівень

На транспортному рівні отримана інформація обробляється як єдиний блок, незалежно від вмісту. Отримані повідомлення діляться на сегменти, до них додається заголовок, і все це відправляється нижче.

Протоколи передачі даних:

Найпоширеніший протокол. Він відповідає за гарантовану передачу даних. При відправці пакетів контролюється їх контрольна сума, процес транзакції. Це означає, що інформація дійде «в цілості й схоронності» незалежно від умов.

UDP (User Datagram Protocol) - другий за популярністю протокол. Він також відповідає за передачу даних. Відмітна властивість криється в його простоті. Пакети просто відправляються, не створюючи особливою зв'язку.

TCP або UDP?

У кожного з цих протоколів є своя область застосування. Вона логічно обумовлена \u200b\u200bособливостями роботи.

Основна перевага UDP полягає в швидкості передачі. TCP є складним протоколом з безліччю перевірок, в той час як UDP видається більш спрощеним, а значить, і більш швидким.

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

UDP використовується, наприклад, для перегляду відео. Для відеофайлу не критична втрата невеликої кількості сегментів, в той час як швидкість завантаження - найважливіший фактор.

Однак якщо необхідно відправити паролі або реквізити банківської карти, То необхідність використання TCP очевидна. Втрата навіть самої мізерної частини даних може спричинити за собою катастрофічні наслідки. Швидкість в цьому випадку не так важлива, як безпека.

Мережевий рівень

Мережевий рівень з отриманої інформації утворює пакети і додає заголовок. Найбільш важливою частиною даних є IP і MAC-адреси відправників і одержувачів.

IP-адреса (Internet Protocol address) - логічний адресу пристрою. Містить інформацію про місцезнаходження пристрою в мережі. Приклад запису:.

MAC-адресу (Media Access Control address) - фізичну адресу пристрою. Використовується для ідентифікації. Присвоюється мережевого обладнання на етапі виготовлення. Представлений як шестібайтний номер. Наприклад:.

Мережевий рівень відповідає за:

  • Визначення маршрутів доставки.
  • Передачу пакетів між мережами.
  • Присвоєння унікальних адрес.

Маршрутизатор - пристрої мережевого рівня. Вони прокладають шлях між комп'ютером і сервером на основі отриманих даних.

Найпопулярніший протокол цього рівня - IP.

IP (Internet Protocol) - інтернет-протокол, призначений для адресації в мережі. Використовується для побудови маршрутів, за якими відбувається обмін пакетами. Не володіє ніякими засобами перевірки і підтвердження цілісності. Для забезпечення гарантій доставки використовується TCP, який використовує IP в якості транспортного протоколу. Розуміння принципів цієї транзакції багато в чому пояснює основу того, як працює стек протоколів TCP / IP.

Види IP-адрес

У мережах використовуються два види IP-адрес:

  1. Публічні.
  2. Приватний.

Публічні (Public) використовуються в Інтернеті. Головне правило - абсолютна унікальність. Приклад їх використання - маршрутизатори, кожен з яких має свій IP-адресу для взаємодії з мережею Інтернет. Така адреса називається публічним.

Приватний (Private) не використовуються в Інтернеті. У глобальній мережі такі адреси не є чимось унікальним. Приклад - локальна мережа. Кожному пристрою присвоюється унікальний в межах даної мережі IP-адреса.

Взаємодія з мережею Інтернет ведеться через маршрутизатор, який, як уже було сказано вище, має свій публічний IP-адресу. Таким чином, всі комп'ютери, підключені до маршрутизатора, представляються в мережі Інтернет від імені одного публічного IP-адреси.

IPv4

Найпоширеніша версія інтернет-протоколу. Передує IPv6. Формат запису - чотири восьмибітних числа, розділені крапками. Через знак дробу вказується маска підмережі. Довжина адреси - 32 біта. У переважній більшості випадків, коли мова йде про IP-адресу, мається на увазі саме IPv4.

Формат запису:.

IPv6

Ця версія призначається для вирішення проблем попередньою версією. Довжина адреси - 128 біт.

Основна проблема, яку вирішує IPv6 - це вичерпання адрес IPv4. Передумови почали проявлятися вже на початку 80-х років. Незважаючи на те, що ця проблема набула в гостру стадію вже в 2007-2009 роках, впровадження IPv6 дуже повільно «набирає обертів».

Головна перевага IPv6 - більш швидке інтернет-з'єднання. Це відбувається через те, що для цієї версії протоколу не потрібно трансляції адрес. Виконується проста маршрутизація. Це є менш витратним і, отже, доступ до інтернет-ресурсів надається швидше, ніж в IPv4.

Приклад запису:.

Існує три типи IPv6-адрес:

  1. Unicast.
  2. Anycast.
  3. Multicast.

Unicast - тип одноадресних IPv6. При відправці пакет досягає тільки інтерфейсу, розташованого на відповідному адресі.

Anycast відноситься до групових IPv6-адресами. Відправлений пакет потрапить в найближчий мережевий інтерфейс. Використовується тільки маршрутизаторами.

Multicast є багатоадресними. Це означає, що відправлений пакет досягне всіх інтерфейсів, які перебувають групі мультівещанія. На відміну від broadcast, який є «мовленням для всіх», multicast віщає лише певної групи.

Маска підмережі

Маска підмережі виявляє з IP-адреси підмережа і номер хоста.

Наприклад, IP-адреса має маску. В такому випадку формат запису буде виглядати так. Число «24» - це кількість біт в масці. Вісім біт дорівнює одному октету, який також може називатися байтом.

Якщо докладніше, то маску підмережі можна уявити в двійковій системі числення таким чином:. У ній є чотири октету, і запис складається з «1» і «0». Якщо скласти кількість одиниць, то отримаємо в сумі «24». На щастя, вважати за одиницю не обов'язково, адже в одному октеті - 8 значень. Бачимо, що три з них заповнені одиницями, складаємо і отримуємо «24».

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

Розглянемо невеликий приклад. Є IP-адреса і маска підмережі. Вважаємо і записуємо:. Тепер зіставляємо маску з IP-адресою. Ті октети маски, в яких всі значення рівні одиниці (255) залишають відповідні їм октети в IP-адресу без зміни. Якщо ж у значенні нулі (0), то октети в IP-адресу також стають нулями. Таким чином, в значенні адреси підмережі отримуємо.

Підмережа і хост

Підмережа відповідає за логічне поділ. По суті, це пристрої, що використовують одну локальну мережу. Визначається діапазоном IP-адрес.

Хост - це адреса мережевого інтерфейсу (мережевої карти). Визначається з IP-адреси за допомогою маски. Наприклад:. Так як перші три октету - підмережа, то залишається. Це і є номер хоста.

Діапазон адрес хоста - від 0 до 255. Хост під номером «0» є, власне, адресою самої підмережі. А хост під номером «255» є широкомовною.

адресація

Для адресації в стеці протоколів TCP / IP використовуються три типи адрес:

  1. Локальні.
  2. Мережеві.
  3. Доменні імена.

Локальними називаються MAC-адреси. Вони використовуються для адресації в таких технологіях локальної мережі як, наприклад, Ethernet. В контексті TCP / IP слово «локальні» означає, що вони діють лише в межах підмережі.

Мережевою адресою в стеці протоколів TCP / IP є IP-адреса. При відправці файлу з його заголовка зчитується адреса одержувача. З його допомогою маршрутизатор дізнається номер хоста і підмережа і, грунтуючись на цій інформації, прокладає маршрут до кінцевого вузла.

Доменні імена - це легким для читання адреси веб-сайтів в Інтернеті. Веб-сервера в мережі Інтернет доступні з публічного IP-адресою. Він успішно обробляється комп'ютерами, проте для людей видається занадто незручним. Для того щоб уникнути подібних складнощів, використовуються доменні імена, які складаються з областей, які називаються «доменами». Вони розташовуються в порядку суворої ієрархії, від верхнього рівня до нижнього.

Домен першого рівня представляє конкретну інформацію. Загальні (.org, .net) не обмежені будь-якими суворими межами. Зворотна ситуація - з локальними (.us, .ru). Вони, як правило, прив'язані територіально.

Домени нижчих рівнів - це все інше. Він може бути будь-якого розміру і містити будь-яку кількість значень.

Наприклад, "www.test.quiz.sg" - коректне доменне ім'я, де «sg» - локальний домен першого (верхнього) рівня, «quiz.sg» - домен другого рівня, «test.quiz.sg» - домен третього рівня . Доменні імена також можуть називатися DNS-іменами.

Встановлює відповідність між доменними іменами та публічним IP-адресою. При наборі доменного імені в рядку браузера DNS виявить відповідний IP-адресу і повідомить пристрою. Пристрій обробить цей і поверне його у вигляді веб-сторінки.

канальний рівень

На канальному рівні визначається взаємозв'язок між пристроєм і фізичним середовищем передачі, додається заголовок. Відповідає за кодування даних і підготовку фреймів для передачі по фізичному середовищі. На цьому рівні працюють мережеві комутатори.

Найпоширеніші протоколи:

  1. Ethernet.
  2. WLAN.

Ethernet - найпоширеніша технологія дротових локальних мереж.

WLAN - локальна мережа на основі бездротових технологій. Взаємодія пристроїв відбувається без фізичних кабельних з'єднань. Приклад найпоширенішого методу - Wi-Fi.

Налаштування TCP / IP для використання статичного IPv4-адреси

Статичний IPv4-адрес призначається безпосередньо в налаштуваннях пристрою або автоматично при підключенні до мережі і є постійним.

Для настройки стека протоколів TCP / IP на використання постійного IPv4-адреси необхідно ввести в консоль команду ipconfig / all і знайти такі дані.

Налаштування 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 рівнів:

  1. Фізичний (Physical).
  2. Канальний (Data Link).
  3. Мережевий (Network).
  4. Транспортний (Transport).
  5. Сеансовий (Session).
  6. Представницький (Presentation).
  7. Прикладний (Application).

В даний момент не варто сильно заглиблюватися в цю модель, але необхідно хоча б поверхове розуміння.

Прикладний рівень в моделі TCP / IP відповідає трьом верхнім рівням OSI. Всі вони працюють з додатками, тому можна чітко простежити логіку такого об'єднання. Така узагальнена структура стека протоколів TCP / IP сприяє полегшеному розумінню абстракції.

Транспортний рівень залишається без змін. Виконує однакові функції.

Мережевий рівень також не змінений. Виконує рівно ті ж завдання.

Канальний рівень в TCP / IP відповідає двом останнім рівням OSI. Канальний рівень встановлює протоколи передачі даних через фізичне середовище.

Фізичний є власне фізичну зв'язок - електричні сигнали, коннектори і т.п. У стеці протоколів TCP / IP було вирішено об'єднати ці два рівня в один, так як вони обидва працюють з фізичним середовищем.

Мережевий стек протоколу і TCP хакинг

Alexander Antipov

Мережевий стек протоколів, що формує конвейеризацию і передачу даних між хостами, розроблений для найкращого взаємодії між різними мережевими рівнями. У цій статті ми спробуємо описати переміщення даних через розташовані в стеці рівні і спробуємо впровадити модуль ядра Linux, що допомагає нам захоплювати і відображати дані, що проходять через рівень TCP. Нижче представлена \u200b\u200bпрограма, що показує як встановити новий елемент в файлової системи proc. І що найбільш важливо, ця програма зламує TCP протокол, відстежує всі дані, що проходять через tcp рівень, і відображає їх в / proc / TCPdata.


Шямітх, переклад Олексій Антипов

Мережевий стек протоколів, що формує конвейеризацию і передачу даних між хостами, розроблений для найкращого взаємодії між різними мережевими рівнями. У цій статті ми спробуємо описати переміщення даних через розташовані в стеці рівні і спробуємо впровадити модуль ядра Linux, що допомагає нам захоплювати і відображати дані, що проходять через рівень TCP. Так як обговорення всіх видів мережевих з'єднань виходить за рамки даної статті, то ми зупинимося на TCP / IP з'єднаннях.

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

Мережеві пристрої формують базовий рівень стека протоколів. Для зв'язку з іншими пристроями і прийому-передачі трафіку вони використовують протокол каналу передачі даних (зазвичай Ethernet). Інтерфейс, який організовується драйверами мережевих пристроїв, копіює пакети з фізичної середовища, виконуючи деякі перевірки помилок, після чого поміщає пакети в мережевий рівень. Інтерфейси виводу приймають пакети з мережевого рівня, виконують деякі перевірки помилок і пересилають їх в фізичну середу. Ми будемо обговорювати IP (протокол Інтернет) є стандартним протоколом мережевого рівня. Головними функціями IP є маршрутизація, перевірка вхідних пакетів, що визначає чи спрямовані ці пакети на даний хост або вони потребують подальшої пересилання. При цьому, в разі необхідності, пакети Дефрагментує і доставляються на транспортні протоколи. Такі протоколи мають динамічну базу даних маршрутів для вихідних пакетів, адресують і фрагментують їх перед посилкою на рівень зв'язку.

TCP і UDP є найбільш часто використовуваними протоколами транспортного рівня. UDP створює структуру для адресації пакетів в межах хоста, в той час як TCP підтримує більш комплексні операції підключення типу відновлення втрачених пакетів і управління трафіком.

Просуваючись по транспортному рівню, ми можемо знайти INET рівень, який формує проміжний рівень між транспортним рівнем і сокетами додатків. За допомогою INET рівня підтримуються належні додатків сокети. У цьому рівні здійснені всі специфічні операції сокетов.

BSD - абстрактна структура даних, яка містить INET сокети. Запит додатки на підключення, читання або запис через сокет, перетворюється в INET операції за допомогою BSD.

Загальна структура пакетів. Дані полягають в загальну структуру даних, звану sk_buff. Всі рівні використовують цю структуру даних. Відразу після копіювання даних з простору користувача в простір ядра, вони поміщаються в sk_buff і переміщаються на різні рівні. У свою чергу рівень додають до цієї структури свої заголовки. Sk_buff містить посилання на всю інформацію про пакет, його сокеті, пристрої, маршруті, розташуванні даних і т.д.

Мережеві функції Linux

Для нормального мережевого програміста, інтерфейсна частина мережевих служб доступна за допомогою наступних підпрограм бібліотеки С.

socket (), bind (), listen (), connect (), accept (), send (), sendto (), recv (), recvfrom (), getsockopt (), and setsockopt ().

Функція socket () використовується для створення нового сокета. Всі операції з різними протоколами відбуваються за допомогою сокетів. Оскільки функція socket () повертає значення дескриптора файлу, то до нього можуть звертатися стандартні операції роботи з файлами типу read (), write ().

Фунція bind () використовується для зв'язку створеного сокета з портом. Порт, поряд з IP адресою мережевого інтерфейсу, використовується для унікальної ідентифікації сокета.

Функція listen () використовується для програмування сервера. Після створення сокета і зв'язку його з портом функція listen () встановлює сокет в стан прослуховування. Це означає, що сокет очікує підключення з боку інших хостів.

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

Необхідні структури даних

Ця структура є основою для виконання інтерфейсу BSD сокетів. Установка і ініціалізація цієї структури відбувається за допомогою системного виклику socket ().

sk_buff:

Ця структура управляє індивідуальними пакетами з'єднань приходять і відсилає з хоста. При цьому відбувається буферизація введення-виведення.

Ця структура управляє різними частинами сокетов, залежними від конкретної мережі. Вона необхідна для TCP, UDP і RAW сокетов.

Ця структура містить ряд операцій, однакових для всіх протоколів.

Sockaddr (sockaddr_in):

Така структура необхідна для підтримки різних форматів адрес.

Модулі ядра Linux

Ядра Linux ядра складаються з модулів. Деякі частини ядра знаходяться в пам'яті постійно (типу планувальника), а деякі завантажуються при необхідності. Наприклад, файлова система VFAT для читання дисків, завантажується тільки при необхідності. Така особливість linux ядра дозволяє простору ядра займати небагато місця.

Таким чином, суттєвим є проектування вашого протоколу, драйверів і будь-яких видів програмного забезпечення ядра як модулів ядра і вставляти їх в ядро \u200b\u200bз простору користувача. Після вставки, модуль ставати непереміщуваними до його видалення з простору ядра. Єдино ви повинні бути привілейованим користувачем, щоб вставляти або видаляти модулі. Це є загальним форматом запису модуля ядра.

#define MODULE #include / * ... other required header files ... * / / * * ... module declarations and functions ... * / int init_module () (/ * code kernel will call when installing module * / ) void cleanup_module () (/ * code kernel will call when removing module * /)

Проект хакерського модуля для TCP протоколу.

Наш модуль ядра є дуже простим, він віртуально розміщений між інтерфейсом операцій сокетов для пересилання TCP пакетів і TCP рівнем. Тепер все пакети даних, що проходять через сокет, зареєстрований з TCP протоколом, будуть перехоплені нашим модулем ядра. Ці дані будуть передані в / proc / TCPdata.

Використовувані структури даних

tcp_prot -\u003e Містить покажчики на всі здійснені TCP операції

struct msghdr -\u003e Містить дані, що їх посилають додатком, а також іншими полями для ідентифікації адреси сокета

Struct msg_iov -\u003e знаходиться в msghdr, в ньому містяться покажчики на дані

Перед початком кодування давайте зрозуміємо значення файлової системи / proc. Файлова система proc називається так, через те що вона знаходитися в каталозі / proc на більшості Linux машин. Система є потужним інструментом, часто використовуваних додатками. Це частина механізму за допомогою якого ядро \u200b\u200bзв'язується з простором користувача і навпаки. Хоча вона розроблена як файлова система із структурою каталогів і inodes, в той же час це фактично компонент зареєстрованих функцій, що забезпечують інформацією важливі змінні.

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

Тепер ми почнемо кодування

/ * Tcpdata.c. Нижче представлена \u200b\u200bпрограма, що показує як встановити новий елемент в файлової системі proc. І що найбільш важливо, ця програма зламує TCP протокол, відстежує всі дані, що проходять через tcp рівень, і відображає їх в / proc / TCPdata. * / #Define MODULE #define __KERNEL__ / * we are doing kernel work * / #include #include #include / * for registering proc entry * / #include #include #include #include #include #include #include static struct proc_dir_entry * test_entry ; struct msghdr * msg_moniter; struct iovec * iovec_moniter; static char * tcp \u003d "Tcp monitered data"; int (* orginalSend) (struct sock *, struct msghdr *, int); / * Show_tcp_stats This function is what the / proc FS will call when anything tries to read / proc / TCPstat you could see last 200 bytes move out of the sockets through tcp connections * / static int show_tcp_stats (char * buf, char ** start , off_t offset, int len, int unused) (len + \u003d sprintf (buf + len, "% s \\ n", tcp); return len;) / * Це функція обробника, захоплююча tcp sendmsg запити * / int moniter_tcp (struct sock * sk, struct msghdr * msg, int len) (int size; char * temp; printk ( "I am dangerously monitoring your tcp data \\ n"); msg_moniter \u003d (struct msghdr *) kmalloc (sizeof (struct msghdr), GFP_KERNEL); memcpy (msg_moniter, msg, sizeof (struct msghdr)); orginalSend (sk, msg, len); iovec_moniter \u003d msg_moniter-\u003e msg_iov; size \u003d sizeof (tcp); printk ( "sizeof of TCPdat is% d \\ n ", size); (sizeiov_base): strcpy (tcp," Tcp monitered data "); kfree (msg_moniter); return len;) / * init_module Ця функція встановлює модуль; вона просто реєструє новий каталог в / proc і створює покажчик. * / Int init_module () (test_entry \u003d create_proc_entry ( "TCPdata", S_IRUGO, NULL); test_entry-\u003e read_proc \u003d show_tcp_stats; orginalSend \u003d tcp_prot.sendmsg; / * printk ( "the address of send send mes is% x \\ n" , tcp_prot.sendmsg); printk ( "the address of hack mes is% x \\ n", orginalSend); * / tcp_prot.sendmsg \u003d moniter_tcp; / * printk ( "the address of send send mes after hacking% x \\ n" , tcp_prot.sendmsg); printk ( "the address of send send mes after hacking% x \\ n", moniter_tcp); * / return 0;) / * init_module * / / * cleanup_module Ця функція видаляє модуль; Вона видаляє реєстрацію записи директорії з / proc FS * / void cleanup_module () (/ * put the pointer back to tcp "s orginal message sender * / tcp_prot.sendmsg \u003d orginalSend; / * unregister the function from the proc FS * / remove_proc_entry ( "TCPdata", NULL);) / * cleanup_module * / MODULE_AUTHOR ( "shyamjithe.cs"); / * macros * / MODULE_DESCRIPTION ( "moniter tcp data"); MODULE_LICENSE ( "GPL");

Дана програма була протестована на ядрі 2.4, так що ви можете відкомпілювати її використовуючи:

Gcc -O6 -Wall -c tcpdata.c -I /usr/src/linux-2.4.20-8/include/ this will produce tcpdata.o now insmod tcpdata.o open some tcp applications cat / proc / TCPdata to remove the module use rmmod tcpdata Тепер для того, щоб зрозуміти цей код, я дам деякі пояснення. Вся програма - це тільки хитрий шлях для використання функціональних покажчиків. Але необхідно бути уважним при використанні ваших власних обробників, тому що неправильне розміщення функціонального покажчика може привести до зависання системи. Як було сказано, це є мінімальним шляхом для злому TCP. Ви можете сформувати новий рівень над рівнем TCP подібно до цього, який буде втручатися в усі типи завдань, зроблених TCP. Теж може бути зроблено і з UDP.

висновок

Найбільш важливим висновком, що отримуються їх описаної вище програми, є те, що не завжди є потреба змінювати вихідний код ядра, коли ми робимо будь-яку пов'язану з протоколом модифікацію. Це об'єктно-орієнтована реалізація Linux ядра, що дозволяє нам маніпулювати об'єктами даних всередині ядра.

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

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

Існує достатня кількість стеків протоколів, широко застосовуваних у мережах. Найбільш популярні стеки протоколів: OSI міжнародної організації зі стандартизації, TCP / IP, який використовується в мережі Internet і в багатьох мережах на основі операційної системи UNIX, IPX / SPX фірми Novell, NetBIOS / SMB, розроблений фірмами Microsoft і IBM, DECnet корпорації Digital Equipment, SNA фірми IBM і деякі інші.

енциклопедичний YouTube

    1 / 3

    Основи мереж передачі даних. Модель OSI і стек протоколів TCP IP. Основи Ethernet.

    стек протоколів

    Інформатика. Мережеві технології: Стек протоколів OSI. Центр онлайн-навчання «Фоксфорд»

    субтитри

Стандартні стеки комунікаційних протоколів

OSI

важливо розрізняти модель OSI і стек протоколів OSI. У той час як модель OSI є концептуальною схемою взаємодії відкритих систем, стек OSI являє собою набір специфікацій конкретних протоколів.

На відміну від інших стеків протоколів, стек OSI повністю відповідає моделі OSI, включаючи специфікації протоколів для всіх семи рівнів взаємодії, визначених у цій моделі:

  • на фізичному і канальному рівнях стек OSI підтримує протоколи Ethernet, Token ring, FDDI, а також протоколи LLC, X.25 і ISDN, тобто використовує всі розроблені поза стека популярні протоколи нижніх рівнів, як і більшість інших стеків.
  • Мережевий рівень включає порівняно рідко використовуються протоколи Connection-oriented Network Protocol (CONP) і Connectionless Network Protocol (CLNP). Як випливає з назв, перший з них орієнтований на з'єднання (connection-oriented), другий - немає (connectionless). Більш популярні протоколи маршрутизації стека OSI: ES-IS (End System - Intermediate System) між кінцевою і проміжною системами і IS-IS (Intermediate System - Intermediate System) між проміжними системами.
  • транспортний рівень стека OSI відповідно до функцій, певними для нього в моделі OSI, приховує відмінності між мережевими сервісами з встановленням з'єднання і без встановлення з'єднання, так що користувачі отримують необхідну якість обслуговування незалежно від нижчого мережного рівня. Щоб забезпечити це, транспортний рівень вимагає, щоб користувач задав потрібну кількість обслуговування.
  • служби прикладного рівня забезпечують передачу файлів, емуляцію термінала, службу каталогів і пошту. З них найбільш популярними є служба каталогів (стандарт X.500), електронна пошта (стандарт X.400), протокол віртуального терміналу (VTP), протокол передачі, доступу та управління файлами (FTAM), протокол пересилки і управління роботами (JTM).

TCP / IP

Стек протоколів TCP / IP - набір мережевих протоколів, на яких базується Інтернет. Зазвичай в стеці TCP / IP верхні 3 рівня (прикладної, уявлення і сеансовий) моделі OSI об'єднують в один - прикладний. Оскільки в такому стеку не передбачено уніфікований протокол передачі даних, функції з визначення типу даних передаються з додатком.

Рівні стека TCP / IP:

  1. канальний рівень описує яким чином передаються пакети даних через фізичний рівень, Включаючи кодування (тобто спеціальні послідовності бітів, що визначають початок і кінець пакету даних).
  2. Мережевий рівень спочатку розроблений для передачі даних з однієї (під) мережі в іншу. Прикладами такого протоколу є X.25 і IPC в мережі ARPANET. З розвитком концепції глобальної мережі в рівень були внесені додаткові можливості по передачі з будь-якої мережі в будь-яку мережу, незалежно від протоколів нижнього рівня, а також можливість запитувати дані від віддаленої сторони.
  3. протоколи транспортного рівня можуть вирішувати проблему негарантованої доставки повідомлень ( «дійшло повідомлення до адресата?»), а також гарантувати правильну послідовність приходу даних.
  4. на прикладному рівні працює більшість мережевих додатків. Ці програми мають свої власні протоколи обміну інформацією, наприклад, HTTP для WWW, FTP (передача файлів), SMTP (електронна пошта), SSH ( безпечне з'єднання з віддаленої машиною), DNS (перетворення символьних імен в IP-адресa) і багато інших.

Існують розбіжності в тому, як вписати модель TCP / IP в модель OSI, оскільки рівні в цих моделях не збігаються. Спрощено інтерпретацію стека TCP / IP можна уявити так:

OSI TCP / IP
7. Прикладний HTTP, FTP, Telnet, SMTP, DNS (RIP, що працює поверх UDP, і BGP, що працює поверх TCP, є частиною мережного рівня), LDAP прикладний
6. Подання
5. Сеансовий
4. Транспортний TCP, UDP, RTP, NCP) і протокол оголошення про сервіси Service Advertising Protocol (SAP).

NetBIOS / SMB

На фізичному і канальному рівнях цього стека також задіяні вже набули поширення протоколи, такі як Ethernet, Token Ring, FDDI, а на верхніх рівнях - специфічні протоколи NetBEUI (протокол розширеного призначеного для користувача інтерфейсу NetBEUI - NetBIOS Extended User Interface) і SMB. NetBEUI розроблявся як ефективний протокол, що споживає небагато ресурсів і призначений для мереж, що нараховують не більше 200 робочих станцій. Цей протокол містить багато корисних мережевих функцій, які можна віднести до транспортного та сеансовому рівням моделі OSI, однак з його допомогою неможлива маршрутизація пакетів. Це обмежує застосування протоколу NetBEUI локальними мережами, що не розділеними на підмережі, і унеможливлює його використання в складових мережах.

Протокол Server Message Block (SMB) підтримує функції сеансового рівня, рівня уявлення і прикладного рівня. На основі SMB реалізується файлова служба. а також служби друку і передачі повідомлень між додатками.