php“ SERVER ['REMOTE_PORT']”正确性

时间:2019-06-26 18:02:07

标签: php server port

在我编写的旨在提供有关用户的更多数据的代码中,我很难收集用户的端口号。

我用PHP编写。

<?php

$ip = $_SERVER['REMOTE_ADDR'];
$port = $_SERVER['REMOTE_PORT'];

?>

通过以下命令可以轻松收集用户的IP地址:$_SERVER['REMOTE_ADDR']

通过使用以下命令,获得的端口号与用户的端口号不匹配:$_SERVER['REMOTE_PORT'];

然后,命令$_SERVER['REMOTE_PORT']是否应提供用户的真实端口号?还是只是随机返回一个数字?

是否可以正确收集用户的端口号?

谢谢

1 个答案:

答案 0 :(得分:0)

$ _ SERVER ['REMOTE_PORT'] 是在用户计算机上发出请求的端口。这将用于将页面请求路由回他们的路由器。这可能看起来像一个随机数,但这是由用户路由器生成的端口。

$ _ SERVER ['SERVER_PORT'] 是Web服务器上正在接收请求的端口。取决于用户是否使用https,这将是80443

Here是在Super User上发布的另一个问题,它解释了浏览器从“随机”端口-> https://superuser.com/questions/1055281/do-web-browsers-use-different-outgoing-ports-for-different-tabs请求网页的现象。

此外,客户端和Web服务器之间的路由器可以更改端口,然后将端口连接存储在NAT(网络地址表)中,以便将响应路由回浏览器。 -> https://superuser.com/questions/105838/how-does-router-know-where-to-forward-packet

发件人:CompTIA Security+ Get Certified Get Ahead: SY0-501 Study Guide-2017年,达里尔·吉布森(Darril Gibson)

  

客户端端口从端口 49,152开始,并递增到65,535 。...   ...当您使用网络浏览器从网站请求页面时,您的   系统将在一个服务器中记录一个未使用的客户端端口号,例如49152   内部表来处理返回流量。当Web服务器   返回网页,其中包含客户端端口作为目标   港口。客户端收到带有目的地的网页数据包时   端口49,152,它将这些数据包发送到Web浏览器应用程序。   浏览器处理数据包并显示页面。

另外,来自PHP manualhttps://www.php.net/manual/en/reserved.variables.server.php

  

“ SERVER_PORT”       Web服务器用于通信的服务器计算机上的端口。对于默认设置,该值为'80';使用SSL,用于   实例,将其更改为您定义的安全HTTP端口   是。

     

“ REMOTE_PORT”       用户计算机上用于与Web服务器通信的端口。