
- •Модель osi і набір протоколів Інтернету (Internet.)
- •Мережений рівень керування протоколами іРv4 і іРv6
- •Модель протоколу тср/ір
- •Відмінності оsi і сімейства протоколів тср/ip
- •Огляд протоколів tcp ip
- •Передача udp .Ідентифікація кінцевого споживача.
- •Протокол передачі датаграм користувача udp.
- •Формат udp-повідомлення.
- •Псевдозаголовок користувацьких датаграм
- •Інкапсуляція і розділення на рівні.
- •Мультиплексування та демультиплексування udp-датаграм за допомогою портів.
- •Зарезервовані і вільні номери портів udp.
- •Надійна потокова транспортна служба tcp
- •Встановлення і завершення з’єднання tcp.
- •Параметри тср
- •Розрив з’єднання тср
- •Діаграма станів тср
- •Перегляд пакетів
- •Стан time_wait
- •Порти тср
- •Файли – сокети
- •Номер портів тср і паралельні сервери
- •Розміри буфера і його обмеження
- •Зміни, що відбудуться при переході від iPv4 до iPv6
- •Відправка по udp
- •Інтерфейс сокета
- •Створення сокету
- •Ф-ція Connect
- •Ф-ція Bind
- •Очікування з’єднання listen
- •Отримання з’єднання accept
- •Інша інформація Дескриптор файлу
- •11.1 Понятие Сокета
- •11.4 Именное пространство Файла
- •11.4.1 Понятия Именного пространства Файла
- •11.4.2 Подробности Именного пространства Файла
- •11.5 Именное пространство Internet
Ф-ція Bind
Ф-ція зв’язує сокет з локальними адресами протокола у випадку протокола Інтернету адреса протоколу це комбінація адрес IPv4 або IPv6 з 16 розрядним номером порта ТСР або UDP.
Bind (сокет, локальний, -адрес, довжина адреси)
Повертає 0 – коли успішно, -1 помилка.
Сокет - дескриптор сокета до якого її прив’язали
2-м аргументом є вказівник на специфычний для протокол адрес, з розмір структури адресу.
Очікування з’єднання listen
Функція LISTEN використовується лише для вже встановленого логічного з’єднання.
int listen (int socket, unsigned int n) (функция)
Функція LISTEN дає можливість вказаному сокету сприймати з’єднання, таким чином створюється сокет сервера.
Аргумент n визначає довжину черги для відкладених з’єднань.
Функція LISTEN повертає 0 при успіху і -1 у випадку невдачі. В змінній errno визначаються наступні коди помилок для цієї функції.
EBADF аргумент socket - недопустий описувач файлу.
ENOTSOCK аргумент socket – не сокет.
EOPNOTSUPP Вказаний сокет не підтримує цю операцію.
Отримання з’єднання accept
Коли сервер отримує з’єднання, він може створити з’єднання, приймаючи запит. Для цих цілей слід використовувати функцію ACCEPT.
Сокет, який був встановлений як сервер, може приймати запити з’єднання від багатьох клієнтів. Цей сокет сервера не стане частиною з’єднання, на заміну ACCEPT робить новий сокет, який розділяє з’єднання. ACCEPT повертає описувач для цього сокета.
Вихідний сокет сервера залишається доступним для очікування подальших запитів з’єднання.
Число відкладених запитів з’єднання на сокеті сервера кінечне. Якщо запити з’єднання прибувають скоріше, ніж сервер може їх обробити, черга може заповнитись, і додаткові запити отримають відказ з помилкою ECONNREFUSED. Можна визначити максимальну довжину черги, як аргумент функції LISTEN, хоча система може також накласти своє власне обмеження на довжину цієї черги.
int accept (int socket, struct sockaddr *addr, size_t *length_ptr)
Ця функція використовується для прийняття запиту на з’єднання у вказаному сокеті сервера.
Функція знаходиться в стані очікування, коли немає можливості прийняти з’єднання, якщо звичайно, вказаний сокет не має набору режимів неблокування.
Аргументи Addr і length_ptr використовуються щоб повернути інформацію відносно імені клієнтського сокета, яке ініціювало з’єднання.
Сокет, який був встановлений як сервер не стане частиною з’єднання; ACCEPT зробить новий сокет. ACCEPT повертає опис для цього сокета. Нормальне значення, яке поверне accept – опис файлу для нового сокету.
Після accept попередньо вказаний сокет залишається відкритим і не зв’язаним і продовжує чекати,поки його не закриють. Можна приймати інші з’єднання з цим сокетом викликаючи функцію accept знову.
Якщо виникає помилка accept повертає -1.
В змінній errno визначаються наступні коди помилок для цієї функції.
EBADF аргумент socket – недопустимий описувач файлу.
ENOTSOCK дескрипторний аргумент socket - не сокет.
EOPNOTSUPP описанный сокет не підтримує цю операцію.
EWOULDBLOCK сокет має набір режимів неблокування, і немає ніяких відложених з’єднань.
Функцію accept не дозволяється приміняти для сокета без встановленого логічного з’єднання.