1.背景介绍
当我们把项目部署到自己的服务器上以后,一般可以通过两种形式访问项目,一种是ip+端口号,还有一种是域名访问.
那么这两种访问项目的方式的区别是什么呢?哪一种更好一些?IP,域名,端口号之间有什么联系呢?
2.知识剖析
IP,域名,端口号的基本概念
(1) IP
IP,(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给网络上使用IP协议的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类。目前我们使用的都是IPv4的地址,IPv4地址由32位二进制数组成,常以XXX.XXX.XXX.XXX形式表现。(以上参考于维基百科)
通俗点说就是IP地址是用于标识出网络上的每一台主机的编号。有这个编号,网络上的其他主机才能在互联网浩若繁星的主机中定位到唯一的一台主机。
(2)域名
域名,(英语:domain name),是由一串用“点”分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。域名按域名系统(DNS)的规则流程组成。在DNS中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。(以上参考于维基百科)
域名和IP地址之间有区别也有联系,域名通常会和IP进行绑定,通过访问域名来访问网络上的主机的服务。IP地址通常指的是网络中的主机,而域名则通常表示一个网站,一个域名可以绑定到多个ip上,多个域名也可以绑定到一个ip上。
(3)端口号
端口,(英语:port),主要分为物理端口和逻辑端口。我们一般说的都是逻辑端口,用于区分不同的服务。因为网络中一台主机只有一个IP,但是一个主机可以提供多个服务,端口号就用于区分一个主机上的不同服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口,标识是从0~65535.(以上参考于维基百科)
端口号分为公认端口(0~1023)、注册端口(1024~49151)和动态端口(49152~65535)。我们自己的服务一般都绑定在注册端口上。
3.常见问题及解决方案
(1)域名和端口号是怎么对应起来的?
客户端输入域名,通过DNS将域名解析成为服务器ip,找到代理服务器,因为http协议服务所占用的端口默认为80端口,所以会访问服务器的80端口,然后再通过代理服务器将请求转发到不同的服务器以及端口中.如图
(2)应该通过域名访问项目吗?
答案是必须的。
如果用IP+端口号的方式访问,会有以下后果
首先,非常难记,域名是对人友好的有含义的字符,而ip都是4组基本无规律的数字,对人不友好.
其次, 如果服务器中的资源发生迁移,那么原先的服务器ip地址就无效了,必须要重新使用新的ip地址访问服务器,用户还要再去记忆一遍IP地址。但是如果是使用域名则不存在这个问题.
最后, 不安全,通过ip直接访问服务器是非常危险的,相当于将整个服务器的大门向所有人打开,造成的后果是别有用心的人能够非常容易攻击到服务器.域名访问就能杜绝这种情况,用户是不知道服务器的IP地址的,而且就算有人通过域名恶意攻击,直接和用户交互的代理服务器也可以保护内容服务器。这样就算代理服务器被攻破,损失也相对较小。
(3)从域名服务商到服务器的流程是怎么样的?
个人理解就是域名解析过程。该过程如下图
4.扩展思考
DNS的查询方式有几种?
有两种,递归查询和迭代查询
递归查询是一次查询就得到最终的结果.通常是主机到DNS服务器之间的查询方式
迭代寻址是有可能发生多次请求,并且每次得到的结果有可能只是参考答案.DNS服务器会使用迭代查询
5.参考文献
参考一:维基百科或百度百科
参考二:DNS原理入门
参考三:浅谈DNS基本原理以及实现方法
6.PPT链接