SOCKS är ett nätverksprotokoll på sessionsnivå av OSI-modellen , som låter dig vidarebefordra paket från en klient till en server genom en proxyserver på ett transparent sätt (osynligt för dem) och därmed använda tjänster bakom brandväggar (brandväggar) .
Den senare versionen av SOCKS5 förutsätter autentisering så att endast behöriga användare får åtkomst till servern.
Klienter bakom en brandvägg som behöver komma åt externa servrar kan istället kopplas till en SOCKS proxyserver . En sådan proxyserver hanterar klientens rättigheter att komma åt externa resurser och skickar klientens begäran till den externa servern. SOCKS kan också användas på motsatt sätt och kontrollerar externa klienters rättigheter att ansluta till interna servrar bakom en brandvägg .
Till skillnad från HTTP -proxies överför SOCKS all data från klienten utan att lägga till något från sig själv, det vill säga ur den slutliga serverns synvinkel är data som tas emot av den från SOCKS-proxyn identisk med den data som klienten skulle överföra direkt , utan fullmakt. SOCKS är mer allmänt, det beror inte på specifika protokoll för applikationslagret (lager 7 av OSI-modellen ) och fungerar på nivån för TCP-anslutningar (lager 4 av OSI-modellen ). Å andra sidan cachar HTTP - proxyn data och kan mer noggrant filtrera innehållet i den överförda datan.
Protokollet har utvecklats av MIPS systemadministratör David Koblas . Efter att MIPS blev en del av Silicon Graphics Corporation 1992 höll Koblas ett föredrag om SOCKS på Usenix Security Symposium och SOCKS blev allmänt tillgängliga. Den fjärde versionen av protokollet utvecklades av Ying-Da Lee från NEC .
SOCKS-servrar använder vanligtvis port 1080 [1] .
SOCKS 4 är utformad för att fungera genom en brandvägg utan autentisering för klient-serverapplikationer som körs över TCP -protokollet , som Telnet , FTP och populära kommunikationsprotokoll som HTTP , WAIS och Gopher . I huvudsak kan en SOCKS-server ses som en brandvägg som stöder SOCKS-protokollet.
En typisk SOCKS 4-förfrågan ser ut så här:
Klientbegäran till SOCKS Server:
Storleken | Beskrivning |
---|---|
1 byte | SOCKS versionsnummer, 1 byte (bör vara 0x04 för denna version) |
1 byte | Kommandokod:
|
2 byte | Portnummer |
4 bytes | IP-adress |
n+1 byte | Användar ID. Sträng med variabel längd avslutas med en NUL-byte (0x00). Fältet är avsett att identifiera användaren (se Ident ) |
Serversvar på SOCKS-klienten:
Storleken | Beskrivning |
---|---|
1 byte | NUL-byte |
1 byte | Svarskod:
|
2 byte | Godtyckliga data, bör ignoreras |
4 bytes | Godtyckliga data, bör ignoreras |
SOCKS 5 [2] är ett inkompatibelt tillägg till SOCKS 4-protokollet. Det lägger till stöd för UDP , ger generiska starka autentiseringsscheman och utökar adresseringsmetoder, lägger till stöd för domännamn och IPv6 -adresser . Den initiala kommunikationskonfigurationen består nu av följande:
Autentiseringsmetoderna är numrerade enligt följande:
0x00 | Ingen autentisering krävs |
0x01 | GSSAPI |
0x02 | RFC 1929 användarnamn/lösenord |
0x03-0x7F | Reserverad av IANA |
---|---|
0x03 | KILLE |
0x04 | Inte upptagen |
0x05 | Utmaningssvar (autentisering) |
0x06 | SSL |
0x07 | NDS-autentisering |
0x08 | Ramverk för multifaktorautentisering |
0x09 | JSON-block med parametrar |
0x0A–0x7F | Inte upptagen |
0x80-0xFE | Reserverad för privata användningsmetoder |
Inledande hälsning från kunden:
Storleken | Beskrivning |
---|---|
1 byte | SOCKS versionsnummer (bör vara 0x05 för denna version) |
1 byte | Antal autentiseringsmetoder som stöds |
n byte | Autentiseringsmetodnummer, variabel längd, 1 byte för varje metod som stöds |
Servern rapporterar sitt val:
Storleken | Beskrivning |
---|---|
1 byte | SOCKS versionsnummer (bör vara 0x05 för denna version) |
1 byte | Vald autentiseringsmetod, eller 0xFF om ingen acceptabel metod erbjöds |
Efterföljande identifiering beror på den valda metoden.
Kundförfrågan:
Storleken | Beskrivning |
---|---|
1 byte | SOCKS versionsnummer (bör vara 0x05 för denna version) |
1 byte | Kommandokod:
|
1 byte | Reserverad byte, måste vara 0x00 |
1 byte | Adresstyp:
|
Beror på typ av adress | Adresstilldelning:
|
2 byte | Portnummer, i ordning från högt till lågt ( big-endian ) |
Serversvar:
Storleken | Beskrivning |
---|---|
1 byte | SOCKS versionsnummer (0x05 för denna version) |
1 byte | Svarskod:
|
1 byte | Byte reserverad, måste vara 0x00 |
1 byte | Typ av uppföljningsadress:
|
Beror på typ av adress | Adresstilldelning:
|
2 byte | Portnummer, i ordning från högt till lågt ( big-endian ) |