SOCKS4 neyi çözer?
SOCKS, HTTP gibi belirli bir uygulama protokolüne bağlı değildir: istemci proxy'ye “şu IP ve porta bir TCP bağlantısı aç” der, proxy bağlantıyı açar ve iki yöndeki baytları olduğu gibi aktarır. Bu yüzden web dışındaki TCP tabanlı uygulamalar da SOCKS üzerinden çalışabilir. HTTP proxy ile farkı için HTTP proxy sayfasına bakın.
SOCKS4'ün sınırları net: yalnızca IPv4, yalnızca TCP CONNECT, kullanıcı adı/parola ile kimlik doğrulama yok. Bunların hepsi SOCKS5 ile gelir.
SOCKS4: tek bir istek, tek bir yanıt. Yalnızca IPv4 ve TCP CONNECT; parola ile kimlik doğrulama yoktur.
- 1. İstemci → Proxy: İstemci bağlantı ister
- 2. Proxy → Hedef: Proxy hedefe TCP bağlantısı açar
- 3. Proxy → İstemci: Proxy yanıtlar
- 4. İstemci → Hedef: Veri proxy üzerinden aktarılır
Düz bağlantı
İstemci bağlantı ister
- VN
- 0x04
- CD
- 0x01 (CONNECT)
- DSTPORT
- 2 bayt
- DSTIP
- 4 bayt, IPv4
- USERID
- bayt dizisi + 0x00
SOCKS4a: DSTIP 0.0.0.x (x sıfırdan farklı), ardından ana makine adı + 0x00; adı proxy çözer.
USERID yalnızca bir tanımlayıcıdır, parola değildir. Ad çözümlemesini proxy’ye bırakmak için SOCKS4a kullanılır.
İstek ve yanıt biçimi
| Alan | Uzunluk | Anlam |
|---|---|---|
| VN | 1 bayt | Sürüm: 4 |
| CD | 1 bayt | Komut: 1 = CONNECT |
| DSTPORT | 2 bayt | Hedef port |
| DSTIP | 4 bayt | Hedef IPv4 adresi |
| USERID | değişken | Tanımlayıcı metin; parola değildir |
| NUL | 1 bayt | USERID sonu (0x00) |
Yanıt 8 bayttır: ilk bayt VN=0, ikincisi sonuç kodu, sonra port ve IP (istemci bunları yok sayar). Sonuç kodları şunlardır:
| Kod | Anlam | Pratikte |
|---|---|---|
| 90 | İstek kabul edildi | Tünel açıldı; sonrası ham bayt akışı |
| 91 | İstek reddedildi veya başarısız | Hedefe ulaşılamadı ya da proxy kuralı engelledi |
| 92 | identd erişilemiyor | Proxy istemcinin identd servisine ulaşamadı |
| 93 | identd kullanıcı kimliğiyle uyuşmuyor | USERID, identd’nin döndürdüğüyle eşleşmedi |
SOCKS4a: alan adını proxy çözer
SOCKS4'te istemci hedefin IPv4 adresini bilmek zorundadır; alan adını kendisi çözmelidir. SOCKS4a bunu genişletir: DSTIP alanına 0.0.0.x biçiminde (x sıfırdan farklı) sahte bir adres yazılır ve USERID'nin ardından, ikinci bir NUL ile biten hedef alan adı eklenir. Böylece alan adını proxy çözer.
# SOCKS4: ad istemcide çözülür
curl --socks4 proxy.example.com:1080 http://203.0.113.10/
# SOCKS4a: ad proxy tarafında çözülür
curl --socks4a proxy.example.com:1080 http://example.com/Ne zaman SOCKS4 karşınıza çıkar?
- Eski yazılım, eski ağ cihazları ve ücretsiz listelerdeki bazı kayıtlar SOCKS4 konuşur.
- Kimlik doğrulama gerekmeyen, yalnızca IPv4 hedefe TCP bağlantısı yeten basit senaryolar için çalışır.
- Yeni bir kurulum yapıyorsanız SOCKS5 daha esnektir: kimlik doğrulama, alan adı ve IPv6 desteği sunar.
Sorun giderme
- 1
Yanıt 91 mi?
Hedef IP/port erişilemez ya da proxy kuralı engelliyor olabilir. Aynı hedefi başka bir proxy ile deneyin.
- 2
- 3
IPv6 hedef mi?
SOCKS4 yalnızca IPv4 adreslerini taşır; IPv6 hedefe bağlanılamaz.
- 4
Kimlik bilgisi mi gerekiyor?
SOCKS4 kimlik doğrulaması sunmaz. Parolalı bir proxy iseniz SOCKS5 gerekir.
Proxy kontrol aracımızda protokol olarak SOCKS4 seçebilirsiniz; araç yukarıdaki 8 baytlık yanıtı okuyup kodu raporlar. Protokol ürün olarak sunulmadığı için saglamproxy.com paketlerinde SOCKS4 seçeneği yoktur; sipariş sırasında HTTP ya da SOCKS5 seçilir (ayrıntı).
SOCKS4 proxy’nizi 90–93 kodlarıyla birlikte sınayın.
Proxy Kontrol Et