一.IP数据报结构
(1)版本:指明协议的版本,IPv4就是4,IPv6就是6
(2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节
(3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最大吞吐量,最高可靠性,最小成本
(4)总长度:报头+数据部分。IP数据报最大长度为2^16字节,也就是64KB
(5)生存时间:单位是次数,防止数据在网络上无限转发,8个比特位表示IP数据报最多能在网络上转发128次
由上图可知,从我这里到美国政府官网IP数据报也仅仅转发了18次,所以8位生存时间完全够用
(6)协议:表示在传输层使用什么协议,UDP还是TCP还是其他?
(7)校验和:只针对IP报头进行校验,因为IP载荷部分有UDP/TCP进行校验
(8)源地址:发送方的IP地址
(9)目的地址:接收方的IP地址
(10)可选字段:主要是拓展功能,最大长度是40字节
(11)填充:保证IP报头的长度是4的整数倍
问题一:16位标识,3位标志,13位片偏移分别有什么用?
IP数据报最终是会传递给数据链路层再封装,但是由于物理条件的影响,数据链路层的载荷最大能携带1500(MTU)字节。虽然IP数据报载荷最大能携带64KB的数据,但由于下层的限制,必须在网络层进行拆分,数据到达接收方的时候再组装。而拆分和组装的过程就需要用到标识,标志,片偏移这三个字段
(1)16位标识:唯一标识一个IP数据报。同一个数据报的标识是一样的,便于区分哪些分区属于同一个数据报
(2)3位标志:
-
第一位:保留位,必须为0(暂时用不到这个保留位,所以先设为0,方便以后使用)
-
第二位:如果为1,表示该数据报禁止分片。当IP载荷超过MTU时就会丢弃该数据报,并且返回ICMP错误信息给源主机(发送方)
-
第三位:如果为1,表示该数据报不是最后一个分片,最后一个分片为0
(3)13位片偏移: 指示当前分片在原数据报中的位置(以8字节为单位)
二.IP协议解析
2.1地址管理
IP地址是32位比特位,通常用点分十进制表示,比如(192.168.1.1)。IP地址一共有2^32个,大概是43亿个,看似是一个比较庞大的数字。但随着科技的发展,现在的智能家电也需要分配IP地址,这就导致IP地址逐渐不够用了,那么如何解决这一问题,有以下几个策略
2.1.1 动态分配IP地址
只给接入网络的设备分配IP地址,该设备每次接入互联网分配到的IP地址不一定是一样的,这样就避免IP地址一直绑定在某个设备上
2.1.2 NAT机制
将IP地址分为公网IP和私网IP,公网上的IP必须是唯一存在的,但是不同私网中可以存在相同的IP
基于以上的设定,必须要做出以下限制:
1.公网设备访问公网设备,无限制
2.局域网设备访问局域网设备(同一局域网),也没啥问题
3.局域网设备访问局域网设备(不同局域网),不允许
4.局域网设备访问公网设备,需要将局域网设备的私网IP替换为公网IP
5.公网设备访问局域网设备,不允许主动访问
2.2网段划分
IP地址由网络号+主机号组成
网络号:用于标识一个特定的网络,确定数据包应该被发送到哪个网络
主机号:用于区分同一网络中的不同设备
网络号的长度取决于IP地址的类型和子网掩码
A类:0.0.0.0到127.255.255.255
B类:128.0.0.0到191.255.255.255
C类:192.0.0.0到223.255.255.255
D类:224.0.0.0到239.255.255.255
E类:240.0.0.0到247.255.255.255
但是按照上述规则来划分网络号和主机号有很大弊端
以B类地址为例,一个IP地址可以容纳2^16(六万多)主机,在现实情况中一个子网很难有拥有这么多主机,导致大量IP地址被浪费掉。面对IP地址本来就不够用的趋势,就有了新的划分方案
子网掩码
格式:也是32位比特位,通常使用点分十进制的形式表示
作用:子网掩码用于划分IP地址的网络部分和主机部分。例如,一个常见的子网掩码11111111.11111111.11111111.00000000(255.255.255.0)表示前24位是网络号,后8位是主机号
通俗来讲,从左到右(从高位到低位),1的个数就是网络号的个数,0的个数就是主机号的个数。将IP地址和子网掩码进行&运算,计算结果就是网络号
特殊的IP地址
(1)将IP地址中的主机号全设置为0,就变成了网络号,表示当前主机,该IP地址**不能分配**给某个主机
(2)将IP地址中的主机号全设置为1,就变成了广播地址。用于在网络中所有设备发送信息
(3)127.*地址用于本机环回测试,通常使用127.0.0.1
2.2路由选择
作用:路由器根据数据包的目的IP地址,选择一条合适的路径将数据包转发到下一个路由器,最终到达目的地
路由表:路由器内部维护的一张表,记录了到达不同网络或主机的路径信息。路由表包含目的地址、网络掩码、下一跳IP地址、输出接口等信息