目录
IP协议有三大特点:无连接、无状态、不可靠。
四位版本号
四位头部长度
八位服务类型:
十六位总长度
16 位标识, 3 位标志, 13 位片偏移
八位生存时间
八位协议
十六位首部校验和
关于IP v4地址不够的问题
ip地址动态分配:
ip地址转换(NAT)
数据传输和返回过程
IP协议位于OSI五层模型的第三层,网络层
IP协议有三大特点:无连接、无状态、不可靠。
无连接:客户端和服务端不会长期的维持对方的信息,所以每次必须指定IP地址。
无状态:数据的发送、传输以及接收都没有上下文关系,也就是说接收端可以收到重复的、无序的报文。
不可靠:不能保证数据每次都能从发送端传输到接收端,所以不安全。
其中我们着重介绍一下 IPV4版本
我们先来看一下IPV4的报头结构这是存在于各大教科书上的
实际上我们这样看会更好理解,从上到下,从左到右
让我们依次介绍
四位版本号
介绍当前协议的版本,目前只有IP v4和IP v6两个版本
四位头部长度
表示整个报头的大小, 虽然只有 4 位, 能表示 1 - 15, 但是这个字段的单位是 4 个字节, 也就是说这个 IP 报头的长度范围在 15 - 60 个字节之间
八位服务类型:
虽然有着八位,但是实际上使用的只有前面四个字节,这四位中只能有一位是1,其余都是0,他们分别表示四个不同的服务类型
(1) 最小延时 (2) 最大吞吐量 (3) 最高可靠性 (4) 最小成本
十六位总长度
表示这个数据包的大小,包括了接收的TCP载荷和报头,如果太长导致IP协议无法装下,那么就会进行分包组装再发送
16 位标识, 3 位标志, 13 位片偏移
这三个是一起的,所以我们放在一起讲
假如说这里有个超出了一次性发送最大限制的TCP协议,那么我们就会对其拆分
我们假设将其拆分为3段
因为网络中同一时刻,可能有许多经过拆分或者其他的数据包涌入,所以为了保证将被拆分的三个数据包联系在一起,我们就在IP报头处添加了标识
这也就是16位标识
但是网络的变化是非常大的,可能数据三先到接收方,也可能数据二先到接收方
如果我们不是按照数据一二三的先后顺序让接受方来解析,那么就会产生错误的结果
所以为了保证数据的顺序,我们引入了片偏移
最后,加上三位标志,来确定改包是否传输完整结束.
1表示还没结束 0表示结束
八位生存时间
在传输过程中,有个叫做TTL的整数,没经过一次中间设备的转发,TTL的数量就会减一,如果TTL=0,那么这个包就会直接被丢掉
八位协议
用来表示传输层使用了什么协议
十六位首部校验和
用来检查数据的准确性
关于IP v4地址不够的问题
因为如果要给每个互联网设备分配对应的唯一ip地址的话,那么目前IP v4已经不能够满足如此巨大的开销了
所以我们目前是采用 ip地址转换(NAT)+ip地址动态分配来缓解这个问题
ip地址动态分配:
只给正在网络中使用的设备分配ip,简单来说就是只给联网的设备分配ip
ip地址转换(NAT)
我们将所有的ip地址,分为内网(局域网)和外网(局域网外的广域网)
外网和内味设备,ip唯一不能重复,但是不同内网的子网中的设备ip是允许重复的
数据传输和返回过程
假设我们的设备1要传输数据给路由C
那么情况如下
从路由C返回给设备1的响应