当我访问该网站时http://myipaddress.com/what-is-my-ip-address/网站如何知道您的IP地址?
我检查了请求头信息。没有包括我的IP地址。那么Web服务器如何能够确定我的IP地址?我知道任何Web服务器都可以访问这些信息。但是如果它不在HTTP请求中,他们如何得到它?
当我访问该网站时http://myipaddress.com/what-is-my-ip-address/网站如何知道您的IP地址?
我检查了请求头信息。没有包括我的IP地址。那么Web服务器如何能够确定我的IP地址?我知道任何Web服务器都可以访问这些信息。但是如果它不在HTTP请求中,他们如何得到它?
您正在连接到服务器并向其发送HTTP请求。服务器回复一个页面。要做到这一点,它必须知道在哪里发送答复。该信息可以从套接字连接(即从低于HTTP的级别)自动获得,因此它不必在请求头中重复。
编辑: 如果您想了解更多有关Web服务器是如何做到这一点,看到accept
function。当一个连接进入时,Web服务器调用accept
,它会自动为其提供另一端的地址。
它位于到Web服务器的传入TCP/IP数据包中。 HTTP数据包在通过Internet发送时封装在TCP/IP数据包中(这看起来很奇怪,它们本身也被各种传输协议封装)。
传入的TCP/IP数据包将包含一些关于源的信息,包括source IP address以及source port number。
另外一点:您可能通过NAT防火墙/路由器(这将是您的ADSL或电缆盒)连接到互联网 - 如果是这种情况,IP地址将是**路由器**,而不是内部网络中的IP地址。 –
@安德鲁:伟大的一点。 –
这个问题在这里得到了更全面的回答。 请参阅此链接[link] http://security.stackexchange.com/questions/16449/how-does-a-server-obtain-the-ip-address-of-a-user –