Сокети (англ. socket - заглиблення, гніздо, роз'єм) — назва програмного інтерфейсу для забезпечення обміну даними між процесами. Процеси при такому обміні можуть виконуватися як на одній ЕОМ, так і на різних ЕОМ, пов'язаних між собою мережею. Сокет - абстрактний об'єкт, що представляє кінцеву точку з'єднання.
Сокет | |
Протилежне | Локальні сокети |
---|
Слід розрізняти клієнтські і серверні сокети. Клієнтські сокети грубо можна порівняти з кінцевими апаратами телефонної мережі, а серверні - з комутаторами. Клієнтський додаток (наприклад, браузер) використовує лише клієнтські сокети, а серверний (наприклад, вебсервер, якому браузер посилає запити) - як клієнтські, так і серверні сокети.
Інтерфейс сокетів вперше з'явився в BSD Unix. Програмний інтерфейс сокетів описаний в стандарті POSIX.1 І в тій чи іншій мірі підтримується усіма сучасними операційними системами.
Принципи сокетів
Кожен процес може створити сокет, що «слухає» (англ. listening socket), або серверний сокет і прив'язати його до якогось порту операційної системи (в UNIX непривілейовані процеси не можуть використовувати порти менше 1024). Процес, що слухає, зазвичай знаходиться в циклі очікування, тобто прокидається при появі нового з'єднання. При цьому зберігається можливість перевірити наявність з'єднань у цей час, встановити тайм-аут для операції тощо.
Кожен сокет має свою адресу. ОС сімейства UNIX можуть підтримувати багато типів адрес, але обов'язково повинні підтримуватися IP-адреса і локальна адреса (англ. Unix domain). Якщо прив'язати сокет до UNIX-адреси (локальні сокети), то буде створено спеціальний файл (файл сокета) за заданим шляхом, через який зможуть повідомлятися будь-які локальні процеси шляхом читання / запису з нього. Сокети Берклі (сімейство протоколів PF_INET
або PF_INET6
) доступні з мережі і вимагають виділення номера порту.
Зазвичай клієнт явно під'єднується до слухача, після чого будь-яке читання або запис через його файловий дескриптор будуть передавати дані між ним і сервером.
Адреси сокетів
На практиці сокет зазвичай посилається на сокет в Internet Protocol (IP) мережі (де сокет може називатися Інтернет-сокетом), зокрема для Transmission Control Protocol (TCP), який є протоколом для з'єднань один до одного. У цьому контексті передбачається, що сокети пов'язані з певною адресою сокета, а саме IP-адреса і номером порту для локального вузла, і є відповідна адреса сокету. На зовнішньому вузлі (іншому вузлі), який сам має асоційований сокет, що використовується зовнішнім процесом. Асоціація сокета з адресою сокету називається binding[].
Зауважимо, що в той час, як локальний процес може спілкуватися із зовнішнім процесом, надсилаючи або отримуючи дані на або з зовнішньої сокет-адреси, він не має доступу до чужого сокета сам по собі, і не може використовувати зовнішній сокет . Дескриптор сокета, оскільки вони є внутрішніми для зовнішнього вузла. Наприклад, у зв'язку між 10.20.30.40:4444 і 50.60.70.80:8888 (локальною IP-адресою: локальним портом, зовнішньою IP-адресою: зовнішнім портом) буде також пов'язаний сокет на кожному кінці, відповідний внутрішньому поданню з'єднання стеком протоколів на цьому вузлі. Вони локально називаються дескрипторами числових сокетів, скажімо 317 на одній стороні і 922 на іншій. Процес на вузлі 10.20.30.40 може запросити зв'язатися з вузлом 50.60.70.80 на порту 8888 (запит, щоб стек протоколу створив сокет для спілкування з цією адресою), і як тільки він створив сокет і отримав дескриптор сокета (317), він може спілкуватися через цей сокет за допомогою дескриптора (317). Стек протоколу буде пересилати дані на вузол 50.60.70.80 і з нього на порт 8888. Однак процес на вузлі 10.20.30.40 не може запитувати зв'язок на основі дескриптора зовнішнього сокету (наприклад, «socket 922» або «socket 922 на вузлі» 50.60.70.80 "), оскільки вони є внутрішніми для іншого вузла і не можуть використовуватися стеком протоколів на вузлі 10.20.30.40.
Реалізація
Стек протоколів, який сьогодні зазвичай надає операційна система (а не окрема бібліотека, наприклад), являє собою набір служб, які дозволяють процесам обмінюватися даними через мережу, використовуючи протоколи. Application programming interface (API), який використовуються програмами для зв'язку з стеком протоколів, використовуючи мережні сокети, називається сокет API. Розробка прикладних програм, які використовують цей API, називається програмуванням сокетів або мережеве програмування .
API інтернет сокетів зазвичай базуються на стандарті Сокети Берклі. У стандарті сокетів Берклі - сокети є формою файлового дескриптора, завдяки філософії Unix, що "все є файлом", а аналогії між сокетами і файлів. Обидва мають функції для читання, запису, відкриття та закриття. На практиці, під відмінностями розуміють, що по аналогії замість цього використовуються різні інтерфейси (відправляти і отримувати) на сокеті. У взаємодії між процесами кожен кінець, як правило, має свій власний сокет, але вони можуть використовувати різні API: вони абстрагуються мережним протоколом.
У стандартних інтернет-протоколах TCP і UDP адреса 'сокет' - це комбінація IP-адреса і номер порту, подібно до одного кінця телефонного з'єднання - це комбінація a номер телефону і конкретне розширення. Сокетам не потрібно мати адресу джерела, наприклад, тільки для передачі даних, але якщо програма зв'язує сокет з адресою джерела, сокет може використовуватися для отримання даних, надісланих на цю адресу. На основі цієї адреси інтернет-сокети доставляють вхідні пакети даних до відповідного процесу програми.
Визначення
Відмінності між сокетом (внутрішнє представлення), дескриптором сокета (абстрактним ідентифікатором) і адресою сокету (загальнодоступною адресою) є тонкими, і вони не з великою обачністю розрізняються в повсякденному використанні. Крім того, конкретні визначення "сокета" розрізняються між авторами і часто стосуються інтернет-сокету або TCP-сокета.
Інтернет-сокет характеризується принаймні наступними характеристиками:
- Локальна адреса сокета, що складається з локальної IP-адреси і (для TCP і UDP, але не IP) номера порту
- протокол: транспортний протокол, наприклад, TCP, UDP, raw IP. Це означає, що (локальні або віддалені) кінцеві точки з TCP-портом 53 і UDP-портом 53 є окремими сокетами, в той час як IP не має портів.
Сокет, який був підключений до іншого сокета, наприклад, під час встановлення з'єднання TCP, також має адресу віддаленого сокета. У операційній системі та програмі, яка створила сокет, сокет посилається на унікальне ціле значення, яке називається дескриптором сокета . Операційна система пересилає корисне навантаження вхідних IP-пакетів на відповідний додаток, шляхом вилучення інформації адреси сокету з заголовків IP-адрес і транспортного протоколу, та видалення заголовків з даних програми.
У IETF , , у багатьох підручниках, а також у цій статті, термін "сокет" означає об'єкт, який однозначно ідентифікується номером сокета. У інших підручниках, термін сокет відноситься до локальної адреси сокету, тобто "комбінації IP-адреси і номера порту". У вихідному визначенні сокет , наведеному в RFC 147, так як він був пов'язаний з мережею ARPA в 1971 році, "'сокет задається як 32-бітове число для парних сокетів, що ідентифікують приймальні сокети. і непарні сокети, що ідентифікують сокети посилань. '"Сьогодні, однак, зв'язки сокета є двонаправленими.
Інструменти
У Unix-подібних операційних системах і Microsoft Windows, інструменти командного рядка netstat і ss використовуються для переліку встановлених сокетів і відповідної інформації.
Приклад
Цей приклад, моделюється відповідно до інтерфейсу сокету Берклі, надсилає рядок "Hello, world!" через TCP до порту 80 хоста з адресою 1.2.3.4. Він ілюструє створення сокета (getSocket), підключення його до віддаленого хоста, відправлення рядка і, нарешті, закриття сокета:
Socket mysocket = getSocket (type = "TCP") connect (mysocket, address = "1.2.3.4", port = "80") send (mysocket, "Hello, world!") close (mysocket)
Типи
Доступні кілька типів інтернет-сокетів:
- Datagram sockets, також відомі як сокети без з'єднання, які використовують User Datagram Protocol (UDP).
- Stream sockets , також відомі як орієнтовані на з'єднання сокети, які використовують Протокол керування передачею (TCP), Stream Control Transmission Protocol (SCTP) або Datagram Congestion Control Protocol (DCCP).
- Raw sockets (або raw IP sockets), як правило, доступні в маршрутизаторах та інших мережевих пристроях. Тут транспортний рівень обходиться, і заголовки пакетів стають доступними для програми, і немає номера порту в адресі, тільки IP-адреса.
Примітки
- Програма Cisco Networking Academy, CCNA 1 і 2 Companion Guide переглянуто третє видання, P.480,
Див. також
Це незавершена стаття про комп'ютерні мережі. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Soketi angl socket zagliblennya gnizdo roz yem nazva programnogo interfejsu dlya zabezpechennya obminu danimi mizh procesami Procesi pri takomu obmini mozhut vikonuvatisya yak na odnij EOM tak i na riznih EOM pov yazanih mizh soboyu merezheyu Soket abstraktnij ob yekt sho predstavlyaye kincevu tochku z yednannya Soket ProtilezhneLokalni soketi Slid rozriznyati kliyentski i serverni soketi Kliyentski soketi grubo mozhna porivnyati z kincevimi aparatami telefonnoyi merezhi a serverni z komutatorami Kliyentskij dodatok napriklad brauzer vikoristovuye lishe kliyentski soketi a servernij napriklad vebserver yakomu brauzer posilaye zapiti yak kliyentski tak i serverni soketi Interfejs soketiv vpershe z yavivsya v BSD Unix Programnij interfejs soketiv opisanij v standarti POSIX 1 I v tij chi inshij miri pidtrimuyetsya usima suchasnimi operacijnimi sistemami Principi soketivKozhen proces mozhe stvoriti soket sho sluhaye angl listening socket abo servernij soket i priv yazati jogo do yakogos portu operacijnoyi sistemi v UNIX neprivilejovani procesi ne mozhut vikoristovuvati porti menshe 1024 Proces sho sluhaye zazvichaj znahoditsya v cikli ochikuvannya tobto prokidayetsya pri poyavi novogo z yednannya Pri comu zberigayetsya mozhlivist pereviriti nayavnist z yednan u cej chas vstanoviti tajm aut dlya operaciyi tosho Kozhen soket maye svoyu adresu OS simejstva UNIX mozhut pidtrimuvati bagato tipiv adres ale obov yazkovo povinni pidtrimuvatisya IP adresa i lokalna adresa angl Unix domain Yaksho priv yazati soket do UNIX adresi lokalni soketi to bude stvoreno specialnij fajl fajl soketa za zadanim shlyahom cherez yakij zmozhut povidomlyatisya bud yaki lokalni procesi shlyahom chitannya zapisu z nogo Soketi Berkli simejstvo protokoliv PF INET abo PF INET6 dostupni z merezhi i vimagayut vidilennya nomera portu Zazvichaj kliyent yavno pid yednuyetsya do sluhacha pislya chogo bud yake chitannya abo zapis cherez jogo fajlovij deskriptor budut peredavati dani mizh nim i serverom Adresi soketivNa praktici soket zazvichaj posilayetsya na soket v Internet Protocol IP merezhi de soket mozhe nazivatisya Internet soketom zokrema dlya Transmission Control Protocol TCP yakij ye protokolom dlya z yednan odin do odnogo U comu konteksti peredbachayetsya sho soketi pov yazani z pevnoyu adresoyu soketa a same IP adresa i nomerom portu dlya lokalnogo vuzla i ye vidpovidna adresa soketu Na zovnishnomu vuzli inshomu vuzli yakij sam maye asocijovanij soket sho vikoristovuyetsya zovnishnim procesom Asociaciya soketa z adresoyu soketu nazivayetsya binding dzherelo Zauvazhimo sho v toj chas yak lokalnij proces mozhe spilkuvatisya iz zovnishnim procesom nadsilayuchi abo otrimuyuchi dani na abo z zovnishnoyi soket adresi vin ne maye dostupu do chuzhogo soketa sam po sobi i ne mozhe vikoristovuvati zovnishnij soket Deskriptor soketa oskilki voni ye vnutrishnimi dlya zovnishnogo vuzla Napriklad u zv yazku mizh 10 20 30 40 4444 i 50 60 70 80 8888 lokalnoyu IP adresoyu lokalnim portom zovnishnoyu IP adresoyu zovnishnim portom bude takozh pov yazanij soket na kozhnomu kinci vidpovidnij vnutrishnomu podannyu z yednannya stekom protokoliv na comu vuzli Voni lokalno nazivayutsya deskriptorami chislovih soketiv skazhimo 317 na odnij storoni i 922 na inshij Proces na vuzli 10 20 30 40 mozhe zaprositi zv yazatisya z vuzlom 50 60 70 80 na portu 8888 zapit shob stek protokolu stvoriv soket dlya spilkuvannya z ciyeyu adresoyu i yak tilki vin stvoriv soket i otrimav deskriptor soketa 317 vin mozhe spilkuvatisya cherez cej soket za dopomogoyu deskriptora 317 Stek protokolu bude peresilati dani na vuzol 50 60 70 80 i z nogo na port 8888 Odnak proces na vuzli 10 20 30 40 ne mozhe zapituvati zv yazok na osnovi deskriptora zovnishnogo soketu napriklad socket 922 abo socket 922 na vuzli 50 60 70 80 oskilki voni ye vnutrishnimi dlya inshogo vuzla i ne mozhut vikoristovuvatisya stekom protokoliv na vuzli 10 20 30 40 RealizaciyaStek protokoliv yakij sogodni zazvichaj nadaye operacijna sistema a ne okrema biblioteka napriklad yavlyaye soboyu nabir sluzhb yaki dozvolyayut procesam obminyuvatisya danimi cherez merezhu vikoristovuyuchi protokoli Application programming interface API yakij vikoristovuyutsya programami dlya zv yazku z stekom protokoliv vikoristovuyuchi merezhni soketi nazivayetsya soket API Rozrobka prikladnih program yaki vikoristovuyut cej API nazivayetsya programuvannyam soketiv abo merezheve programuvannya API internet soketiv zazvichaj bazuyutsya na standarti Soketi Berkli U standarti soketiv Berkli soketi ye formoyu fajlovogo deskriptora zavdyaki filosofiyi Unix sho vse ye fajlom a analogiyi mizh soketami i fajliv Obidva mayut funkciyi dlya chitannya zapisu vidkrittya ta zakrittya Na praktici pid vidminnostyami rozumiyut sho po analogiyi zamist cogo vikoristovuyutsya rizni interfejsi vidpravlyati i otrimuvati na soketi U vzayemodiyi mizh procesami kozhen kinec yak pravilo maye svij vlasnij soket ale voni mozhut vikoristovuvati rizni API voni abstraguyutsya merezhnim protokolom U standartnih internet protokolah TCP i UDP adresa soket ce kombinaciya IP adresa i nomer portu podibno do odnogo kincya telefonnogo z yednannya ce kombinaciya a nomer telefonu i konkretne rozshirennya Soketam ne potribno mati adresu dzherela napriklad tilki dlya peredachi danih ale yaksho programa zv yazuye soket z adresoyu dzherela soket mozhe vikoristovuvatisya dlya otrimannya danih nadislanih na cyu adresu Na osnovi ciyeyi adresi internet soketi dostavlyayut vhidni paketi danih do vidpovidnogo procesu programi ViznachennyaVidminnosti mizh soketom vnutrishnye predstavlennya deskriptorom soketa abstraktnim identifikatorom i adresoyu soketu zagalnodostupnoyu adresoyu ye tonkimi i voni ne z velikoyu obachnistyu rozriznyayutsya v povsyakdennomu vikoristanni Krim togo konkretni viznachennya soketa rozriznyayutsya mizh avtorami i chasto stosuyutsya internet soketu abo TCP soketa Internet soket harakterizuyetsya prinajmni nastupnimi harakteristikami Lokalna adresa soketa sho skladayetsya z lokalnoyi IP adresi i dlya TCP i UDP ale ne IP nomera portu protokol transportnij protokol napriklad TCP UDP raw IP Ce oznachaye sho lokalni abo viddaleni kincevi tochki z TCP portom 53 i UDP portom 53 ye okremimi soketami v toj chas yak IP ne maye portiv Soket yakij buv pidklyuchenij do inshogo soketa napriklad pid chas vstanovlennya z yednannya TCP takozh maye adresu viddalenogo soketa U operacijnij sistemi ta programi yaka stvorila soket soket posilayetsya na unikalne cile znachennya yake nazivayetsya deskriptorom soketa Operacijna sistema peresilaye korisne navantazhennya vhidnih IP paketiv na vidpovidnij dodatok shlyahom viluchennya informaciyi adresi soketu z zagolovkiv IP adres i transportnogo protokolu ta vidalennya zagolovkiv z danih programi U IETF u bagatoh pidruchnikah a takozh u cij statti termin soket oznachaye ob yekt yakij odnoznachno identifikuyetsya nomerom soketa U inshih pidruchnikah termin soket vidnositsya do lokalnoyi adresi soketu tobto kombinaciyi IP adresi i nomera portu U vihidnomu viznachenni soket navedenomu v RFC 147 tak yak vin buv pov yazanij z merezheyu ARPA v 1971 roci soket zadayetsya yak 32 bitove chislo dlya parnih soketiv sho identifikuyut prijmalni soketi i neparni soketi sho identifikuyut soketi posilan Sogodni odnak zv yazki soketa ye dvonapravlenimi InstrumentiU Unix podibnih operacijnih sistemah i Microsoft Windows instrumenti komandnogo ryadka netstat i ss vikoristovuyutsya dlya pereliku vstanovlenih soketiv i vidpovidnoyi informaciyi PrikladCej priklad modelyuyetsya vidpovidno do interfejsu soketu Berkli nadsilaye ryadok Hello world cherez TCP do portu 80 hosta z adresoyu 1 2 3 4 Vin ilyustruye stvorennya soketa getSocket pidklyuchennya jogo do viddalenogo hosta vidpravlennya ryadka i nareshti zakrittya soketa Socket mysocket getSocket type TCP connect mysocket address 1 2 3 4 port 80 send mysocket Hello world close mysocket TipiDostupni kilka tipiv internet soketiv Datagram sockets takozh vidomi yak soketi bez z yednannya yaki vikoristovuyut User Datagram Protocol UDP Stream sockets takozh vidomi yak oriyentovani na z yednannya soketi yaki vikoristovuyut Protokol keruvannya peredacheyu TCP Stream Control Transmission Protocol SCTP abo Datagram Congestion Control Protocol DCCP Raw sockets abo raw IP sockets yak pravilo dostupni v marshrutizatorah ta inshih merezhevih pristroyah Tut transportnij riven obhoditsya i zagolovki paketiv stayut dostupnimi dlya programi i nemaye nomera portu v adresi tilki IP adresa PrimitkiPrograma Cisco Networking Academy CCNA 1 i 2 Companion Guide pereglyanuto tretye vidannya P 480 ISBN 1 58713 150 1Div takozhInterfejs transportnogo rivnya Ce nezavershena stattya pro komp yuterni merezhi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi