网络知识总结----(二)IP协议详解

IP服务

IP协议:是TCP/IP协议族的动力,它为上层提供无状态、无连接、不可靠的服务。

  • 无状态:IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送、传输、接收都是相互独立、没有上下文关系的。
    • 优点:简单高效,无需为状态分配资源信息,也不需要传递状态信息。(UDP、HTTP也是无状态)
    • 缺点:无法处理乱序和重复的数据报
  • 无连接:IP通信双方都不长久的维持对方的信息。这样,上层协议每次发送数据时,都要指定对方IP地址
  • 不可靠:不能保证IP数据报能准确的发送到目的端。
    • 当中转路由器发现一个IP数据报在网络上存活时间太长了,就会将其丢弃,并发送一个ICMP错误信息给发送端。
    • 当接收端通过校验和发现IP数据报出现错误,接收端将其丢弃,并向接收端发送一个ICMP错误信息给发送端。

IPv4头部结构

IPv4头部通常为 20 字节,除非含有可变长的选项部分。
网络知识总结----(二)IP协议详解

  • 4位版本号:指定IP协议的版本。IPv4 值为 4
  • 4位头部长度:标识该IP头部有多少个32bit(4字节)。4 位长度最大为 15,所以IP头部最长是 60 字节
  • 8位服务类型:3位优先权字段(已忽略),4位TOS字段和 1 位保留字段(必须置0)。4位TOS分别表示:最小延时、最大吞吐量、最高可靠性和最小费用。
  • 16位总长度:整个IP数据报的长度,字节为单位,因此IP数据报的最大长度为65535(2^16-1)。超过了MTU限制,将会分片传输。
  • 16位标识:唯一的标识主机发送的每一个数据报,同一个数据报的所有分片具有相同的标识值。
  • 3位标志:第一位保留,第二位(DF,Don’t Fragment)表示禁止分片,第三位(MF,More Fragment)除数据报的最后一个分片,其它分片都为 1
  • 13位分片偏移:分片相对原始IP数据报的偏移。实际是该值左移三位(乘8)得到的。所以除最后一个分片每个IP分片数据部分长度位8的整数倍。
  • 8位生存时间
  • 8位协议:用来区分上层协议
  • 16位头部校验和:有发送端填充
  • 32位源/目的端IP地址:不改变
  • 选项(最多40字节):1. 记录路由 2.时间戳 3.松散源路由选择 4.严格源路由选择

IP分片

当IP数据报长度超过帧的MTU时,IP数据报将被分片传输。分片可能发生在发送端、中转路由器或传输过程中,但最终在目标机器上被内核IP模块组装。
以太网帧的MTU:1500字节,IP数据报长度超过1500字节进行分片传输。

IP路由

决定发送数据报到目标机器的路径,通过查表的方式选择下一跳的位置。
路由表:包含IP地址,子网掩码,网络接口
路由方式:目的IP与子网掩码进行与操作,如果发现有某个表项匹配,就直接从该网络接口中继续转发数据,如果没有找到匹配的表项,直接走默认表项(下一跳表项)。

IP不够用的解决办法

  • CIDR:子网掩码,提高了IP地址的利用率,减少浪费,但是IP地址上限没有改变
  • 动态IP分配:只给接入网络的设备分配IP,同一机器多次接入网络,MAC不变,IP地址可能改变
  • NAT机制:由NAT设备进行源IP地址的替换
  • IPv6:从根本上解决IP地址不够的情况,但与IPv4不兼容