DNS(应用层协议)
DNS是一整套从域名映射到IP的系统。
DNS背景
TCP/IP使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆。于是人们发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的关系。
DNS系统
- 一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系。
- 如果新计算机接入网络,将这个信息注册到数据库中。
- 用户输入域名时,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。
在域名解析的过程中仍然会优先查找hosts文件的内容。
cat /etc/hosts
域名简介
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。
www.baidu.com
域名使用.连接
- com:一级域名,表示这是一个企业域名,同级的还有“net(网络提供商)”,“org(非盈利组织)等”。
- baidu:二级域名,公司名。
- www:一种习惯用法。
域名服务器
- 每一级域名服务器都知道下级域名服务器的IP地址。
- 为了容灾,每一级至少设置两个或以上的域名服务器。
域名解析过程
下层使用UDP协议。
- 输入域名后,先查找自己主机对应的域名服务器;
- 域名服务器先查找自己的数据库中的数据,如果没有,就向上级域名服务器进行查找,依次类推;
- 最多回溯到根域名服务器,肯定能找到这个域名的IP地址;
- 域名服务器自身也会进行一些缓存,把曾经访问过的域名和对应的IP地址缓存起来,可以加速查找的过程。
在浏览器中输入www.baidu.com拿到百度首页这一过程。
1.先查本地缓存,没有再进行域名解析。
2.建立连接,发送http请求。因为http请求下层协议是TCP,而TCP是面向连接的,所以先将TCP的SYN标志位置为1。
3.向下交给IP进行封装,再经过路由,交给MAC帧。
4.到达目标主机后,目标主机进行所传来的数据包进行解包、分用。
5.得到响应,处理响应。
ICMP(网络层协议)
一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输;如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。
ICMP功能
- 确认IP包是否成功到达目的地址;
- 通知在发送过程中IP包被丢弃的原因;
- ICMP也是基于IP协议的,但是它并未被归属至传输层,因此仍被归结为网络层协议;
- ICMP只能搭配IPV4使用,如果是在IPV6的情况下,需要用的是ICMPV6.
ping命令则用的是ICMP协议。
ICMP大概分为两类报文:
- 通知出错原因
- 诊断查询
NAT技术
NAT技术当前解决了IP地址不够用问题,是路由器的一个重要功能。
- NAT能够将私有IP对外通信时转为全局IP,也就是一种将私有IP和全局IP相互转化的技术。
- 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP。
- 全局IP要求唯一,但是私有IP不需要;在不同的局域网中可以出现相同的私有IP。
NAT IP转换过程
- 在NAT路由器内部,有一张自动生成的,用于地址转换的表;
- 当私有IP地址第一次向公有IP地址发送数据时,就会生成表中的映射关系。
NAPT
如果在局域网内,很多主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP是相同的,这时,就需要NAPT来解决这个问题了,NAPT使用IP+port建立这个关联关系。
NAT技术的缺陷
- 由于NAT依赖内部的转换表,所以无法从NAT外部向内部服务器建立连接;
- 转换表的生成和销毁都需要额外开销;
- 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;
NAT和代理服务器
路由器往往都具备NAT设备的功能,通过NAT设备进行中转,完成子设备和其他子网设备的通信过程。
客户端向代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果传给客户端。
NAT和代理服务器的区别
- 从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题,代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙;
- 从底层实现上讲,NAT是工作在网络层,直接对IP地址进行替换,代理服务器往往工作在应用层;
- 从使用范围上讲,NAT一般在局域网的出口部署,代理服务器可以在局域网做,也可以在广域网做,也可以跨网;
- 从部署上看,NAT一般继承在防火墙,路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上。
代理服务器是一种应用比较广的技术。
翻墙:广域网中的代理。
负载均衡:局域网中的代理。
代理服务器分为正向代理(用于请求的转发)和反向代理(作为一个缓存)。