当前位置:网站首页 > 编程语言 > 正文

ip查域名查询(ip域名查询系统)



当我们把项目部署到自己的服务器上以后,一般可以通过两种形式访问项目

  1. ip+端口号
  2. 域名访问

那么这两种访问项目的方式的区别是什么呢?哪一种更好一些?IP,域名,端口号之间有什么呢?

域名访问可以不填写端口号,但是仅限于80端口,80端口是为HTTP(HyperText Transport tocol)即超文本传输协议开放的,此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。

可以通过HTTP地址(即常说的“网址”)加“: 80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“: 80”了。

其他服务,域名同样也需要加端口号才能访问。

IP,(英语:Internet tocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给网络上使用IP协议的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类。目前我们使用的都是IPv4的地址,IPv4地址由32位二进制数组成,常以XXX.XXX.XXX.XXX形式表现。(以上参考于维基百科)

通俗点说就是IP地址是用于标识出网络上的每一台主机的编号。有这个编号,网络上的其他主机才能在互联网浩若繁星的主机中到唯一的一台主机。

域名,(英语:domain name),是由一串用“点”分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。域名按域名系统(DNS)的规则流程组成。在DNS中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。(以上参考于维基百科)

域名结构

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器<a href='/tag/348'>添加</a>域名来验证)_端口号

域名和IP地址之间有区别也有,域名通常会和IP进行绑定,通过访问域名来访问网络上的主机的服务。IP地址通常指的是网络中的主机,而域名则通常表示一个网站,一个域名可以绑定到多个ip上,多个域名也可以绑定到一个ip上。

端口,(英语:port),主要分为物理端口和逻辑端口。我们一般说的都是逻辑端口,用于区分不同的服务。因为网络中一台主机只有一个IP,但是一个主机可以提供多个服务,端口号就用于区分一个主机上的不同服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口,标识是从0~65535.(以上参考于维基百科)

端口号分为公认端口(0~ 1023)、注册端口(1024~ 49151)和动态或私有端口号(49152~65535)。我们自己的服务一般都绑定在注册端口上。

  • 公认端口(0~ 1023):它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。任何TCP/IP实现所提供的服务都用0-1023之间的端口号。我们的私用端口号不应该使用这个区间内的端口,除非你向IANA注册了。例如:80端口实际上总是HTTP通讯,HTTP协议是建立在TCP协议之上的一种应用。还有21对应着FTP,25对应着SMTP,110对应着POP3等。
  • 注册端口(1024~ 49151):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
  • 动态或私有端口号(49152~65535):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。但这是我们一般程序可以使用的端号区间,你可以使用这其中的端口,这样,你的程序就不会和别的公用的程序冲突了

互联网中的域名系统 DNS 被设计成一个层次树状结构的联机分布式数据库系统,并且采取的是客户服务器的方式,将域名和IP地址相互映射了起来。

域名服务器的层次结构:

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_服务器_02

DNS 使大多数名字都在本地进行解析,只有少量的解析需要在互联网通信,因此效率很高。采取分布式的一个好处是,即使单个计算机出了故障,也不会妨碍 DNS 系统的正常运行。

域名到 IP 地址的解析是通过许多分布在互联网上的域名服务器完成的。

解析的主要过程如下:

  1. 当一个主机中的进程需要把域名解析为 IP 地址时,该进程就会调用解析程序,首先在本地的浏览器缓存,hosts,系统缓存中查找,如果有,解析结束,没有就下一步
  2. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,主机把待解析的域名放在 DNS 的请求报中,以 UDP 用户数据报方式发送给本地域名服务器。
  3. 本地域名服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,如果没有,本地域名服务器向其他DNS服务器查询,在查找域名后,把对应的 IP 地址放在回答报文中返回给主机。
  4. 获得 IP 地址的后主机即可进行通信。

比如:

首先,第一步浏览器会请求DNS返回域名对应的IP,浏览器还提供了DNS数据缓存服务,如果某个域名已经被解析过了,浏览器就会缓存解析的结构,下次查询时直接使用,减少一次网络请求。

拿到IP后,就需要获取端口号,如果url没有明确指出端口号,HTTP协议默认是80端口。

在实际情况中,因为用户和服务器之间存在代理服务器比如nginx,这个解析到的域名一般是代理服务器的 IP地址(或者IP地址 :80端口 ),代理服务再去转发请求到真正的业务服务器,业务服务器和IP和端口号就跟访问的域名没啥关系了。

客户端输入域名,通过DNS将域名解析成为服务器ip,找到代理服务器,因为http协议服务所占用的端口默认为80端口,所以会访问服务器的80端口,然后再通过代理服务器将请求转发到不同的服务器以及端口中.

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_ip地址_03

答案是必须的。

如果用IP+端口号的方式访问,会有以下后果:

  • 首先,非常难记,域名是对人友好的有含义的字符,而ip都是4组基本无规律的数字,对人不友好.
  • 其次,如果服务器中的资源发生迁移,那么原先的服务器ip地址就无效了,必须要重新使用新的ip地址访问服务器,用户还要再去记忆一遍IP地址。但是如果是使用域名则不存在这个问题.
  • 最后,不安全,通过ip直接访问服务器是非常危险的,相当于将整个服务器的大门向所有人打开,造成的后果是别有用心的人能够非常容易攻击到服务器.域名访问就能杜绝这种情况,用户是不知道服务器的IP地址的,而且就算有人通过域名恶意攻击,直接和用户交互的代理服务器也可以保护内容服务器。这样就算代理服务器被攻破,损失也相对较小。

首先是域名解析,然后客户端拿到域名对应的IP地址,客户端再根据IP地址去对指定服务器资源进行访问(默认80端口)。

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_网络_04

当客户端程序要通过一个主机名称来访问网络中的一台主机时,它首先要得到这个主机名称所对应的IP地址,因为IP数据报中允许放置的是目地主机的IP地址,而不是主机名称。

可以从本机的hosts文件中得到主机名称所对应的IP地址,但如果hosts文件不能解析该主机名称时,只能通过向客户机所设定DNS服务器进行查询了。(这里hosts文件是本地查询)

按照如下流程查询IP

浏览器缓存→hosts&系统缓存→路由器缓存→ISP DNS 缓存

查询方式可大致分为以下几种:

  • 本地查询:客户机平时得到的DNS查询记录都保留在DNS缓存中,客户机操作系统上都运行着一个DNS客户端程序。当其他程序提出DNS查询请求时,这个查询请求要传送至DNS客户端程序。DNS客户端程序首先使用本地缓存信息进行解析,如果可以解析所要查询的名称,则DNS客户端程序就直接应答该查询,而不需要向DNS服务器查询,该DNS查询处理过程也就结束了。
  • 直接查询:如果DNS客户端程序不能从本地DNS缓存回答客户机的DNS查询,它就向客户机所设定的本地DNS服务器发一个查询请求,要求本地DNS服务器进行解析。本地DNS服务器得到这个查询请求,首先查看一下所要求查询的域名是不是自己能回答的,如果能回答,则直接给予回答,如是不能回答,再查看自己的DNS缓存,如果可以从缓存中解析,则也是直接给予回应。

当本地域名服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式:递归和迭代

  • 递归查询:本地DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给本地DNS服务器,再由本地DNS服务器返回给客户端。

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_ip地址_05

  • 迭代查询:当本地域名服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析。DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地址返回给本地域名服务器,本地域名服务器再继续向这些DNS服务器进行查询,直到得到查询结果为止。

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_端口号_06

关于DNS缓存的机制,有一篇非常详细的​​What really happens when you navigate to a URL​​。

简单来说,一条域名的DNS记录会在本地有两种缓存:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,

如果未命中则访问OS缓存,最后再访问DNS服务器(一般是ISP提供),然后DNS服务器会递归式的查找域名记录,然后返回。

DNS记录会有一个ttl值(time to live),单位是秒,意思是这个记录最大有效期是多少。经过实验,OS缓存会参考ttl值,但是不完全等于ttl值,

而浏览器DNS缓存的时间跟ttl值无关,每种浏览器都使用一个固定值。

Windows访问DNS后会把记录保存一段短暂的时间

可通过ipconfig /displaydns 查看windows的DNS缓存、通过ipconfig /flushdns来清除。

而在修改hosts文件后,所有OS中DNS缓存会被清空,而浏览器缓存则不发生变化

优点:

  • 配置简单,无成本费用
  • 将负载均衡的工作交给了DNS服务器,省去了管理的麻烦

缺点:

  • 记录的添加与修改是需要一定时间才能够生效的(因为DNS缓存了A记录)。一旦有一台服务器坏了需要下线,即使修改了A记录,要使其生效也需要较长的时间,这段时间,DNS任然会将域名解析到已下线的服务器上,最终导致用户访问失败。
  • 不能按需分配负载,DNS并不知道各服务器的真实负载情况,所以负载效果不是很好

实际的情况:

在实际的项目部署,我们一般会将部分服务器使用DNS解析,利用域名解析作为第一级负载均衡.再在服务器中使用NGINX负载均衡作为第二级负载均衡。

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_ip地址_07

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_服务器_08

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_网络_09

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_服务器_10

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_服务器_11

【网络】IP、域名、端口号和DNS域名解析之间的联系简介(给服务器添加域名来验证)_ip地址_12

  • ​​https://www.pianshen.com/article//​​
  • ​​https://baike.baidu.com/item/80%E7%AB%AF%E5%8F%A3/?fr=aladdin​​
  • ​​https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%AB%AF%E5%8F%A3/?fr=aladdin​​

(写博客主要是对自己学习的归纳整理,资料大部分于书籍、网络资料和自己的实践,整理不易,但是难免有不足之处,如有错误,请大家评论区批评指正。同时感谢广大博主和广大作者辛苦整理出来的资源和分享的知识。)

到此这篇ip查域名查询(ip域名查询系统)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 华为机考攻略(华为机考难不难)2025-05-27 15:09:08
  • 圈1到圈10复制(圈1到圈10复制到手机)2025-05-27 15:09:08
  • 来自远方的小说晋江(来自远方的文好看吗)2025-05-27 15:09:08
  • 二级域名解析网(二级域名解析网站有哪些)2025-05-27 15:09:08
  • entitl翻译(entities翻译)2025-05-27 15:09:08
  • 2258xt固件全套(2258xt最新2019固件)2025-05-27 15:09:08
  • dos2unix命令找不到(dos命令找不到或无法加载主类)2025-05-27 15:09:08
  • 苹果定位打开了无法获取位置(苹果定位打开了无法获取位置信息)2025-05-27 15:09:08
  • 腾讯会员怎么分享二维码登录(腾讯会员怎么分享二维码登录手机)2025-05-27 15:09:08
  • 华为模拟器ensp怎么安装(华为模拟器ensp配置命令)2025-05-27 15:09:08
  • 全屏图片