ICMP&&IP&&ARP

一、ICMP的主要功能

  1. ICMP的分类:
    1. ICMP差错报文 2. ICMP询问报文
  2. ICMP差错报文有5种
    1. 终点不可达:当路由器或者主机不能交付报文时
    2. 原点抑制:当路由器或者主机由于拥塞二丢弃数据报时,发送此报文这时原点会把发送报文的速度减缓。
    3. 时间超时:收到生存时间为0的报文时发送
    4. 参数问题:有数据报首部有字段值不正确时发送
    5. 改变路由(重定向):
      路由器把改变路由报文发送给主机,让主机知道下次应将数据发送给另外的路由器。
  3. 询问报文:
    1. 回送请求和应答(ping)
      ICMP回送请求报文时由主机或路由器向一个特定路由器发出的报文,收到此报文的主机必须给源主机或者路由器发送ICMP回送回答报文,这种报文用未测试的目的主机是否可达,以及了解有关状态。
    2. 时间戳请求和回答
      ICMP时间戳请求报文是请某个主机或者路由器回答当前的日期和时间,可用来进行时间同步或者测量时间。

二、IP协议

  1. 格式
    ICMP&&IP&&ARP
    1. 四位版本号:IPV4或者IPV6
    2. 四位首部长度:以四字节为单位,最小值是5,所以首部长度最小为20字节,最大为60字节
    3. 8位区分服务:
    4. 16位总长度:整个数据包的长度(包括IP首部和IP层)的字节数。
    5. 16位标示位,是一个计数器,每传一个IP数据报,16位标示加1,用于分片和重新组装数据。
    6. 3位标志位:
      MF:MF=1表示后面还有分片=0表示最后一片
      DF:DF=0时才允许分片
    7. 生存时间:TTL最大为255跳
    8. 协议:占8位,指出次数据报携带的数据使用何种协议,一遍通知目的主机的IP层将数据部分上交给哪个处理过程。
    9. 首部校验和:
      占16位,只校验数据报的首部不校验数据部分,这里不使用CRC校验码,而采用简单的计算方法。
  2. 源地址和目的地址各占四个字节,分别记录源地址和目的地址。

地址解析协议ARP

  1. ARP每一个主机都设有一个ARP高速缓存,里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
    作用:通过IP地址得知物理地址。
    步骤:
    1. 首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
    2. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
    3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
    4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。