Bootstrap

IP协议相关技术

DNS域名解析服务

域名与IP地址

IP地址是一串二进制数字,不利于人去记忆,即使我们已经通过点分十进制的方式去缩短IP地址的表示,但其终究是一串数字,还是不好记忆。相比之下人更容易去记忆字符串,以字符串的形式表示IP地址即域名,事实上并不是IP地址用域名代替,而是域名和IP地址形成了一种映射关系,虽然在浏览器中是使用域名去访问相应的网站,但是浏览器还是需要得到域名的对应的IP地址才可以访问对应网站。

如何维护IP和域名的映射

早期阶段这个映射表通过一个host文件管理,互联网信息管理中心管理host文件,一个数据链路中的所有主机都有一份host文件的备份,一旦有新的映射表表项加入host文件,所有主机就需要重新拉取host文件,维护成本高。
我们不希望频繁的刷新host文件,更希望有一个集中式的服务,于是DNS域名解析服务就诞生了,其核心在于把域名解析的工作专门交给了一个域名解析服务器,主机通过域名访问网站时可以先向域名解析服务器发送解析请求,动态获取真正IP地址。
在这里插入图片描述

域名结构

域名采用树状就够组织,每一个树节点成为一个域,每一个域在字符串中以点号分割,从根域名开始,从右至左依次为上一层的子域名
在这里插入图片描述

域名服务器

域名服务器时管理域名的主机和相应软件,它可以管理所在分层的域。根节点所设置的域名服务器称为根域名服务器,管理维护者根域名服务器下一层域名服务器的IP地址。下一层的域名服务器同样管理着相对于其的下一层的域名服务器IP
在这里插入图片描述

解析器

进行DNS查询的主机和软件叫做DNS解析器,用户所使用的个人主机就属于解析器,一个解析器至少要注册一个以上域名服务器的IP地址,不然就无法请求域名服务器了

DNS查询流程

一个解析器向其已经注册的域名服务器发送请求,域名服务器接受到请求后检索已有的映射表,如果表中存在所需要的映射关系,则可以直接返回IP给解析器,之后解析器拿着获得的IP访问目标网站。
如果表中不存在所需要的映射关系,则域名服务器将请求转发给上一层域名服务器,由上一层域名服务器帮助查找,最坏的情况是转交给根域名服务器,如果的确是一个合法域名的话是一定可以查得到的。
图示:
在这里插入图片描述

ARP地址解析协议

地址解析协议用于将IP地址转换成mac地址,如果同一数据链路中的主机AB欲通信,主机A知道主机B的IP地址却不知道其mac地址,会通过IP广播的方式向数据链路中的所有主机发送一个ARP请求包,其中存储了主机A的IP地址、主机B的IP地址、主机A的mac地址,当其他主机接受到ARP包是,如果目标IP与自身IP不匹配,则丢包;主机B确定ARP包是给它的,则对主机A的mac地址进行记录,同时构造一个带有自身mac地址的ARP响应包给主机A,主机A得到响应包就等于得到了B的mac地址,之后A\B之间就可以网络通信
在这里插入图片描述

ARP包格式

在这里插入图片描述

ICMP网络控制消息协议

网络控制消息协议用于网络诊断(ICMP仅用于IPv4),当IP包在网络传输中出现问题时,发送端主机会收到一个ICMP报文,其中描述了出错原因。
ICMP报文信息在IP报文中,当发送ICMP报文时,需要把IP首部的8位协议字段设置为1(该字段指示了IP包携带的数据是什么协议,如果为1就是ICMP协议)。
ICMP报文格式
在这里插入图片描述

ICMP类型按功能大致分为两类:出错原因的错误消息和诊断的查询消息
如图:在这里插入图片描述

常见的ICMP类型

目标不可达消息(3)

当源主机向目标主机发送消息时,如果此时目标主机断网了,那么与目标主机处于同一数据链路中的路由器会尝试多次给目标主机发送数据包,一旦次数达到了上限,路由器就认为目标主机出现了问题无法接受数据,于是会给源主机发送ICMP报文告诉源主机目标主机暂时无法接受消息,即目标不可达,不可达的原因有很多,例如主机不可达、端口不可达,具体可以参见下图
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/22296dc89107462095f1d5a1222fb39d.jpeg在这里插入图片描述

其中错误号4用于确定路径MTU

重定向消息(5)

设想一种情况,主机A欲与主机C通信,并且已经知道C的IP地址,但是此时A的路由控制表并没有记录连接主机C的路由器信息,只能把报文现转发给默认路由器(default)。经过多次跳转后到达C主机
如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向给源主机,在报文中包含了最优的路由信息和源数据。A接收到报文后就可以更新路由控制表
在这里插入图片描述

超时消息(11)

IP报文中的TTL字段规定了IP报文在网络中的生命周期,IP包每经过一个路由器,TTL减一,减至0时则判定该IP包超市,此时收到该IP包的路由器需要向源主机发送一条ICMP消息,告诉源主机其发送的IP包超时了,请做出处理。
在这里插入图片描述

traceroute

利用TTL的机制可以达到显示数据包传输过程中所经历的所有节点,Unix中的traceroute命令就是基于该原理,其原理是故意让消息超时,通过TTL+1的方式接受ICMP报文从而获得每一个节点的IP,知道TTL增加至能够到达目标主机

回送消息(8)、应答消息(0)

回送消息和应答消息常用于测试主机之间的连通性,主机A欲确认主机B是否在线,通过发送一个ICMP报文给B,如果B在线且收到了报文,则发送一个ICMP给A告知状态,ping命令就是这个原理

ping

在这里插入图片描述

DHCP动态主机配置协议

为每一台主机手动分配一个IP地址是件痛苦的事,主机的物理位置是充满不确定性的,一旦主机发生地理位置上的移动,就需要重新设置一个IP地址,这份工作在没有DHCP之前由网络管理员完成,可想而知,如果主机变更频繁,网络管理员的压力就太大了。因此人们引入了动态主机配置协议DHCP,其本身基于UDP,当主机通电并请求网络时,先向DHCP服务器发送请求希望得到一个IP地址,DHCP服务器收到请求后返回带有IP地址的报文给源主机

获取IP过程

  1. 源主机以广播的形式发送DHCP发现包
  2. DHCP服务器收到DHCP发现包并返回DHCP提供包
  3. 源主机接受到DHCP提供包后再次以广播的形式发送DHCP请求包
  4. 收到DHCP请求包的DHCP服务器再次返回DHCP提供包
    在这里插入图片描述
    DHCP服务器通常由路由器充当

NAT网络地址转换

NAT实现了私网和公网的通信(内网穿透),支持NAT技术的路由器会为私网地址分配一个临时的公网地址(私网和公网的映射关系由路由器维护),私网中的源主机发送的IP报文离开私网之后首部中所携带的源IP就由私网变为公网,对应的目标主机就以把该公网地址认为是源主机,当目标主机的响应消息回到路由器时,将临时公网IP变回私网IP。
在这里插入图片描述
由于公网IP是非常珍贵的资源,路由器如果为其管理的数据链路中的所有主机都配一份公网IP显然会浪费占用大量公网IP,现在常用IP+Port的方式作为表项在这里插入图片描述

;