A SOCKS az OSI modell munkamenet-szintű hálózati protokollja , amely lehetővé teszi a csomagok továbbítását a klienstől a kiszolgálóhoz egy proxyszerveren keresztül transzparens módon (láthatatlanul számukra), és így a tűzfalak (tűzfalak) mögötti szolgáltatásokat használja .
A SOCKS5 újabb verziója hitelesítést feltételez, így csak a jogosult felhasználók férhetnek hozzá a szerverhez.
A tűzfal mögötti ügyfelek , amelyeknek külső szerverekhez kell hozzáférniük, ehelyett SOCKS proxyszerverhez csatlakozhatnak . Egy ilyen proxyszerver kezeli a kliens külső erőforrásokhoz való hozzáférési jogait, és továbbítja a kliens kérését a külső szervernek. A SOCKS fordítva is használható, szabályozva a külső kliensek azon jogait, hogy tűzfal mögött kapcsolódjanak belső szerverekhez .
A HTTP proxytól eltérően a SOCKS minden adatot továbbít a klienstől anélkül, hogy bármit hozzáadna magától, vagyis a végső szerver szempontjából a SOCKS proxytól kapott adatok megegyeznek azokkal az adatokkal, amelyeket a kliens közvetlenül továbbítana. , proxy nélkül. A SOCKS általánosabb, nem függ az alkalmazási réteg konkrét protokolljaitól ( az OSI modell 7. rétege ), és a TCP kapcsolatok szintjén működik ( az OSI modell 4. rétege ). Másrészt a HTTP - proxy gyorsítótárazza az adatokat, és alaposabban tudja szűrni a továbbított adatok tartalmát.
A protokollt David Koblas MIPS rendszergazda fejlesztette ki . Miután 1992-ben a MIPS a Silicon Graphics Corporation részévé vált , Koblas előadást tartott a SOCKS-ról a Usenix Security Symposiumon, és a SOCKS nyilvánosan elérhetővé vált. A protokoll negyedik verzióját Ying-Da Lee fejlesztette ki a NEC -től .
A SOCKS szerverek általában a 1080-as portot használják [1] .
A SOCKS 4-et úgy tervezték, hogy hitelesítés nélkül működjön tűzfalon keresztül a TCP protokollon keresztül futó kliens-szerver alkalmazásoknál , mint például a Telnet , az FTP és az olyan népszerű kommunikációs protokollok, mint a HTTP , WAIS és Gopher . Lényegében a SOCKS kiszolgálót tűzfalnak tekinthetjük, amely támogatja a SOCKS protokollt.
Egy tipikus SOCKS 4 kérés így néz ki:
Ügyfél kérése a SOCKS szerverhez:
A méret | Leírás |
---|---|
1 bájt | SOCKS verziószám, 1 bájt (0x04-nek kell lennie ennél a verziónál) |
1 bájt | Parancs kód:
|
2 bájt | Port száma |
4 bájt | IP-cím |
n+1 bájt | Felhasználói azonosító. Változó hosszúságú karakterlánc NUL bájttal (0x00) végződik. A mező célja a felhasználó azonosítása (lásd: Azonosító ) |
Szerver válasza a SOCKS kliensnek:
A méret | Leírás |
---|---|
1 bájt | NUL bájt |
1 bájt | Válasz kód:
|
2 bájt | Önkényes adatok, figyelmen kívül kell hagyni |
4 bájt | Önkényes adatok, figyelmen kívül kell hagyni |
A SOCKS 5 [2] a SOCKS 4 protokoll inkompatibilis kiterjesztése, amely támogatja az UDP -t , általános erős hitelesítési sémákat biztosít és kiterjeszti a címzési módszereket, valamint támogatja a tartományneveket és az IPv6 -címeket . A kezdeti kommunikációs beállítások most a következőkből állnak:
A hitelesítési módszerek az alábbiak szerint vannak számozva:
0x00 | Nincs szükség hitelesítésre |
0x01 | GSSAPI |
0x02 | RFC 1929 felhasználónév/jelszó |
0x03-0x7F | Az IANA lefoglalta |
---|---|
0x03 | PASAS |
0x04 | Nem foglalt |
0x05 | Kihívás-válasz (hitelesítés) |
0x06 | SSL |
0x07 | NDS hitelesítés |
0x08 | Többtényezős hitelesítési keretrendszer |
0x09 | JSON paraméterblokk |
0x0A–0x7F | Nem foglalt |
0x80-0xFE | Magánhasználati módokra fenntartva |
Az ügyfél első üdvözlése:
A méret | Leírás |
---|---|
1 bájt | SOCKS verziószám (ennél a verziónál 0x05-nek kell lennie) |
1 bájt | A támogatott hitelesítési módszerek száma |
n bájt | Hitelesítési módszerek számai, változó hosszúságú, 1 bájt minden támogatott metódushoz |
A szerver jelenti a választását:
A méret | Leírás |
---|---|
1 bájt | SOCKS verziószám (ennél a verziónál 0x05-nek kell lennie) |
1 bájt | Kiválasztott hitelesítési módszer, vagy 0xFF, ha nem kínáltak elfogadható módszert |
A későbbi azonosítás a választott módszertől függ.
Ügyfél kérése:
A méret | Leírás |
---|---|
1 bájt | SOCKS verziószám (ennél a verziónál 0x05-nek kell lennie) |
1 bájt | Parancs kód:
|
1 bájt | Lefoglalt bájt, 0x00-nak kell lennie |
1 bájt | Cím típusa:
|
A cím típusától függ | Cím hozzárendelés:
|
2 bájt | Portszám, sorrendben a magastól az alacsonyig ( big-endian ) |
Szerver válasz:
A méret | Leírás |
---|---|
1 bájt | SOCKS verziószám (0x05 ennél a verziónál) |
1 bájt | Válasz kód:
|
1 bájt | A bájt lefoglalva, 0x00-nak kell lennie |
1 bájt | Nyomon követési cím típusa:
|
A cím típusától függ | Cím hozzárendelés:
|
2 bájt | Portszám, sorrendben a magastól az alacsonyig ( big-endian ) |