之前有提到,链路层的上层是网络层(Internet层),也有翻译为网际层。这层开始一直到应用层就是用户所需要关注的地方了。网络层协议包括了最著名的IP协议、ICMP协议、IGMP协议等,今天主要对IP协议进行一下概述。
IP协议:
数据从应用层传下来,在每一层都要对数据的头部进行封装,包括传输层添加TCP或UDP报头,IP层添加IP报头以及链路层添加以太网报头。网络层的报文叫做IP数据包,其主要的格式如下:
其中各位的意思是:
1.版本号:占4位,代表是IPv4还是IPv6
2.首部长度:4位,首部长度最大为60字节,常见为20字节。若首部长度不是4的倍数,则用0去填充
3.服务类型:8位,可表示最小时延、最大吞吐量、最高可靠性和最小费用。一般不用
4.数据报长度:16位,最大为65535字节。若超过该长度需要分片发送
5.16比特标识:记录报文的数量,可用于之后重组
6.标志:3位,后两位才有用,最低位表示是否后面还有分片,倒数第二位表示是否允许分片
7.13比特片偏移:表示每个分片在整个数据报中的相对位置,用于重组
8.寿命:TTL,数据包每经过一个路由器则减1,直到为0后丢弃该数据包。默认windows为255,linux为64
9.上层协议:表示数据字段装载的是传输层的哪个协议,包括tcp,udp,ICMP或IGMP等
10.首部校验和:对IP首部的数据进行校验,占16位
11.源IP地址:发送方的IP,32位
12.目的IP地址:接收方的IP,32位
13.选项:可选字段
14.数据:装载传输层或ICMP、IGMP数据包的内容
网络层的IP数据包使不可靠的,即不能保证该数据包一定能够交付到接收方,可用上层协议来确保其可靠性,如TCP协议。
最后需要注意的是TCP、UDP、ICMP和IGMP报文都是以IP数据包的格式传输的,虽然ICMP、IGMP和IP协议都在同一层——网络层。