在客户端-服务器环境中,当客户端发送请求“GET /index.php ...等”的数据包(带有源IP/目标IP/端口...等)
时,服务器应用程序(守护进程)会到达整个数据包(整个数据位)包括mac、IP、端口、tcp 标志、有效负载?还是只是有效载荷?
因为我不明白脚本如何读取远程地址(如 echo $_SERVER['REMOTE_ADDR']; )
在客户端-服务器环境中,当客户端发送请求“GET /index.php ...等”的数据包(带有源IP/目标IP/端口...等)
时,服务器应用程序(守护进程)会到达整个数据包(整个数据位)包括mac、IP、端口、tcp 标志、有效负载?还是只是有效载荷?
因为我不明白脚本如何读取远程地址(如 echo $_SERVER['REMOTE_ADDR']; )
服务器机器获取整个数据包。它的内核和 TCP/IP 堆栈接收并处理它。应用服务器使用套接字与内核通信,这是比原始数据包更高层的接口;因此它有不同的看法。假设我们谈论的是 TCP,您会发现:
getsockname()
和)来检索它getpeername()
。这包括 IP 地址和端口。对于您强调的特定情况$_SERVER['REMOTE_ADDR'];
,此信息来自上述getpeername()
系统调用。PHP 为您调用它并使信息可用。