Ноу Інти, лекція, сімейство протоколів tcp
Створення сокета. Системний виклик socket ()
При створенні сокета необхідно точно специфікувати його тип. Ця специфікація проводиться за допомогою трьох параметрів виклику socket (). Перший параметр вказує, до якого сімейства протоколів відноситься створюваний сокет. а другий і третій параметри визначають конкретний протокол всередині даного сімейства.
Другий параметр служить для завдання виду інтерфейсу роботи з сокетом - буде це потоковий сокет. сокет для роботи з датаграму або будь-якої іншої. Третій параметр вказує протокол для заданого типу інтерфейсу. У стеці протоколів TCP / IP існує тільки один протокол для потокових сокетів - TCP і тільки один протокол для датаграммной сокетов - UDP. тому для транспортних протоколів TCP / IP третій параметр ігнорується.
В інших стеках протоколів може бути кілька протоколів з однаковим видом інтерфейсу, наприклад, датаграммной, що розрізняються за ступенем надійності.
Для транспортних протоколів TCP / IP ми завжди в якості першого параметра будемо вказувати зумовлену константу AF_INET (Address family - Internet) або її синонім PF_INET (Protocol family - Internet).
Другий параметр буде приймати зумовлені значення SOCK_STREAM для потокових сокетів і SOCK_DGRAM - для датаграммной.
Оскільки третій параметр в нашому випадку не враховується, в нього ми будемо підставляти значення 0.
Системний виклик для створення сокета
Прототип системного виклику
Опис системного виклику
Системний виклик socket служить для створення віртуального комунікаційного вузла в операційній системі. Даний опис не є повним описом системного виклику, а призначене тільки для використання в нашому курсі. За повною інформацією звертайтеся до UNIX Manual.
Параметр domain визначає сімейство протоколів, в рамках якого буде здійснюватися передача інформації. Ми розглянемо тільки два таких сімейства з декількох існуючих. Для них є зумовлені значення параметра:
- PF_INET - для сімейства протоколів TCP / IP;
- PF_UNIX - для сімейства внутрішніх протоколів UNIX, інакше званого ще UNIX domain.
Параметр type визначає семантику обміну інформацією: чи буде здійснюватися зв'язок через повідомлення (datagrams), за допомогою встановлення віртуального з'єднання або ще якимось способом. Ми будемо користуватися тільки двома способами обміну інформацією з зумовленими значеннями для параметра type:
- SOCK_STREAM - для зв'язку за допомогою встановлення віртуального з'єднання;
- SOCK_DGRAM - для обміну інформацією через повідомлення.
Параметр protocol специфицирует конкретний протокол для обраного сімейства протоколів і способу обміну інформацією. Він має значення тільки в тому випадку, коли таких протоколів існує кілька. У нашому випадку сімейство протоколів і тип обміну інформацією визначають протокол однозначно. Тому цей параметр ми будемо вважати рівним 0.
Перший елемент структури - sin_family задає сімейство протоколів. У нього ми будемо заносити вже відому нам зумовлену константу AF_INET (див. Попередній розділ).