网络层

delims 于 2020-08-09 发布

将网络互连起来要使用一些中间设备,根据中间设备所在的层次划分:

  1. 物理层使用的中间设备叫转发器(repeater),集线器是多网口的转发器
  2. 数据链路层使用的中间设备叫网桥桥接器(bridge),交换机是多网口的网桥
  3. 网络层使用的中间设备叫路由器(router)。
  4. 在网络层以上使用的中间设备叫网关(geteway)。

现在主要使用无分类编址(CIDR),IP地址分类早已成为历史,稍微了解一下

分类 前缀 网络号位数 主机号位数
A类 0 8 24
B类 10 16 16
C类 110 24 8
D类 1110    
E类 11110    

私有地址和保留地址

A类地址

B类地址

C类地址

其中D类地址主要用于多播

我们知道一个网络号中有很多主机号。我们要给一个主机发数据,路由器只是查找网络号,找到目标网络号,然后交付目标主机。

这里我个人理解为 D 类地址的网络号是 32 位。主机号0位。所以每个D类地址都代表一组主机,所以用于多播。

地址解析协议 ARP

ARP 分组格式,长度单位:字节

字段 硬件类型 协议类型 硬件地址长度 协议地址长度 op 发送端MAC 发送端IP 目的MAC 目的IP
长度 2 2 1 1 2 6 4 6 4

ARP 请求/应答分组固定 28 字节。前面加上 14 字节的MAC帧首部即构成总长度 42 字节的ARP分组。

字段 长度 说明
硬件地址类型 2 硬件地址不止以太网一种,如果是以太网设置为 1
协议类型 2 映射的协议地址类型,要对IPv4进行映射,值为 0x0800
硬件地址长度 1 MAC地址长度为 6 字节,值为 6
协议地址长度 1 IP地址长度为 4 字节,值为 4
op 2 操作类型。1 是 ARP请求;2 是ARP应答;3 是RARP请求;4 是RARP应答
发送端MAC地址 6 和MAC帧源MAC地址一致
发送端IP地址 4 发送端的IP地址
目的MAC地址 6 目的MAC地址
目的IP地址 4 目的IP地址

IP数据报的格式

IP数据报有 20 字节的固定首部。我按照自己的理解分成每 4 个字节一块,并给每一块取了一个名字,只是为了方便记忆。

分区 长度 字段 字段 字段 字段
总体概况 4 版本 4b 首部长度 4b 区分服务 1B 总长度 2B
分片相关 4 标识 2B 标志 3b 片偏移 13b  
交付相关 4 生存时间 1B 协议 1B 首部校验和 2B  
原地址 4 源IP地址 4B      
目的地址 4 目的IP地址 4B      
选项 4n 长度可变,为4字节的整数倍,不足填0,实际很少使用,很多路由器都不考虑可选部分      

字段说明

字段 长度 说明
版本 4b IP协议版本,如果是IPv4值为4
首部长度 4b IP首部的长度,单位4B,最大值15说明IP数据报头部长度最大60字节
区分服务 1B 用来获得更好的服务,很少使用
总长度 2B 首部和数据总长度,单位是字节,最大值 65535 即 64KB ,一般都用不到这么大,一般 MTU 才1500
标识 2B 标识一个IP数据报,用于分片后的组装
标志 3b 第1位保留;第2位 DF,只有DF=0才允许分片;第3位MF,MF=1表示后面还有分片
生存时间 4b TTL (Time To Live) ,每经过一个路由器就减 1,到0就丢弃。数值表示能经过多少个路由器
协议 1B 携带数据使用的协议,目标主机通过该字段得知把数据交给谁
首部校验和 2B 只校验首部,为了减少计算量,通过二进制反码求和计算校验和
源IP地址 4B 注意源IP地址在前面
目的IP地址 4B 注意目的IP地址在后面

片偏移 本报文携带的数据部分在源报文中数据部分的数据偏移。数据报分片后还可能再进行分片。

协议字段值

协议名 ICMP IGMP TCP EGP IGP UDP IPv6 ESP OSPF
协议字段值 1 2 6 8 9 17 41 50 89

EGP 外部网关协议 IGP 内部网关协议

路由器转发的过程,依次进行如下操作。

  1. 从数据报的首部中提取出目的主机IP地址 D,得出目的网络 N
  2. 如果 N 就是本路由器直接相连的某个网络,则进行 直接交付
  3. 如果路由表中有针对 N 的特定主机路由。则交给特定主机路由。
  4. 如果有默认路由,则交给默认路由。
  5. 报告转发出错。

划分子网

划分子网路由转发的过程,依次进行如下操作。

  1. 提取目的IP地址 D
  2. 判断是否是直接交付。对直接相连的每个网络进行检查,用子网掩码D 进行 & 操作。结果和网络地址相等,直接交付。
  3. 对路由器中的每一行 (目的网络地址,子网掩码,下一跳地址),用子网掩码D 进行 & 操作,结果和目的网络地址相同,则交给下一跳路由器。
  4. 如果有默认路由则交给默认路由。
  5. 报告转发出错。

无分类编址CIDR

  1. 128.14.35.7/20 在IP地址后面加上掩码的位数。
  2. 在路由查找时选择最长网络前缀。

ICMP报文

报文格式

字段 类型 代码 校验和 取决于类型 数据部分  
长度 1 1 2 4 长度取决于类型 数据部分取决于类型

不同类型报文的类型值

ICMP报文种类 类型值 ICMP报文的类型 说明
差错报告报文 3 终点不可达 主机或路由器不能交付时向源点发送
差错报告报文 4 源点抑制达(Source quench) 由于拥塞导致丢包时向源点发送,让源点发慢点
差错报告报文 5 改变路由(Redirect) 告诉源主机有更好的路由
差错报告报文 11 时间超过 TLL为0或者没有在规定时间内收到完整数据报
差错报告报文 12 参数问题 路由器或主机收到的数据报头部有字段值错误
询问报文 8 或 0 回送(Echo)请求或回答 测试是否可达和了解有关状态
询问报文 13 或 14 时间戳(Timestamp)请求或回答 时钟同步 和 测量时间

以下情况下不发送ICMP差错报告报文

  1. ICMP差错报告报文不发送
  2. 分片的数据报后续报片不发送
  3. 多播地址不发送
  4. 特殊地址不发送。

路由选择协议

RIP 工作原理

IP多播

专用地址 (private address)

这些地址是专用地址,只能在内部使用。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发

网络地址转换NAT (Network Address Translation)