Mi az a foglalat?

Meg tudná valaki magyarázni nekem, mi az a socket? Számos rövidítéssel látom az SSL stb. Összefüggésében.

Miért hívják socketnek? Pusztán azért, mert milyen nevet találtak ki? Vagy ez volt az első név, amit kitaláltak?

Megjegyzések

  • Idéző ‘ szavakkal: a foglalat telefon. ‘ az a dolog, amit a kezedben tartasz, és így beszélgethetsz egy másik telefonnal. A hasonlat kissé lebomlik: A legtöbb telefonbeszélgetés peer-to-peer. A socket kapcsolatok kliens és szerver között vannak. Az ügyfél (például, de nem kizárólag, a munkaállomás szoftverek, például a böngészők) csatlakozik egy kiszolgálóhoz (például webszerverhez, fájlszerverhez, hitelesítési szerverhez vagy máshoz). Az analógia további hibája: amikor bezár egy aljzatkapcsolatot, a socket megsemmisül, és új kapcsolat létrehozása előtt létre kell hoznia egy új aljzatot.
  • Ez ‘ s nem is olyan rossz egy hasonlatra. A szerver csak egy hívásközpont, és egyszerre sok száz aktív hívása lehet.

Válasz

A socket csak logikus végpont a kommunikációhoz. A szállítási rétegben léteznek. Küldhet és fogadhat dolgokat egy foglalaton, köthet és meghallgathat egy foglalatot. A socket egy protokollra, gépre és portra jellemző, és a csomag fejlécében van megcímezve.

Beej a hálózathoz vezet. A programozás és a Folyamatok közötti kommunikáció egyaránt jó információkkal rendelkezik a socketek használatáról, sőt válaszoljon erre a kérdésre .

Válasz

A socket a legegyszerűbben kifejezve egy álfájl, amely a hálózati csatlakozás. Miután létrehozott egy foglalatot (a megfelelő primitívek és a megfelelő paraméterek felhasználásával a másik gazdagép azonosításához), a foglalatba írt levelek hálózati csomagokká alakulnak, amelyek kiküldésre kerülnek, és a hálózattól kapott adatok olvashatók a socketből.

A socketek egyrészről nagyon hasonlítanak a csövekre: ugyanúgy néznek ki, mint a fájlok az őket használó programokban, de nem eredményeznek olvasást vagy írást lemezre, inkább lehetővé teszik a kommunikációt egy másik programmal (csövek esetén helyi, és po konnektorok esetén távoli). Emellett kétirányú kommunikációt is kínálnak, amint Ön említi (hasonlóan ahhoz, ahogyan egy megfelelően csatlakoztatott cső párja képes lenne).

Végül gyakran előfordul, hogy egyetlen gépen futó programok szabványos hálózati protokollok, például TCP használatával kommunikálnak ; pazarló lenne végigmenni a hálózati hardverig (ha van ilyen), az ellenőrző összegek kiszámításához stb., csak visszatérni ugyanahhoz a gazdagéphez: ezekbe jönnek be a Unix domain socketek. Ezek hasonlítanak a szokásos socketekre , kivéve, hogy a távoli folyamatok helyett ugyanazon a gazdagépen kötik össze a folyamatokat, és egyáltalán nem próbálnak hálózati erőforrásokat használni. Ily módon a folyamatok közötti kommunikáció közege.

Mint a tripleee említette , a BSD története során a csöveket a socket-eknél korábban vezették be, és ha már léteztek, akkor azokat socket-ekkel újították fel. Ugyanez a hivatkozás, A FreeBSD operációs rendszer megtervezése és megvalósítása megemlíti, hogy a csövek ezután teljesítmény okokból visszatértek egy nem socket megvalósításra: ez minden bizonnyal aláhúzza azt a tényt, hogy a csövek hasonlóságot mutatnak.

Megjegyzések

  • Talán megemlítik azt is csövek megelõzték a foglalatokat, de miután a socket interfészt hozzáadták a Unixhoz, sok értelme volt t o Helyezze vissza a csöveket helyi aljzatok segítségével.
  • @tripleee: Ez ‘ egy nagy történelmi pont. Szeretne referenciát adni?
  • A gyors googlelés 40. oldal A FreeBSD operációs rendszer megtervezése és megvalósítása ; a szöveg megemlíti ezt a változást a 4.2BSD-ben, de tisztázza azt is, hogy teljesítmény-okokból ‘ ez már nem így történik.
  • Kiváló, I ‘ ezt hozzáadom a válaszomhoz.
  • A legjobb techno válasz az összes

Válasz

Most mi ez?

A socket vagy a socket többféle dolog lehet:

Először is ez egy gondolat modell és egy alkalmazásprogramozási felület (API) . Ez azt jelenti, hogy van egy sor szabály, amelyet be kell tartania, és egy sor olyan funkció, amellyel pontosan megírt szerződés szerint írhat valamit programokat. Ebben a konkrét esetben a valami azt jelenti, hogy adatokat cserélnek egy másik programmal.

A sockets API széles körben összefoglalja a “kommunikáció” részleteit általában. Összefoglalja, kivel és hogyan beszél, mindezt egy (majdnem) következetes és azonos cookie-cutter formában.
Különböző “domainekben” hozhat létre aljzatokat (például”unix socket” vagy “internet socket”) és különféle típusú kommunikációval (pl. “datagram” vagy “stream” socket) és különböző címzettekkel beszélgetnek, és minden pontosan ugyanúgy működik (nos, 99%, nyilvánvalóan vannak olyan percbeli különbségek, amelyekkel számolnia kell majd.

Nem kell tudnia (és nem is akarja tudni!), hogy ugyanazon a számítógépen beszél-e másik programmal, vagy másik számítógépen, vagy van-e IPv4 vagy IPv6 hálózat ezek között a számítógépek között, esetleg más protokoll, amelyről még soha nem hallott.

socket a könyvtár függvény (vagy syscall) neve is, amely létrehozza a “a socket t”, amely egy speciális fájltípus (minden a Unixban egy fájl).

Hogyan viszonyul a …

aljzatok ugyanabba a kategóriába esnek, mint a csövek és csövek neve

A cső a o eszköze ne módon kommunikáció olvasó és író között (mindkettő program) ugyanazon a számítógépen. Szimulál egy adatfolyamot (csakúgy, mint pl. A TCP).
Vagyis a cső szempontjából nincsenek egyedi “üzenetek” vagy “adatblokkok”. Másolhat tetszőleges mennyiségű adat az “egyik végébe”, és valaki más bármilyen mennyiségű adatot elolvashat (nem feltétlenül ugyanazokat, és nem feltétlenül egy menetben) a “másik végén”, ugyanabban a bájt sorrendben, ahogyan Ön beírta .

Egy névvel ellátott cső egyszerűen olyan cső, amely a fájlrendszerben rendelkezik névvel . Vagyis valami, ami úgy néz ki és úgy viselkedik, mint egy fájl, megjelenik a könyvtárlistában, és megnyithatja, írhatja, stb. Ne feledje, hogy létrehozhat socket speciális fájlokat is (ezek megnevezettek lennének socket).

A socket viszont a kétirányú (” duplex “) kommunikáció, ez azt jelenti, hogy ugyanahhoz a foglalathoz írhat és olvashat, és a kétirányú kommunikációhoz nincs szüksége két külön aljzatra.
Ezenkívül egy aljzat folyamként is működhet (azonos a csővel) ), vagy diszkrét, megbízhatatlan üzeneteket küldhet, vagy diszkrét, rendezett üzeneteket küldhet (az első kettő bármelyik tartományon működik, az utolsó csak az “unix tartományon”). Küldhet üzeneteket (vagy szimulálhat egy adatfolyamot) valakinek egy teljesen más számítógépen. A socket bizonyos feltételek mellett akár egy-a-sokba kommunikációt (multicast) is képes megvalósítani.

Ezt szem előtt tartva egyértelmű, hogy a socketek sokkal bonyolultabb és általában több rezsi van, mint a csövek (amelyek alapvetően nem többek, mint egy egyszerű memcpy pufferbe és onnan!), de ha helyi socketeket hozunk létre (azaz ugyanazon a számítógépen), az operációs rendszer általában erősen optimalizált gyors elérési utat alkalmaz, így valójában nincs sok különbség.

folyamatok közötti kommunikáció néha említik a hálózatok vonatkozásában

Igen, a foglalatok a folyamatok közötti kommunikáció egyik lehetséges módja (a megosztott memória és a csövek az alternatívák példái). Ugyanakkor a “hálózatépítéshez” használják őket, a fentiek szerint.

Válasz

Egy foglalat egy absztrakció . Felületet biztosít az alkalmazások számára a rendszererőforrás (jelen esetben a hálózati kapcsolat) felhasználására oly módon, hogy az operációs rendszer bármennyi alkalmazás által közvetíthesse és megszervezze a korlátozott erőforrások használatát.

Ha a foglalaton keresztül küldött adatokat levélborítékként lehetne elképzelni, akkor a foglalat az Ön postaládája lesz. Csatol egy postafiókot (foglalatot) a házához (program), és a kimenő leveleket (adatokat) beleteszi. Ütemezett időpontban jön a postás (operációs rendszer), felveszi a kimenő leveleket, és ugyanabban a postafiókban leadja a bejövő leveleket. A kimenő leveleket az Ön nevében továbbítjuk a címzettnek a postás teherautóján (hálózati kapcsolat), a szomszédok összes levelével együtt. Ez lehetővé teszi, hogy távoli emberekkel folytasson levelezést anélkül, hogy a levél kézbesítésének költségeire, idejére, nehézségére stb. Lenne szükség.

Amiért “jól hívják” aljzatoknak “, az a felfogás, hogy a feltalálók azt hívják, amit csak akarnak, valószínűleg nagy szerepet játszik ott. Bár ez nem egy rossz név szerintem 🙂

Válasz

IP-n keresztüli udp vagy tcp esetén

A socket cím az IP-cím és a portszám kombinációja.

Az IP-cím a egy gép az interneten, pl unix.stackexchange.com has address 198.252.206.140

Mindazonáltal minden gépnek képesnek kell lennie arra, hogy egynél több szolgáltatást nyújtson, így a legtöbb gép http-t (weboldalakat) biztosít a 80-as porton, és ssh-t a porton 22. és stb.

Tehát unix.stackexchange.com div unix.stackexchange.com:80 port 80 > (egy socket) a webhely hozzáférési pontja.

Azonban vannak más típusú foglalatok is, lásd az alábbi megjegyzéseket.

Megjegyzések

  • a tcp / ip csak egyfajta foglalat. Vannak mások, amelyeknek semmi köze a tcp / ip-hoz.
  • hány különböző típusú aljzat van?
  • @AbdulAlHazred, ismerek négy gyakori típust, amelyet az ip-hálózatoknál használnak, ugyanaz az ip6-tal, kettő az unix-szel és kettő az IPX-kel. Nem néztem ax25-t, atm-et vagy appletalkot. Vannak más protokollok, amelyeket a linux támogat, és vannak olyan protokollok, amelyeket a linux nem támogat. A legtöbb esetben mindegyik protokoll rendelkezik stream (tcp) és datagram (udp) foglalattal. A nyers socketek szintén gyakoriak, és az imcp is rendelkezhet socket interfésszel.
  • A lényeg, hogy ez a válasz hiányos, mivel csak egy típusú socketre terjed ki, és félrevezető, mivel általában a socketeket képviseli, mint ha mindig hálózati csatlakozók voltak, és konkrétan IP (AF_INET) aljzatok voltak.

Válasz

Úgy gondolom, hogy a hálózatról kérdezett. Tehát a TCP-szolgáltatások a foglalatokat használják a kommunikációhoz, és IP-címből, protokollból és portszámból állnak.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük