Een socket is een van de meest fundamentele technologieën van computernetwerkprogrammering. Met sockets kunnen netwerksoftwaretoepassingen communiceren met behulp van standaardmechanismen die zijn ingebouwd in netwerkhardware en besturingssystemen.
Hoewel het misschien net een ander kenmerk van de ontwikkeling van internetsoftware zou klinken, bestond socket-technologie al lang vóór het web. En veel van de meest populaire netwerksoftwaretoepassingen van tegenwoordig vertrouwen op sockets.
Welke sockets kunnen doen voor uw netwerk
Een socket vertegenwoordigt een enkele verbinding tussen precies twee stukjes software (een zogenaamde point-to-point verbinding). Meer dan twee stukjes software kunnen communiceren met client / server of gedistribueerde systemen door gebruik te maken van meerdere sockets. Veel webbrowsers kunnen bijvoorbeeld tegelijkertijd communiceren met een enkele webserver via een groep contactdozen op de server.
Socket-gebaseerde software draait meestal op twee afzonderlijke computers op het netwerk, maar sockets kunnen ook worden gebruikt om lokaal te communiceren ( interproces ) op één computer. Sockets zijn bidirectionele , wat betekent dat beide zijden van de verbinding zowel gegevens kunnen verzenden als ontvangen. Soms wordt de enige applicatie die communicatie initieert de "client" en de andere applicatie de "server" genoemd, maar deze terminologie leidt tot verwarring bij peer-to-peer-netwerken en moet over het algemeen worden vermeden.
Socket API's en bibliotheken
Verschillende bibliotheken die standaard application programming interfaces (API's) implementeren, bestaan op internet. Het eerste standaardpakket - de Berkeley Socket Library wordt nog steeds veel gebruikt op UNIX-systemen. Een andere veelgebruikte API is de Windows Sockets (WinSock) -bibliotheek voor Microsoft-besturingssystemen. Ten opzichte van andere computertechnologieën zijn socket API's behoorlijk volwassen: WinSock is sinds 1993 in gebruik en Berkeley sockets sinds 1982.
De socket-API's zijn relatief klein en eenvoudig. Veel van de functies zijn vergelijkbaar met die gebruikt in bestandsinvoer / uitvoerroutines zoals lezen(), schrijven(), en dichtbij(). De feitelijke functie-aanroepen om te gebruiken zijn afhankelijk van de programmeertaal en de gekozen socketbibliotheek.
Socket Interface Types
Socket-interfaces kunnen worden onderverdeeld in drie categorieën:
- Stroom sockets, het meest voorkomende type, vereisen dat de twee communicerende partijen eerst een socketverbinding tot stand brengen, waarna alle gegevens die door die verbinding worden geleid, gegarandeerd in dezelfde volgorde arriveren waarin ze zijn verzonden - het zogenaamde verbindingsgeoriënteerde programmeermodel .
- datagram sockets bieden "connection-less" semantiek. Met datagrammen zijn verbindingen eerder impliciet dan expliciet, zoals bij streams. Beide partijen verzenden eenvoudig datagrammen naar behoefte en wachten op de andere om te antwoorden; berichten kunnen verloren gaan bij verzending of worden ontvangen in de verkeerde volgorde, maar het is de verantwoordelijkheid van de toepassing en niet de sockets om met deze problemen om te gaan. Het implementeren van datagram sockets kan sommige applicaties een prestatieverbetering geven en extra flexibiliteit in vergelijking met het gebruik van stream sockets, wat hun gebruik in sommige situaties rechtvaardigt.
- Het derde type socket - de rauw socket - omzeilt de ingebouwde ondersteuning van de bibliotheek voor standaardprotocollen zoals TCP en UDP. Raw-sockets worden gebruikt voor aangepaste protocolontwikkeling op laag niveau.
Socket-ondersteuning in netwerkprotocollen
Moderne netwerkaansluitingen worden meestal gebruikt in combinatie met de internetprotocollen IP, TCP en UDP. Bibliotheken die sockets implementeren voor Internet Protocol gebruiken TCP voor streams, UDP voor datagrammen en IP zelf voor raw sockets.
Voor communicatie via internet gebruiken IP-socketbibliotheken het IP-adres om specifieke computers te identificeren. Veel delen van het internet werken met naamgevingsdiensten, zodat de gebruikers en socketprogrammeurs met computers op naam kunnen werken ( bijv. , "thiscomputer.wireless.about.com") in plaats van op adres ( bijv. 208.185.127.40). Stream- en datagram-sockets gebruiken ook IP-poortnummers om meerdere applicaties van elkaar te onderscheiden. Webbrowsers op internet weten bijvoorbeeld poort 80 als standaard voor socketcommunicatie met webservers te gebruiken.




