IP地址分类
IP地址唯一标识网络中某一个设备, 其定义如下:
IP ::= { 网络号 : 主机号 }
IP地址编址历史
- 分类编址: IP地址可以划分为ABCDE五类, 可以参考下图
- 划分子网: 在分类编址的基础上定义了子网的概念和划分原理
- 无分类编址: 抛弃分类编址的方式, 重新定义编址方式
IP地址分类
IP常用地址
说明:
- A类地址中减去2表示排除了网络号全0(表示
本网络
)和网络号127(表示环回地址
)- B类地址中减去1表示排除了128.0(保留)网络
- C类地址中减去1表示排除了192.0.0(保留)网络
特殊IP地址
IP地址与硬件地址
IP地址唯一表示网络中的某一个设备, 硬件地址也是唯一表示某一个设备, 那么为什么需要两种地址呢?
这是因为全世界有着各种各样的网络, 不同的网络使用不同的硬件地址, 为了使得这些异构网络之间能够通信, 就需要一个统一的规则来表示每个设备, 也就是IP地址了
IP地址与硬件地址的原理区别
ARP协议
ARP协议
是用来找出IP地址对应的硬件地址, 还有一个协议是RARP协议
, 是用来找出硬件地址对应的IP地址, 这两个协议都是处于网络层中
ARP协议
的工作原理如下图所示:
ARP工作原理解释如下:
- 主机A在局域网中广播ARP请求分组
- 所有主机都受到ARP请求分组, 但是只有主机B响应分组
- 主机A收到主机B的响应分组, 在ARP高速缓存中记录主机B
注意:
- 主机A发送出ARP请求分组, 主机B会在ARP高速缓存中记录主机A, 这样可以避免主机B要找主机A的时候也要发出一个ARP请求分组, 减少了网络开销
- ARP高速缓存中的记录是有生存时间的, 过了生存时间的记录就会自动删除, 这是基于网络中的硬件地址是动态变更这种情况考虑的, 例如主机B换了一个网络适配器, 其先前的地址也就无效了
- ARP协议是解决同一个局域网内的主机中IP地址与硬件地址的映射问题
IP数据报格式
IP首部格式
- 版本: IP协议版本(IPv4, IPv6等)
- 首部长度: IP首部的字节长度, 范围为20~60
- 区分服务: 更多服务
- 总长度: IP数据报的长度, 范围为20~65535字节, 一般以太网使用的MTU(Maximum Transfer Unit)为1500, MTU表示IP数据报中数据部分的最大长度
- 标识: 报文段发生分片的时候使用, 接收端通过标识可以合并同一个标识的IP数据报
- 标志: 目前使用DF(Don’t Fragment)和MF(More Fragment)
- 片偏移: IP数据报合并时, 用来确认每一个IP数据报在原始报文段中的位置, 8个字节为单位
- 生存时间: IP数据报的生存时间, 目前一般表示跳数
- 协议: 表示IP数据报使用的协议, 例如: TCP, UDP, OSPF
- 首部检验和: 检验IP首部, 每一次路由转发后, 都会检验首部的正确性
- 源地址: 发送方IP地址
- 目的地址: 接收方IP地址
- 可选字段(长度可变)
- 填充: IP首部填充0, 知道满足以4个字节为单位
报文段切割
解释如下: 原始题目中规定IP数据报的
MTU
为1400, 由于片偏移
是以8个字节为单位, 我们发现8能够整除1400, 所以我们可以直接以1400个字节为切割单位, 分别切割出1400/1400/1000这样的3个数据, 然后分别计算片偏移
, 得到0/175/350, 这样把这些数据写到各自的首部中, 另外还需要给这3个数据一个共同的标识
(例如:12345).这样切割之后, 接收端就可以根据
标识
和片偏移
来组合IP数据报, 得到原始的报文段
IP层转发分组
转发分组涉及两个概念: 路由
和路由表
路由 ::= ( 目的网络地址, 下一跳地址 )
路由表 ::= 包含路由信息的表格
每一个IP数据报的转发都需要查询路由表
, 路由表
如下图所示:
分组转发算法流程如下:
- 从IP数据报首部中提取目的IP地址D, 并计算得到网络地址N
- 如果N就是与路由器直接相连的网络, 那么直接交付到目的主机, 否则执行(3)
- 如果路由表中有目的地址D的特定主机路由, 那么交付特定路由器, 否则执行(4)
- 如果路由表中有目的网络N的转发地址, 那么交付对应的路由器, 否则执行(5)
- 如果路由表中有默认路由, 那么交付默认路由器, 否则执行(6)
- 报告转发分组出错