Kompiuterinių tinklų sujungimo programavimo apžvalga

Lizdas yra viena iš pagrindinių kompiuterinių tinklų programavimo technologijų. Lizdai leidžia tinklo programinei įrangai bendrauti naudodami įprastus mechanizmus, integruotus į tinklo aparatūrą ir operacines sistemas.

Nors tai gali atrodyti tik kita interneto programinės įrangos kūrimo ypatybė, lizdo technologija egzistavo ilgai prieš Web. Ir daugelis šiandieninių populiariausių tinklo programinės įrangos priklauso nuo lizdų.

Kokie lizdai gali padaryti jūsų tinklui

Lizdas yra vienas ryšys tarp tiksliai dviejų programinės įrangos dalių (vadinamasis " point-to-point" ryšys). Daugiau nei dvi programinės įrangos dalys gali bendrauti su kliento / serveriu arba paskirstytomis sistemomis naudojant kelis lizdas. Pavyzdžiui, daugelis interneto naršyklių vienu metu gali bendrauti su vienu žiniatinklio serveriu per grupę lizdų, sudarytų serveryje.

Socket-based software paprastai veikia du atskirus kompiuterius tinkle, tačiau lizdai taip pat gali būti naudojami lokaliai ( interprocess ) bendram bendravimui viename kompiuteryje. Lizdai yra dvikrypčiai , tai reiškia, kad abiejose ryšio pusėse galima siųsti ir priimti duomenis. Kartais viena programa, inicijuoja bendravimą, vadinama "klientu", o kita programa - "serveris", tačiau ši terminologija sukelia painiavą " peer to peer" tinkluose ir paprastai turėtų būti vengiama.

Socket API ir bibliotekos

Internete egzistuoja keletas bibliotekų, įgyvendinančių standartines programinės įrangos sąsajas (API) . Pirmas pagrindinis paketas - "Berkeley Socket" biblioteka vis dar plačiai naudojama UNIX sistemose. Kitas labai įprastas API yra "Windows Sockets" (WinSock) biblioteka "Microsoft" operacinėms sistemoms. Santykis su kitomis kompiuterių technologijomis, socket API yra gana brandus: WinSock buvo naudojamas nuo 1993 m., O Berkeley lizdai nuo 1982 m.

Socket API yra palyginti mažas ir paprastas. Daugelis funkcijų yra panašios į tuos, kurie naudojami failų įvesties / išvesties tvarkos, pvz., read () , write () ir close () . Tikroji funkcija, kurią reikia naudoti, priklauso nuo pasirinktos programavimo kalbos ir lizdo bibliotekos.

Socket Interface Types

Socket sąsajas galima suskirstyti į tris kategorijas:

  • "Stream" lizdai, labiausiai paplitęs tipas, reikalauja, kad dvi ryšio šalys pirmiausia nustatytų lizdo ryšį, po kurio bus garantuotai, kad per šį ryšį perduodami duomenys bus tokie pat kaip ir išsiųstos - vadinamasis ryšiu orientuotas programavimas modelis.
  • "Datagram" lizdai siūlo "mažiau ryšio" semantiką. Su datagramais jungtys yra netiesioginės, o ne aiškios, kaip su srautais. Bet kuri šalis paprasčiausiai siunčia datagramas, kai reikia, ir laukia, kol kitas atsakys; pranešimai gali būti prarasti perduodant arba gauti neteisingai, bet tai yra paraiškos atsakomybė, o ne lizdai, kad būtų galima išspręsti šias problemas. Įdiegus "datagram" lizdus, ​​kai kurioms programoms gali būti suteiktas našumo padidėjimas ir papildomas lankstumas, palyginti su srautų lizdų naudojimu, pateisinantys jų naudojimą kai kuriose situacijose.
  • Trečias tipo lizdas - žaliavinis lizdas - apeina bibliotekos integruotą palaikymą standartiniams protokolams, pvz., TCP ir UDP . Neapdoroti lizdai naudojami individualiam mažo lygio protokolo kūrimui.

"Socket Support" tinklo protokoluose

Modernūs tinklo lizdai paprastai naudojami kartu su interneto protokolais - IP, TCP ir UDP. Bibliotekos, įgyvendinančios lizdą, skirtą interneto protokolui, naudoja TCP srautus, UDP datagramas ir pačią IP į žaliavines lizdas.

Norėdami bendrauti internetu, IP lizdo bibliotekos naudoja IP adresą, norėdami nustatyti konkrečius kompiuterius. Daugelis interneto dalių dirba su pavadinimo paslaugomis, kad naudotojai ir lizdų programuotojai galėtų dirbti su kompiuteriais pagal pavadinimą ( pvz. , "Thiscomputer.wireless.about.com"), o ne pagal adresą ( pvz. , 208.185.127.40). Srauto ir datagrams lizdai taip pat naudoja IP prievado numerius, kad atskirtų kelias programas viena nuo kitos. Pavyzdžiui, žiniatinklio naršyklės internete žino, kaip naudoti "port 80" kaip tinklo ryšių su žiniatinklio serveriais numatytąjį.