IP协议报文格式
IP协议报文格式与TCP协议的报文格式类似;
IP报文的宽度也是32位;
对应的IP的实际报头为20字节为定长报头(固定长度);
-
版本
占4位,标示IP协议的版本号,对于IPv4时值为4;
-
首度
占4位,标示IP首部的长度,以4 byte(32 bit)为单位;
通常情况下范围为0000 ~ 1111(二进制),即(0~15) * 4 byte为0~60 byte;
首度包括实际报头,选项以及填充;
实际报头的大小是固定长度20 byte,
故首度通常为0011 ~ 1111 (二进制),即5 ~ 60 byte;
-
服务类型(TOS)
占8位,标示指定数据包的优先级和服务质量特征,如延迟低,高吞吐量,高可靠性等;
其中3位标示优先权字段(已弃用),4位TOS字段以及1位保留字段(置为0);
4位TOS分别表示最小延时,最大吞吐量,高可靠性以及最小成本,这四种TOS相互冲突,需要根据具体的场景选择其中一种服务类型;
-
总长度
占16位,标示整个IP数据包的长度,这个长度包括首部和数据,以字节为单位,最大长度为65535 byte;
-
标示
占16位,用于唯一标识主机发送的每个数据报,在数据报分片时用于识别分片属于哪个数据报;
-
标志
占3位,控制分片的属性,第1位为保留位,通常为0,第二位为DF(Don't Fragment)不分片标志,第三位为MF(More Fragments)表示后续还有更多分片;
-
片偏移
占13位,表示分片相对于原始数据报的起始位置,以8 byte位单位;
-
生存时间
占8位,表示数据包在网络中允许存活的跳数;
这里的跳数指的是从一个设备到另一个设备表示为一跳;
每经过一个路由器,这个值将-1,若减到0数据包会被丢弃;
-
协议
占8位,指示数据部分使用的协议类型,如TCP (6),UDP (17)等;
-
首部校验和
占16位,用于校验IP头部的完整性以确保数据未被篡改,首部校验和每经过一个路由器都将重新计算;
-
-
选项
选项通常为可变长度字段,用于支持网络测试,调试,安全等功能,不是常用字段,使用选项字段时通常会增加数据包的复杂性;
-
填充
用于确保IP头部是32位的整数倍;
-
数据
实际承载的有效载荷,通常是更高层协议的报文数据,如TCP或者UDP;
IP协议报文如何进行报头与有效载荷分离
IP协议报文与TCP协议报文相似,通常采用定长报文与自描述字段的方式将报头与有效载荷进行分离;
IP报文的报头固定长度为20byte;
其中16位总长度表示整个报文的大小,这个字段为实际报头,选项,填充以及数据的共计大小;
4位首度为实际报头,选项,填充的总大小;
-
假设:
16位总长度字段计算为60byte
4位首度字段计算为40byte
通过16位总长度字段所计算出来的长度减去4位首度字段所计算出来的大小即得到数据的大小;
数据大小为即为60byte - 40byte为20byte;
通过4位首部字段所计算出来的长度减去实际报头固定长度20byte即得到是否存在选项即选项大小;
选项大小即为40byte - 20byte为20byte;
当报头与有效载荷进行分离后需要将数据交付给上层协议,在IP报文中的 8位协议 字段即表示需要将该有效载荷交付给上层的哪个协议,即TCP或UDP;
每一层负责将对应的有效载荷交付给上层,IP协议负责将数据交给上层协议,如TCP或UDP,对应的上层协议通过端口号将有效载荷交付给上层,如Http/Https协议,以此类推;
网段划分
IP协议通常由两个部分组成:
把网络比喻为同一届的专业,其中网络号就是专业中每个班级的班级号,主机号则为每个班级中不同学生班级内的学号;
在同一个班级中每个人的号数是的,同样的在同一届的专业中,每个班级的班级号也是的,但是在不同的班级中可以有相同的班内学号;
即:
- 不同的子网其实就是把网络号相同的主机放到一起
- 同一子网内的两台主机网络号必须一致但主机号必须不同
- 不同子网中两个主机的网络号必须不同但主机号可以相同
路由器的功能通常为IP报文的转发以及构建子网(局域网),其中构建子网时路由器设备是该子网中的第一台设备;
其中每类网络的网段划分为如下:
-
A类
0.0.0.0到127.255.255.255;
第一个字节(8位)用作网络号,剩下的24位用作主机号;
除去全0和全1的情况,有效的网络范围为1.0.0.0到126.0.0.0;
-
B类
128.0.0.0到191.255.255.255;
前两个字节用作网络号,后16位作为主机号;
同样除去全零和全一,有约1.6w个网络,每个网络可容纳65534个主机;
-
C类
192.0.0.0到223.255.255.255;
前三个字节用作网络号,剩下的八位用作主机号;
这允许约210w个网络,每个网络能够拥有254个主机;
-
D类
224.0.0.0到239.255.255.255;
这一类是保留给多播使用的(不同于单播用途的A,B,C类);
-
E类
240.0.0.0到247.255.255.255;
这一类网络是保留用于科研和开发用途,同样不划分网络号和主机号;
这种方式被称为 “分类划分法” ;
当需要区分网络属于哪一类时只需要遍历该IP的前一个字节即可,A类网络的第一个字节值在0~127之间,B类网络为128~191之间,C类网络为192~223之间,D类网络为224~239之间,E类网络为240~255之间;
通常负责进行网络划分的有一种特定的组织,为因特网提供组织,即运营商(ISP);
针对这种方式提出了一种新的网络划分方式 —— CIDR;
CIDR
CIDR为在传统的分类划分基础上引入了一个额外的子网掩码来区分网络号和主机号;
每一个子网都有自己的子网掩码,子网掩码实际就是一个32bit的正整数,通常以一串0来结尾;
-
其中/24表示子网掩码中1的长度;
子网掩码即为11111111.11111111.11111111.00000000,为255.255.255.0;
计算结果如下:
11000000.10101000.01100100.00001110 (IP地址)
11111111.11111111.11111111.00000000 (子网掩码)
-------------------------------------------- (按位&)
11000000.10101000.01100100.00000000
↓ 转化为点分十进制 ↓
192.168.100.0
- 首地址为
192.168.100.1 - 广播地址为
192.168.100.255 - 尾地址为
192.168.100.254 - IP范围为
192.168.100.1 ~ 192.168.100.254(除去网络号与广播号)
子网掩码可以对32位的IP进行任意划分,并不止是以八位八位的方式进行划分,例如子网掩码可以为/28,/30等等;
特殊的IP地址
如上文中举例的IP范围为192.168.100.1 ~ 192.168.100.254实际上就是去除了网络号和广播号;
以上面的例子为例,其中192.168.100.0即为网络号,192.168.100.255为广播号;
-
对应的IP范围为127.0.0.0到127.255.255.255;
本地环回的数据会贯穿网络协议栈,但最终不会将数据发送到网络当中;
本地环回的数据将自顶向下贯穿协议栈进行一次封装的过程,然后通过以太网驱动程序判断该数据是否属于本地环回数据,若是为本地环回数据时已经封装了的数据将再次贯穿协议栈自底向上一次将数据进行解包和分用;
IP地址的数量
私有IP和公网IP
-
10.*
-
172.16 ~ 172.31
-
192.168.*
通常情况下可以通过ipconfig来查看当前机器的一些网络信息;
本地链接 IPv6 地址. . . . . . . . : fe80::5747:caab:5a0f:63bc%3
IPv4 地址 . . . . . . . . . . . . : 192.168.0.101
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.1
其中192.168.0.101即为当前的私网IP;
理解运营商
通常情况下入网需要两个设备,分别为调制解调器以及路由器,其中调制解调器用来解析光纤中的光电信号,将光电信号转化为模拟信号,数字信号;
入网时通常会有一个用于入网的账号密码,路由器连接光纤,配置路由器中的入网密码;
使用路由器可以进行无线的局域网连接,即路由器构建了一个局域网,为了防止网络安全,即不被陌生人进行网络连接,路由器本身也将会有一个账号密码用来识别身份从而避免陌生人使用该路由器的网络从而连接该路由器的局域网;
运营商拥有大量的网络基础设施,包括路由器,交换机,光纤线路等,这些设备构建了连接不同网络和主机的物理通道;
运营商之间通过告诉的中继线路相互连接从而形成一个庞大的网络;
-
-
域名系统(DNS)
-
网络维护与安全
运营商还负责网络的维护和安全;
他们监控网络流量,确保网络畅通无阻,并采取措施保护网络免受恶意攻击;
同时,运营商还可能提供额外的网络安全服务,如防火墙,入侵检测系统等;
-
数据中心服务
许多大型运营商还运营数据中心,为企业提供服务器托管,云计算和大数据处理等服务;
这可以帮助企业降低建立和维护自有数据中心的成本;
-
访问控制和服务质量
运营商根据不同服务套餐,在用户的带宽,数据使用量及其他服务特性上进行和控制;
例如,可能对流量进行优先级排序,使某些服务(如IPTV)具有较高的传输质量;
-
国际互联
由于互联网是全球性的,运营商还通过海底光缆,卫星链路等方式与其他国家的网络进行连接;这些国际链路使得数据通讯成为可能;