五、网络层
在TCP/IP五层模型中网络层的主要功能是进行逻辑地址寻址,实现到达不同网络的路径选择。在目前的网络中,主要的网络层协议是IP协议,下面将对IP协议做进一步的介绍。
5.1IP数据包格式
IP数据报是可变长度的,它是由两部分组成:首部和数据,如下图所示。首部由两部分组成:固定部分和可变部分(可选项);固定部分长度为20字节,可变部分由一些选项组成,最长40字节。
5.2IP头部字段分析
版本:表示IP协议的版本,这里抓取的数据包是IPV4的数据包
首部长度:因为IP头部可以添加可选项,所以数据长度需要定义,这里抓取数据包的长度为5*4=20,即头部里面没有可选项。
优先级与服务类型:这个根据数据包的重要程度进行定义。
总长度:IP数据包总长度
标识符:有些数据包的数据量较大,就需要进行拆包,这是就需要用标识符定义是不是同一数据包,以及数据包的顺序关系。
标志位:该字段第一位不使用。第二位是DF(Don’t Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。
段偏移量:该IP包在该组分片包中位置,接收端靠此来组装还原IP包。
TTL(生存时间 ):当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发,即避免广播风暴。
协议号:标识了上层所使用的协议 。
头部校验:用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。
源地址:标识了这个IP包的起源地址。
目的地址:标识了这个IP包的目标地址。
5.3IP数据包的封装流程
IP数据包转发时,地址变化
-
IP地址,一直不变;
-
MAC地址,经过不同的网段时,才会变化;如果在相同网段时,才会变化。
5.4ICMP协议
ICMP,即Internet控制消息协议,在IP网络中发送控制信息,提供可能发生在通信环境中的各种问题的反馈,ping
是一个典型的应用,其封装流程如下图所示,要先封装ICMP头部,然后再封装IP头部,最后再交给数据链路层。
5.5ARP解析协议
ARP地址解析协议其作用是基于目标IP地址,寻找对应的目标MAC地址,其工作原理如下:
首先在自己的ARP表中查找IP地址对应的MAC地址,如果没有没有查找到,则:
- 发送方主机基于目标IP,以广播方式发送ARP请求;
- 目标方主机接收ARP请求后,以单播方式返回一个ARP相应。
无论是发送方,还是目标方,在接收到APR报文之后,都会在自己的ARP表中,添加一个ARP条目信息。