tes*_*est 7 .net c# dns system.net
我正在使用ac#控制台应用程序,并且在我的控制台应用程序中,我具有以下代码,以获取网站的IP:
using System.Net
using System.Web;
using System.IO;
namespace MyConsoleApp
{
class Program
{
static async Task Main(string[] args)
{
IPHostEntry hosten = Dns.GetHostEntry("www." + website);
if (hosten.AddressList.Count() >= 1)
{
string ip = hosten.AddressList[0].ToString();
Run Code Online (Sandbox Code Playgroud)
但是与从某些在线IP检查器网站(例如https://www.site24x7.com/find-ip-address-of-web-site.html)获得的IP地址相比,我获得的IP地址将有所不同..那么使用System.Net.Dns.GetHostEntry()受信任的方法知道网站的IP地址吗?如果答案是肯定的,那为什么我要从在线IP检查器站点获得不同的IP?
网站拥有多个IP地址是很常见的。一个网站可以分布在多个地方和地区,使用多个IP地址有助于负载平衡和网络流量优化。一种常见的技术是将请求路由到最接近的IP(尽管主动负载平衡可能会阻止它),因此,在线IP检查器可能会生成更接近它的IP。
为什么?由于DNS是分层的分布式区域数据库,因此Google可以在中国拥有IP地址(或更多地址),这意味着它将主要在该地区的DNS服务器中注册。因此,对来自中国的Google IP的幼稚查询将产生该IP /那些IP,而来自澳大利亚的查询将产生另一个IP /其他IP。
更复杂的是,像Cloudflare这样的内容交付网络公开了网站的IP,而不是其真实IP。他们将其作为缓解DDoS和整体Web安全策略的一部分。
以上所有这些使得很难获得包含特定网站IP地址的完整且通用列表的列表。但是,如果从同一位置查询相同的DNS服务器,则应该获得分配给该主机的IP地址的相当恒定的列表。
现在,关于您的代码,当您执行以下操作:
hosten.AddressList[0]
Run Code Online (Sandbox Code Playgroud)
您只使用该列表中的第一个IP地址,如果该特定主机只有一个IP地址,则可能是唯一的 IP地址,但也可能是该主机的多个解析IP中的第一个IP地址。您必须检查的所有元素AddressList。
许多网站都会有多个 IP,因为它们托管在多个位置。如需进一步阅读,请查看“内容交付网络”
这很像问“为什么必胜客有很多电话号码?” 因为即使他们提供同样的东西,但数量很多,而且您会想与离您最近的人交谈。
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |