IP协议是网络层一个协议,IP协议主要来实现报文段在网络环境中的转发。
特点:
- 无连接
- 不可靠
- 无状态 ( 指通信双方不同步传输数据的状态信息,因此所有 IP 数据报的发送、传输和接收都是相互独立、没有上下文关系的。)
路由器实现就是到网络层,所以每台路由器在转发报文段时,根据IP协议进行转发,而且他只是尽自己最大能力去转发,并不会保证将报文段发送到目的主机。
无状态带来的问题
- 无法处理重复的报文段,没有能力进行去重操作
- 接收方接受的IP报文段有可能是乱序的,而且在网络层没有能力对其进行排序
IPV4协议的报头结构
- 4位版本号: IP协议的版本
- 4位头部长度: 多少个4字节 IP协议的头部最大就是60字节
- 8位服务器类型 :3位已经忽略的优先权字段 + 4位的TOS字段 + 1位保留字段(必须置0) 4种服务类型必须是互斥。 最小延时、最大吞吐量,最高可靠性和最小费用。
- 16位总长度 :头部长度和数据部分长度 , IP数据报理论的最大长度为2^16-1(65535), 但是由于数据链路层的MTU的限制,真实的长度远远没有达到这个值。以太网的MTU(最大传输单元)是1500字节。 如果IP报文段超过了MTU,则会被分片传输。
- 16位标识:(从同一个IP报文段划分出来的分片16位标识是相同的) 3位标志(1位保留, 第二位表示禁止分片 第三位表示有更多的分片,除了最后一个分片外,其他的分片都必须置位1) 13位片偏移量(这个分片相对于原始IP数据报的偏移值 – 仅数据部分, 这个值必须是8的倍数 – 二进制的数据最后三位为0)就是完成IP分片的。
IP分片既会在发送端发生,也可能在中间的路由器上发生
- 8位的TTL IP报文段在网络转发过程中的生存时间,最多经过的路由器的个数。将其称之为跳数。每经过一个路由器,则对TTL减一。当其减到0时,就将这个报文段直接丢弃。 – 用来防止在网络环境数据报的转发形成环。
- 8位协议 表示上层协议, ICMP – 1 TCP – 6 UDP – 17
- 16位头部校验和 只会对IP数据报的头部进行校验, 提高转发的效率
- 32位源端IP地址和32位目的端IP地址
IPV6的报头结构
与IPv4相比,IPv6的头部做了如下修改:
1.取消了首部长度,因为IPv6的首部长度是固定40个字节。
2.取消了服务类型,因为流标号和优先级结合起来实现了服务类型的功能。
3.取消了总长度字段,改用为有效载荷长度,有效载荷就是后面的扩展首部加上数据报中的数据。
4.取消了标识,标志和片偏移,因为这些功能都包含在了扩展首部里面。
5.取消了协议字段,改用为下一个首部,功能不变,这样更容易理解。
6.取消了生存时间ttl,改用为跳数限制,功能不变,这样更容易理解,更形象了。
7.取消了首部效验和,这样加快了路由器对数据报的处理速度,在数据链路层中,当我们发现有差错的帧就会抛弃,在运输层中,在udp中,当发现有差错就会抛弃,在tcp中,当发现有差错就会重传,直到传送到目的进程为止。因此在网路层的检测就可以精简掉。
8,取消了选项字段,功能归并在了扩展首部上。