TCP/IP协议栈的网络层位于网络接口层和传输层之间,其主要协议包括IP(Internet Protocol,互联网协议)、ARP(Address Resolution Protocol,地址解析协议)、RARP(Reverse Address Resolution Protocol,反向地址解析协议)、ICMP(Internet Control Message Protocol,:互联网控制消息协议)、IGMP(Internet Group Management Protocol,互联网组管理协议)等。其中IP是整个网络层的核心协议。
IP及其相关协议
TCP/P协议栈的网络层位于网络接口层和传输层之间。网络层的主要功能是标识大规模网络中的每一个节点,并将数据包投递到正确的目的节点。
TCP/IP的网络层主要定义了以下协议:
IP(Internet Protocol,互联网协议): 负责网络层寻址、路由选择、分段及包重组。
ARP(Address Resolution Protocol,地址解析协议): 负责把网络层地址解析成物理地址。
RARP(Reverse Address Resolution Protocol,反向地址解析协议): 负责把物理地址解析成网络层地址。
ICMP(Internet Control Message Protocol,互联网控制消息协议): 定义了网络层控制和传递消息的功能,可以报告IP数据包传递过程中发生的错误、失败等信息,提供网络诊断功能。
IGMP(Internet Group Management Protocol,互联网组管理协议): 负责管理IP组播组。
IP协议报文格式
1.版本号:占四位,就是IP协议的版本,通信双方的IP协议必须要达到一致,IPv4的版本就是4.
2.首部长度:占四位,因为长度为四比特,所以首部长度的最大值为1111,即十进制的15,又因为首部长度代表的单位长度为32个字(也就是4个字节),所以首部长度的最小值就是0101,当然,也确实如此,大部分的ip头部中首部字节都是0101.也就是5*4=20个字节,如果是最大值15的话,ip首部的最大值就是60个字节,所以记好了,ipv4首部长度的最大值就是60,当然当中我们又能发现,IPv4的首段长度一定是4字节的整数倍,要是不是怎么办呢?别急,后面的填充字段会自动填充补齐到4字节的整数倍的。
3.区分服务:这个没有什么用处,也没有什么好讲的了,只要自动这玩意占八位,一个字节就可以了。
4.总长度:占16位,这个的意思就是ip数据报中首部和数据的总和的长度,因为占16位,所以很好理解,总长度的最大值就是2的16次方减一,65535,这玩意也对应着还有一个很简单的概念,最大传输单元MTU,意味着一个IP数据报的最大长度就只能装下65535个字节,要是传输的长度超过这个怎么办,很简单,分片。
5.标识:占16位,标识这玩意很好理解,IP在存储器中维持一个计数器,每产生一个 数据报,计数器就加1,并将此值赋给标识字段。但这个标识并不是平常的序号,因为IP是 无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分 片时,这个标识字段的值就被复制到所有的数据报片的标识字段中,等到重组的时候,相同标识符的值的数据报就会被重新组装成一个数据报。
6.标志:占三位,一般有用的是前两位,
最低位叫做MF,MF=1表示后面还有若干个数据报,MF=0表示这已经是最后一个数据报了。
中间位叫做DF,DF表示不能进行分片,DF=0才可以进行分片操作。
7.片偏移:占13位,片偏移就是,在原来的数据报分片以后,该片在原分组中的相对位置,片偏移中的基本单位是8字节,所以,也就是说,只要是分片,每个分片的长度都是8字节的整数倍,最后一个分片不够八字节的一样是填充。
8.生存时间TTL:占8位,(time to live),表明数据报在网络中的寿命,这个值被设定成跳数,顾名思义,就是这个数据报可以经过多少个路由器的数量,每经过一个路由器,该值就减一,减到为零的时候就被抛弃,显而易见,这个跳数的最大值就是2的8次方减一,255.
9.协议:就是用来指明数据报携带了哪种协议,占8位。
10.首部效验和:占16位,这个字段用来效验数据报首段,下面给出简单的计算方法:
首先在发送端的时候,将效验和全部置为0,然后把数据报首段数据全部进行反码相加,得到的值为效验和,放入首段效验和里面,然后接收端将数据报首段数据和效验和一起全部反码相加,最后若是得到零,则保留,若是不为零,则说明数据报在传输的过程中发生了改变,则丢弃该数据报。
11.IP源地址:占32位,将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。
12.目的地址:也占32位,转换方法和来源IP地址一样。
13.到了可变部分IPv4的头部基本上就已经讲完了,增加头部的可变选项实际上就是增加了数据报的功能,可变选项在实际上是很少用到的。
IP地址分类
各个网段内具有的IP节点数各不相同,为了适应这种需求,IP地址被分为五类:
1、A类IP地址的第一个八位段(octet)以0开始。A类地址的网络号为第一个八位段,网络号取值范围为1-126(127留作它用)。A类地址的主机号为后面的三个八位段,共24位。A类地址的范围为1.0.0.0~126.255.255.255,每个A类网络有224个A类IP地址。
2、B类IP地址的第一个八位段以10开始。B类地址的网络号为前两个八位段,网络号的第一个八位段取值为128-191。B类地址的主机号为后面的二个八位段共16位。B类地址的范围为128.0.0.0~191.255.255.255,每个B类网络有216个B类IP地址。
3、C类IP地址的第一个八位段以110开始。C类地址的网络号为前三个八位段,网络号的第一个八位段取值为192-223。C类地址的主机号为后面的一个八位段共8位。C类地址的范围为192.0.0.0~223.255.255.255,每个C类网络有28=256个C类IP地址。
4、D类地址第一个八位段以1110开头,因此D类地址的第一个八位段取值为224~239。D类地址通常为组播地址。
5、E类地址第一个八位段以11110开头,保留用于研究。