TCP/IP IP协议
IP协议
- 无连接的协议
- 为上层通讯应用提供了最基本的服务
因特网设计的思想
对用户而言
抽象成为一个单一的网络
与底层的物理网络无关,运行在任何物理网络之上
从概念上划分层次
- 应用层要求可靠传输服务
- 传输层提供增强的传输服务
- 网际层提供无连接的分组传递服务
IP的目的(主要功能)
1 定义了报文的基本单位
2 定义了分组的转发
3 定义传输中遵循的一些规则(处理主机、路由器……
ICMP辅助处理差错
因特网数据报(IP分组)格式
帧格式:包含一个首部、数据区、尾部。
IP数据报(datagram)格式:包含首部(Header)和数据区(Payload)
IPv4报文格式
字段含义
- VERS:版本,4个bit
- HLEN:首部长度,4个bit,以四个字节为一个单位(4*15)
- Service Type:
1 | 服务类型 , 8bit, |
- 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特点
- 相比IPv4去掉了很多字段
- 基本首部固定长度
字段含义
Next Header字段
基本首部和扩展首部都包含这样的字段基本首部
扩展首部
通过Next Header将这些首部链在一起,例如
1 基本首部 + TCP报文段
2 基本首部 + 路由首部 + TCP报文段
3 基本首部 + 路由首部 + 认证首部 + TCP报文段
40个8位长度的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 | 太小:降低效率 |
IP 分片
IPv4分片
IPv4分片的大小是8的整数倍
IPv4在目标节点负责重装,中间路由器不负责重装
IPv6 分片
对于v6不允许中间的路由器分片,所以源站会先找出到目标站路径上的最小MTU
分片功能放到 扩展首部
规定只能在源主机进行分片,源到目标主机路径上的路由器不允许分片
Path MTU:
从源到目标所经过的所有链路上MTU中最小的MTU
1 | 找到 path MTU (PMTUD), 主机同时周期性进行查询 |
IPv6 分片扩展首部 格式
- FRAGMENT OFFSET 13bit
- MF 1bit
- IDENTIFICATION: 标识号,32bit
IPv6 分片的重装
在目标进行重装,中间节点不进行重装
1 | 缺点: |
选项
源IP 和 目标IP
IPv4选项部分是可变长度的,需要进行填充,填到32bit为止
IPv4选项定义在首部:可变长,一般用来进行测试、调试
IPv6首部不包含选项:这些功能被移到了扩展首部
IPv4 选项
(在实际通信中使用较少
选项的组成:
- option code:定义选项的类型
- length:选项总长度
- data:数据
选项 Option code字段
8bit
1 | 0 : copy |
IPv4选项举例
记录路由选项:
源站发出分组,初始化一个空地址列表,中间路由器在转发分组时依次加入IP地址
源路由选项 :
用于吞吐量测试
时间戳选项
IPv6 选项扩展
参考资料:
- INTERNETWORKING WITH TCP/IP PRINCIPLES, PROTOCOLS, AND ARCHITECTURE Vol1 (6th Edition). DOUGLASE E. COMER