新华三学习计划
六、IP衍生协议
1、ARP协议
工作原理:
地址解析协议,把IP地址解析为MAC地址
1、A主机以广播形式发送ARP查询请求,询问B主机IP地址所对应的MAC地址
2、B主机以单播形式回复A主机本机MAC地址
3、A主机把B主机的IP地址和MAC地址的映射关系写入ARP缓存表
ARP报文格式:
硬件类型:16位字段,用来定义运行ARP的网络类型。每个局域网基于其类型被指派一个整数。例如:以太网的类型为1。ARP可用在任何物理网络上。
协议类型:16位字段,用来定义使用的协议。例如:对IPv4协议这个字段是0x0800。ARP可用于任何高层协议
硬件长度:8位字段,用来定义物理地址的长度,以字节为单位。例如:对于以太网的值为6。
协议长度:8位字段,用来定义逻辑地址的长度,以字节为单位。例如:对于IPv4协议的值为4。
操作码:16位字段,用来定义报文的类型。已定义的分组类型有两种:ARP请求(1),ARP响应(2)。
源硬件地址:这是一个可变长度字段,用来定义发送方的物理地址。例如:对于以太网这个字段的长度是6字节。
源逻辑地址:这是一个可变长度字段,用来定义发送方的逻辑(IP)地址。例如:对于IP协议这个字段的长度是4字节。
目的硬件地址:这是一个可变长度字段,用来定义目标的物理地址,例如,对以太网来说这个字段位6字节。对于ARP请求报文,这个字段为全0,因为发送方并不知道目标的硬件地址。
目的逻辑地址:这是一个可变长度字段,用来定义目标的逻辑(IP)地址,对于IPv4协议这个字段的长度为4个字节。
ARP报文总长度:
ARP报文的总长度为64字节
ARP数据包的长度固定为28字节
以太网v2的帧头,长14 字节
帧总长度 = 帧头 + ARP包头
而真正发包的时为了保证以太网帧的最小帧长为64 字节,会在报文里添加一个padding字段,用来填充数据包大小。
相关命令:
查询ARP缓存 arp -a
清空ARP缓存 arp -d
RARP:逆向地址解析协议(基本淘汰)
用于根据本机自己的MAC地址,查询本机自己的IP地址
2、ICMP协议
工作原理:
Internet控制报文协议,其工作机理也比较简单,即当数据包处理过程出现差错时,ICMP向数据包的源端设备报告这个差错,它既不会纠正这个差错,也不会通知中间的网络设备。
ICMP报文格式:
ICMP报文分为三大类:差错报文、控制报文、查询报文
差错报文:
1.目的不可达
类型字段为3,代码字段有为0-15,也就是说还可以分为16种不同的目的不可达差错报文。
代码为0:代表网络不可达
代码为1:代表主机不可达
代码为2:代表协议不可达
代码为3:代表端口不可达
代码为4:代表一个原本需要分片的数据包,但IP头部显示不进行分片,由此产生的错误。
代码5-15的差错报文几乎没出现过
2.时间超时
时间超时的类型字段为11
代码为0:代表TTL超时
tracert就是利用ICMP报文TTL值超时报错实现路由跟踪的
代码为1:代表分片重组超时
3.参数问题
参数问题的类型字段值为12,主要是因为对IP头部中的字段值出现了问题,从而导致的报错
控制报文:
1.源站抑制
源站抑制的类型字段值为4,只有一个代码0
源站抑制是拥塞控制的一种方式,虽然TCP在端到端上使用了窗口机制和慢开始,拥塞避免和快重传对流量进行控制,网关通过对链路上的情况进行监控,对信源发送原站点抑制里面包含着目的网络信息,当接收方接收该信息后根据目的网络信息知道去往该网络的链路发生拥塞,于是减少信息发送。
2.路由重定向
查询报文
1.请求和回应报文
请求报文的类型字段为8,回应报文字段为0,代码都只有0
这个就是最常见的ping命令报文,它会用到ICMP头部的后4个字节,分为两个字段,即标识和序列号。
Ps:请求和回应的ICMP报文数据部分都相同。
2.路由询问或通告
路由查询的类型字段值为10,通告的类型字段值为9,只有一个代码0
该类型报文主要用于无盘工作站,没有办法保存网关的情况,它就只能靠发送路由询问,来询问网关信息。路由询问报文只用了ICMP头部的前面4个字节,但是路由通告使用了全部的8个字节。、后4个字节有三个字段,分别为“地址数, 地址项长度,生存时间”,它们占用的长度是1B,1B, 2B这三个字段记载着数据部分包含的路由条目数量,路由条目的长度(即IP地址的长度),以及路由条目在路由器上面的有效生存时间。
在该ICMP报文中,每个路由信息分为路由地址和优先级,各自占用4个字节,优先级越高越有可能成为该主机的默认网关。
3.时间戳请求与应答
时间戳的请求的类型字段为13,应答为14, 只有一个代码0
它的头部与请求与回应的ICMP报文一致,但是数据部分它使用了12个字节,每4个字节记录一段时间信息,总共有三段,分别是“发送时间戳,接收时间戳,回送时间戳”,发送时间戳的信息由时间戳请求者记录,后面两个字段由回送者记录。字段里面记录的是有关当前时间的毫秒数的表示,发送者只要根据回送者发送的时间信息就可以很容易的求出往返时长。
4.地址掩码请求和应答
请求的类型字段值为17,应答的类型字段为18,只有一个代码0
它的ICMP头部与请求的ICMP包的头部相同,数据字段存储的是请求的子网掩码。