Відмінності між версіями «NetBIOS/SMB»
Рядок 48: | Рядок 48: | ||
Команда Hung_up призначена для закриття каналу, номер якого вказаний в полі NCB_lsn. Вона має бути виконана з обох боків каналу після заверш роботи. Якщо канал зайнятий, то видається помилка. Для команд передачі з чеканням відводиться 20 секунд на завершення. | Команда Hung_up призначена для закриття каналу, номер якого вказаний в полі NCB_lsn. Вона має бути виконана з обох боків каналу після заверш роботи. Якщо канал зайнятий, то видається помилка. Для команд передачі з чеканням відводиться 20 секунд на завершення. | ||
+ | '''Передача/Прийом по каналах''' | ||
+ | |||
+ | Дані можуть передаватися (Send) декількома способами: c чеканням (Wait) і без нього, з перевіркою доставки (Ask) і без неї. Крім того, можна передати два блоки даних (Chain). При прийомі використовується варіант команди Receive. | ||
+ | |||
+ | За допомогою команди Send програма може передати блок даних розміром від 1 до 65535 байт по створеному раніше каналу. Номер каналу має бути записаний в полі NCB_lsn. Адреса передаваного блоку даних і його довжина мають бути записана в поля NCB_buFFER_ptr і NCB_length. Передачі | ||
+ | даних з використанням каналів гарантує не лише доставку блоків даних, але і правильну послідовність, в якій ці блоки будуть прийняті. Якщо витік час тайм-ауту, заданого при створенні каналу, команда завершується з помилкою. | ||
+ | |||
+ | Для команди Chain_send дані передаються як один блок. Загальний розмір передаваних за допомогою цієї команди даних може досягати 2 х 64 байт. Перший буфер задається, як при звичайній передачі. Розмір другого буфера має бути записаний в перші два байти поля NCB_caLLNAME, а його адреса займає наступні чотири байти цього поля. | ||
+ | |||
+ | Окрім вибраного каналу можна отримати дані від будь-якого партнера (Receive_any). Для цієї команди замість номера каналу вказують номер імені, отриманий вашою програмою при додаванні імені. Якщо в полі NCB_num проставити значення 0xFF, ця команда прийматиме дані від будь-яких партнерів для будь-яких каналів, створених на вашій станції. Якщо розмір буфера недостаточен для запису прийнятих даних, команда повертає код помилки; в цьому випадку можна викликати команду ще раз для того, щоб отримати дані, що не помістилися в буфері при попередньому виклику команди. | ||
---------------------------- | ---------------------------- |
Версія за 11:51, 26 листопада 2008
Стек NetBIOS/SMB
Фірми Microsoft і IBM спільно працювали над мережевими засобами для персональних комп'ютерів, тому стек протоколів NetBIOS/SMB є їх сумісним дітищем. На фізичному і канальному рівнях цього стека використовуються всі найбільш поширені протоколи Ethernet, Token Ring, FDDI і інші. Засоби NETBIOS з'явилися в 1984 році як мережеве розширення стандартних функцій базової системи вводу/виводу (BIOS) IBM РС для мережевої програми РС Network фірми IBM, яка на прикладному рівні (мал. 1.6) використовувала для реалізації мережевих сервісів протокол SMB (Server Message Block).
Надалі цей протокол був замінений так званим протоколом розширеного призначеного для користувача інтерфейсу NetBEUI NetBIOS Extended User Interface. Для забезпечення сумісності додатків як інтерфейс до протоколу NetBEUI був збережений інтерфейс NetBIOS. Протокол NetBEUI розроблявся як ефективний протокол, що споживає небагато ресурсів і призначений для мереж, що нараховують не більше за 200 робочих станцій. Цей протокол містить багато корисних мережевих функцій, які можна віднести до мережевого, транспортного і сеансовому рівнів моделі OSI, однак з його допомогою неможлива маршрутизація пакетів. Це обмежує застосування протоколу NetBEUI локальними мережами, не розділеними на підмережі, і унеможливлює його використання в складових мережах. Деякі обмеження NetBEUI знімаються реалізацією цього протоколу NBF (NetBEUI Frame), яка включена в операційну систему Microsoft Windows NT.
Протокол SMB (Server Message Block) виконує функції сеансового, представницького і прикладного рівнів. На основі SMB реалізовується файлова служба, а також служби друку і передачі сполучень між додатками.
Протокол NETBIOS працює на трьох рівнях моделі взаємодії відкритих систем: мережевому, транспортному і сеансовому. NETBIOS може забезпечити сервіс більш високого рівня, ніж протоколи IPX і SPX, проте не володіє здатністю до маршрутизації. Таким чином, NETBIOS не є мережевим протоколом в строгому сенсі цього слова. NETBIOS містить багато корисних мережевих функцій, які можна віднести до мережевого, транспортного і сеансового рівнів, проте з його допомогою неможлива маршрутизація пакетів, оскільки в протоколі обміну кадрами NETBIOS не вводиться таке поняття як мережа. Це обмежує застосування протоколу NETBIOS локальними мережами, не розділеними на підмережі. NETBIOS підтримує як дейтаграммный обмін, так і обмін зі встановленням з'єднань.
Протокол SMB (Server Message Block) виконує функції сеансового, представницького і прикладного рівнів моделі OSI. На основі SMB реалізовується файлова служба, а також служби друку і передачі сполучень між додатками. У функції SMB входять наступні операції:
• Управління сесіями. Створення і розрив логічного каналу між робочою станцією і мережевими ресурсами файлового сервера.
• Файловий доступ. Робоча станція може звернутися до файл-серверу із запитами на створення і видалення каталогів створення, відкриття і закриття файлів, читання і запис у файли, перейменування і видалення файлів, пошук файлів, отримання і установку файлових атрибутів, блокування записів.
• Сервіс друку. Робоча станція може ставити файли в чергу для друку на сервері і отримувати інформацію черги друку.
• Сервіс повідомлень. SMB підтримує просту передачу повідомлень з наступними функціями: послати просте повідомлення; послати широкомовне повідомлення; послати початок блоку повідомлень; послати текст блоку повідомлень; послати кінець блоку повідомлень; переслати ім'я користувача; відмінити пересилку; отримати ім'я машини.
На канальному рівні стеку NetBIOS/SMB використовують ті самі протоколи та технології, що й для стеку TCP/IP. SMB (Server Message Block) – протокол, що забезпечує прикладному процесудоступ до файлів та принтерів інших комп’ютерів. NetBIOS (Network Basic Input/Output System) – протокол, що доповнює базову систему (BIOS) персональних комп’ютерів типу IBM PC функціями для роботи у мережі.
Порівнюючи між собою можливості двох стеків NetBIOS/SMB та TCP/IP, бачимо, що кожен з них займає своє особливе місце за призначенням. Стек NetBIOS/SMB дозволяє легко створювати невеликі мережі, а ті ускладнення, які пов’язані з використанням стеку TCP/IP, виправдовуються можливістю утворення міжмережних зв’язків та підключення до всесвітньої мережі Інтернет. Через велику кількість додатків, які використовують функції API, NETBIOS, що надаються, в багато мережевих ОС ці функції реалізовані у вигляді інтерфейсу до своїх транспортних протоколів. У NetWare є програма, яка емулює функції NETBIOS на основі протоколу IPX, існують програмні емулятори NETBIOS для Windows NT і стека TCP/IP.
Робота з каналами
За допомогою команд віртуальні канали можуть створюватися, видалятися, а також може бути визначений їх стан. При роботі з каналами імена використовуються лише для створення каналів.
Далі, коли канали вже будуть створені, для передачі даних використовуються номери каналів, а не імена або номери імен. Канал створюється одночасно двома станціями одна з яких при цьому знаходиться в режимі прийому запиту на створення каналу, а інша передає такий запит. Канал створюється з будь-якими двома іменами, тобто можна вказувати і своє ім'я як приймач.
Команда передачі запиту (Call) встановлює канал між двома іменами. У полі NCB_name вказується ім'я станції, яка встановлює канал, в полі NCB_caLLNAME - ім'я станції, яка встановлює канал, в полі NCB_caLLNAME - ім'я станції, з якою встановлюється канал. Ці імена можуть відноситися до програм, що працюють на одній або на різних станціях. Для успішного створення каналу приймаюча сторона повинна видати команду прийому запиту (Listen).
При створенні каналу вказується час тайм-ауту для операцій прийому і передачі даних. Команда робить декілька спроб створити канал і в разі невдачі повертає код помилки.
При роботі з груповим ім'ям команду Call слід видати кілька разів, оскільки за один виклик створюється лише один канал. Після створення каналу поле NCB_lsn в NCB обох станцій міститиме привласнений номер каналу. Його слід зберегти. Для команди Listen у полі NCB_caLLNAME вказується ім'я, з яким встановлюється канал. Якщо в перший байт імені записати символ "*", канал буде встановлений з будь-якою зухвалою станцією. Програма може видати декілька команд Listen для створення одночасно декількох каналів.
Команда Hung_up призначена для закриття каналу, номер якого вказаний в полі NCB_lsn. Вона має бути виконана з обох боків каналу після заверш роботи. Якщо канал зайнятий, то видається помилка. Для команд передачі з чеканням відводиться 20 секунд на завершення.
Передача/Прийом по каналах
Дані можуть передаватися (Send) декількома способами: c чеканням (Wait) і без нього, з перевіркою доставки (Ask) і без неї. Крім того, можна передати два блоки даних (Chain). При прийомі використовується варіант команди Receive.
За допомогою команди Send програма може передати блок даних розміром від 1 до 65535 байт по створеному раніше каналу. Номер каналу має бути записаний в полі NCB_lsn. Адреса передаваного блоку даних і його довжина мають бути записана в поля NCB_buFFER_ptr і NCB_length. Передачі даних з використанням каналів гарантує не лише доставку блоків даних, але і правильну послідовність, в якій ці блоки будуть прийняті. Якщо витік час тайм-ауту, заданого при створенні каналу, команда завершується з помилкою.
Для команди Chain_send дані передаються як один блок. Загальний розмір передаваних за допомогою цієї команди даних може досягати 2 х 64 байт. Перший буфер задається, як при звичайній передачі. Розмір другого буфера має бути записаний в перші два байти поля NCB_caLLNAME, а його адреса займає наступні чотири байти цього поля.
Окрім вибраного каналу можна отримати дані від будь-якого партнера (Receive_any). Для цієї команди замість номера каналу вказують номер імені, отриманий вашою програмою при додаванні імені. Якщо в полі NCB_num проставити значення 0xFF, ця команда прийматиме дані від будь-яких партнерів для будь-яких каналів, створених на вашій станції. Якщо розмір буфера недостаточен для запису прийнятих даних, команда повертає код помилки; в цьому випадку можна викликати команду ще раз для того, щоб отримати дані, що не помістилися в буфері при попередньому виклику команди.
Додаткова інформація: NetBIOS Extended User Interface Розширений користувальницький інтерфейс NetBIOS
Дуже простий мережевий протокол, створений IBM і Microsoft. Використовується для реалізації NetBIOS поверх Ethernet з низькими накладними витратами. NetBEUI - немаршрутізіруемий протокол.
Network Basic Input / Output System Мережева базова система введення / виводу
NetBIOS - це простий інтерфейс програмування додатків (API), створений в 1980-х роках, що дозволяє програмам надсилати дані певним мережних іменами. NetBIOS завжди працює поверх іншого мережевого протоколу, такого як IPX / SPX, TCP / IP або Logical Link Control (LLC). NetBIOS, що працює поверх LLC, більше відомий як NetBEUI (NetBIOS Extended User Interface - помилкове вживання!).
NetBT
Протокол для передачі пакетів NetBIOS через TCP / IP. Використовує порти 137, 138 і 139. NetBT - повністю маршрутізіруемий протокол.
Інфо взята з: [1]