地址解析协议ARP
- 在主机
ARP高速缓存
中存放一个从IP地址
到硬件地址
的映射表
,并且该映射表常动态更新ARP请求分组
是广播
发送的,但ARP响应分组
是普通的单播
- 当主机 B B B收到 A A A的
ARP请求分组
时,就把主机 A A A的这一地址映射
写入主机 B B B自己的ARP高速缓存
中ARP
对保存在高速缓存
中的每一个映射地址项目都设置生存时间
,凡超过生存时间的项目就从高速缓存中删除掉ARP
是解决同一个局域网
上的主机或路由器的IP地址
和硬件地址
的映射问题
ARP协议
仅用于IPv4
,IPv6
使用邻居发现协议
,它被合并到ICMPv6
中
网际协议IP
- 网络层提供的两种服务:
- 网络层只向上提供
灵活的
、无连接的
、尽最大努力交付的
数据报交付服务- 网络层不提供服务质量的承诺:所传送的分组可能
出错
、丢失
、重复
和失序
,也不保证分组交付的时限
分类的IP地址
IP地址
={<网络号>,<主机号>}
- IP地址的指派范围:
- 不使用的特殊IP地址:
- IP地址与硬件地址:
划分子网
划分子网:
物理网络划分为若干个子网
划分子网
纯属某单位内部的事情,即本单位以外的网络
看不见这个网络是由多少个子网组成,该单位对外仍然表现为一个网络IP地址
={<网络号>, <子网号>, <主机号>}
(1)划分子网
将IP地址
由两级结构
变成三级结构
(2)划分子网
只把主机号
部分进行再划分,不改变网络号
部分- 若子网号中占有 n n n位,则能产生 2 n − 2 2^n-2 2n−2(子网号不能全为0或全1)
- 子网掩码:
子网掩码
是一个网络
或子网
的重要属性- 即使不
划分子网
,仍需要使用子网掩码
,来方便查找路由表
- 无论是否划分子网,只要把
子网掩码
和IP地址
进行逐位与
运算,就立即得出网络地址
- 若一个网络未进行
子网划分
,则该网络的子网掩码为默认子网掩码
(1)A类地址默认子网掩码:
255.0.0.0
(1)B类地址默认子网掩码:
255.255.0.0
(1)C类地址默认子网掩码:
255.255.255.0
无分类编址CIDR
CIDR
消除了地址分类
以及划分子网
的概念IP地址
={<网络前缀>, <主机号>}
(1)网络前缀
用于指明网络
(2)CIDR
使IP地址
从三级编址
又转会两级编址
斜线记法:
IP地址后加上斜线/
,然后写上网络前缀
所占的位数eg:
128.14.35.7/20
(1)斜线/
后面的数字就是地址掩码
(子网掩码
)中1的个数
- 最长前缀匹配:
- 在使用
CIDR
时,路由表
的每个条目由网络前缀
和下一跳地址
组成最长前缀匹配:
查找路由表时可能会得到不止一个匹配结果,应当从匹配结果中选择具有最长网络前缀
的路由
IP数据报格式
- 版本:
IPv4:4 IPv6: 6
- 首部长度: 保存
IPv4头部
的长度,单位:4字节
,正常值为5
- 区分服务: 一般情况下不使用这个字段
- 总长度:
首部
和数据
之和的长度
- 一个数据帧(MAC帧)的
数据字段
的最大长度,称为最大传输单元MTU
- 若传送的数据报长度超过
数据链路层的MTU值
,就必须把过长的数据报进行分片处理
总长度
是指分片后,IP数据报片
中首部
+数据部分
的长度
- 标识:
IP
软件在存储器中维持一个计数器
,每产生一个数据报
,计数器就+1
,并将计数器的值赋值给标识字段
- 因为
IP数据报
是无连接
服务,数据报不存在按序接收的问题- 当
数据报
由于长度超过网络的MTU
而必须分片时,标识字段的值
就被复制到所有的数据报片
的标识字段
中- 相同的
标识字段
的值使分片后的各数据报片
最后能正确地重装为原来的数据报
- 标志:
MF(最低位):
(1)MF = 1:
还有分片
的数据报
(2)MF = 0:
已是最后一个
数据报片中DF(中间位):
(1)DF = 1:
不能分片
(2)DF = 0:
允许分片
- 片偏移:
- 较长的分组在
分片
后,某片在原分组中的相对位置单位:
8字节
IPv4
中,任何主机或路由器均可将该数据报分片
IPv6
中,仅数据报的发送者
可以执行分片操作
,且需要添加一个分片头部
- 生存时间TTL:
- 防止无法交付的数据报无限制地在互联网中兜圈子
TTL字段
的功能改为跳数限制
,路由器在每一次转发数据报之前就把TTL值
减1- 当该字段为0时,该
数据报被丢弃
,并使用ICMP
发送消息通知发送方
- 协议: 表示数据部分的
数据类型
- 首部检验和:
- 只检验数据报的
首部
,不包括数据部分- 数据报每经过一个
路由器
,路由器都要重新计算一下首部检验和
二进制反码加法
可以通过循环进位加法实现
: 当使用传统(二进制补码)加法产生一个进位时,这个进位以二进制值1加在高位
(网络字节序
)
- 源地址:
发送方IP地址
- 目的地址:
接收方IP地址
分组转发流程
- 路由器中,
转发表
的每个条目包含:<目的网络地址,下一跳地址>
- 分组转发过程中,
IP数据报
首部中的源地址
和目的地址
并未发生改变- 分组转发过程中,
MAC帧
首部中的源地址
和目的地址
要发生变化
- 分组转发算法:
- 从
IP数据报
的首部提取目的主机
的IP地址
D D D,得出目的网络地址
为 N N N- 若 N N N就是与此路由器
直接相连
的某个网络地址,则进行直接交付
,否则就间接交付
,执行3
(1)直接交付:
不需要再经过其他路由器,直接把数据报
封装成MAC帧
交付目的主机- 若
路由表
中有目的地址
为 D D D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器
;否则执行4- 若路由表中有到达
网络
N N N的路由,则把数据报传送给路由表中所指明的下一跳路由器
;否则,执行5- 若路由表中有一个
默认路由
,则把数据报传送给路由表所指明的默认路由器
,否则,执行6- 报告转发分组出错
网际控制报文协议ICMP
ICMP:
允许主机或路由器报告差错情况
和提供有关异常情况
的报告ICMP报文:
ICMP差错报告报文
、ICMP询问报文