UNIX -uttag erbjuder flera typer, var och en designade för olika kommunikationsscenarier. De kan i stort sett kategoriseras som:
* Stream Sockets (sock_stream): Dessa ger en pålitlig, beställd och dubbelriktad byte -ström. Data överförs i ett kontinuerligt flöde, och mottagaren får byte i den exakta ordningen de skickades. Tänk på det som ett rör - data flyter sömlöst. TCP är det vanligaste protokollet som används med strömuttag.
* datagram -uttag (sock_dgram): Dessa erbjuder en anslutningslös, opålitlig och dubbelriktad kommunikationsmetod. Data skickas i diskreta paket (datagram), som kan komma ur ordning, kan dupliceras eller kan gå förlorad helt. Det finns ingen garanti för leverans. UDP är det typiska protokollet som är associerat med datagramuttag.
* råa uttag (sock_raw): Dessa ger ett mycket lågnivågränssnitt, vilket möjliggör direkt åtkomst till nätverksprotokollskiktet. Du kan skapa och skicka råa nätverkspaket och kringgå protokollen på högre nivå som TCP/IP. Detta kräver en djup förståelse för nätverk och används vanligtvis för specialiserade uppgifter som nätverksövervakning och felsökning. Kräver lämpliga privilegier.
* sekvenserade paketuttag (sock_seqpacket): I likhet med strömuttag ger dessa en pålitlig, beställd, dubbelriktad byte -ström. Emellertid förpackas varje växellåda i ett distinkt meddelande med sin egen rubrik, vilket möjliggör bättre meddelandegränser än sock_stream. De är mindre vanliga än ström- eller datagramuttag.
* Unix -domänuttag (AF_UNIX eller AF_LOCAL): Dessa uttag kommunicerar endast inom en enda maskin; De involverar inte nätverksprotokoll som TCP eller UDP. De är snabbare och säkrare än nätverksuttag eftersom de inte korsar nätverksstacken. De används ofta för kommunikation mellan processen (IPC) inom ett system.
Viktiga skillnader:
* Anslutningsorienterad kontra anslutningslös: Sock_stream (TCP) är anslutningsorienterad; En anslutning upprättas före dataöverföring. Sock_dgram (UDP) är anslutningsfritt; Varje datagram är oberoende.
* Pålitlig kontra opålitlig: Sock_stream är pålitlig; Data garanteras att komma fram i ordning och utan förlust (utesluter katastrofala nätverksfel). Sock_dgram är opålitlig; Det finns ingen garanti för leverans eller beställning.
Valet av uttagstyp beror helt på applikationens krav. Om tillförlitlig leverans och beställning är av största vikt, använd `sock_stream '. Om hastigheten prioriteras och viss dataförlust är acceptabel är `sock_dgram` ett bättre val. `AF_UNIX 'är utmärkt för effektiv IPC. `Sock_raw` är för mycket specialiserade uppgifter på låg nivå. `Sock_seqpacket` är ett nischalternativ som sällan används.