CALCETINE
Acest articol sau secțiune despre subiectul telematic nu citează sursele necesare sau cei prezenți sunt insuficienți . |
Un server SOCKS este un anumit tip de proxy care permite conexiuni TCP directe (și, din versiunea 5, pentru a transporta trafic UDP , precum și TCP ) între computere pe două rețele IP diferite în cazurile în care o rutare directă nu este disponibilă. Este scurt pentru „SOCKETS”.
Punctele forte ale protocolului SOCKS sunt simplitatea extremă a implementării (atât pe partea clientului, cât și pe partea serverului ) și independența completă față de protocolul care trebuie transmis prin intermediul acestuia.
Din punct de vedere istoric, SOCKS-urile au fost utilizate ca punct de contact între două rețele LAN sau între o rețea LAN și o rețea WAN (cum ar fi Internetul ). Recent, este mai frecvent întâlnirea rețelelor conectate direct la Internet sau conectate printr-un proxy HTTP .
Versiuni
În prezent, există trei versiuni ale protocolului SOCKS:
- SOCKS 4, definit de NEC în documentul "SOCKS: Un protocol pentru proxy TCP pe firewall"
- Șosete 4a , definite de NEC în documentul „SOCKS 4A: O extensie simplă la protocolul SOCKS 4”
- SOCKS 5, definit de IETF în RFC 1928
Logica de lucru
Logica de operare a unui server SOCKS este similară cu cea a unui proxy:
- Clientul se conectează la serverul SOCKS în locul serverului de destinație și, după o fază de strângere de mână în care se negociază versiunea protocolului și posibila criptare, trimite o cerere în care specifică unii parametri, inclusiv adresa IP și portul de destinație;
- dacă din orice motiv solicitarea nu este acceptată (lipsa autorizației, serviciul nu este disponibil, parametrii greșiți etc.) se trimite clientului un răspuns negativ și conexiunea este întreruptă;
- dacă cererea este acceptată, serverul SOCKS încearcă să stabilească o conexiune cu serverul de destinație;
- dacă conexiunea cu serverul nu poate fi stabilită, un răspuns negativ este trimis clientului și conexiunea este întreruptă;
- dacă conexiunea cu serverul este stabilită cu succes, serverul SOCKS începe să transfere date bidirecțional între client și server; din acest moment, serverul SOCKS ignoră complet formatul și protocolul utilizat pentru transferul de date;
- serviciul se încheie atunci când conexiunea este închisă fie de server, fie de client.
Protocolul v4 / 4a
Cerere
+ ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + .... + ---- + | VN | CD | DSTPORT | DSTIP | USERID | NULL | + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + .... + ---- + octeți: 1 1 2 4 variabilă 1
- VN: numărul versiunii. Trebuie să fie 0x04
- CD: Operațiune. 0x01 pentru CONNECT, 0x02 pentru BIND
- DSTPORT: port TCP al serverului de destinație în format de comandă de octeți de rețea
- DSTIP: adresa IP a serverului de destinație în format de comandă de octeți de rețea
- USERID: Șir care conține nume de utilizator, care nu este terminat cu 0x00, de dimensiuni arbitrare
- NUL: 0x00
Răspuns
+ ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + | VN | CD | DSTPORT | DSTIP | + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + octeți: 1 1 2 4
- VN: numărul versiunii răspunsului. Ar trebui să fie 0x00
- CD: Cod de răspuns. Poate lua următoarele valori:
- 0x5A (90 dec): cerere acceptată
- 0x5B (91 dec): cererea refuzată sau eșuată
- 0x5C (92 dec): Cerere respinsă deoarece serverul SOCKS nu s-a putut conecta la serverul de identificare de pe client
- 0x5D (93 dec): Cererea respinsă deoarece serverul de identificare și clientul au raportat diferite USERID-uri
- DSTPORT: ignorat pentru CONNECT
- DSTIP: ignorat pentru CONNECT