官方服务微信:dat818 购买与出租对接

为什么知道PC公网IP却Ping不通?解析网络连接问题

2万

主题

2

回帖

8万

积分

管理员

积分
82178
发表于 2024-12-22 13:23:18 | 显示全部楼层 |阅读模式
    为什么我知道我的 PC 的公共 IP 地址却无法 ping 通?

    通过该网站获取的IP无法ping通。然后我在PC上开了一个UDP客户端进程,远程服务器也开了一个UDP服务器进程。客户端将数据包发送到远程并收到响应。远程显示请求的IP也是正确的。然后我在远程服务器上打开一个客户端进程并发送我的PC的IP,但仍然没有响应。这是为什么呢?我的电脑可以读取百度的网页,说明我的电脑IP有效,百度可以响应。为什么我反向请求时会卡住?请解释一下。

    提问者提到的PC公网IP,假设是1.1.1.10,实际上并不是在PC上配置的,甚至不是在PC的网关上配置的(直接连接运营商的设备),而是配置在运营商的出口网关上(直接连接到互联网的设备)。因此出现了令人困惑的行为。

    当尝试ping PC的公网IP时,根据路由0.0.0.0/0的最佳匹配指向本地网关。

    由于本地网关没有配置该IP,因此最佳路由匹配0.0.0.0/0指向运营商。

   


    经过路由搜索,运营商找到了公网IP和运营商出口网关发布的路由()。因此,ping 数据包一路到达  网关出口。

    网关搜索到路由后,最匹配的是一条指向的路由(-faced),于是将ping包的IP改为1.1.1.10(目的IP也是这个IP)并发送出去从这个界面。

    对端设备找到路由后,很困惑,因为它发现收到的数据包需要以同样的方式返回,即返回到网关。但显然这会导致 ping 数据包出现环路。通常情况下,对端设备会丢弃该 ping 报文,因此主体无法 ping 通 IP 地址。

    也许读者在上面的文章中发现了一个错误。由于网关上配置了1.1.1.10,因此路由表中应生成1.1.1.10/32的路由。它是最好的路由,所以网关应该直接将ping包发送到这个接口,然后你应该可以ping通1.1.1.10,对吗?

    不,事实上,IP 地址 1.1.1.10 根本没有在任何接口(TCP/IP)上配置,因此不会生成路由 1.1.1.10/32。它只是一个虚拟IP,也许(总共32个1.1.1.1-1.1.1.32),通过NAT地址转换预定义为地址池。一旦某个地址从内网()到外网()并且满足NAT转换的条件,就会按照预定的算法将地址池取出来使用。一旦某个地址的端口资源用完,就会使用另一个IP地址。

    为什么提问者可以在互联网上访问自己的网站?

   


    这与在互联网上使用手机、IPAD或PC访问知乎网站没有什么不同。 - 在数据包的出方向上,沿途创建了N个NAT表,N=NAT的数量。

    返回(-)方向时,检查NAT表N次,然后将返回结果发送给主体PC。

    为什么主体无法从位于互联网上的网站(客户端)主动访问PC(服务器)?

    因为收到的NAT表无法与NAT表匹配,所以NAT表只会从-方向动态生成,而现在是-方向,所以不会生成。想一想,源IP地址和目的IP地址都是公网IP地址,怎么办?网关会进一步分析这是否是自己的。虽然访问的IP地址1.1.1.10属于网关的地址池,但地址池是虚拟的,接口上没有配置,所以无法转发,因为最匹配的接口是入口。为了避免网络环路,所以网关会丢弃这个。

更多帖子推荐

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-4-19 19:01 , Processed in 0.080533 second(s), 17 queries .