İçeriğe geç

Teknik Rehber4 dk okuma

SOCKS4 ve SOCKS5 Farkları

SOCKS, HTTP’den farklı olarak web’e özgü olmayan, düşük seviyeli bir proxy protokolüdür. SOCKS4 ve SOCKS5 aynı fikre dayansa da yetenekleri belirgin biçimde ayrılır. Bu rehber ikisini karşılaştırır, SOCKS5 el sıkışmasını açıklar ve hangisini ne zaman seçeceğinizi anlatır.

Yayın
Güncelleme
Okuma süresi
4 dakika

SOCKS nedir?#

SOCKS, uygulamadan bağımsız çalışan bir aracı protokoldür. HTTP proxy istekleri anlayıp başlıklarını okuyabilirken SOCKS yalnızca bir bağlantıyı iletir: “şu adrese ve şu porta bir bağlantı aç, sonrasında baytları olduğu gibi taşı.” Bu yüzden web tarayıcısı, e-posta istemcisi, mesajlaşma uygulaması veya özel bir TCP servisi aynı SOCKS sunucusunu kullanabilir.

Kısa karşılaştırma#

ÖzellikSOCKS4SOCKS5
TCP bağlantısıEvetEvet
UDP desteğiHayırEvet (UDP ASSOCIATE)
Kimlik doğrulamaYok (yalnızca isteğe bağlı kullanıcı kimliği alanı)Kullanıcı adı ve parola dahil birden çok yöntem
IPv6 adresleriHayırEvet
Alan adı ile bağlanmaYalnızca SOCKS4a uzantısıylaDoğrudan destekli
Başlangıç el sıkışmasıTek adımlı istekYöntem seçimi, kimlik doğrulama, ardından istek
Tablo 1SOCKS4a, SOCKS4’e alan adı gönderme yeteneği ekleyen yaygın bir uzantıdır.

SOCKS4: sade ve sınırlı#

SOCKS4 yalnızca IPv4 hedeflere TCP bağlantısı açar ve parola tabanlı kimlik doğrulamayı bilmez. Protokol bir tek istek ve yanıttan oluşur. Bu sadelik kolay uygulanmasını sağlar, ancak parolasız yapısı yüzünden yetkisiz kullanımı sınırlayamaz; açık bırakılmış bir SOCKS4 sunucusunu herkes kullanabilir. Alan adı çözümlemesi de istemcide yapıldığı için DNS sorguları proxy’den geçmez; SOCKS4a bu eksiği giderir.

SOCKS5: daha esnek ve daha kapsamlı#

SOCKS5 (RFC 1928) kimlik doğrulama yöntemlerini, UDP aktarımını ve IPv6 adreslerini ekler. Kullanıcı adı ve parola doğrulaması ayrı bir belge olan RFC 1929 ile tanımlanır. Alan adını doğrudan proxy’ye verebilirsiniz; böylece DNS çözümlemesi de uzak tarafta yapılabilir.

SOCKS5 el sıkışmasıİstemci desteklediği kimlik doğrulama yöntemlerini sunar, proxy birini seçer. Kullanıcı adı ve parola doğrulanır. İstemci hedef adres ve portu içeren CONNECT isteği gönderir, proxy başarılı yanıt verir ve ardından veri hedefe aktarılır.İstemciSOCKS5 proxyHedef sunucu1Yöntem teklifi05 02 00 022Seçilen yöntem05 023Kullanıcı / parola01 ULEN USER PLEN PASS4Kimlik doğrulandı01 005CONNECT isteği05 01 00 03 LEN HOST PORT6Başarılı yanıt05 00 00 01 ADRES PORT7Veri akışıhedef bağlantısı
Şekil 1SOCKS5 el sıkışması: yöntem seçimi, kimlik doğrulama ve bağlantı isteği sırayla gerçekleşir.
  1. İstemci desteklediği doğrulama yöntemlerini listeler (örneğin “doğrulama yok” ve “kullanıcı adı/parola”).
  2. Sunucu yöntemlerden birini seçer. Hiçbirini kabul etmezse bağlantı kapanır.
  3. Kullanıcı adı/parola seçildiyse istemci bilgileri gönderir, sunucu onaylar ya da reddeder.
  4. İstemci hedefin adresini (IPv4, IPv6 ya da alan adı) ve portunu bildirir.
  5. Sunucu hedefe bağlanır ve sonucu bildirir; başarılıysa baytlar iki yönde akmaya başlar.

DNS çözümlemesi nerede yapılır?

Bu ayrıntı gizlilik açısından önemlidir. İstemci alan adını kendisi çözerse, DNS sorgusu proxy dışında, yerel ağınızdan gider ve hangi siteye gittiğiniz DNS sunucusunca görülebilir. Alan adını proxy’ye bırakmak için curl’de socks5h:// şemasını kullanırsınız; h harfi “host adını uzakta çöz” anlamına gelir.

SOCKS ile HTTP proxy arasındaki yaklaşım farkı#

HTTP proxy isteği anladığı için başlık ekleyebilir, önbellek tutabilir ve adres bazlı filtreleme yapabilir. SOCKS ise bu katmanın altında çalıştığı için isteğin içeriğiyle ilgilenmez; bağlantıyı kurar ve baytları aktarır. Bunun iki sonucu vardır. Birincisi, aynı SOCKS sunucusu farklı uygulama protokolleriyle sorunsuz çalışır. İkincisi, SOCKS proxy’nin isteğe başlık eklemesi söz konusu olmadığı için başlık temelli anonimlik seviyeleri onun için aynı biçimde geçerli değildir; ayrıntı için proxy anonimlik seviyeleri rehberine bakabilirsiniz.

Pratikte bunun anlamı şudur: bir uygulamanın ayarlarında “SOCKS5” seçeneği varsa, uygulamanın yaptığı bağlantıların hangi protokolle konuştuğuna bakılmaksızın proxy üzerinden geçmesi mümkündür. Ancak her uygulama tüm bağlantılarını proxy’ye yönlendirmez; bazıları DNS sorgularını ya da UDP trafiğini ayrı yollardan gönderir. Bu nedenle hassas bir kullanımda çıkış IP’sini ve DNS davranışını ayrıca sınamak gerekir.

UDP desteğinin pratik değeri#

SOCKS5’in UDP ASSOCIATE komutu, UDP tabanlı trafiğin proxy üzerinden taşınmasına izin verir. Ancak her SOCKS5 sunucusu bu komutu uygulamaz ve birçok ücretsiz sunucu yalnızca TCP aktarır. Bu yüzden bir proxy’nin “SOCKS5” etiketi taşıması UDP’nin çalışacağı anlamına gelmez. Ses veya oyun gibi UDP’ye dayanan bir servis için kullanmadan önce kendi denemenizi yapın.

Kod örnekleri#

Bash
# SOCKS5, alan adı çözümlemesi proxy tarafında (socks5h)
curl --proxy socks5h://USERNAME:[email protected]:PORT \
     --max-time 15 https://api.ipify.org

# SOCKS5, alan adı yerelde çözülür (socks5)
curl --proxy socks5://USERNAME:[email protected]:PORT \
     --max-time 15 https://api.ipify.org

# SOCKS4a (alan adı proxy tarafında çözülür), kimlik doğrulama yoktur
curl --proxy socks4a://proxy.example.com:PORT --max-time 15 https://api.ipify.org
Şema, protokolü ve DNS çözümleme yerini belirler.
Python
# pip install "requests[socks]"
import requests

proxy = "socks5h://USERNAME:[email protected]:PORT"
proxies = {"http": proxy, "https": proxy}

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=15)
print(r.text)
requests[socks] eklentisi PySocks bağımlılığını kurar. socks5h alan adını proxy’ye çözdürür.

Hangisini seçmelisiniz?#

  • Yalnızca web trafiği ve basit kullanım: HTTP proxy çoğu zaman yeterlidir. Bkz. HTTP proxy nedir.
  • Web dışı uygulamalar, UDP veya IPv6 hedefler: SOCKS5 daha uygundur.
  • Parolalı erişim gerekiyorsa: SOCKS5 kullanın; SOCKS4’te kimlik doğrulama yoktur.
  • Eski bir yazılım yalnızca SOCKS4 biliyorsa: SOCKS4 ya da SOCKS4a seçeneği kalır.

SOCKS protokolü içeriği şifrelemez. Uçtan uca gizlilik gerekiyorsa TLS kullanan bir uygulama protokolü (örneğin HTTPS) tercih edin. Elinizdeki bir adresin hangi SOCKS sürümünü konuştuğunu SOCKS5 proxy kontrol aracıyla deneyebilir, aday adresler için SOCKS5 proxy listesine ve SOCKS4 proxy listesine bakabilirsiniz. Kalıcı kullanım için ISP proxy ürününde HTTP ve SOCKS5 ödeme sırasında seçilebilir.

Sık sorulan sorular

01SOCKS5, SOCKS4’ten daha hızlı mıdır?
Protokol sürümü tek başına hızı belirlemez. Hız; sunucunun yüküne, ağ yoluna ve bağlantının kalitesine bağlıdır. SOCKS5’in farkı hız değil, yetenektir.
02SOCKS proxy trafiği şifreler mi?
Hayır. SOCKS verileri olduğu gibi taşır. Şifreleme istiyorsanız üzerinde TLS çalışan bir protokol kullanın.
03socks5 ile socks5h arasındaki fark nedir?
socks5 şemasında alan adı yerelde çözülür; socks5h’de alan adı proxy’ye gönderilir ve uzakta çözülür. İkinci seçenek DNS sorgularının yerel ağda görünmesini önler.
04Tarayıcım SOCKS proxy’yi destekliyor mu?
Büyük tarayıcıların çoğu SOCKS5 ayarını destekler. Kimlik doğrulamalı SOCKS5 desteği tarayıcıya göre değişebilir; gerekirse bir eklenti ya da yerel bir yönlendirici kullanılır.
05Ücretsiz SOCKS5 proxy güvenilir mi?
Genel bir güvence yoktur. Sahibi bilinmeyen bir SOCKS sunucusundan hassas veri geçirmeyin.

Bilgiyi listede deneyin

Ücretsiz listedeki kayıtları protokole ve ülkeye göre süzebilirsiniz. Bu kayıtların güvenli ya da kalıcı olduğu garanti edilmez; hassas hesaplarınızda kullanmayın.