ICMP&&IP&&ARP
一、ICMP的主要功能
- ICMP的分类:
- ICMP差错报文 2. ICMP询问报文
- ICMP差错报文有5种
- 终点不可达:当路由器或者主机不能交付报文时
- 原点抑制:当路由器或者主机由于拥塞二丢弃数据报时,发送此报文这时原点会把发送报文的速度减缓。
- 时间超时:收到生存时间为0的报文时发送
- 参数问题:有数据报首部有字段值不正确时发送
- 改变路由(重定向):
路由器把改变路由报文发送给主机,让主机知道下次应将数据发送给另外的路由器。
- 询问报文:
- 回送请求和应答(ping)
ICMP回送请求报文时由主机或路由器向一个特定路由器发出的报文,收到此报文的主机必须给源主机或者路由器发送ICMP回送回答报文,这种报文用未测试的目的主机是否可达,以及了解有关状态。 - 时间戳请求和回答
ICMP时间戳请求报文是请某个主机或者路由器回答当前的日期和时间,可用来进行时间同步或者测量时间。
- 回送请求和应答(ping)
二、IP协议
- 格式
- 四位版本号:IPV4或者IPV6
- 四位首部长度:以四字节为单位,最小值是5,所以首部长度最小为20字节,最大为60字节
- 8位区分服务:
- 16位总长度:整个数据包的长度(包括IP首部和IP层)的字节数。
- 16位标示位,是一个计数器,每传一个IP数据报,16位标示加1,用于分片和重新组装数据。
- 3位标志位:
MF:MF=1表示后面还有分片=0表示最后一片
DF:DF=0时才允许分片 - 生存时间:TTL最大为255跳
- 协议:占8位,指出次数据报携带的数据使用何种协议,一遍通知目的主机的IP层将数据部分上交给哪个处理过程。
- 首部校验和:
占16位,只校验数据报的首部不校验数据部分,这里不使用CRC校验码,而采用简单的计算方法。
- 源地址和目的地址各占四个字节,分别记录源地址和目的地址。
地址解析协议ARP
- ARP每一个主机都设有一个ARP高速缓存,里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
作用:通过IP地址得知物理地址。
步骤:- 首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
- 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
- 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
- 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。