ARP(Address Resolution Protocol)地址解析协议
ARP协议是辅助链路层传输的,在已经知道下一站路由器的IP地址后,要将以太网包发送给目的地址,但是以太网需要的是目的mac地址不是IP地址,而通过ARP请求包就可以获得目的IP地址的mac地址。
ARP请求的过程:源主机以广播的形式,发送一个ARP请求包,所有与源主机在直连的主机都会收到一个请求包,如下图所示,请求包询问目的IP地址的mac地址,目的IP地址的主机收到这个请求后,发送一个ARP应答,告诉源主机自己的mac地址。
ARP请求/应答包的数据格式如下图所示。ARP硬件类型首部中硬件类型表示链路层的协议,以太网为1;协议类型表示网络层协议,IP协议为0x0800。
为了减少ARP的请求次数,在主机和路由中存在一个ARP的缓存表,这张表中保存了最近用到的IP地址与mac地址的对应关系。用arp -a命令可以查询主机的arp缓存表,以下是我的主机中的arp缓存。
? (115.156.142.9) 位于 00:01:2e:4e:eb:ab [ether] 在 enp6s0
? (115.156.142.254) 位于 14:14:4b:7d:4c:bd [ether] 在 enp6s0
DNS 解析
IP地址用于识别通信双方的地址,但它是一串长数字,不方便记忆,人们希望主机有自己自己的名字,这个名字是唯一的,而且容易记住。于是,诞生了“域名”的概念。域名是一种为了识别主机名称和机构名的具有分层的名称,比如在域名 neu.edu.cn中,neu是主机名,edu 和 cn 是不同层次下的域名。
域名和 IP 地址都可以唯一对应一台主机,DNS 协议的作用就是将自身具有意义的域名转换成不容易记住的 IP 地址。
1.域名的层次
域名系统的最高层次是根域名,然后是*域名,二级域名依次类推。*域名一般不会变动,主要都是那么几个:表示国家的.cn,.us等,.edu,.com等等。*域名下就是二级域名,二级域名是怎么来的呢?要去指定的机构完成注册。mail www等都是主机名不能再分。
域名服务器
域名只是一个抽象的概念,域名系统由域名服务器来维护。上一级域名服务器中都保存着下一级域名地址。比如:根域名服务器中都保存着所有*域名的服务器地址。而com域名服务器中又保存这下面所有二级域名的地址。
2.DNS查询
DNS查询分为两种方式:递归查询和迭代查询。递归查询就是下一个服务器作为DNS客户帮助查询,迭代查询就是域名服务器返回下一级域名服务器的IP地址,由本地域名服务器自己去查询。从主机到本地域名服务器往往采用迭代查询,从本地域名服务器到其他域名服务器一般采用迭代的方式。
本地域名服务器与域名服务器不是一类东西。本地域名服务器是提供给一个网络或几个网络的主机来查询域名用的,他并没有维护域名与IP地址的对应关系。本地域名服务器分布在各个地方,离主机一般不超过几个路由。本地域名服务器中保存了根域名服务器的地址,如果需要查询的域名不在高速缓存中,就向根域名发送DNS查询数据报。