TCP/IP IP协议

IP协议

  • 无连接的协议
  • 为上层通讯应用提供了最基本的服务

因特网设计的思想

对用户而言

抽象成为一个单一的网络
与底层的物理网络无关,运行在任何物理网络之上

从概念上划分层次

  • 应用层要求可靠传输服务
  • 传输层提供增强的传输服务
  • 网际层提供无连接的分组传递服务

IP的目的(主要功能)

1 定义了报文的基本单位
2 定义了分组的转发
3 定义传输中遵循的一些规则(处理主机、路由器……
ICMP辅助处理差错

因特网数据报(IP分组)格式

帧格式:包含一个首部、数据区、尾部。
IP数据报(datagram)格式:包含首部(Header)和数据区(Payload)

IPv4报文格式

IPv4报文格式

字段含义

  • VERS:版本,4个bit
  • HLEN:首部长度,4个bit,以四个字节为一个单位(4*15)
  • Service Type:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
服务类型 , 8bit,
0-2:Precedence 3:D(低延迟) T:4(高吞吐量) R:5(高可靠性)

改进:(补充 -> 适应媒体流的传输

IPv4 ToS
IPv6 Traffic class
Service Type:0-5 CODEPOINT(DSCP)

区分服务代码点:DSCP
对流量进行分类,给不同类别的流量以不同的优先级
低两位为未使用,高三位定义优先级
将高六位进行划分,管理池:
pool1: xxxxx0 可以定义32个类别,IETF来定义
pool2: xxxx11 用于本地或实验
pool3: xxxx01 用于本地或实验,可以用于扩充第一个组
  • Total Length:总长度
  • Identification:分组分片
  • Flags: DF(不允许分片), MF(有更多分片)…
  • Fragment Offset:分片的偏移(重装的时候的偏移量),13bit,分片的长度取8的整数倍 > offset的数值是除以 8的数值,因为8的倍数可以向左偏移三位,与Flags的3位错开
  • TTL:分组的生命期,8bit(实际用途用于跳数的限制
  • Protocol:上层协议的编号
  • Header Checksum:首部校验(求16进制反码和的反码)
  • Source IP Address
  • Destination IP Address
  • Payload

IPv6 报文格式

IPv6报文格式

IPv6特点

  • 相比IPv4去掉了很多字段
  • 基本首部固定长度

字段含义

  • Next Header字段
    基本首部和扩展首部都包含这样的字段

    基本首部
    

    ​ 扩展首部
    通过Next Header将这些首部链在一起,例如
    1 基本首部 + TCP报文段
    2 基本首部 + 路由首部 + TCP报文段
    3 基本首部 + 路由首部 + 认证首部 + TCP报文段

40个8位长度的IPv6固定长度基本首部格式

IPv6基本首部格式

  • VERS
  • TRAFFIC CLASS : 对应v4的ToS
  • FLOW LABEL: 流的标识号,用于取代目标IP,中间转发是根据流的ID进行转发
  • PAYLOAD LENGTH: 不包括首部的40字节基本长度
  • NEXT HEADER : 将首部串到一起(也可以用来指定上层的协议
  • HOP LIMIT:对应IPv4中的TTL
  • SOURCE ADDRESS 128bit
  • DST ADD 128bit

物理网的最大传输单位 MTU

1
2
3
太小:降低效率
太大:分片问题
例如:以太网 MTU=1500

IP 分片

IPv4分片

IPv4分片的大小是8的整数倍
IPv4在目标节点负责重装,中间路由器不负责重装

IPv6 分片

IPv6分片

对于v6不允许中间的路由器分片,所以源站会先找出到目标站路径上的最小MTU

分片功能放到 扩展首部
规定只能在源主机进行分片,源到目标主机路径上的路由器不允许分片

Path MTU:

从源到目标所经过的所有链路上MTU中最小的MTU

1
2
3
4
找到 path MTU (PMTUD), 主机同时周期性进行查询
查询过程:二分试探,如果中间传输报文过大,则返回
ICMPv6:Packet Too Big 报文
ICMPv4:Dest Unreach 报错,(DF 设为 1)

IPv6 分片扩展首部 格式

IPv6分片扩展首部格式

  • FRAGMENT OFFSET 13bit
  • MF 1bit
  • IDENTIFICATION: 标识号,32bit

IPv6 分片的重装

在目标进行重装,中间节点不进行重装

1
2
3
4
5
6
缺点:
1 若MTU较大,引起效率低
2 分片数量多后丢失的可能性较大
优点:
1 每个分片进行独立路由传输
2 中间节点不需要进行存储

选项

源IP 和 目标IP
IPv4选项部分是可变长度的,需要进行填充,填到32bit为止

IPv4选项定义在首部:可变长,一般用来进行测试、调试
IPv6首部不包含选项:这些功能被移到了扩展首部

IPv4 选项

(在实际通信中使用较少

选项的组成:

  • option code:定义选项的类型
  • length:选项总长度
  • data:数据

选项 Option code字段

8bit

1
2
3
4
5
6
7
8
0 : copy
copy = 0:只有第一个带上原来分组的选项
copy = 1:在分片的时候所有分片需要带上选项
1-2:Option Class
分成了4类,0、2有定义,1、3保留
option class = 0:进行控制
option class = 1:调试与测试
3-7:Option number

IPv4选项举例

  • 记录路由选项:

    IPv4记录路由选项

    源站发出分组,初始化一个空地址列表,中间路由器在转发分组时依次加入IP地址

  • 源路由选项 :

    IPv4源路由选项

    用于吞吐量测试

  • 时间戳选项

IPv6 选项扩展

IPv6的一些扩展选项

IPv6扩展选项格式


参考资料:

  • INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER