Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lections (1).doc
Скачиваний:
22
Добавлен:
12.02.2016
Размер:
1.43 Mб
Скачать

Інтерфейс сокета

В основу АРІ мережевих операцій І\О системи UNIX покладено ланцюг сокетів. В даному випадку під сокетом розуміють узагальнену форму механізму доступу до файлів системи UNIX, яка забезпечує кінцеву точку для взаємодії. Як і при отриманні доступу до файлів прикладної програми при необхідності посилають запит ОС на утворення сокета. Системи в свою чергу поврікс невелике ціле число яке потім використовується в прикладній програмі для ідентифікації тільки що створеного сокета.

Створення сокету

Сокети створюються за допомогою ф-ії сокет, як тільки в ній виникає необхідність. Передаються 3 цілочисельних параметри, а повертається 1 ціле число. РЕЗУЛЬТАТ=SOCKET (сімейство,тип,протокол)

Вона повертає нев...льний дескриптор, якщо ф-ція виконана успішно, і – 1 у випадку помилки. Параметр сімейство визначає сімейство протоколів, яке буде використовуватися з сокетом.

Сімейство сокетів:

AF_INET – протокол IPv4

AF_INET6 - IPv6

AF_LOCAL – доменні сокети Unix

AF_ROUTE – маршрутизуючі сокети

AF_KEY – ключовий сокет

Тип – задає тип бажані взаємодії:

1. Надійну потокову службу доставки SOCK_STREAM.

2. Службу доставки дейтаграм, яка не потребує встановлення зєднання з отримувачем SOCK_DGRAM

3. Низькорівневий тип. SOCK_RAW – символьний або нестр сокет, за допомогою якого привілейовані програми можуть отримати доступ до протоколу низького рівня і драйверів мережевих інтерфейсів. Переважно арг прот ф-ція сокет = 0 за винятком символьних сокетів. Не всі порівняння констант сімейство-тип є доступні.

AF_INET

AF_INET6

AF_LOCAL

AF_ROUTE

AF_KEY

Sock_stream

TCP

TCP

Так

Sock_dgram

UDP

UDP

Так

Sock_raw; IPv4

IPv6

так

так

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

Ф-ція Connect

Використовується клієнтом ТСР для встановлення зєднання з сервером ТСР.

Int connect (int sockfd, const struct sockaddr servaddr, socklen_t addrlen);

Повертає 0 у вигляді успішного виконання ф-ції, - 1 у разі помилки.

Sockfd, який повертає денстр сонета.

2 і 3 – це вказівник на стр адресу сокета та її розміри структ зр адресу сокета повинна містити ІР адрес і номер порта сервера. Клієнту немає необхідності викликати ф-цію Bind до виклику ф-ції Connect. При необхідності ядро вибере і динамічно призначить порт ІР адреси відправника.

Ф-ція повертає значення тільки якщо зєднання встановлено або у вигляді помилки. Можливо декілька різних помилок:

1. Якщо клієнт ТСР не отримав відповідь на свій SYNC повертається ETIMEROUT

2. Якщо на елемент SYNC сервер відповів RST то це означає, що ні один процес не знаходиться в очікувані підключення до даного нами порту. Вважається стійкою несправність: клієнту повертається ECONNREFUSED. Є 3 умови:

1. Сегмент SYN приходить для порта лише немає прослуховування сокета.

2. ТСР хоче розірвати існуючого зєднаня

3. ТСР отримує сегмент для неіснуючого зєднання.

4. Якщо сегмент SYN клієнта приходить то отримує ІСМР про недоступність отримувача з якого небудь проміжного маршрутизотора – це рахується випадковим збоєм. Клієнтське ядро зберігає тв про помилку але продовжує відправляти запити з тими самими числовими даними. EHOSTUNREACH, ENETUNREACH

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]