照我的理解,數據包的傳輸過程是這樣子的:客戶端瀏覽器->應用層http報文->傳輸層報文->網絡層ip報文->網絡接口層-> 網絡層ip報文->傳輸層報文->應用層http報文->web服務器程序。數據包在網絡層ip報文中,還包含ip源地址信息,到了傳輸層已經沒有了ip源地址信息,只有端口信息,到了應用層更沒有ip源地址信息,請問web服務器是怎么知道真實的客戶端ip的。
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
客戶端 IP 地址是通過 CGI 變量 REMOTE_ADDR 得到的,這個是 HTTP 服務器負責提供。
HTTP 服務器和客戶端瀏覽器之間存在 socket 連接,socket 連接信息包含了另一側的 IP 地址和端口。
當然,最終用戶如果是通過代理服務器訪問怎么辦呢?目前主流的 HTTP 代理服務器都支持在 HTTP 報頭添加 X-Forwarded-For 信息,這可以是一個列表,如果所有的代理服務器都遵循這個約定,則可以通過這個變量知道從客戶端瀏覽器到服務端所有的代理服務器的地址。
- 1 回答
- 0 關注
- 281 瀏覽
添加回答
舉報
0/150
提交
取消