IP地址与硬件地址
- IP地址是网络层以上使用的,硬件地址是“数据链路层”和“物理层”使用的。
- 数据帧在路由器间传送时,IP地址不变,“物理地址”每经过一个路由器都会改变。
地址解析协议ARP
- ARP解决“同一局域网”上的主机或路由器间的IP地址和硬件地址的映射问题。
- 每个主机都设有“ARP高速缓存”,存放“IP地址”到“物理地址”的映射表,并动态更新。
- 获取物理地址:主机A的“ARP进程”在本局域网上广播一个“ARP请求分组”,其中包含A的IP地址和硬件地址,B的IP地址。
主机B收下请求分组,记录下A的IP地址和物理地址映射,并向A发送“响应分组”,其中包含B的硬件地址。 - ARP高速缓存中的“映射项目”都有固定的“生存时间”,超时项目会被删除,下次请求时更新,保证反应网络的最新状态。
IP数据报格式
- 首部的前一部分是“固定长度”20字节,后一部分是长度可变的“可选字段”,最大40字节。
- 首部长度不是4字节的整倍数时,需要将首部填充为4字节的整倍数。
- 如果IP数据报长度超过“数据链路层”的MTU值,IP数据报会被分片处理。
- IP协议规定,Internet中的所有主机和路由器,必须能够接受长度不超过576字节的数据报。
- 版本:IP协议的版本,通信双方必须一致,目前广泛使用的版本号是IPv4。
- 首部长度:占4位,单位是32位字,最小值是5(20字节),最大值是15(60字节)。
- 区分服务:用来获得更好的服务,一般不使用。
- 总长度:首部和数据长度之和。
- 标识:每产生一个数据报,计数器加1,赋给标识字段。当数据报被分片时,用来标识同一个数据报。
- 标志:MF=1表示“还有分片”,MF=0表示“这是数据报分片中最后一个”。DF=1表示“不能分片”。
- 片偏移:表示较长的分组在分片后,某片在原分组中的相对位置,以8个字节为单位。
- 生存时间TTL:由发出数据报的源点设置,防止数据报无限制地在网络中“兜圈子”。现在是“跳数限制”,最大值是255,即最多经过255个路由器,每经过一个路由器,数值减1,为0时丢弃。
- 协议:指出此数据报携带的数据使用何种协议,以使目的主机的IP层知道应将数据部分上交给哪个处理过程。
- 首部检验和:只检验数据报的首部,不包括数据部分。
每经过一个路由器,都要重新计算“首部检验和”。因为首部的某些字段(如生存时间、片偏移等)会发生变化。
IP层转发分组的流程
- 从一个路由器转发到下一个路由器。
- 路由表中,每个项目最主要的两个信息:(目的网络地址,下一跳地址)。
- Internet对所有分组转发都是基于“目的主机所在的网络”,但同时允许对特定的目的主机指明一个路由。
- 默认路由:可以减少“路由表所占空间”和“搜索路由表所用时间”。
- 转发过程:从数据报首部得到目的IP地址D,网络地址N。
如果N与此路由器直接相连,则直接交付目的主机(将IP地址转为硬件地址,IP数据报封装成MAC帧,然后发送)。
否则查路由表,找出下一跳地址。