前言
在之前我们了解了Linux网络通信环境中应用层、传输层、网络层、链路层的典型协议及相关知识后,其实在整个通信环境中还有一些其它的协议及技术,如:DNS、ICMP协议、NAT技术等,正所谓八仙过海,各显神通,它们也都有自己独特的一面,接下来我们就一起来认识一下它们吧。
一:DNS
域名:服务器地址的别名,便于我们记忆,其实通过域名访问服务器的时候最终还是通过解析获取服务器的IP地址来访问服务器的。
DNS(Domain Name System):域名系统,是一套从域名映射到IP地址的系统。用于存储IP地址与域名的映射关系,并且提供域名解析,通过域名来获取服务器IP地址。
1.1 域名服务器
域名服务器:存储域名与IP地址映射关系的服务器,而hosts文件记录了域名与IP地址的映射关系。
域名服务器的层级划分:
- 根域名服务器:最高级域名服务器,为了分摊访问压力进行容灾处理全世界一共有13台根域名服务器,分布在世界各地。
- 顶级域名服务器:这些服务器大多以所属的国家和所属组织的命名(.com 、.cn 、.gov 、.net)。
- 二级域名服务器:这些服务器大多被某一企业或者服务商所管理(.baidu.com 、.csdn.net)。
- 三级域名服务器:这些服务器大多以某一企业的分支来命名(.zhidao.baidu.com)。
通常情况下,当我们要访问某个域名时,会按照域名服务器的等级一层一层向下查询。
1.2 域名解析过程
当我们具体输入一个域名的时候,该域名是如何被解析的呢?
- 浏览器查看缓存:查看缓存中是否有对应域名的IP地址信息,如果存在则直接取出IP地址进行访问。
- 查看主机hosts文件:在hosts文件中寻找对应域名的IP地址信息,如果存在则返回。
- 请求本地域名服务器:在本地域名服务器中寻找对应域名的IP地址信息,如果存在则返回。
- 请求根域名服务器:在根域名服务器中寻找对应域名的IP地址信息,如果存在则返回。
如果不存在,则有两种查询方法:
- 迭代查询:逐个访问各级域名服务器
当本地域名服务器查找不到对应域名的IP地址信息则主动请求根域名服务器,如果根域名服务器找不到对应域名的IP地址信息则给本地域名服务器返回顶级域名服务器地址,进而让本地域名服务器去请求顶级域名服务器。同理若顶级域名服务器找不到对应域名的IP地址信息则给本地域名服务器返回二级域名服务器地址,逐层往下。
- 递归查询:逐层深入各级域名服务器
当本地域名服务器查找不到对应域名的IP地址信息则主动请求根域名服务器,如果根域名服务器找不到对应域名的IP地址信息则会主动去访问顶级域名服务器进行对应域名的IP地址信息的查找,如果找不到则继续向下级查找,逐层深入。
1.3 浏览器中输入URL
1.通过DNS将URL中的域名解析为对应的IP地址
2.根据HTTP协议格式组织请求数据
3.搭建TCP客户端与服务端建立连接,发送请求数据
4.等待响应,得到HTML响应后进行页面解析渲染
CDN服务器中存储静态缓存资源,使用户就近获取所需内容,降低网络拥塞,提高了用户访问响应的速度,和命中率。
关键技术:存储技术和分发技术。
二:ICMP协议
ICMP(Internet Control Message Protocol):Internet控制报文协议(网络层),它是TCP/IP协议簇的一个子协议,用于实现网络探测功能。
IP协议并不提供可靠传输,如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因,所以此时就需要用到ICMP来进行网络诊断。
ICMP的消息一般分为两类:
- 一类是通知出错原因
- 一类是用于诊断查询
通常我们想测试网络连通性时所使用的ping命令,就是基于ICMP协议。
ping命令会先发送一个 ICMP Echo Request给对端;对端接收到之后, 会返回一个ICMP Echo Reply。
问题: ssh协议使用22号端口,telnet协议使用23号端口,ping使用多少端口呢?
答案: ping工具通过ICMP协议实现,进行网络探测,而ICMP协议是网络层协议,不涉及到端口,端口是传输层的信息。
三:NAT / NAPT技术
NAT技术和NAPT技术主要用于组建私网,对外使用统一地址,防止与外部地址冲突。
3.1 NAT技术
NAT(网络地址转换技术): 一般使用私网IP 作为局域网内部的主机标识,使用公网IP 作为互联网上通信的标识。内部结点要与外部网络进行通信时,就在NAT网关将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭问题。
NAT技术通常部署在网关设备,工作在网络层,主要进行IP报头中源端地址的替换,通过网关设备进行数据转发。
3.2 NAPT技术
如果私网中有多个主机同时访问同一个外网的服务器,并且服务器返回的数据中,目的IP地址都是相同的。那么此时,NAT路由器如何判定要把数据转发给哪一个主机呢?
NAPT(网络地址端口转换技术): 通过NAPT技术,将不同主机的发送端口号进行处理,使得发送的时候的时候虽然用的是同一个IP地址,但是端口号不同,并且将这些映射关系存于转换表中,等数据发送回来时,在转发给对应的主机。也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。
3.3 NAT技术的缺陷
因为NAT网络地址转换技术完全依赖于转换表,所以有着很多限制。
- 装换表的生成和销毁都需要额外开销
- 通信过程中一旦NAT设备异常,即使存在设备,所有的TCP连接也都会断开
- 无法从NAT外部向内部服务器建立连接
四:代理服务
代理服务器就是个人网络与互联网服务商之间的中间代理机构,用户可以通过代理服务请求目标服务器,让代理服务器来获取目标服务器数据,再将数据转发给我们。
代理服务和NAT的区别:
-
代理服务是应用层服务,可以部署在任意设备上,工作在应用层。
-
NAT技术是网络层服务,部署在网关设备上,工作在网络层。