Wat is een stopcontact?

Kan iemand mij uitleggen wat een socket is? Ik zie het in veel acroniemen in de context van SSL, enz.

En waarom wordt het ook een socket genoemd? Is het puur omdat het de naam was die ze hebben uitgevonden? Of was het de voornaam die ze bedachten?

Opmerkingen

  • In termen van leek ‘ s: een stopcontact is een telefoon. Het ‘ is het ding dat u in uw hand houdt waarmee u een gesprek kunt voeren met een andere telefoon. De analogie valt een beetje uiteen: de meeste telefoongesprekken zijn peer-to-peer. Socket-verbindingen zijn client naar server. De client (zoals, maar niet beperkt tot, werkstationsoftware zoals browsers) maakt verbinding met een server (zoals een webserver, bestandsserver, authenticatieserver of andere). Nog een fout in de analogie: wanneer je een socketverbinding sluit, wordt de socket vernietigd en moet je een nieuwe socket maken voordat je een nieuwe verbinding kunt maken.
  • Het ‘ is niet zo slecht voor een analogie. Een server is slechts een callcenter en kan vele honderden actieve oproepen tegelijk hebben.

Answer

Een socket is slechts een logisch eindpunt voor communicatie. Ze bestaan op de transportlaag. Je kunt dingen verzenden en ontvangen op een stopcontact, je kunt binden en luisteren naar een stopcontact. Een socket is specifiek voor een protocol, machine en poort, en wordt als zodanig geadresseerd in de header van een pakket.

Beej “s gidsen voor Netwerk Programmering en Interprocescommunicatie bevatten beide goede informatie over het gebruik van sockets, en zelfs beantwoord deze exacte vraag .

Answer

In de eenvoudigste bewoordingen is een socket een pseudo-bestand dat vertegenwoordigt een netwerkverbinding. Zodra een socket is gemaakt (met behulp van de juiste primitieven en de juiste parameters om de andere host te identificeren), worden schrijfacties naar de socket omgezet in netwerkpakketten die worden verzonden en kunnen gegevens die van het netwerk worden ontvangen, worden gelezen uit de socket.

In één opzicht lijken sockets erg op pipes: ze zien eruit als bestanden voor de programmas die ze gebruiken, maar resulteren niet in lezen of schrijven naar een schijf; ze laten eerder communicatie toe met een ander programma (lokaal in het geval van pipes, en po ssible remote in het geval van stopcontacten). Ze bieden ook, zoals u vermeldt, bidirectionele communicatie (net zoals een paar correct aangesloten pijpen dat zou kunnen).

Ten slotte is het gebruikelijk dat programmas op een enkele machine communiceren met behulp van standaard netwerkprotocollen, zoals TCP ; het zou een verspilling zijn om helemaal naar de netwerkhardware te gaan (indien aanwezig!), checksums te berekenen, enz., gewoon om terug te gaan naar dezelfde host: dat is waar Unix-domeinsockets binnenkomen. Die lijken veel op gewone sockets , behalve dat ze processen op dezelfde host verbinden in plaats van externe processen, en helemaal geen netwerkbronnen proberen te gebruiken. Op deze manier zijn ze een medium voor communicatie tussen processen.

Zoals tripleee al zei , in de loop van de geschiedenis van BSD, werden pijpen eerder geïntroduceerd dan sockets, en werden ze opnieuw geïmplementeerd met behulp van sockets zodra die bestonden. Dezelfde referentie, The Design and Implementation of the FreeBSD Operating System , vermeldt dat werden vervolgens om prestatieredenen teruggezet naar een niet-socket-implementatie: dit onderstreept zeker het feit dat pijpen overeenkomsten delen.

Opmerkingen

Antwoord

Wat is het nu?

Een socket, of “socket” kan verschillende dingen zijn:

Allereerst is het een gedachte model en een applicatie-programmeerinterface (API) . Dat betekent dat je een reeks regels hebt die je moet volgen en een reeks functies die je kunt gebruiken om programmas te schrijven die iets doen, volgens een nauwkeurig gespecificeerd contract. In dit specifieke geval betekent iets het uitwisselen van gegevens met een ander programma.

De sockets API abstraheert in grote lijnen de details van “communicatie” in het algemeen. Het vat samen met wie je praat en hoe, allemaal via één (bijna) consistent en identiek cookie-cutter-formulier.
Je kunt sockets maken in verschillende “domeinen” (zoals bijv.een unix-aansluiting of een internetaansluiting) en van verschillende soorten communicatie (bijv. een datagram-aansluiting of een stream-aansluiting) en met verschillende ontvangers praten, en alles werkt precies hetzelfde (nou ja, 99%, er zijn duidelijk minieme verschillen waar u rekening mee moet houden).

U hoeft niet te weten (en u wilt het niet eens weten!) of u met een ander programma op dezelfde computer praat of op een andere computer, of er een IPv4- of IPv6-netwerk tussen die computers zit, of misschien een ander protocol waar je nog nooit van hebt gehoord.

socket is ook de naam van de bibliotheekfunctie (of syscall) die “de socket ” aanmaakt, wat een speciaal soort bestand is (alles in Unix is een bestand).

Hoe verhoudt het zich tot …

sockets vallen in dezelfde categorie als buizen en name pipes

Een pipe is een middel om o ne manier communicatie tussen een lezer en een schrijver (beide zijn programmas) op dezelfde computer. Het simuleert een stroom gegevens (net als bijv. TCP).
Dat wil zeggen, er bestaan geen individuele “berichten” of “blokken gegevens” vanuit het oogpunt van de pijp. U kunt kopiëren elke hoeveelheid gegevens in het ene uiteinde, en iemand anders kan elke hoeveelheid gegevens (niet noodzakelijk hetzelfde, en niet noodzakelijkerwijs in één keer) aan het andere uiteinde lezen in dezelfde bytevolgorde als waarin u het hebt ingevoerd .

Een met de naam pipe is, nou ja, gewoon een pipe die eigenaar is van een naam in het bestandssysteem . Dat wil zeggen, het is iets dat eruitziet en zich gedraagt als een bestand, het verschijnt in de directorylijst en je kunt het openen, ernaar schrijven, enz. Enz. Merk op dat je ook speciale socketbestanden kunt maken (dat zou een naam socket).

Een socket, aan de andere kant, is een middel om tweerichtingsverkeer (” duplex ) communicatie, dat betekent dat je naar dezelfde socket kunt schrijven en lezen, en dat je geen twee aparte sockets nodig hebt voor een tweewegcommunicatie.
Een socket kan ook fungeren als een stream (identiek aan een pipe ), of het kan discrete, onbetrouwbare berichten verzenden, of het kan discrete, geordende berichten verzenden (de eerste twee werken op elk domein, de laatste alleen op Unix-domein). Het kan berichten naar iemand verzenden (of een stream simuleren) op een geheel andere computer. Een socket kan onder bepaalde omstandigheden zelfs een vorm van één-op-veel-communicatie (multicast) uitvoeren.

Met dat in gedachten is het duidelijk dat sockets iets veel gecompliceerder en algemeen hebben meer overhead dan pijpen (die in feite niet meer zijn dan een simpele memcpy van en naar een buffer!), maar als je lokale sockets maakt (d.w.z. op dezelfde computer), past het besturingssysteem meestal een sterk geoptimaliseerd snel pad toe, dus er is echt niet veel verschil.

communicatie tussen processen soms genoemd met betrekking tot netwerken

Ja, sockets zijn een mogelijke manier van communicatie tussen processen (gedeeld geheugen en pijpen zijn voorbeelden van alternatieven). Ze worden allemaal tegelijkertijd gebruikt voor “netwerken”, zoals hierboven uitgelegd.

Antwoord

Een socket een abstractie . Het biedt een interface voor applicaties om een systeembron (in dit geval de netwerkverbinding) te gebruiken op een manier die het besturingssysteem mogelijk maakt om te bemiddelen en het gebruik van een beperkte bron door een willekeurig aantal applicaties te organiseren.

Als de gegevens die via het stopcontact worden verzonden, kunnen worden beschouwd als enveloppen met post, dan is het stopcontact uw brievenbus. U koppelt een mailbox (stopcontact) aan uw huis (programma) en plaatst daar uw uitgaande mail (data) in. Op een afgesproken tijdstip komt de postbode (besturingssysteem) langs en haalt uw uitgaande post op en zet eventuele inkomende post in dezelfde mailbox af. Uw uitgaande post wordt namens u naar de ontvanger overgebracht via de vrachtwagen van de postbode (netwerkverbinding), samen met al die van uw buren. Dit stelt je in staat te corresponderen met mensen ver weg zonder dat je de kosten, tijd, moeite, enz. Nodig hebt om de brief zelf te bezorgen.

Wat betreft waarom ze “sockets” worden genoemd, het idee dat de uitvinders mogen het noemen wat ze willen, speelt daar waarschijnlijk een grote rol. Hoewel het naar mijn mening geen slechte naam is 🙂

Antwoord

Voor udp of tcp over IP,

Een socketadres is de combinatie van een IP-adres en een poortnummer.

Een IP-adres is het adres van een machine op internet bijv unix.stackexchange.com has address 198.252.206.140

Elke machine moet echter meer dan één service kunnen bieden, dus de meeste machines zullen http (webpaginas) op poort 80 en ssh op poort leveren 22, en etc.

Dus unix.stackexchange.com:80 poort 80 van unix.stackexchange.com (een stopcontact) is het toegangspunt van deze website.

Er zijn echter andere soorten stopcontacten, zie de opmerkingen hieronder.

Opmerkingen

  • tcp / ip is slechts één soort stopcontact. Er zijn andere die niets met tcp / ip te maken hebben.
  • hoeveel verschillende soorten sockets zijn er?
  • @AbdulAlHazred, ik ken vier veelvoorkomende typen die worden gebruikt met ip-netwerken, hetzelfde met ip6, twee met unix en twee met IPX. Ik heb ax25, atm of appletalk niet bekeken. Er worden andere protocollen ondersteund op linux, en er zijn protocollen die linux niet ondersteunt. In de meeste gevallen heeft elk protocol stream (tcp) en datagram (udp) sockets. Raw sockets zijn ook gebruikelijk, en imcp kan ook een socket-interface hebben.
  • Het punt is dat dit antwoord onvolledig is omdat het slechts één type socket beslaat, en misleidend omdat het sockets in het algemeen vertegenwoordigt als als ze altijd netwerksockets waren, en in het bijzonder IP (AF_INET) sockets.

Antwoord

Ik geloof dat je iets over netwerken hebt gevraagd. TCP-services gebruiken dus sockets als punt voor communicatie en bestaan uit een IP-adres, protocol en poortnummer.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *