照我的理解,数据包的传输过程是这样子的:客户端浏览器->应用层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 关注
- 203 浏览
添加回答
举报
0/150
提交
取消