Proxy tam olarak nasıl çalışır?


12

IP 100.100.100.100, 80 numaralı bağlantı noktasına bağlanmak istersem, bilgisayarım bu adrese tcp paketi gönderir.

Şimdi 200.200.200.200 Port 8080 (internet explorer'da kurabileceğiniz proxy türü) diyelim bir proxy sunucu kullanırsam bu süreç nasıl değişir?

Hala aynı IP'ye bağlanmak istediğimde, IP başlığı hedef IP'yi veya proxy IP'sini veya her ikisini birden içerecek mi?

Google'ı zaten aradım, nasıl proxy ayarlayacağınızı söyleyen yüzlerce sayfa var, ancak hiçbiri başlık altında nasıl çalıştığını açıklamıyor.

Yanıtlar:


13

HTTP isteği, İstemciden Proxy Sunucusunun 8080 bağlantı noktasına gönderilir. Proxy Sunucusu daha sonra hedef siteye yeni bir HTTP isteği oluşturur. Proxy, yapılandırmaya bağlı olarak, HTTP isteğine genellikle bir "X-Forwarded-For" üstbilgisi ekler. Hedef web sitesindeki günlük dosyaları proxy'nin IP adresini gösterir, ancak "X-Forwarded-For" adresini günlüğe kaydedecek şekilde yapılandırılmış olabilir veya olmayabilir.

Bu tipik yapılandırmadır, ancak proxy yazılımı her türlü özelleştirmeye izin verecektir.

EDIT: Sorunuzu başlangıçta okuduğumda, özellikle kalamar veya nginx gibi bir HTTP Proxy hakkında sorduğunuz fikrini aldım. Kullanılabilir birçok farklı vekil sunucu vardır. Internet Explorer'da büyük olasılıkla bir HTTP proxy kullanacaksınız, ancak başka birçok tür de var.


Evet, bu büyük ölçüde bir proxy sunucusu olarak kullandığınız yazılıma ve nasıl yapılandırıldığına bağlıdır. Örneğin, bkz. Nginx için HttpProxyModule: wiki.nginx.org/HttpProxyModule
entropo 1:11

3
İstek yalnızca proxy sunucusuna gönderildiyse, proxy hangi hedef adrese bağlanmak istediğimi nasıl biliyor? Proxy http düzeyinde mi yoksa tcp düzeyinde mi çalışıyor?
cody

Proxy isteğini yapan tarayıcı tam URI'yi ister. Proxy sunucusu daha sonra DNS araması yapar ve hedef siteye kendi HTTP isteğini başlatır.
emgee

1
Squid (yanıtımı dayandırdığım) gibi bir http proxy, uygulama katmanında çalışır.
emgee

1
@emgee: HTTP protokolünün bir CONNECT yöntemi de vardır, bu nedenle bir HTTP proxy üzerinden bir TCP sunucusuna (proxy izin veriyorsa) bağlanmak mümkündür ve TCP sunucusunun HTTP konuşan bir sunucu olması gerekmez.
vtest

2

HTTP, Katman 7 protokolüdür, bu yüzden kafa karıştırmayın. HTTP proxy kullandığınızda ve google.com diyelim, HTTP başlığı hala aynı google.com yazdığınızda, ancak hedef IP adresi Proxy'nin IP adresi olacak, kaynak 8080 numaralı özelleştirilmiş bağlantı noktası Ana Bilgisayarları IP'si olacaktır.


1

HTTP proxy kullanmak için istek istemciden hedef sunucu yerine proxy sunucusunun IP adresine gönderilir. Proxy'nin istek URI'sını ayıklamak için HTTP üstbilgisini okuması gerekir . İstek URI'sı, hedef sunucunun adını veya IP'sini içerir ve proxy sunucusu, isteği iletmek için bu bilgileri kullanır.

HTTP şartname (istek söz konusu sunucuya doğrudan gönderildiği takdirde bu gereksiz olacağını beri) bir vekil kullanılmaz sunucu adını ve bağlantı noktasını dışlamak için istek hattını sağlar. Ancak, spec başına ...

Bir proxy'ye istek yapıldığında absoluteURI formu GEREKLİDİR.

Bu nedenle, proxy kullanmıyorken, istek satırı şöyle görünebilir:

GET /robots.txt HTTP/1.1

ancak bir proxy kullanmak için satırda sunucu adı (ve 80 değilse bağlantı noktası) bulunmalıdır:

GET http://httpbin.org:80/robots.txt HTTP/1.1

Proxy sunucusu önceden kurulmuş istek soketi aracılığıyla kelimesi kelimesine yanıt verebileceğinden, işlem daha basitse yanıt tarafı.


"HTTP Kesin Kılavuz", s. 145: "HTTP / 1.1 artık sunucuların hem proxy hem de sunucu istekleri için tam URI'leri işlemesini gerektiriyor, ancak uygulamada, dağıtılan birçok sunucu hala yalnızca kısmi URI'leri kabul ediyor."
nobar

Bu standart bir yaklaşım değildir, ancak Hostistek satırında mutlak bir URI sağlanmamışsa, bir proxy de kısmi bir URI'yi tamamlamak için başlığı kullanabilir .
nobar

Bağlantı uçtan uca şifrelenmişse (HTTPS) bu yaklaşım işe yaramaz. security.stackexchange.com/questions/101721/…
nobar

-7

"Tcp paketi" diye bir şey yoktur. TCP veri akışlarıyla çalışır. IP paketleri var.

Ağ hakkında bazı temel bilgilerden yoksun görünüyorsunuz, TCP / IP hakkında iyi bir kitap almanızı öneririm. Herkesin favorisi, W. Richard Stevens tarafından "TCP / IP resimli" gibi görünüyor.

Sorunuza geri dönün.

Proxy aracıdır:

[siz] - [proxy] - [bağlanmak istediğiniz sunucu]

Şimdi iki farklı bağlantı var:

[siz] - (proxy'ye bağlantınız) - [proxy] - (proxy'nin sunucuya bağlantısı) - [bağlanmak istediğiniz sunucu]

Bir sunucuya bir proxy üzerinden bağlandığınızı düşündüğünüzde, aslında proxy'ye bağlanır ve belirli bir sunucuya erişmek istediğinizi söylersiniz. Ardından proxy, kendisinden bu sunucuya ikinci bir bağlantı açar ve her iki yönde veri ileten aracı görevi görür.


13
TCP paketi, içinde TCP üstbilgisi bilgilerinin bulunduğu bir IP paketidir. Bu yaygın bir görüştür. Lütfen çok küçümseyici olmayın; aynı zamanda yanıldığınız için sadece size kötü yansır.
Phil P
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.