Kunne nogen forklare mig, hvad et stik er? Jeg ser det i mange akronymer i forbindelse med SSL osv.
Hvorfor kaldes det også et stik? Er det udelukkende fordi det var det navn de opfandt? Eller var det det første navn, de kom på?
Kommentarer
- I lægmand ‘ s termer: et stik er en telefon. Det ‘ er den ting, du holder i din hånd, der lader dig føre en samtale med en anden telefon. Analogien bryder lidt sammen: De fleste telefonsamtaler er peer-to-peer. Socket-forbindelser er klient til server. Klienten (såsom, men ikke begrænset til, arbejdsstationssoftware som browsere) opretter forbindelse til en server (såsom en webserver, filserver, godkendelsesserver eller andet). En anden fejl i analogien: Når du lukker en stikketforbindelse, ødelægges stikkontakten, og du skal oprette en ny stikkontakt, før du kan oprette en ny forbindelse.
- Det ‘ er ikke så slemt for en analogi. En server er bare et callcenter og kan have mange hundrede aktive opkald ad gangen.
Svar
Et stik er bare et logisk slutpunkt til kommunikation. De findes på transportlaget. Du kan sende og modtage ting på en stikkontakt, du kan binde og lytte til en stikkontakt. Et stik er specifikt for en protokol, maskine og port og adresseres som sådan i overskriften på en pakke.
Beejs guider til Netværk Programmering og Kommunikation mellem processer har begge god information om, hvordan man bruger stikkontakter, og endda besvar dette nøjagtige spørgsmål .
Svar
I de enkleste termer er en sokkel en pseudofil, der repræsenterer Når en stikkontakt er oprettet (ved hjælp af de rigtige primitiver og de korrekte parametre til at identificere den anden vært), bliver skrivninger til stikket omdannet til netværkspakker, der sendes ud, og data modtaget fra netværket kan læses fra stikkontakten.
I en henseende ligner stikkene meget rør: de ligner filer til programmerne, der bruger dem, men resulterer ikke i læsning eller skrivning til en disk; snarere tillader de at kommunikere med et andet program (lokalt i tilfælde af rør, og po muligvis fjernbetjening i tilfælde af stikkontakter). De tilbyder også, som du nævner, tovejskommunikation (ligesom et par korrekt tilsluttede rør kunne).
Endelig er det almindeligt, at programmer på en enkelt maskine kommunikerer ved hjælp af standardnetværksprotokoller, såsom TCP ; det ville være spildt at gå hele vejen til netværkshardwaren (hvis nogen!), beregning af kontrolsummer osv., bare for at gå tilbage til den samme vært: det er her Unix domæner stikkontakter kommer ind. De ligner meget almindelige stikkontakter , bortset fra at de forbinder processer på den samme vært snarere end fjernprocesser og ikke forsøger at bruge nogen netværksressourcer overhovedet. På denne måde er de et medium for kommunikation mellem processer.
Som tripleee nævnt i løbet af BSDs historie blev rør introduceret tidligere end sokler og blev genimplementeret ved hjælp af sokler, når de eksisterede. Den samme reference, Design og implementering af FreeBSD-operativsystemet , nævner at rør blev derefter vendt tilbage til en ikke-socket-implementering af ydeevneårsager: dette understreger bestemt det faktum, at rør deler ligheder.
Kommentarer
- Måske også nævne det rør forud for stikkontakter, men når stikkontaktinterfacet blev føjet til Unix, gav det meget mening t o genimplementér rør ved hjælp af lokale stikkontakter.
- @ tripleee: At ‘ er et fantastisk historisk punkt. Vil du give en reference?
- Hurtig googling dukker op side 40 i Design og implementering af FreeBSD-operativsystemet ; teksten nævner denne ændring i 4.2BSD, men tydeliggør også, at det ikke længere er, hvordan det ‘ er gjort af ydeevneårsager.
- Fremragende, jeg ‘ Jeg tilføjer dette til mit svar.
- Det bedste techno-svar i alle
Svar
Hvad er det nu?
Et stik eller “stik” kan være flere ting:
Først og fremmest er det en tanke model og en applikationsprogrammeringsgrænseflade (API) . Det betyder, at du har et sæt regler, du skal følge, og et sæt funktioner, som du kan bruge til at skrive programmer, der gør noget, i henhold til en nøjagtigt specificeret kontrakt. I dette særlige tilfælde betyder noget at udveksle data med et andet program.
Sockets API abstrakte bredt detaljerne i “kommunikation” generelt. Det indkapsler, hvem du snakker med, og hvordan, gennem en (næsten) ensartet og identisk cookie-cutter-form.
Du kan oprette stikkontakter i forskellige “domæner” (som f.eks.et “unix-stik” eller et “internet-stik” og af forskellige typer kommunikation (f.eks. et “datagram” -stik eller et “stream” -stik) og tale med forskellige modtagere, og alt fungerer nøjagtigt det samme (godt, 99%, der er tydeligvis små forskelle, som du bliver nødt til at tage højde for.
Du behøver ikke at vide (og du vil ikke engang vide det!) om du taler til et andet program på den samme computer eller på en anden computer, eller om der er IPv4- eller IPv6-netværk mellem disse computere eller måske en anden protokol, som du aldrig har hørt om.
socket
er også navnet på biblioteksfunktionen (eller syscall), der opretter “soklen “, som er en særlig slags fil (alt i Unix er en fil).
Hvordan sammenlignes det med …
stikkontakter falder i samme kategori som rør og navn rør
Et rør er et middel til o ne måde kommunikation mellem en læser og en forfatter (begge programmer) på den samme computer. Det simulerer en strøm af data (ligesom f.eks. TCP).
Det vil sige, at der ikke findes individuelle “meddelelser” eller “datablokke” fra rørets synspunkt. Du kan kopiere en hvilken som helst datamængde i “den ene ende”, og en anden kan læse en hvilken som helst datamængde (ikke nødvendigvis den samme og ikke nødvendigvis på én gang) i den “anden ende” i samme byte rækkefølge, som du “har skubbet den ind .
Et navngivet rør er, ja, simpelthen et rør som ejer et navn i filsystemet . Det vil sige, det er noget, der ser ud og opfører sig ligesom en fil, det vises i bibliotekslisten, og du kan åbne det, skrive til det osv. Osv. Bemærk, at du også kan oprette sokkel-specialfiler (det vil være en navngivet stikkontakt).
En stikkontakt er derimod et middel til tovejs (” duplex “) kommunikation, det betyder, at du kan skrive til og læse fra den samme stikkontakt, og at du ikke har brug for to separate stikkontakter til en tovejskommunikation.
En stikkontakt kan også fungere som en strøm (identisk med et rør ), eller det kan sende diskrete, upålidelige meddelelser, eller det kan sende diskrete, bestilte meddelelser (de to første fungerer på ethvert domæne, den sidste kun på “unix-domæne”). Det kan sende meddelelser (eller simulere en stream) til nogen på en helt anden computer. En stikkontakt kan endda gøre en form for en-til-mange-kommunikation (multicast) under visse forhold.
Med det i tankerne er det klart, at stikkontakter gør noget meget mere kompliceret og generelt har mere overhead end rør (som stort set ikke er mere end en simpel memcpy
til og fra en buffer!), men hvis du opretter lokale stikkontakter (dvs. på den samme computer), anvender operativsystemet normalt en stærkt optimeret hurtig sti, så der er virkelig ikke meget forskel.
kommunikation mellem processer undertiden nævnt med hensyn til netværk
Ja, stikkontakter er en mulig måde til kommunikation mellem processer (delt hukommelse og rør er eksempler på alternativer). Alt på samme tid bruges de til “netværk”, som forklaret ovenfor.
Svar
En stikkontakt en abstraktion . Det giver en grænseflade til applikationer til at udnytte en systemressource (i dette tilfælde netværksforbindelsen) på en måde, der gør det muligt for operativsystemet at mediere og organisere brugen af en begrænset ressource af et hvilket som helst antal applikationer.
Hvis de data, der sendes gennem stikkontakten, kunne betragtes som postkonvolutter, ville stikkontakten være din postkasse. Du vedhæfter en postkasse (stikkontakt) til dit hus (program) og lægger din udgående post (data) i den. På et planlagt tidspunkt kommer mailmand (operativsystem) med og henter din udgående mail og afleverer enhver indgående mail i den samme postkasse. Din udgående post overføres på dine vegne til modtageren via postmandens lastbil (netværksforbindelse) sammen med alle dine nabos mail. Dette giver dig mulighed for at korrespondere med folk langt væk uden behov for omkostninger, tid, vanskeligheder osv. Ved at aflevere brevet selv.
Hvad angår hvorfor de “kaldes” stikkontakter “, er forestillingen om, at opfinderne får det til at kalde det, hvad de vil, spiller sandsynligvis en stor rolle der. Skønt det efter min mening ikke er et dårligt navn 🙂
Svar
For udp eller tcp over IP,
En sokkeladresse er kombinationen af en IP-adresse og et portnummer.
En IP-adresse er adressen på en maskine på internettet f.eks unix.stackexchange.com has address 198.252.206.140
Dog skal hver maskine kunne levere mere end én service, så de fleste maskiner leverer http (websider) på port 80 og ssh på port 22 og osv.
Så unix.stackexchange.com:80
port 80
af unix.stackexchange.com
(en stikkontakt) er adgangspunktet for dette websted.
Der er dog andre typer sokler, se kommentarer nedenfor.
Kommentarer
- tcp / ip er kun en slags stikkontakt. Der er andre, der ikke har noget at gøre med tcp / ip.
- hvor mange forskellige slags stikkontakter er der?
- @AbdulAlHazred, jeg kender til fire almindelige typer, der bruges med ip-netværk, det samme med ip6, to med unix og to med IPX. Jeg har ikke kigget på ax25, pengeautomat eller appletalk. Der er andre protokoller, der understøttes på linux, og der er protokoller, som linux ikke understøtter. I de fleste tilfælde har hver protokol stream (tcp) og datagram (udp) sockets. Rå stikkontakter er også almindelige, og imcp kan også have en stikkontaktgrænseflade.
- Dette punkt er, at svaret er ufuldstændigt, da det kun dækker en type stikkontakt og vildledende, fordi det repræsenterer stikkontakter generelt som hvis de altid var netværksstik og specifikt IP-stik (
AF_INET
).
Svar
Jeg tror, du spurgte om netværk. Så TCP-tjenester bruger stikkontakter som kommunikationspunkt og består af en IP-adresse, protokol og portnummer.