我们在平时访问网站的时候输入的都是 域名而不是 IP地址,所以这都是 DNS 做出的贡献,DNS 可以帮助我们把那一串字符串转换为具体的 IP 地址
啥是域名,域名的构成是什么?
就是我们所说的网址 : 例 https://mp.csdn.net/mdeditor/96774967 ,就是这篇博客的地址,还有一个名字叫 域名服务器,它主要是管理域名的主机和软件,由于域名是分层的,所以每一层其实都有一个域名服务器,管理所在分层域的相关信息,进行DNS 查询的主机和软件叫 DNS 解析器,用户使用的电脑也是一种解析器,一个解析器至少要注册一个以上域名服务器的 IP 地址。
DNS 查询的流程/机制是?
解析器为了调查 IP 地址,首先会向域名服务器查询处理,接收这个查询请求的域名服务器首先会在自己的数据库进行查找,如果有该域名对应的 IP 地址就返回,如果没有则域名服务器再向上一层根域名服务器进行查询处理,从根开始进行遍历直到找到 指定的域名服务器,并且由这个域名服务器返回想要的数据。
以目标 IP 为线索 定位下一个接收数据分包的网络设备对应的 MAC 地址,如果目标主机不在同一个链路上时可以通过 ARP 查找下一跳路由器的 MAC 地址,
ARP 的工作机制是什么?或者说 ARP 是怎么知道MAC地址的?
它是借助 ARP 请求 与 ARP 响应两种类型的包确定 MAC 地址,例:主机A 为了获得 主机B 的 MAC 地址,则会通过广播发送一个 ARP 请求包给 数据链路上的所有主机,而这个包中就包含 主机A 自己的 MAC 地址和想要获取 MAC 地址对应的 IP 地址,当主机 B 接收到这个包时,会返回它的 MAC 地址作为一个响应包给主机A,不过由于害怕造成更大的流量浪费,主机 A 会把获取到的 MAC 地址缓存一段时间,把第一次通过 ARP 获取到的 MAC 地址作为 IP 对 MAC 的映射关系记忆到一个 ARP 缓存表中,那下一次发送给主机 B 的时候就不用发送 请求包,而是直接在 缓存表中查找 IP 对应的 MAC 地址,对于主机B 他也会做同样的事情,当发现ARP请求包 是发送给自己的时候会 将主机A 的 IP 地址和MAC地址缓存起来.不过这个缓存是有期限的,超过期限缓存内容就会被清除,这使得即使 MAC地址和 IP 地址对应关系发生变化也依然能将数据发送给目标地址。
RARP 是从MAC 地址定位到 IP 地址的一种协议,比如说打印机小型设备嵌入到网络这种情况就会用到 RAPP 协议,通过向 RARP 服务器发送请求包,然后由服务器将 IP 地址 响应给设备。
总之 ICMP 消息大概分为两类,一是通知出错原因的错误消息,二是用于诊断的查询消息。
ICMP 消息大概也有好几种类型,比较常见的是 类型3、类型5、类型11、类型0和类型8
IP 路由器由于无法将 IP 数据包发给目标地址,这时会返回一个目标不可达的 ICMP 消息,并显示出原因,而错误原因是靠错误代码来显示,常见的错误代码是1(路由表中没有该主机的信息,或该主机没有连接到网络)错误代码 4 是如果数据包太大,则会发送一个 MTU 值给发送端主机,而这个信息靠错误代码4 传达的。
如果路由器发现了源主机没有使用更好的路径发送数据,这时候路由器就会返回一个 ICMP 重定向给主机,而且这个消息中还包含着 最合适的路由信息和源数据.
IP 包中有一个字段叫 生存周期 (TTL)它的值每经过一个路由器就会减一,到 0 的时候该 IP 包就会被丢弃,此时为了让源主机知晓,就给他发送一个 ICMP 类型11 的消息,通知它该包被丢弃。之所以要设置这个功能是避免 IP 包无休止的在网络被转发,如果在路由控住遇到问题 IP 包就会循环转发。
判断所发送的数据包是否已经成功到达对端的一种消息,可以向 对端主机发送 回送请求的消息,也可以接受 对端主机发来的 回送应答消息。常见的ping命令就是这个消息实现的。
如果没有 DHCP ,我们的电脑每到一个地方就要重新设置 IP 进行管理,所以这是一件很麻烦的事情,所以引入了 DHCP 这一协议 自动设置 IP 地址,统一管理 IP 地址 分配
首先要有一个 DHCP 服务器(大多数情况这个 服务器就是 路由器),把 DHCP 要分配的 IP 地址设置到服务器上,还要将相应的子网掩码、路由控制信息 以及 DNS 服务器的地址等都要设置到服务器上。然后是 从服务器上获取 IP 地址,有两种原理 分配IP 地址
主要的流程是 客户端A先发送一个 DHCP发送包到服务器,是为了告诉 服务器是A主机要设置IP,这是 服务器会回应一个 DHCP 提供包,是想告诉 主机A我这里可以使用的 IP 地址有哪些,并且给出了网络设置,然后 客户端主机A 再发送一个 DHCP 请求包,通知了服务器希望按照服务器说的方法设置 IP ,最后服务器给客户端设置 IP。
如果在使用 DHCP 时服务器遇到故障,将导致无法自动分配 IP 地址,从而也导致网段内的所有主机之间无法进行 TCP/IP 通信,所以人们会设置两台以上的服务器,但是往往会造成分配出来的 IP 地址冲突,所以为了解决将要分配的 IP 地址或者 已经分配 IP 地址是否可用,DHCP 服务器和客户端必须要有下面的功能。
服务器:在分配 IP 地址前发送 ICMP 回送请求包,确认有没有返回应答,如果没有返回应答表示 无法分配 IP 地址,可能客户端已经分配好了,所以并不会搭理服务器。
客户端:针对从 DHCP 那里获得的 IP 地址发送ARP 请求包,确认没有返回应答,如果主机A 发送给服务器后,没有返回应答,说明这个 IP 地址不可用,因为可能这个IP 地址被其他客户端B占用了,所以并不会给客户端A回应消息。
中继代理器 DHCP
如果在以大规模的网络环境中,针对每一个网段设置 服务器是一个不太现实的事情,所以就引出了 中继代理器,原来在每一个网段设置服务器,现在在每一个网段设置中继代理器,它也可以设置服务器的 IP 地址,从而可以在 DHCP 服务器上为每一个网段注册 IP 地址的范围。整个流程:首先是DHCP 客户端会向DHCP 中继代理器发送 DHCP 请求包,而中继代理器收到这个包后再以单播的形式发送给 DHCP 服务器,服务器收到再向 DHCP 中继代理器返回应答,并由中继代理器将此包 转发给 DHCP 客户端,因此即使 DHCP 服务器不在同一个链路上也可以实现统一的分配和管理 IP 地址。
在本地网络中使用私有地址,在连接到互联网时转而使用全局 IP 地址的技术
工作机制是 :当 IP 包向目标地址发送数据,经过 NAT路由器的时候,这时候在 NAT 路由器内部生成这张表,并按照表中的映射关系进行处理。
详细介绍 :https://baike.baidu.com/item/nat/320024?fr=aladdin