Огляд програмування сокетів для комп'ютерних мереж

Сокет - одна з найбільш фундаментальних технологій програмування комп'ютерних мереж. Сокети дозволяють мережевим програмним додаткам взаємодіяти з використанням стандартних механізмів, вбудованих в мережеве обладнання та операційні системи.

Хоча це звучить як ще одна особливість розробки програмного забезпечення в Інтернеті, технологія сокетів існувала до появи Інтернету. Багато популярних мережевих програм використовують сокети.

Що Socket Technology може зробити для вашої мережі

Сокет - це одне з'єднання між двома частинами програмного забезпечення (з'єднання точка-точка). Більше двох програм можуть обмінюватися даними з клієнт-серверними або розподіленими системами, використовуючи кілька сокетів. Наприклад, багато веб-переглядачів можуть одночасно взаємодіяти з одним веб-сервером, використовуючи групу сокетів, створених на сервері.

Програмне забезпечення на основі сокетів зазвичай працює на двох окремих комп'ютерах в мережі, але сокети також можна використовувати для локального зв'язку (міжпроцесної взаємодії) на одному комп'ютері. Сокети є двонаправленими, це означає, що будь-яка сторона з'єднання здатна відправляти і отримувати дані.

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

Socket API і бібліотеки

В Інтернеті існує декілька бібліотек, які реалізують стандартні інтерфейси прикладного програмування (API). Перший основний пакет, бібліотека сокетів Берклі, широко використовується в системах UNIX.

Іншим поширеним API є бібліотека Windows Sockets (WinSock) для операційних систем Microsoft. Порівняно з іншими комп'ютерними технологіями API сокетів є зрілими. WinSock використовується з 1993 року, а сокети Berkeley - з 1982 року.

API сокетів відносно малі і прості. Багато функцій подібні до тих, які використовуються у процедурах введення/виводу файлів, таких як < tt > read () </tt >, < tt > write () </tt > та < tt > close () </tt >, Фактичні виклики функцій для використання залежать від мови програмування та вибраної бібліотеки.

Типи Інтерфейсів Сокетів

Інтерфейси сокетів можна розділити на три категорії:

  • Потокові сокети: це найбільш поширений тип. Обидві сторони, що зв'язуються, спочатку встановлюють з'єднання через сокет, після чого будь-які дані, що передаються через це з'єднання, гарантовано надходять в тому ж порядку, в якому вони були відправлені (з використанням моделі програмування, орієнтованої на з'єднання).
  • Гнізда дейтаграм: пропонують семантику без з'єднання. У дейтаграмах з'єднання є не явними, а явними, як з потоками. Будь-яка зі сторін відправляє дейтаграми в міру необхідності і очікує відповіді іншої сторони. Повідомлення можуть бути втрачені при передачі або отримані не за порядком; Додаток займається цими проблемами, а не сокетами. Реалізація сокетів датаграм може дати деяким додаткам підвищення продуктивності і додаткову гнучкість порівняно з використанням потокових сокетів.
  • Необроблені сокети: обхід вбудованої підтримки бібліотеки для стандартних протоколів, таких як TCP і UDP. Сирі сокети використовуються для розробки користувальницьких низькорівневих протоколів.

Підтримка сокетів у мережевих протоколах

Сучасні мережеві сокети зазвичай використовуються разом з інтернет-протоколами IP, TCP і UDP. Бібліотеки, які реалізують сокети для інтернет-протоколу, використовують TCP для потоків, UDP для дейтаграм та IP для необроблених сокетів.

Для зв'язку через Інтернет бібліотеки IP-сокетів використовують IP-адресу для ідентифікації конкретних комп'ютерів. Багато частин Інтернету працюють зі службами імен, так що користувачі і програмісти сокетів можуть працювати з комп'ютерами за назвою (наприклад, thiscomputer.wireless.lifewire.com) замість адреси (наприклад, 208.185.127.40).

Сокети потоків і дейтаграм також використовують номери портів IP, щоб відрізняти кілька додатків один від одного. Наприклад, веб-браузери в Інтернеті знають, що порт 80 використовується за замовчуванням для зв'язку через сокети з веб-серверами.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND