簡體   English   中英

ipv4 vs ipv6客戶端識別

[英]Ipv4 vs ipv6 client identification

我想知道HTTP請求是否可以同時保留客戶端的ipv4和ipv6地址?

我正在編寫.NET應用程序,並使用以下方法來探查客戶端的IP地址:

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
Dns.GetHostAddresses(Dns.GetHostName())

我假設一個HTTP請求總是對一個地址發出,無論是IPV4還是IPV6,都不能正確嗎? 即使由FQDN調用?

從理論上講,甚至可以在單個http調用中同時獲得客戶端的ipv4和ipv6地址嗎?

在單個HTTP請求中無法從客戶端獲取多個地址。 有幾個並發症:

  • 您已經懷疑HTTP連接一次使用一種協議
  • 客戶端擁有多個IPv6地址(隨時間變化)是很常見的
  • 客戶端可能根本沒有多個地址,並且只能是IPv4或僅IPv6
  • 使用地址作為標識非常棘手:ISP使用NAT44和NAT64來節省地址空間,IPv6地址通常會隨時間而變化(至少在同一前綴內,有時前綴也會發生變化)

如果要獲得最佳估計,則可以在頁面上加載兩個圖像:一個托管在僅IPv4的主機名上,另一個托管在僅IPv6的主機名上。 在URL中包含唯一標識符,您也許可以為大多數用戶關聯IPv4和IPv6地址。 但是,這將需要多個請求,而且它並不完美,因此從技術上講,這不是您問題的答案...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM