IP原理学习笔记

Mar 27, 2016


IP地址分类

IP地址唯一标识网络中某一个设备, 其定义如下:

IP ::= { 网络号 : 主机号 }

IP地址编址历史

  • 分类编址: IP地址可以划分为ABCDE五类, 可以参考下图
  • 划分子网: 在分类编址的基础上定义了子网的概念和划分原理
  • 无分类编址: 抛弃分类编址的方式, 重新定义编址方式

IP地址分类

IP分类编址

IP常用地址

IP常用地址

说明:

  • A类地址中减去2表示排除了网络号全0(表示本网络)和网络号127(表示环回地址)
  • B类地址中减去1表示排除了128.0(保留)网络
  • C类地址中减去1表示排除了192.0.0(保留)网络

特殊IP地址

特殊IP地址


IP地址与硬件地址

IP地址唯一表示网络中的某一个设备, 硬件地址也是唯一表示某一个设备, 那么为什么需要两种地址呢?

这是因为全世界有着各种各样的网络, 不同的网络使用不同的硬件地址, 为了使得这些异构网络之间能够通信, 就需要一个统一的规则来表示每个设备, 也就是IP地址了

IP地址与硬件地址的原理区别

IP地址与硬件地址的原理区别

ARP协议

ARP协议是用来找出IP地址对应的硬件地址, 还有一个协议是RARP协议, 是用来找出硬件地址对应的IP地址, 这两个协议都是处于网络层中

ARP协议的工作原理如下图所示:

ARP协议的工作原理

ARP工作原理解释如下:

  1. 主机A在局域网中广播ARP请求分组
  2. 所有主机都受到ARP请求分组, 但是只有主机B响应分组
  3. 主机A收到主机B的响应分组, 在ARP高速缓存中记录主机B

注意:

  • 主机A发送出ARP请求分组, 主机B会在ARP高速缓存中记录主机A, 这样可以避免主机B要找主机A的时候也要发出一个ARP请求分组, 减少了网络开销
  • ARP高速缓存中的记录是有生存时间的, 过了生存时间的记录就会自动删除, 这是基于网络中的硬件地址是动态变更这种情况考虑的, 例如主机B换了一个网络适配器, 其先前的地址也就无效了
  • ARP协议是解决同一个局域网内的主机中IP地址与硬件地址的映射问题

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数据报分片举例

解释如下: 原始题目中规定IP数据报的MTU为1400, 由于片偏移是以8个字节为单位, 我们发现8能够整除1400, 所以我们可以直接以1400个字节为切割单位, 分别切割出1400/1400/1000这样的3个数据, 然后分别计算片偏移, 得到0/175/350, 这样把这些数据写到各自的首部中, 另外还需要给这3个数据一个共同的标识(例如:12345).

这样切割之后, 接收端就可以根据标识片偏移来组合IP数据报, 得到原始的报文段


IP层转发分组

转发分组涉及两个概念: 路由路由表

路由 ::= ( 目的网络地址, 下一跳地址 )
路由表 ::= 包含路由信息的表格

每一个IP数据报的转发都需要查询路由表, 路由表如下图所示:

IP层转发分组

分组转发算法流程如下:

  1. 从IP数据报首部中提取目的IP地址D, 并计算得到网络地址N
  2. 如果N就是与路由器直接相连的网络, 那么直接交付到目的主机, 否则执行(3)
  3. 如果路由表中有目的地址D的特定主机路由, 那么交付特定路由器, 否则执行(4)
  4. 如果路由表中有目的网络N的转发地址, 那么交付对应的路由器, 否则执行(5)
  5. 如果路由表中有默认路由, 那么交付默认路由器, 否则执行(6)
  6. 报告转发分组出错

上一篇博客:回溯法原理学习笔记
下一篇博客:find指令学习笔记