Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 3 ТЗ.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
35 Кб
Скачать
☆

Протокол команд scs

В термінології SCSI взаємодія йде між ініціатором і цільовим пристроєм. Ініціатор посилає команду цільовому пристрою, який потім відправляє відповідь ініціаторові.

Команди SCSI посилаються у вигляді блоків опису команди (Command Descriptor Block, CDB). Довжина кожного блоку може складати 6, 10, 12 або 16 байт. У останніх версіях SCSI блок може мати змінну довжину. Блок складається з однобайтового коду команди і параметрів команди.

Після отримання команди цільовий пристрій повертає значення 00h у разі успішного отримання, 02h у разі помилки або 08h у випадку, якщо пристрій зайнятий. У випадку, якщо пристрій повернув помилку, ініціатор зазвичай посилає команду запиту стану. Пристрій повертає Key Code Qualifier (KCQ).

Всі команди SCSI діляться на чотири категорії: N (non-data), W (запис даних від ініціатора цільовим пристроєм), R (читання даних) і B (двосторонній обмін даними). Всього існує порядка 60 різних команд SCSI, з яких найчастіше використовуються:

  • Test unit ready — перевірка готовності пристрою.

  • Inquiry — запит основних характеристик пристрою.

  • Send diagnostic — вказівка пристрою провести самодіагностику і повернути результат.

  • Request sense — повертає код помилки попередньої команди.

  • Read capacity — повертає ємкість пристрою.

  • Format Unit Read (4 варіанти) — читання.

  • Write (4 варіанти) — запис.

  • Write and verify — запис і перевірка.

  • Mode select — установка параметрів пристрою.

  • Mode sense — повертає поточні параметри пристрою.

Кожен пристрій на SCSI-шині має як мінімум один номер логічного пристрою (LUN — англ. Logical Unit Number). У деяких складніших випадках один фізичний пристрій може представлятися набором LUN.

Для можливості роботи декількох незалежних цільових пристроїв SCSI, в UNIX-подібних операційних системах застосовується адресація з довільно призначається драйвером ідентифікатора цільового пристрою (SCSI target id) та номери LUN, сконфигурированного на ньому. Сімейство стандартів SCSI включає в себе ряд стандартів рівня апаратури, стандарти SAM і SPC, що описують найголовніші команди і структури типу розгорнутої інформації про помилку, і специфічних для класу пристроїв стандартів.

Одним з останніх є MMC — Multimedia Command Set, повністю описує систему команд приводів CD / DVD / Blu-Ray, у тому числі їх різновидів з можливістю запису. Деякі приводи, наприклад, виробництва Asus і Pioneer, використовують конкуруючий стандарт Mt. Fuji, що відрізняється від MMC в деяких нюансах.

Поняття сокету

Данна стаття  розглядає ряд питань, пов'язаних з поняттям сокет, його призначенням, використанням у Windows, перевагами Winsock, а також піднімає питання функцій APIWinsock.

Загальні поняття про сокет

В процесі мережевого з'єднання два процеси обмінюються даними. Сокет  (socket) представляє собою абстрактну точку мережевого з'єднання, [2] а якщо говорити більш конкретніше, то сокет, є кінцевою точкою мережевих комунікацій. Кожен сокет, що використовується, має тип і асоційований з ним процес. Сокети існують у серединікомунікаційних доменів. Домени це абстракції, які мають конкретну структуру адресації і безліч протоколів, які визначають різні типи сокетів у середині домена. Прикладамикомунікаційних доменів можуть бути: UNIX домен, Internet домен, і т.д.

У Internet домені, сокет – це комбінація IP адреси і номера порту, яка однозначно визначає окремий мережевий процес у всій глобальній мережі Internet. Два сокети, один для хоста-одержувача, інший для хоста-відправника, визначають з'єднання для протоколів, орієнтованих на встановлення зв'язку, таких, як TCP. [3]

Сокети Windows

         Можливість взаємодії з іншими системами забезпечується в Windows підтримкою сокетів Windows Sockets – сумісного і майже точного аналога сокетів Берклі (BerkeleySockets), що де-факто грають роль промислового стандарту.

Оскільки інтерфейс Winsock повинен відповідати  промисловому стандарту, прийняті у ньому угоди про правила привласнення імен  і стилі програмування дещо відрізняються від тих, з якими ми звикли стикатися в процесі роботи з функціями Windows. Слід зазначити, що Winsock API не є частиною Win32/64. Крім того, Winsock надає додаткові функції що не відповідають стандартам; ці функції використовуються лише у разі крайньої необхідності. [1]

У UNIX інтерфейс сокетів був вбудований в систему. Інтерфейс Winsock не входить до складу Windows, а реалізований у вигляді динамічно завантаженої бібліотеки DLL. [2]

До переваг Winsock можна віднести наступне:

·        Перенесення вже існуючого коду, написаного для  Berkeley Sockets API, здійснюється безпосередньо.

·        Системи  Windows легко вбудовуються в мережі, що використовують, як версію Ipv4 протоколу TCP/IP, так і версію IPv6, що поступово розповсюджується.

·        Сокети можуть використовуватися спільно з введенням/виведенням Windows, що перекривається, що, окрім всього іншого, забезпечує можливість масштабування серверів при збільшенні кількості активних клієнтів.

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

·        Існують також додаткові, непереносимі розширення. [1]

Функції сокетів

API Winsock містить набір функцій. Специфікація Winsock розбиває їх на три групи:

·        функції сокетів в стилі Берклі, включені в Winsock API;

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

·        функції, що розподіляють набір функцій інтерфейсу сокетів Берклі.

Крім того, всі функції можна розділити на дві великі групи: блокуючі і не блокуючі.

Блокуюча функція примушує програму, що викликала її, чекати закінчення мережевої операції введення/виведення. Як приклад приведемо декілька функцій цієї групи:

аccept – підтверджує запит на встановлення з'єднання. Утворює новий сокет і сполучає його з видаленим комп'ютером, що запрошує з'єднання. Початковий сокет повертається в стан прийому вхідних запитів.

closesocket – закриває одну сторону в з'єднанні сокетів;

connect – встановлює з'єднання на вказаному сокеті;

recv – приймає дані із сполученого сокета;

send – передає дані через сполучений сокет;

sendto – передає дані через сполучений або не сполучений сокет; [2]

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

bind – привласнює ім'я неініціалізованому сокету;

getsockname – повертає ім'я вказаного локального сокета;

getsockopt – повертає опції вказаного сокета;

htonl – перетворює порядок байтів в 32-розрядному числі з машинно-незалежного в мережевий;

htons – перетворює порядок байтів в 16-розрядному числі з машинно-незалежного в мережевий;

inet_addr – перетворює рядок з IP-адресою у форматі десяткового з крапкою в 32-розрядне число в мережевому форматі;

inet_ntoa – перетворює IP-адрес у формат десяткового з крапкою;

listen – встановлює вказаний сокет в стан прослуховування запитів на вхідне з'єднання. Сама функція не проводить мережевих операцій введення/виведення;

ntohl – перетворює порядок байтів 32-розрядного числа з мережевого в машинно-залежний;

setsockopt – встановлює опції сокета;

shutdown – закриває одну сторону видаленого з'єднання;

socket – утворює точку мережевого з'єднання і повертає дескриптор сокета.

Висновоки

У даній статті були розглянуті базові поняття про сокети. Інтерфейс Windows Sockets надає можливість використання API, промислового стандарту, що відповідає вимогам, та гарантує роботу програм на різному устаткуванні і майже повну переносимість на рівні початкового коду. WinSock здатний підтримати практично будь-який мережевийпротокол, проте в більшості випадків застосовується протокол TCP/IP. [1]