一、IP协议的报文格式
1、4位版本号
目前只有IPv4和IPv6两个版本,所以这里只能填4或6。
2、4位首部长度
4个bit能表示的最大数字是15,而这里的单位是4个字节,所以首部长度最大为15*4=60个字节。
3、8位服务类型
8位服务类型中只有4位是有效的,用来表达当前IP协议不同的“工作模式”:最小延时、最大吞吐量、最高可靠性、最小成本;这4位里最多只有一位可以是1,不能同时出现多个1。
4、16位总长度
16位总长度描述了IP数据报的报文长度。
TCP报文长度 = IP协议16位总长度 - IP协议4位首部长度。
5、16位标识、3位标志、13位片偏移
IP协议自带分包组包的机制,可以把一个很大的IP数据包分成多个小的数据包。
(1) 同一组数据包具有相同的16位标识;
(2) 3位标志中只有两位在起作用:
① 一位用来标识当前是否分包;
② 一位用来表示当前这个包是不是该分组的最后一个包;
(3) 13位片偏移用来区分包的前后顺序。
6、8位生存时间
网络传输过程中,有些数据可能永远也发不到目的IP、目的端口处,但是这个数据不能在网络传输中被各个设备来回转发,所以用TTL来描述数据的生存时间,单位是“次数”,TTL一般是64/128。
在网络传输过程中,数据没经过一个路由器,TTL就减1,如果TTL减到了0,数据还没传送到目的IP处,那么就会丢弃这个数据。
7、8位协议
8位协议指的是IP载荷部分中数据报使用的传输层协议。
接收端收到数据进行分用时,就可以通过IP报文中的8位协议知道,接下来要把数据交给传输层的哪个协议进行解析。
8、16位首部检验和
类似于TCP协议的校验和,使用CRC进行校验,用来鉴别数据在传输过程中是否损坏。
9、选项
类似于TCP协议的选项,可有可无,最多占用40字节。
二、认识IP地址
IP地址本质上是32位的整数,但是为了方便查看,又用点分十进制的方式进行表示:即使用3个点把IP地址分成4个部分,每个部分是8个bit,取值范围为0~255。
1、IP地址具体的规则
1、组成
IP地址分为两个部分:网络号和主机号。
网络号:标识网段,保证相互连接的两个网段具有不同的标识;
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是主机号不能相同。
2、划分
使用一个32位的子网掩码进行划分,子网掩码也使用点分十进制的方式表示。
子网掩码的左半边都是1,右半边都是0;
左半边有N个1,就表示IP地址从左往右的N位都是网络号。
3、特殊的IP地址
(1) 如果一个IP地址的主机号全部为0,此时这个IP就表示网络号,代表当前局域网;
(2) 如果一个IP地址的主机号为1,此时这个IP表示这个局域网的网关(不绝对,只是习惯用法);
(3) 如果一个IP地址的主机号全部为1,此时这个IP表示广播IP;
(4) 127.*开头的IP表示环回IP,通常使用127.0.0.1。
2、IP地址不够用的情况
IP地址用来区分网络上每台计算机,但32个bit位能表示的最大值不到43亿,按照这个设定,IP协议最多只能表示不到43亿台设备,但是当前世界上的上网设备早已超出了这个数值,那么这个情况如何处理呢?
(1) 动态分配IP地址
只有在用户联网的时候才分配IP地址,不联网的时候就把IP回收分配给其他设备。
(2) NAT机制
① 不再强制要求每个主机都有独立的IP,而是把IP地址分为两大类:外网IP/公网IP 和 内网IP/私网IP/局域网IP,两大类;
以10.*,172.16.*~172.31.*,192.168.*这三类开头的IP都是内网IP,其余的都是外网IP。
② 然后约定,在同一个局域网内,不能用重复的IP地址,但是在不同的局域网内,IP地址可以重复。
③ 如果在局域网内部访问外网的服务器,就会使用一个外网IP来代替局域网中的设备来访问。
当前网络的现状:动态分配IP+NAT机制
(3) IPv6
IPv6使用16个字节来表示IP地址,相比IPv4,多了2的96次方个地址,彻底解决IP地址不够用的问题。