Kan noen forklare meg hva en stikkontakt er? Jeg ser det i mange akronymer i sammenheng med SSL osv.
Også, hvorfor kalles det en stikkontakt? Er det utelukkende fordi det var hvilket navn de oppfant? Eller var det fornavnet de kom på?
Kommentarer
- I lekmann ‘ s termer: en stikkontakt er en telefon. Det ‘ er tingen du holder i hånden din som lar deg snakke med en annen telefon. Analogien brytes litt sammen: De fleste telefonsamtaler er peer-to-peer. Socket-tilkoblinger er klient til server. Klienten (som, men ikke begrenset til, arbeidsstasjonsprogramvare som nettlesere) kobler seg til en server (for eksempel en webserver, filserver, godkjenningsserver eller annet). En annen feil i analogien: når du lukker en kontakttilkobling, blir kontakten ødelagt, og du må opprette en ny kontakt før du kan opprette en ny forbindelse.
- Den ‘ er ikke så ille for en analogi. En server er bare et call-center og kan ha mange hundre aktive samtaler samtidig.
Svar
En stikkontakt er bare et logisk sluttpunkt for kommunikasjon. De finnes på transportlaget. Du kan sende og motta ting på en stikkontakt, du kan binde og lytte til en stikkontakt. En stikkontakt er spesifikk for en protokoll, maskin og port, og adresseres som sådan i overskriften på en pakke.
Beejs guider til Nettverk Programmering og Kommunikasjon mellom prosesser har begge god informasjon om hvordan du bruker stikkontakter, og til og med svar på dette nøyaktige spørsmålet .
Svar
I de enkleste ordene er en stikkontakt en pseudofil som representerer Når en stikkontakt er opprettet (ved å bruke de riktige primitivene, og de riktige parametrene for å identifisere den andre verten), blir skriv til stikkontakten omgjort til nettverkspakker som blir sendt ut, og data mottatt fra nettverket kan leses fra kontakten.
I en henseende ligner kontaktene veldig på rør: de ser ut som filer til programmene som bruker dem, men resulterer ikke i lesing eller skriver til en disk; de tillater heller å kommunisere med et annet program (lokalt når det gjelder rør, og po mulig fjernkontroll når det gjelder stikkontakter). De tilbyr også, som du nevner, toveiskommunikasjon (omtrent som et par riktig tilkoblede rør kan).
Til slutt er det vanlig at programmer på en enkelt maskin kommuniserer ved hjelp av standard nettverksprotokoller, for eksempel TCP ; det ville være bortkastet å gå hele veien til nettverksmaskinvaren (hvis noen!), databehandlingssummer osv. bare for å gå tilbake til samme vert: det er der Unix-domenestikkontakter kommer inn. Det er omtrent som vanlige stikkontakter , bortsett fra at de kobler prosesser på samme vert i stedet for eksterne prosesser, og ikke prøver å bruke noen nettverksressurser i det hele tatt. På denne måten er de et medium for kommunikasjon mellom prosesser.
Som trippel nevnt , i løpet av historien til BSD, ble rør introdusert tidligere enn stikkontakter, og ble reimplementert ved hjelp av stikkontakter når de eksisterte. Den samme referansen, Design og implementering av FreeBSD-operativsystemet , nevner at rør ble deretter tilbakeført til en ikke-stikkontakt implementering av ytelsesgrunner: dette understreker absolutt det faktum at rør deler likheter.
Kommentarer
- Kanskje også nevne at rør forut for stikkontakter, men når stikkontaktgrensesnittet ble lagt til Unix, ga det mye mening t o reimplementere rør ved hjelp av lokale stikkontakter.
- @tripleee: At ‘ er et flott historisk poeng. Vil du gi en referanse?
- Rask googling dukker opp side 40 i Design og implementering av FreeBSD-operativsystemet ; teksten nevner denne endringen i 4.2BSD, men presiserer også at dette ikke lenger er slik det ‘ gjøres av ytelsesgrunner.
- Utmerket, jeg ‘ Jeg legger til dette i svaret mitt.
- Det beste teknosvaret i alle
Svar
Hva er det nå?
En stikkontakt eller «stikkontakt» kan være flere ting:
Først og fremst er det en tanke modell og et applikasjonsprogrammeringsgrensesnitt (API) . Det betyr at du har et sett med regler du må følge og et sett med funksjoner som du kan bruke til å skrive programmer som gjør noe, i henhold til en nøyaktig spesifisert kontrakt. I dette spesielle tilfellet betyr noe å utveksle data med et annet program.
Stikkontaktene API abstrakte bredt detaljene i «kommunikasjon» generelt. Det innkapsler hvem du snakker med og hvordan, gjennom en (nesten) konsistent og identisk cookie-cutter-form.
Du kan opprette stikkontakter i forskjellige «domener» (som f.eks.en «unix-stikkontakt» eller en «internett-stikkontakt») og av forskjellige typer kommunikasjon (f.eks. en «datagram» -stikkontakt eller en «stream» -stikkontakt) og snakk med forskjellige mottakere, og alt fungerer akkurat likt (vel, 99%, det er åpenbart små forskjeller du må gjøre rede for.
Du trenger ikke å vite (og du vil ikke engang vite!) om du snakker med et annet program på samme datamaskin eller på en annen datamaskin, eller om det er IPv4- eller IPv6-nettverk mellom datamaskinene, eller kanskje en annen protokoll som du aldri har hørt om.
socket
er også navnet på biblioteksfunksjonen (eller syscall) som skaper «sokkelen «, som er en spesiell type fil (alt i Unix er en fil).
Hvordan sammenlignes det med …
stikkontakter faller i samme kategori som rør og navn rør
Et rør er et middel til o ne måte kommunikasjon mellom en leser og en forfatter (begge er programmer) på samme datamaskin. Den simulerer en strøm av data (akkurat som f.eks. TCP).
Det vil si at ingen individuelle «meldinger» eller «datablokker» eksisterer fra rørets synspunkt. Du kan kopiere hvilken som helst datamengde i «den ene enden», og noen andre kan lese hvilken som helst datamengde (ikke nødvendigvis den samme, og ikke nødvendigvis på en gang) i «den andre enden» i samme byterekkefølge som du «har presset den inn .
Et navn rør er vel, rett og slett et rør som eier et navn i filsystemet . Det vil si at det er noe som ser ut og oppfører seg akkurat som en fil, det vises i katalogoppføringen og du kan åpne den, skrive til den osv. Merk at du også kan opprette spesielle sokkelfiler (det vil være et navn stikkontakt).
En stikkontakt er derimot et middel til toveis (» duplex «) kommunikasjon, det betyr at du kan skrive til og lese fra samme kontakt, og at du ikke trenger to separate kontakter for en toveiskommunikasjon.
Også, en kontakt kan fungere som en strøm (identisk med et rør ), eller den kan sende diskrete, upålitelige meldinger, eller den kan sende diskrete, bestilte meldinger (de to første fungerer på et hvilket som helst domene, den siste bare på «unix domain»). Det kan sende meldinger (eller simulere en strøm) til noen på en helt annen datamaskin. En stikkontakt kan til og med gjøre en form for en-til-mange-kommunikasjon (multicast) under noen forhold.
Med det i tankene er det klart at stikkontakter gjør noe mye mer komplisert og generelt har mer overhead enn rør (som i utgangspunktet ikke er mer enn en enkel memcpy
til og fra en buffer!), men hvis du oppretter lokale stikkontakter (dvs. på samme datamaskin), bruker operativsystemet vanligvis en sterkt optimalisert rask bane, så det er virkelig ikke så stor forskjell.
kommunikasjon mellom prosesser noen ganger nevnt med hensyn til nettverk
Ja, stikkontakter er en mulig måte for kommunikasjon mellom prosesser (delt minne og rør er eksempler på alternativer). Alt på samme tid blir de brukt til «nettverk», som forklart ovenfor.
Svar
En stikkontakt en abstraksjon . Det gir et grensesnitt for applikasjoner som kan bruke en systemressurs (i dette tilfellet nettverkstilkoblingen) på en måte som gjør at operativsystemet kan formidle og organisere bruken av en begrenset ressurs av et hvilket som helst antall applikasjoner.
Hvis dataene som sendes gjennom kontakten kan betraktes som konvolutter med post, vil kontakten være postboksen din. Du fester en postkasse (stikkontakt) til huset ditt (program) og legger utgående e-post (data) inn i den. På et planlagt tidspunkt kommer postmannen (operativsystemet) med og henter utgående e-post og avleverer innkommende e-post i samme postkasse. Den utgående posten din blir overført på dine vegne til mottakeren gjennom postmannens lastebil (nettverkstilkobling) sammen med alle naboene dine. Dette lar deg korrespondere med folk langt borte uten behov for bekostning, tid, vanskeligheter osv. Ved å levere brevet selv.
Når det gjelder hvorfor de «kalt» stikkontakter «vel, forestillingen om oppfinnerne får kalle det hva de vil, spiller sannsynligvis en stor rolle der. Skjønt, det er ikke et dårlig navn etter min mening 🙂
Svar
For udp eller tcp over IP,
En kontaktadresse er kombinasjonen av en IP-adresse og et portnummer.
En IP-adresse er adressen til en maskin på internett f.eks unix.stackexchange.com has address 198.252.206.140
Imidlertid må hver maskin kunne tilby mer enn én tjeneste, så de fleste maskiner vil gi http (websider) på port 80 og ssh på port 22 og så videre
Så unix.stackexchange.com:80
port 80
av unix.stackexchange.com
(en stikkontakt) er tilgangspunktet til dette nettstedet.
Det finnes imidlertid andre typer stikkontakter, se kommentarene nedenfor.
Kommentarer
- tcp / ip er bare en slags stikkontakt. Det er andre som ikke har noe med tcp / ip å gjøre.
- hvor mange forskjellige typer stikkontakter er det?
- @AbdulAlHazred, jeg vet om fire vanlige typer som brukes med ip-nettverk, det samme med ip6, to med unix og to med IPX. Jeg har ikke sett på ax25, minibank eller appletalk. Det er andre protokoller som støttes på Linux, og det er protokoller som Linux ikke støtter. I de fleste tilfeller har hver protokoll strøm (tcp) og datagram (udp) stikkontakter. Rå stikkontakter er også vanlige, og imcp kan også ha et stikkontaktgrensesnitt.
- Poenget er at dette svaret er ufullstendig ved at det bare dekker en type stikkontakt, og misvisende ved at det representerer stikkontakter generelt som hvis de alltid var nettverkskontakter, og spesielt IP-kontakter (
AF_INET
).
Svar
Jeg tror du spurte om nettverk. Så TCP-tjenester bruker stikkontakter som kommunikasjonspunkt og består av en IP-adresse, protokoll og portnummer.