SOCKS5, SOCKS4'e kıyasla daha gelişmiş ve yaygın olarak önerilen proxy protokolüdür; başlıca UDP trafiği, IPv6 ve çeşitli kimlik doğrulama yöntemleri için destek sunar. SOCKS4 ise TCP bağlantıları ve IPv4 ile sınırlıdır ve kimlik doğrulaması yoktur.
Bir SOCKS (Socket Secure) proxy'si, OSI modelinin 5. katmanında (oturum katmanı) çalışır ve istemci uygulama ile sunucu arasında aracı görevi görür. Uygulamaya özgü proxy'lerin (örneğin HTTP proxy'leri) aksine SOCKS proxy'leri protokolden bağımsızdır: ağ protokolünü yorumlamadan, istemci adına tüm trafiği iletir. Bu sayede hedef sunucuya bağlantı kurup veriyi aktararak HTTP, HTTPS, FTP ve daha fazlası dahil çeşitli trafik türlerini taşıyabilirler.
SOCKS4 protokolü
SOCKS4, SOCKS protokolünün daha eski bir sürümüdür ve daha basit proxy ihtiyaçları için tasarlanmıştır.
Temel işlevsellik
SOCKS4 yalnızca TCP (Transmission Control Protocol) bağlantılarının proxy'lenmesini destekler. Bir istemci SOCKS4 proxy'si üzerinden hedef sunucuya bağlanmak istediğinde, proxy sunucusuna bir bağlantı isteği gönderir. Proxy ise istemci adına hedefe bağlantıyı kurar ve aralarındaki veriyi aktarır.
Sınırlamalar
- Yalnızca TCP: SOCKS4, UDP (User Datagram Protocol) trafiğini taşıyamaz; bu yüzden çevrimiçi oyun, video akışı veya bazı VoIP hizmetleri gibi iletişim için UDP'ye dayanan uygulamalara uygun değildir.
- Yalnızca IPv4: Yalnızca IPv4 adresleriyle çalışacak şekilde tasarlanmıştır. IPv6'yı desteklemez; bu da IPv6'yı giderek daha çok benimseyen modern ağ ortamlarında kullanışlılığını sınırlar.
- Kimlik doğrulama yok: SOCKS4 yerleşik hiçbir kimlik doğrulama mekanizması sunmaz. Herhangi bir istemci bağlanıp proxy'yi kullanabilir; bu da onu genel veya paylaşımlı proxy hizmetleri için daha az güvenli kılar. SOCKS4 isteğindeki
USERIDalanı yalnızca bir tanımlayıcıdır, kimlik doğrulama amacı taşımaz. - İstemci tarafında DNS çözümleme: İstemci uygulama, isteği SOCKS4 proxy'sine göndermeden önce hedef ana bilgisayar adını bir IPv4 adresine çözmek zorundadır. Proxy alan adı değil, IP adresi alır.
- Sınırlı komutlar: SOCKS4 esas olarak bağlantı kurmaya yönelik tek bir komutu destekler.
SOCKS4a uzantısı
İstemci tarafı DNS çözümleme sınırlamasını gidermek için resmi olmayan bir uzantı olan SOCKS4a tanıtıldı. SOCKS4a ile istemciler IP adresi yerine bir alan adı gönderebilir. DNS çözümlemesini proxy sunucusu yapar. Bu iyileştirmeye rağmen SOCKS4a, yalnızca TCP ve yalnızca IPv4 desteği gibi SOCKS4'ün diğer sınırlamalarını korur.
SOCKS4 istek yapısı (kavramsal)
Bir SOCKS4 bağlantı isteği genellikle istemcinin proxy'ye bir bayt dizisi göndermesini içerir.
+----+----+----+----+----+----+----+----+----+----+....+----+
| VN | CD | DSTPORT | DSTIP | USERID | NULL |
+----+----+----+----+----+----+----+----+----+----+....+----+
1 1 2 4 variable 1
VN: Sürüm numarası (SOCKS4 için 0x04)CD: Komut kodu (CONNECT için 0x01)DSTPORT: Hedef portDSTIP: Hedef IP adresiUSERID: Kullanıcı kimliği (değişken uzunlukta, null ile sonlanır)
SOCKS4a'da DSTIP değeri 0.0.0.X ise (X sıfırdan farklıysa), gerçek alan adı USERID'yi izleyen NULL baytından sonra eklenir.
SOCKS5 protokolü
SOCKS5 güncel standarttır ve SOCKS4'e göre önemli bir gelişme sunarak daha fazla esneklik ve özellik sağlar.
Temel işlevsellik
SOCKS5 hem TCP hem UDP trafiğini destekler. Bu ikili yetenek, gerçek zamanlı iletişim gerektirenler dahil çok daha geniş bir uygulama yelpazesine uygun olmasını sağlar. Ayrıca kimlik doğrulama yöntemleri için bir müzakere aşaması getirerek daha güvenli proxy kullanımına imkân tanır.
Başlıca iyileştirmeler
- TCP ve UDP desteği: SOCKS5 hem TCP hem UDP bağlantılarını proxy'leyebilir. UDP desteği; VPN'ler (UDP tabanlı tüneller kullanıldığında), çevrimiçi oyun, canlı yayın ve DNS sorguları (UDP tabanlı bir DNS çözümleyici kullanılıyorsa) gibi uygulamalar için kritiktir.
- Kimlik doğrulama yöntemleri: SOCKS5 birden fazla kimlik doğrulama yöntemini destekleyerek güvenliği artırır. Yaygın yöntemler:
- Kimlik doğrulama yok (0x00): SOCKS4'e benzer şekilde, herhangi bir kimlik bilgisi gerekmez.
- Kullanıcı adı/parola (0x01): İstemciler doğrulama için proxy'ye kullanıcı adı ve parola verir.
- GSS-API (0x02): Genellikle kurumsal ortamlarda kullanılan, daha sağlam ve genişletilebilir bir güvenlik mekanizması.
- IPv4 ve IPv6 desteği: SOCKS5 hem IPv4 hem IPv6 adreslemeyi doğal olarak destekler; bu da onu geleceğe dönük ve modern ağ altyapılarıyla uyumlu kılar.
- Sunucu tarafında DNS çözümleme: İstemciler alan adını doğrudan SOCKS5 proxy'sine gönderebilir, DNS çözümlemesini proxy yapar. Bu, çözümleme yükünü istemciden alır ve yerel DNS sorgularını önleyerek bazen gizliliği artırabilir.
- Genişletilmiş komutlar: SOCKS5 üç temel komutu destekler:
- CONNECT (0x01): Bir hedefe TCP bağlantısı kurar.
- BIND (0x02): Sunucunun istemciye geri bağlantı başlatması gereken protokollerde kullanılır (örneğin bazı FTP modları). Proxy, istemci adına gelen bağlantıyı dinler.
- UDP ASSOCIATE (0x03): Bir UDP aktarımı kurar ve istemcinin proxy üzerinden UDP paketleri gönderip almasına izin verir.
SOCKS5 istek yapısı (kavramsal)
SOCKS5, kimlik doğrulama için bir başlangıç müzakere aşaması ve ardından asıl bağlantı isteğini içerir.
Kimlik doğrulama müzakeresi (istemciden proxy'ye)
+----+----------+----------+
| VER | NMETHODS | METHODS |
+----+----------+----------+
1 1 1 to 255
VER: Protokol sürümü (SOCKS5 için 0x05)NMETHODS: İstemcinin desteklediği kimlik doğrulama yöntemi sayısıMETHODS: Desteklenen kimlik doğrulama yöntemlerinin listesi
Kimlik doğrulama yanıtı (proxy'den istemciye)
+----+--------+
| VER | METHOD |
+----+--------+
1 1
VER: Protokol sürümü (0x05)METHOD: Seçilen kimlik doğrulama yöntemi (kabul edilebilir yöntem yoksa 0xFF)
Bağlantı isteği (istemciden proxy'ye)
+----+-----+-------+------+----------+----------+
| VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT |
+----+-----+-------+------+----------+----------+
1 1 1 1 variable 2
VER: Protokol sürümü (0x05)CMD: Komut (CONNECT için 0x01, BIND için 0x02, UDP ASSOCIATE için 0x03)RSV: Ayrılmış (0x00)ATYP: Adres tipi (IPv4 için 0x01, alan adı için 0x03, IPv6 için 0x04)DST.ADDR: Hedef adres (ATYP'ye göre değişken uzunlukta)DST.PORT: Hedef port
SOCKS4 vs SOCKS5: temel farklar
| Özellik | SOCKS4 | SOCKS5 |
|---|---|---|
| Protokol sürümü | 4 | 5 |
| TCP desteği | Evet | Evet |
| UDP desteği | Hayır | Evet |
| Kimlik doğrulama | Yerleşik kimlik doğrulama yok | Var (yok, kullanıcı adı/parola, GSS-API vb.) |
| IPv4 desteği | Evet | Evet |
| IPv6 desteği | Hayır | Evet |
| DNS çözümleme | İstemci tarafı (SOCKS4a proxy tarafına izin verir) | Proxy tarafı (istemci tarafı da olabilir) |
| Adres tipleri | IPv4 (SOCKS4a ile alan adları) | IPv4, IPv6, alan adı |
| Komutlar | CONNECT | CONNECT, BIND, UDP ASSOCIATE |
| Güvenlik | Daha düşük (kimlik doğrulama olmadığı için) | Daha yüksek (kimlik doğrulama seçenekleri sayesinde) |
Hangi protokolü seçmeli
SOCKS4 ile SOCKS5 arasındaki seçim; uygulamanın özel gereksinimlerine, ağ ortamına ve güvenlik değerlendirmelerine bağlıdır.
SOCKS4 ne zaman seçilir
SOCKS4 genel olarak eski (legacy) kabul edilir. Kullanımı belirli senaryolarla sınırlıdır:
- Eski sistemler: Yalnızca SOCKS4'ü destekleyen eski istemci uygulamaları veya proxy sunucularıyla çalışırken.
- Basitlik: UDP, IPv6 ve kimlik doğrulamanın kesinlikle gerekmediği son derece basit proxy ihtiyaçlarında SOCKS4 marjinal olarak daha basit bir uygulama sunar (performans farkı ihmal edilebilir olsa da).
- Minimum ek yük: Pratikte ek yük farkı çok küçük olsa da, SOCKS4'ün el sıkışması biraz daha basittir.
Çoğu modern bağlamda SOCKS4, sınırlamaları nedeniyle tercih edilen seçenek değildir.
SOCKS5 ne zaman seçilir
SOCKS5, üstün yetenekleri ve esnekliği sayesinde neredeyse tüm güncel kullanım senaryoları için önerilen seçimdir:
- UDP trafiği: UDP gerektiren uygulamalar için şarttır, örneğin:
- Çevrimiçi oyun
- IP üzerinden ses (VoIP)
- Video konferans ve yayın
- Eşler arası (P2P) dosya paylaşımı
- DNS sorguları (proxy üzerinden yönlendiriliyorsa)
- Kimlik doğrulama gereksinimleri: Proxy hizmeti erişim kontrolü ve güvenlik için kullanıcı doğrulaması istiyorsa, SOCKS5'in yerleşik kimlik doğrulama yöntemleri vazgeçilmezdir.
- IPv6 bağlantısı: IPv6 kullanan veya gerektiren ortamlarda SOCKS5 doğal destek sunarak gelecekteki ağ altyapısıyla uyumluluğu sağlar.
- Sunucu tarafında DNS çözümleme: İstemci DNS çözümlemesini proxy'nin yapmasını tercih ediyorsa (örneğin istemcinin yerel DNS sorgularını gizlemek için ya da kolaylık olsun diye), SOCKS5 bu imkânı sunar.
- Modern uygulamalar: SOCKS proxy'lerini destekleyen modern yazılım ve işletim sistemlerinin çoğu SOCKS5'i destekler.
- Esneklik ve geleceğe hazırlık: SOCKS5, çeşitlenen ve değişen ağ gereksinimlerini karşılamaya çok daha uygun, sağlam ve çok yönlü bir çözüm sunar.
Pratik değerlendirmeler
SOCKS proxy'lerini entegre ederken şunları göz önünde bulundurun:
- Güvenlik: Ne SOCKS4 ne de SOCKS5 veri yükünün kendisini şifreler. Temelde bağlantıyı kolaylaştırırlar. Güvenli iletişim için uygulama trafiğinin kendisinin şifrelendiğinden emin olun (örneğin HTTPS trafiği için TLS/SSL kullanarak ya da SOCKS bağlantısını bir VPN üzerinden tünelleyerek).
- Uygulama desteği: İstemci uygulamanın veya işletim sistemi yapılandırmasının seçtiğiniz SOCKS protokol sürümünü desteklediğini doğrulayın. Modern uygulamaların çoğu, mevcutsa varsayılan olarak SOCKS5'i kullanır.
- Performans: Tipik TCP bağlantılarında SOCKS4 ile SOCKS5 arasındaki performans farkı genellikle ihmal edilebilir. SOCKS5'in müzakere ve kimlik doğrulamasının getirdiği ek yük çok küçüktür. Asıl performans etkeni, istemci, proxy ve hedef sunucu arasındaki ağ gecikmesi ile bant genişliği olacaktır.
- Yapılandırma: Bir SOCKS proxy'sini yapılandırmak genellikle proxy sunucusunun IP adresini veya ana bilgisayar adını, portunu ve SOCKS5 için gerekirse kimlik bilgilerini belirtmeyi içerir.
# Örnek uygulama yapılandırması (kavramsal)
proxy_type = SOCKS5
proxy_host = proxy.example.com
proxy_port = 1080
proxy_username = myuser
proxy_password = mypassword
SOCKS5'in SOCKS4 yerine seçilmesi, modern ağ oluşturma için net bir tercihtir; çok çeşitli uygulamalara daha geniş bir özellik seti ve gelişmiş güvenlik yetenekleri sunar.
