Berkeley sockets (BSD sockets) onBerkeley Software Distributionissa (BSD) esiteltyohjelmointirajapinta (API)prosessien väliseen kommunikointiin niin sanotuillapistokkeilla.[1][2] BSD rajapinnasta on tullutde facto standardi lähes sellaisenaan, jota kutsutaan myösPOSIX-standardissa nimelläPOSIX sockets.[3][4][5]
Rajapinta julkaistiin ensimmäisenä4.2BSD:ssä.[6]
Microsoft Windows -käyttöjärjestelmänWindows Sockets -rajapinta on toinen vastaavankaltainen.[7][8] Winsock-rajapinnassa on POSIX-määrittelyn mukaiset toiminnot.[9]Macintosh-alustalla rajapinnanfunktioiden nimeäminen on poikennut yleisesti käytetystä.[10]iOS-alustalla rajapinta on merkittävästi erilainen.[11] Muita erilaisia rajapintoja onX/Open Transport Interface (XTI).[12]
Useimmat alustat nykyisin toteuttavat POSIX-määrittelyn mukaisen version verkko-ohjelmointiin.
Pistoke (engl.socket) on rajapinnassa käytettävä tiedostokahva (engl.handle), jonka kautta tietoa vastaanotetaan ja lähetetään.[3]
Rajapintaa voidaan käyttää useidenprotokollien kanssa kuten:[3]
Rajapintaa voidaan käyttää useiden tyyppien (kommunikointityylien) kanssa, joista tavallisimmat ovat SOCK_STREAM ja SOCK_DGRAM.[3][1] Muita ovat SOCK_RAW, SOCK_RDM ja SOCK_SEQPACKET.[2] Rajapintaa voidaan käyttää sekä yhteydellisille että yhteydettömille tavoille.[13]
Keskeisetjärjestelmäkutsut rajapinnassa ovat:[5]
socketcloseconnectbindlistenacceptTiedonsiirto toimii kuten tiedostojen kanssa: rajapinnan avulla luetaan ja kirjoitetaan tietoa käyttäen järjestelmäkutsupareja:[2]
read, writerecv, sendrecvfrom, sendtorecvmsg, sendmsgreadv, writevRajapinta antaa onnistumisen merkin kun tieto on hyväksytty siirrettäväksi.[2] Rajapinnan toiminta voidaan asettaa ei-pysäyttäväksi (engl.non-blocking), jolloin funktiokutsut eivät jää odottamaan.[3]
Rajapinnan ja kommunikoinnin toimintaa voidaan muuttaa muun muassagetsockopt jasetsockopt järjestelmäkutsujen avulla.[14][15]