第六章 网络层协议

6.1 网络层首部

第六章 网络层协议
IP数据包首部的格式能够说明IP协议都具有什么功能
IP数据包由首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,是所有IP数据包必须有的。在首部的固定部分的后面是一些可选字段,其长度可变
第六章 网络层协议
网络层首部固定部分的各个字段:
1、版本:占4位,指IP协议的版本。IP协议目前有IPV4和IPV6两个版本,通信双方使用的IP协议版本必须一致
2、首部长度:占4位,可表示的最大十进制数值为15。该字段所表示的单位是32位二进制数(4个字节),因此,当IP的首部长度为1111时,首部长度就达到60字节
3、区分服务:QoS,占8位,指示期望获得哪种类型的服务
4、总长度:指IP首部和数据之和的长度,也就是数据包的长度,单位为字节。总长度字段为16位,因此数据包的最大长度为2^16-1=65535字节
第六章 网络层协议
5、标识:占16位。该标识并不是序号,因为IP是无连接服务,数据包不存在按序接收的问题。当数据包的长度超过网络的MTU而必须分片时,同一个数据包被分成多个片,这些片的标识都一样,也就是数据包这个标识字段的值就被复制到所有的数据包分片的标识字段中。相同标识字段的值使分片后的各数据包片最后能正确的重装为原来的数据包
6、标志:占3位。标志字段中的最低位记为MF,当MF=1时标识后面还有分片的数据包,MF=0表示这是若干个数据包片中的最后一个。标志字段中间的一位记为DF,意思是“不能分片”,只有当DF=0时才允许分片
7、片偏移:占13位。指出当较长的分组分片后,某片在原分组中的相对位置。即相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍

片偏移举例
第六章 网络层协议
第六章 网络层协议
8、生存时间:TTL,表明数据包在网络中的寿命。每经过一次路由器,TTL的值减一
9、协议:占8位,指出次数据包携带的数据是使用何种协议
第六章 网络层协议
10、首部检验和:占16位,该字段只检验数据包的首部,不包括数据部分。数据包每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段如生存时间、标志、片偏移等可能发生变化)

6.2 ICMP协议

第六章 网络层协议
ICMP协议:控制报文协议,TCP/IP协议栈中的网络层的一个协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息
ICMP报文是在IP数据包内部被传输的,它封装在IP数据包中。ICMP报文通常被IP层或更高层协议使用。一些ICMP报文把差错报文返回给用户进程

ICMP报文分为:
1、ICMP请求报文
2、ICMP响应报文,这两种用的最多
3、ICMP差错报告报文
第六章 网络层协议
ICMP报文类型和代码
第六章 网络层协议
第六章 网络层协议
ICMP报文格式
ICMP报文的前四个字节时统一的格式,共有三个字段:类型、代码、校验和
接着四个字节的内容与ICMP的类型有关
第六章 网络层协议
第六章 网络层协议

6.3 ARP协议

ARP协议用于以太网中,将本网段计算机的IP地址解析成MAC地址(IP地址到ARP地址的映射)
ARP协议工作在网络层
点到点链路使用PPP协议,不需要ARP协议

工作原理:主机A欲向本局域网上的某台主机B发送IP数据包时,先在其ARP高速缓存中查看有无主机B的IP地址。若有,就可以查出其对应的硬件地址写入MAC帧,然后通过局域网将该MAC发往此硬件地址。如果没有,则就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,使同一个局域网内的所有主机收到ARP请求。主机B收到该ARP请求后,向主机A发出响应ARP分组,分组中包含主机B的IP与MAC地址的映射关系,主机A在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧
若要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网内的某个路由器的硬件地址,然后将分组发送给这个路由器,让这个路由器把分组转发给下一个网络
第六章 网络层协议
ARP在解析MAC地址时不做验证,因而可能由ARP造成网络欺骗
第六章 网络层协议

6.4 IGMP协议

组播:当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能进的节点后才开始复制和分发
第六章 网络层协议
组播IP地址
IP地址中的D类地址是组播地址,D类IP地址的前四位是1110,因此D类地址范围是224.0.0.0到239.255.255.255。我们就用每一个D类地址标志一个多播组
组播地址只能用于目的地址,而不能用于源地址
一台主机可以拥有多个组播地址
目标地址是组播地址的数据包到达以太网,就要用组播MAC地址进行封装,组播MAC地址使用组播IP地址构造
第六章 网络层协议
不同的组播IP地址可能构造出相同的组播MAC地址
第六章 网络层协议
组播管理协议IGMP
IGMP实现如下双向的功能:
1、主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息
2、路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护
第六章 网络层协议