IP 协议详解

文章目录

  • IP 协议详解
    • IP 服务的特点
    • IPv4 头部结构
      • 使用 tcpdump 观察IPv4头部结构
    • IP分片
    • IP路由
      • 路由机制
    • IP转发
    • 重定向
      • 主机重定向实例
    • IPv6头部结构
      • IPv6固定头部结构
      • IPv6扩展头部结构

IP 协议详解

IP 头部信息。
IP 数据报的路由和转发

IP 服务的特点

无状态、无连接、不可靠
指 IP 通讯双方不同步传输数据的状态信息。从上层协议来看,上层接收到的数据 可能是乱序的、重复的。
无状态协议(常见的协议)优点:无须为保持通讯的状态而分配一些内核资源,也无需每次传输数据时都携带状态信息。如 UDP 协议和 HTTP 协议。
无连接是指通讯双方都不长久地维持对方的任何信息。
不可靠是指 IP 协议不能保证 IP 数据报准确地到达接收端,只是承诺尽最大努力。
使用 IP 服务的上层协议( TCP 协议)需要自己实现数据确认 、超时重传等机制以达到可靠传输的目的。

IPv4 头部结构

20字节,除非含有可变长选项部分
IP 协议详解_第1张图片
4 位版本号:指定 IP 协议的版本。IPv4为6.
4位头部长度:标识该 IP 头部有多少32 bit 字。
8位服务类型(type of service,TOS):3位优先权字段(已被忽略),4位 TOS 字段 (最小延时,最大吞吐量,最高可靠性和最小费用,其中最多有一个可置为1)和1位保留保留字段(必须置0).
16位总长度:是指整个 IP 数据报的长度(最大2^16-1=65535字节), 但由于 MTU 的限制,长度超过 MTU 的数据报都将被分片传输。
16位标识:唯一的标识主机发送的每一个数据报。每发送一个数据报,其值就加一(初始值系统随机生成)。同一个数据报的所有分片都具有相同的标识值。
3位标志字段:第一位保留;第二位(DF,Don‘t Fragment)表示禁止分片。如果为1且IP 数据报长度超过MTU 的话,IP 模块将丢弃该数据报并返回一个ICMP 差错报文;第三位(MF,More Fragment)表示更多分片,除了数据报的最后一个分片其他分片都要把它置一。
13位分片偏移是分片相对原始IP 数据报开始处(仅指数据部分的偏移)的偏移。实际的偏移值是该值乘以8(左移3位)。每个IP分片的数据部分的长度必须是8的整数倍。
8位生存时间(Time To Live,TTL)是数据报到达目的地之前允许经过的路由器跳数。被发送端设置(常见为64)。当TTL减为0,路由器将数据报丢失,并向源端发送一个ICMP 差错报文。
8位协议用来区分上层协议。protocol字段值:ICMP是1,TCP是6,UDP是17。
16位头部校验和由发送端填充,接收端对其使用CRC算法以校验IP数据报的头部(仅头部)在传输过程中是否损坏。
32位源端IP地址32位目的端IP地址用来标识数据报的发送端和接收端。
选项字段是可变长的可选信息,最多包含40个字节。可选的IP选项包括:
记录路由 ,时间戳(timestamp),松散源路由选择,严格源路由选择。

使用 tcpdump 观察IPv4头部结构

sudo tcpdump -ntx -i lo 
telent 127.0.0.1  #在另一个终端中输入

IP分片

一个IP数据报的每个分片都具有自己的IP头部,他们具有相同的标识值,但具有不同的片偏移。
IP层传输给数据链路层的数据可能是一个完整的IP数据报,也可能是一个IP分片,它们统称为IP分组(packet)
注意:不区分IP数据报和IP分组。

IP路由

IP协议的一个核心任务是数据报路由,即决定发送数据报到目标机器的路径。
IP 协议详解_第2张图片

路由机制

IP 协议详解_第3张图片
路由机制三步骤:
(1)查找完全匹配的IP地址。
(2)查找具有相同网络ID的网络IP地址。
(3)选择默认路由项,意味着下一跳路由是网关。所有因特网的请求都将通过网关来转发。
通过route命令或其他工具手工修改路由表,是静态的路由更新方式。

IP转发

数据报转发子模块将对期望转发的数据报执行如下操作
(1)检查TTL值。为0丢弃该数据包。
(2)查看数据报头部的严格源路由选择选项。
(3)如果必要,给源端发送ICMP重定向报文。
(4)TTL减一。
(5)处理IP头部选项。
(6)如果必要,执行IP分片操作

重定向

IP 协议详解_第4张图片
此报文也能用于更新路由表(通常是更新路由表缓冲)。
一般来说,主机只能接受ICMP重定向报文,而路由器只能发送ICMP重定向报文

主机重定向实例

IP 协议详解_第5张图片

IPv6头部结构

IPv6头部由40字节的固定头部和可变长的扩展头部组成。

IPv6固定头部结构

IP 协议详解_第6张图片
4位版本号指定IP协议的版本。IPv6的值为6.
8位通信类型指示数据流通信类型或优先级,和IPv4中TOS类似。
20位流标签是IPv6新增加的字段,用于音频或视频等实时数据传输。
16位净荷长度IPv6扩展头部和应用程序数据长度之和。
8位下一个包头指出紧跟IPv6固定头部后的包头类型(扩展头或某个上层协议)。类似IPv4头部中的协议字段。
8位跳数限制和IPv4中的TTL含义相同。
128位源端IP地址和128位目的端IP地址:零压缩法表示(只能使用一次)

IPv6扩展头部结构

IP 协议详解_第7张图片

你可能感兴趣的:(Linux高性能服务器,网络,网络协议,udp)