Wat is een Unix® Domain Socket?
Een Unix®-domeinsocket is een speciaal sockettype binnen het Unix®-besturingssysteem (OS) dat gegevens overbrengt van de ene toepassing naar de andere. In tegenstelling tot andere sockets, die meestal verbinding maken met andere systemen, is de Unix®-domeinsocket een IPC-socket (inter-process communication), wat betekent dat deze alleen verbinding maakt met andere programma's op de computer van de gebruiker. Structureel lijkt de domeinsocket meer op een benoemde pijp dan op een socket, hoewel het verschillende functies heeft die een pijp niet bevat. Het gebruik van domeinsockets is veilig, omdat andere netwerken de gegevensstroom niet kunnen bespioneren en de socket zelfs geen netwerk nodig heeft om te functioneren.
Sockets, in elk besturingssysteem, worden gebruikt om bytes van het ene programma naar het andere te streamen in een tweerichtingsstroom, wat betekent dat terwijl gegevens weggaan, andere gegevens binnenkomen. Dit wordt normaal gesproken gebruikt als een brug voor andere servers en computers, maar niet in het geval van een Unix®-domeinsocket. Deze speciale sockets worden gebruikt om gegevens van het Unix®-bestandssysteem naar een ander programma te pushen in plaats van naar een extern netwerk.
Hoewel de Unix®-domeinsocket veel socket-gerelateerde taken en mogelijkheden deelt, lijkt het meer op een benoemde pipe. Een genoemde pijp is een manier voor de computer om gegevens van de ene sectie naar de andere te streamen. Het wordt een pijp met een naam genoemd omdat de pijp een naam krijgt, net zoals de Unix®-domeinsocket een naam heeft - het Unix®-bestandssysteem zelf functioneert als de naam. Het grote verschil tussen deze twee is dat pijpen alleen bytestreamreeksen kunnen bieden, waarin gegevens worden gelezen terwijl ze worden verzonden, terwijl domeinsockets bytestream en datagram bieden, waarin informatie als een pakket wordt gelezen. Bytestream is beter op het gebied van beveiliging, terwijl datagram beter is voor systemen die continu berichten verzenden.
Unix® domeinsockets zijn niet gemaakt om te integreren met externe netwerken, maar ze bieden veel handige functies voor lokale netwerken, of een persoon of meerdere mensen de computer gebruiken. Door de Unix®-domeinsocket te gebruiken in plaats van andere typen sockets, kunnen de programma's authenticatie of toestemming verkrijgen zonder dat de gebruiker deze handmatig hoeft in te voeren. De domeinsocket neemt ook de regels van het Unix®-systeem over, wat handig is als verschillende gebruikers verschillende toegangsniveaus krijgen, omdat deze regels naar het systeem kunnen worden geschreven en er aandacht aan wordt besteed.
Meer dan andere sockets en pijpen, is een Unix®-domeinsocket veilig. Met domeinsockets kan een niet-vertrouwd netwerk niet naar de gegevensstroom luisteren en externe computers kunnen geen verbinding maken met de stroom zonder toegang. Alle authenticatie- en inloginformatie bevindt zich op het Unix®-domein, zodat de gebruiker nooit een wachtwoord of gebruikersnaam hoeft in te voeren om in te loggen op de server. Dit betekent dat programma's die naar toetsaanslagen luisteren deze informatie niet zullen verkrijgen.