2012-08-12 38 views
3

嗨,我很困惑如何從我的機器的數據包通過代理服務器到達他們的目的地。我的機器有一個用於內部網的私有IP,我們有一個公共IP代理服務器與世界交談。數據包如何到達目標throgh代理服務器?

所以我們在這裏有三個地址。

1) my private ip address 
2) proxy server address 
3) destination address (google.com) 

現在,我派我有源和目的端口來區分不同的程序(如Mozilla,Chrome瀏覽器,IE)我的機器和目的地的TCP數據包。

在ip網絡層我有源和目的地址。

我不知道http是否也有地址。

所以當我的數據包離開我的機器時,它將包含什麼地址。以便通過它們之間的網關到達我的代理服務器。 ?

一旦它到達代理服務器,就可以使用NAT將它發送到目的地。 但我對如何到達代理服務器感到困惑。

感謝

編輯: 應我的包包含我的代理服務器(本地私立學校),以達到它的ADDRES? 我可以通過配置我的瀏覽器來更改我的代理服務器。我的數據包一旦離開我的機器就知道它會去哪個代理服務器?

+1

自己看看這個最好的方法是安裝Wireshark並檢查http數據包流。您可以看到標題和目的地。這將給你一個清晰的圖像,看你的目的是如何理解整個系統的起點: – Klathzazt 2012-08-12 15:00:26

回答

2

數據包根本沒有達到目標。作爲代理和服務器之間新連接的一部分,中的數據以全新數據包的形式到達目標,其大小和數量可能與下游連接中的數據大小和數量不同。從服務器TCP的角度來看,它連接到代理服務器,而不是下游客戶端。

+0

所以這項工作將在應用層完成,代理會在http數據包中找到目的地並且會打電話給它?請告訴我,如果我錯了。 – 2012-08-13 12:36:03

+1

@ASHISHNEGI HTTP代理了解一件事:一個CONNECT命令。它讀取,形成連接到所請求的目標,然後開始雙向複製字節。它不關心數據包:發送者或接收者都不應該。這是一個字節流協議。 – EJP 2012-08-21 05:40:30

0

HTTP位於TCP/IP之上(與FTP,SMTP等一起)

您的PC上配置代理服務器,因此所有的請求都通過代理髮送(除非他們認爲是本地地址)。

當您從「www.google.com:80」請求一個頁面

  • 您的計算機查找該IP地址的主機名的DNS服務器
  • 計算機計算出它的不一個本地IP(它與默認網關在不同的子網上)
  • 然後它說「嘿,網關/代理,讓我從谷歌的網頁」(通過IP地址和端口的谷歌HTTP層將包含頭作爲「方法= GET」,具有路徑&參數等的完整URL)
+0

謝謝,但這是我所知道的。但是我的數據包一旦離開我的機器,知道它需要去哪個代理服務器。我可能通過配置我的mozilla設置來將它設置爲不同。所以我的數據包應包含我的代理服務器地址。 ?這是真的 ? – 2012-08-12 14:50:40

+1

http://superuser.com/questions/265505/how-exactly-does-a-proxy-work – 2012-08-12 14:56:33

+1

代理位於HTTP層,因此TCP數據包以代理爲目標,但包含一個發往谷歌的HTTP請求。代理將HTTP請求(使用新的TCP數據包)轉發給谷歌,並在地址中加上「X-Forwarded-For」標頭。 – 2012-08-12 14:59:21

相關問題