SOCKS er en netværksprotokol på sessionsniveau af OSI-modellen , som giver dig mulighed for at videresende pakker fra en klient til en server gennem en proxy-server transparent (usynligt for dem) og dermed bruge tjenester bag firewalls (firewalls) .
Den senere version af SOCKS5 antager godkendelse, så kun autoriserede brugere får adgang til serveren.
Klienter bag en firewall , der skal have adgang til eksterne servere, kan i stedet forbindes til en SOCKS proxyserver . En sådan proxyserver administrerer klientens rettigheder til at få adgang til eksterne ressourcer og videregiver klientens anmodning til den eksterne server. SOCKS kan også bruges på den modsatte måde ved at kontrollere eksterne klienters rettigheder til at oprette forbindelse til interne servere bag en firewall .
I modsætning til HTTP -proxyer transmitterer SOCKS alle data fra klienten uden at tilføje noget fra sig selv, det vil sige fra den endelige servers synspunkt er de data, den modtager fra SOCKS-proxyen, identiske med de data, som klienten ville overføre direkte uden fuldmagt. SOCKS er mere generel, den afhænger ikke af specifikke protokoller for applikationslaget (lag 7 af OSI-modellen ) og fungerer på niveau med TCP-forbindelser (lag 4 af OSI-modellen ). På den anden side cacher HTTP - proxyen dataene og kan mere omhyggeligt filtrere indholdet af de transmitterede data.
Protokollen er udviklet af MIPS systemadministrator David Koblas . Efter at MIPS blev en del af Silicon Graphics Corporation i 1992 , holdt Koblas et foredrag om SOCKS på Usenix Security Symposium, og SOCKS blev offentligt tilgængelige. Den fjerde version af protokollen blev udviklet af Ying-Da Lee fra NEC .
SOCKS-servere bruger normalt port 1080 [1] .
SOCKS 4 er designet til at fungere gennem en firewall uden godkendelse til klient-server-applikationer, der kører over TCP -protokollen , såsom Telnet , FTP og populære kommunikationsprotokoller, såsom HTTP , WAIS og Gopher . Grundlæggende kan en SOCKS-server opfattes som en firewall, der understøtter SOCKS-protokollen.
En typisk SOCKS 4-anmodning ser sådan ud:
Klientanmodning til SOCKS Server:
Størrelsen | Beskrivelse |
---|---|
1 byte | SOCKS versionsnummer, 1 byte (skal være 0x04 for denne version) |
1 byte | Kommandokode:
|
2 bytes | Portnummer |
4 bytes | IP-adresse |
n+1 bytes | Bruger ID. Streng med variabel længde afsluttet med en NUL-byte (0x00). Feltet er beregnet til at identificere brugeren (se Ident ) |
Serversvar til SOCKS-klient:
Størrelsen | Beskrivelse |
---|---|
1 byte | NUL byte |
1 byte | Svarkode:
|
2 bytes | Vilkårlige data, bør ignoreres |
4 bytes | Vilkårlige data, bør ignoreres |
SOCKS 5 [2] er en inkompatibel udvidelse til SOCKS 4-protokollen. Den tilføjer understøttelse af UDP , giver generiske stærke autentificeringsskemaer og udvider adresseringsmetoder, tilføjer understøttelse af domænenavne og IPv6 -adresser . Den indledende kommunikationsopsætning består nu af følgende:
Godkendelsesmetoder er nummereret som følger:
0x00 | Der kræves ingen godkendelse |
0x01 | GSSAPI |
0x02 | RFC 1929 brugernavn/adgangskode |
0x03-0x7F | Reserveret af IANA |
---|---|
0x03 | KAP |
0x04 | Ikke besat |
0x05 | Udfordring-svar (godkendelse) |
0x06 | SSL |
0x07 | NDS-godkendelse |
0x08 | Multi-faktor autentificeringsramme |
0x09 | JSON-blok af parametre |
0x0A–0x7F | Ikke besat |
0x80-0xFE | Forbeholdt privat brug metoder |
Indledende hilsen fra klienten:
Størrelsen | Beskrivelse |
---|---|
1 byte | SOCKS versionsnummer (skal være 0x05 for denne version) |
1 byte | Antal understøttede godkendelsesmetoder |
n bytes | Godkendelsesmetodenumre, variabel længde, 1 byte for hver understøttet metode |
Serveren rapporterer sit valg:
Størrelsen | Beskrivelse |
---|---|
1 byte | SOCKS versionsnummer (skal være 0x05 for denne version) |
1 byte | Valgt godkendelsesmetode eller 0xFF, hvis der ikke blev tilbudt en acceptabel metode |
Efterfølgende identifikation afhænger af den valgte metode.
Kundeanmodning:
Størrelsen | Beskrivelse |
---|---|
1 byte | SOCKS versionsnummer (skal være 0x05 for denne version) |
1 byte | Kommandokode:
|
1 byte | Reserveret byte, skal være 0x00 |
1 byte | Adressetype:
|
Afhænger af typen af adresse | Adressetildeling:
|
2 bytes | Portnummer, i rækkefølge fra høj til lav ( big-endian ) |
Serversvar:
Størrelsen | Beskrivelse |
---|---|
1 byte | SOCKS versionsnummer (0x05 for denne version) |
1 byte | Svarkode:
|
1 byte | Byte reserveret, skal være 0x00 |
1 byte | Opfølgningsadressetype:
|
Afhænger af typen af adresse | Adressetildeling:
|
2 bytes | Portnummer, i rækkefølge fra høj til lav ( big-endian ) |