GettyImages 500631084 5768c5743df78ca6e46339a4 scaled

Socket on yksi perustekniikoista tietokoneverkkojen ohjelmointiin. Socketin avulla verkkoohjelmistosovellukset voivat kommunikoida käyttämällä verkkolaitteistoon ja käyttöjärjestelmiin sisäänrakennettuja vakiomekanismeja. Vaikka se kuulostaa toiselta Internet-ohjelmistokehityksen tunnusmerkiltä, ​​socket-tekniikka oli olemassa ennen Webiä. Monet suositut verkkoohjelmistosovellukset käyttävät pistorasioita.

Mitä pistorasiatekniikka voi tehdä verkossasi

Socket edustaa yhtä yhteyttä täsmälleen kahden ohjelmiston välillä (point-to-point-yhteys). Useampi kuin kaksi ohjelmistoa voi kommunikoida asiakkaan/palvelimen tai hajautettujen järjestelmien kanssa useiden pistokkeiden avulla. Esimerkiksi monet verkkoselaimet voivat kommunikoida samanaikaisesti yhden web-palvelimen kanssa käyttämällä palvelimelle luotuja pistorasioita. Socket-pohjaiset ohjelmistot toimivat yleensä kahdella erillisellä verkossa olevalla tietokoneella, mutta pistokkeilla voidaan myös kommunikoida paikallisesti (interprocess) yhdellä tietokoneella. Pistorasiat ovat kaksisuuntaisia, mikä tarkoittaa, että yhteyden molemmat puolet voivat sekä lähettää että vastaanottaa dataa. Joskus viestinnän aloittavaa sovellusta kutsutaan asiakkaaksi ja toista sovellusta palvelimeksi, mutta tämä terminologia johtaa sekaannukseen vertaisverkoissa, ja sitä tulisi yleensä välttää.

Socket API:t ja kirjastot

Internetissä on useita kirjastoja, jotka toteuttavat standardisovellusohjelmointirajapintoja (API). Ensimmäinen valtavirran paketti, Berkeley Socket Library, on laajalti käytössä UNIX-järjestelmissä. Toinen yleisesti käytetty API on Windows Sockets (WinSock) -kirjasto Microsoft-käyttöjärjestelmille. Socket API:t ovat kypsiä muihin laskentatekniikoihin verrattuna. WinSock on ollut käytössä vuodesta 1993 ja Berkeley socketit vuodesta 1982. Socket API:t ovat suhteellisen pieniä ja yksinkertaisia. Monet toiminnot ovat samanlaisia ​​kuin tiedostojen syöttö-/suoritusrutiineissa käytetyt, kuten lukea(), kirjoittaa() ja kiinni() . Varsinaiset käytettävät funktiokutsut riippuvat valitusta ohjelmointikielestä ja socket-kirjastosta.

Socket-liitäntätyypit

Socket-liitännät voidaan jakaa kolmeen luokkaan:

  • Virtaliitännät: Tämä on yleisin tyyppi. Molemmat kommunikoivat osapuolet muodostavat ensin socket-yhteyden, jonka jälkeen kaikki tämän yhteyden kautta lähetetty data taataan saapuvan samassa järjestyksessä kuin se lähetettiin (käyttämällä yhteyslähtöistä ohjelmointimallia).
  • Datagram-pistokkeet: Tarjoa yhteydetöntä semantiikkaa. Datagrammeilla yhteydet ovat implisiittisiä eivätkä eksplisiittisiä kuten virtojen kohdalla. Molemmat osapuolet lähettävät datagrammit tarpeen mukaan ja odottavat toisen vastausta. Viestit voivat kadota tai vastaanottaa epäkunnossa lähetyksen aikana; sovellus käsittelee nämä ongelmat, ei pistorasiat. Datagrammivastakkeiden käyttöönotto voi parantaa joidenkin sovellusten suorituskykyä ja lisää joustavuutta stream-vastakkeiden käyttöön verrattuna.
  • Karkeat pistorasiat: Ohita kirjaston sisäänrakennettu tuki vakioprotokollille, kuten TCP ja UDP. Raw-socketteja käytetään matalan tason mukautettujen protokollien kehittämiseen.

Socket-tuki verkkoprotokollassa

Nykyaikaisia ​​verkkoliitäntöjä käytetään yleensä Internet-protokollien IP, TCP ja UDP kanssa. Kirjastot, jotka toteuttavat Internet Protocol -socketteja, käyttävät TCP:tä streameille, UDP:tä datagrammeille ja IP:tä raakapistokkeille. Internetin kautta kommunikoidakseen IP-vastakekirjastot käyttävät IP-osoitetta tiettyjen tietokoneiden tunnistamiseen. Monet osat Internetiä käyttävät nimeämispalveluita, jotta käyttäjät ja pistorasiaohjelmoijat voivat työskennellä tietokoneiden kanssa nimen (esimerkiksi thiscomputer.wireless.lifewire.com) sijaan osoitteen (esimerkiksi 208.185.127.40) perusteella. Stream- ja datagrammiliitännät käyttävät myös IP-porttinumeroita useiden sovellusten erottamiseen toisistaan. Esimerkiksi Internet-selaimet osaavat käyttää porttia 80 oletuksena socket-viestinnässä verkkopalvelimien kanssa.

Por Markus