前言
在此之前,我对于网络通讯上的一些基础概念总是含糊其辞,感觉自己知道都又道不出个所以然,总之就是不成体系难以有个整体的把握。因此有了本文,目的是对一些平时颇为关注的网络概念进行总结,描绘出它们的关系,借此也希望能去扫清你的一些障碍,给小伙伴们分享一波。
正文
如标题所示,会针对每个基础概念分别作出即使,并且尽量给以示例。
IP地址
IP地址为每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址被用来给Internet上的电脑一个编号。可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”。
注意:“电话号码”也有局域和广域之分,比如你的员工号只在公司内部唯一,属于局域网IP。你的身份证号在全国范围内是唯一的,可类比为广域网IP。当然喽,局域和广域永远是个相对的概念~
ip地址从两种维度上来分,可以有多种:
IPv4和IPv6
静态IP和动态IP
IPv4和IPv6
为何会有IPv6???因为IPv4使用32位(4字节)地址,所以它最多能够表示2的32次方,也就是4,294,967,296个地址。40亿+个地址这是远远不够的,因此IPv6就出现了。
关于IPv6诞生的大事记:
1992年初,一些关于互联网地址系统的建议在IETF(互联网工程任务组)上提出,并于1992年底形成白皮书。
1996年开始,一系列用于定义IPv6的RFC发表出来,最初的版本为RFC1883。
2011年开始,主要用在个人计算机和服务器系统上的操作系统基本上都支持高质量IPv6配置产品。
2012年6月6日,国际互联网协会举行了世界IPv6启动纪念日,这一天,全球IPv6网络正式启动。
2013年9月,互联网318个中的283个顶级域名支持IPv6接入它们的DNS。
2017年11月26日,中共中央办公厅、国务院办公厅印发《推进互联网协议第六版(IPv6)规模部署行动计划》。
2018年6月,三大运营商联合阿里云宣布,将全面对外提供IPv6服务,并计划在2025年前助推中国互联网真正实现“IPv6 Only”。
IPv4
4字节长的ip称为IPv4,目前大部分ip都是IPv4。例如:192.168.1.100
局域网、内网统一采用IPv4,外网IP绝大部分还在使用IPv4,不过随着IPv4的耗尽,开始逐渐步入IPv6的时代。全球IPv4地址耗尽,中国IPv6新体系正在形成
IPv6
16字节长的ip成为IPv6。它的格式可有多种:
IPv6地址通用冒号分割的8个区块,每个区块4个十六进制数字。如:
2400:cb00:2048:1:0:0:6ca2:c665
两个冒号标识多个0区块,但每个地址中双冒号最多出现一次。如:
2001:1234:4567:0000:0000:0000:8888可缩写为2001:1234:4567::8888
IPv6和IPv4的混合网络中,IPv6地址的最后4字节有时可用IPv4的点分四段地址。例如:
2001:1234:4567::c0a8:0a64可以写为 2001:1234:4567::192.168.10.100
静态IP和动态IP
我们已经知道,处在互联网中(若你不联网是不需要ip的,其中不联网指的是单机)的每台机器都会有一个IP地址,而这个ip可以是固定的,也可以是动态的。
静态IP
顾名思义,IP地址是静态的、固定的。我们上网时的公网IP一般使用的静态IP,它是全球唯一的。但是我们知道IP资源是有限的(特别是IPv4),因此静态IP都是收费的(而且一般还不便宜)。
静态IP由ISP(互联网服务提供商,如中国电信、中国联通等)它们分配给我们(当然你得花钱),为了节约开销,我们一般会在一个公网IP后搭建一个局域网,然后让局域网内的所有机器共享这一个/多个静态IP地址(也叫出口IP)。
当然喽:因为ip资源非常短缺,通过拨号上网/宽带上网的用户(比如你的家庭)一般不具备固定ip(毕竟宽带费并不贵嘛),而是由ISP动态分配给你一个暂时ip,这就是下文要讲的动态IP。当然这一切对你是无感知的~~~
动态IP
作为网站的服务器需要一个静态的IP地址,便于域名解析。通过Modem、ISDN、ADSL、小区宽带等方式上网的计算机每次上网所分配到的ip都不相同,这就是动态ip。因为ip资源很宝贵,大部分用户都是通过动态ip上网的,普通人一般不需要去了解动态ip,这些都是计算机系统自动完成的。
你可能会问:你每次通过ipconfig查看你的机器IP都是192.168.x.x,并木有变化呀,怎么会是动态ip呢?请注意:你这个是局域网ip地址,完全可以是静态的,因为每个局域网都可以有和你一样的ip地址并不冲突(想想不同的公司是不是可以有一样的工号呀?),而本文的动态ip指的是广域网的,它是要求全球唯一的。
域名和域名解析
IP地址对于计算机来说很不错,但对于人来说是个问题,毕竟对于人来说非常难以记忆。于是就发明了域名系统(Domain Name System, DNS)。DNS将人们可以记忆的主机名与计算机可以记忆的IP地址关联在一起,可以通过一个域名对应多个ip,来实现DNS的负载均衡。
域名和主机hostname的区别和联系
主机名代表一台主机,域名代表一个区域的名称,所以它的范围更大
一个域名下面可以有多台主机,如:
abc.com这个域名下可以有这两台主机(名):server1.abc.com和server2.abc.com
当然取名也可以是www.abc.com和baike.abc.com
所以完整的主机名很多时候这样命名:计算机名.域名
外网域名中,全世界不会存在相同的域名
域名解析
域名解析:根据域名解析得到IP地址。域名的解析工作由DNS服务器完成。
说明:在各大云厂商中,域名解析一般都是免费服务的。但由于各服务商规模和实力良莠不齐,解析系统的稳定性得不到有效保障,所以建议选择比较知名的域名服务商,如阿里云、腾讯云、新网等
域名解析的类型
DNS服务器会把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。域名解析时会添加解析记录,这些记录有如下常见类型:
主机名(A记录):A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的网页服务器(web server)上。同时也可以通过域名解析设置子域名。
将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录
别名(CNAME记录):即:别名记录。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个域名解析别名(CNAME):WWW和MAIL。
如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录
邮件交换记录(MX记录):即:邮件路由记录。用户可以将该域名解析到自己的邮件服务器上,然后即可自行操控所有的邮箱设置。您在线填写您服务器的IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。
建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录
文本记录(TXT记录):设置 TXT ,域名解析设置TXT记录以便使别人联系到您。也会提升域名邮箱发送外域邮件的成功率,之所以会提升成功率,是因为企业邮箱公司把你的域名加入白名单,以企业邮箱公司的名义发送邮件,企业邮箱公司不会互相屏蔽的。TXT的应用之一,SPF(Sender Policy Framework)记录,以防止你的邮件服务器发送的邮件被当作垃圾邮件。很典型的spf格式的txt记录例子为“v=spf1 a mx ~all”,表示只有这个域名的a记录和mx记录中的ip地址有权限使用这个域名发送邮件。更多关于SPF的信息请参见:http://www.openspf.org/
可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录
A记录是把一个域名解析到一个IP地址,而CNAME记录是把域名解析到另外一个域名,而这个域名最终会指向一个A记录,在功能实现在上A记录与CNAME记录没有区别。
域名和IP的对应关系查询
通过任何一个域名可以得到其IP地址,通过任何一个IP地址也能找到它所属的域名。我们可以通过该网站实现互查:https://site.ip138.com
比如我们通过此网站查询到www.baiud.com对应的ip有:
那么你使用任意一个IP地址都是可以访问到百度首页的:
DNS 域名解析服务
DNS英文全称:Domain Name System(域名系统)。是因特网上作为域名和IP地址相互映射的一个分布式数据库。它的作用是我们仅需通过主机名即可获得该主机名对应的ip地址进而完成访问。
DNS服务器
DNS服务器也叫域名服务器。域名服务器是提供域名解析的服务器,在有基本的知识下,任何人都可以搭建域名服务器,甚至是根域名服务器,有名的软件有:BIND。
DNS服务器包括路由缓存和互联网DNS服务器(比如阿里云提供的、百度提供的等等),以及13台根服务器。它对于一个域名的基本解析过程如下:
电脑通过路由器(或交换机)连入互联网, 为了加快访问的时间,短期内缓存使用的域名对应的ip
互联网DNS服务器,是路由缓存的上一级。一般为宽带运营商或者云服务提供商(如阿里云、腾讯云、AWS等)
一直到最后,最全的就是根服务器, 一共13台,通过物理文件的冗余,分摊全球的域名查询任务(一般为超级计算机,计算速度贼快)
域名根服务器(共计13个)
域名服务器就像许多国际组织一样,是需要被承认的,当你的根域名服务器被全世界承认,你的服务器也可以成为这其中的一员。因为互联网起源于美国,域名体系也是诞生于美国,在互联网不断扩张和发展的过程中,逐渐形成了13台服务器为全球根服务器。这13台根服务器由ICANN管理,由12个机构具体运营。13台根服务器如下图所示。
13台根域名服务器从a至m编号,分属12个运营机构运营。另外需要注意的是:13台根域名服务器不是一个物理概念,它是一个逻辑概念。根域名服务器可以由分布在全球的多个服务器组成,形成一个集群,对外统一为1台逻辑的根域名服务器。在https://root-servers.org网站上,我们能查到所有的真实服务器分布(中国境内有大几十个实例)。
全世界只有13台逻辑根域名服务器(这13台根域名服务器名字分别为“A”至“M”),由12个运营者运营,其中8个在美国,欧洲2个,位于荷兰和瑞典,亚洲1个位于日本,而真正的主根服务器并未公开。
DNS域名解析过程(web)
以浏览器上键入一个www.baidu.com地址为例:
首先,浏览器会检查自己的DNS缓存
1.谷歌浏览器可这么查看chrome: chrome://net-internals/#dns
浏览器会查找操作系统缓存(本地hosts文件)
本地hosts文件
浏览器会把域名发送给LDNS(本地DNS服务器,承担了主要的域名解析工作,通过ipconfig可以查到),LDNS首先会查询缓存记录
windows下使用ipconfig /all可看到你拥有的DNS服务器:
ipconfig /displaydns可以显示出你近期访问了哪些DNS(也就是本地DNS服务器缓存)
LDNS服务器向主域名服务器(国际的顶级域名服务器,根域名服务器全球只有13台)请求解析,返回Name Server域名服务器地址(注册的域名服务器)
LDNS服务器向注册时的服务器发出请求,最终得到与域名相对应的IP地址。
特别声明:域名不包括端口
公共DNS服务器IP地址大全
一个域名必须经过DNS服务器的解析才能得到IP地址,因此DNS服务器非常的重要。
内网域名通过内网DNS服务器去解析,内网DNS服务器一般由公司的运维负责搭建好和维护
作为重要的互联网基础设施,有很多大企业提供了一些好用的、公共的DNS服务器可以给我们使用,这里推荐几个:
百度 BaiduDNS:180.76.76.76
114 DNS:114.114.114.114 / 114.114.115.115
阿里 AliDNS:223.5.5.5 / 223.6.6.6
DNSPod DNS+(腾讯云):119.29.29.29 / 182.254.116.116
Google DNS:8.8.8.8 / 8.8.4.4(你若要解析到国外ip地址可用它,国内不推荐使用)
…
更多、更全的公共DNS服务器ip地址请参考本网站:https://dnsdaquan.com
有了这些好用的免费DNS服务器后,若我们自己购买了一个域名就可以交给它来帮我们完成域名解析(当然若你是商用的,最好还是购买付费的域名解析服务,更稳定更有保障些)。
DDNS 动态域名解析服务
DDNS:Dynamic Domain Name Server,动态域名服务。相较于DNS就前面加了个Dynamic表示动态的。我们知道DNS用于域名 -> IP地址的解析,那么何为DDNS呢?
DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
也就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流。而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的。
动态域名服务的对象是指IP是动态的,是变动的。普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个。但DDNS的IP是变动的、随机的。随着市场需求的变化,DDNS需求功能也越来越多,越来越要求方便,市场现在已经有了不少第三方DDNS方支持的设备。
关于动态域名解析服务有个非常著名的软件你肯定不陌生:花生壳
什么时候需要DDNS
目前来说,对于商业域名绝大部分还是不会使用到DDNS的,而是使用的DNS完成解析。那么什么时候需要DDNS呢,下面举出两例:
在家里的局域网内/公司局域网/学校局域网内,我想搭建一台Ftp的Server来共享文件,但是你知道家里的网使用的是动态IP(指的出口IP),一旦我的IP发生变化其他人使用原来域名就不能 找到这台Server 了,因此我的诉求是:即使我IP是动态的,但我希望每次通过域名都能解析到我这来,这便是DDNS可以搞定的事。
比如现在流行的远程摄像头(如小米摄像头),你发现不管你在哪只要通过网络就能打开摄像头查看家里的情况。IP虽然是公网动态IP,每断开一次就会变化一次,因此可以想象这也是使用的DDNS解决的。
简单描述DDNS能做什么:以把变化的IP动态地映射到域名上,通过不变的域名访问变化IP的主机;
如何自己实现DDNS
如果自己需要做一个DDNS动态域名解析,本处共介绍三种方案供以参考:
使用花生壳,优点太多了,稳定、内网穿透、内网端口映射。使用起来非常方便:只需要内网IP就可以搭建一台Server
使用DNSPod以及其客户端完成
使用Alibaba Cloud SDK for Java实现动态域名解析(DDNS),内含使用Demo哦。参考地址:https://help.aliyun.com/document_detail/141482.html
总结
关于域名、静态IP和动态IP、域名解析DNS、动态域名解析DDNS这些常用的网络概念就介绍到这了。本文还算详细的介绍了这些概念,希望对大家能够带来帮助。