网络层
网际协议IP
分类的IP地址
IP地址包含两个字段,第一个是网络号,第二个是主机号。
A类: 0 网络号(7位) | 主机号(24位) 0.0.0.0 ---- 127.255.255.255
B类:1 0 网络号(14位) | 主机号(16位) 128.0.0.0 ---- 191.255.255.255
C类:1 1 0 网络号(21位) | 主机号(8位) 192.0.0.0 ---- 223.255.255.255
D类:1 1 1 0 | 多播组号(28位) 224.0.0.0 ---- 239.255.255.255
E类:1 1 1 1 0 | 保留(27位) 240.0.0.0 ---- 255.255.255.255
IP地址与硬件地址
物理地址时数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
地址解析协议ARP
如果通过机器的IP地址找到对应的硬件地址?ARP就是解决这个问题的。
每一个主机都有一个ARP高速缓存,里面存放了从IP地址到硬件地址的映射表,并且经常更新。主机如何知道这些映射关系呢?如下:
当主机A要向本局域网上的主机B发送IP数据报时,先在ARP缓存中查看是否有对应的IP地址,如果有则获取IP对应的硬件地址,再把硬件地址写到MAC帧,然后通过局域网把该MAC帧发到该硬件地址。如果ARP缓存没有该IP地址,则执行以下操作
(1)ARP进程在本局域网上广播一个ARP请求分组,主要内容为“我是209.0.0.5,硬件地址00-00-C0-15-AD-18,我想直到IP地址为209.0.0.6的主机的硬件地址”
(2)局域网所有主机的ARP进程都会收到请求分组
(3)主机B的IP地址与ARP请求分组的IP地址一致,就收下这个请求分组,并向A发送ARP响应分组,并在响应分组中写入自己的硬件地址。其余主机的IP与ARP请求分组的IP不一致,因此不予理睬。注意:ARP请求分组是广播发送的,ARP响应分组是单播。
(4)主机A收到主机B的ARP响应分组后,在ARP高速缓存中写入主机B的IP地址和硬件地址。
关于ARP地址解析协议注意两点:
(1)ARP高速缓存中的每一个映射地址都是有生存时间的。凡是超过生存时间的项目都会被删除。设置生存时间是为了防止某个主机的适配器被更换后ARP依然保存着失效的硬件地址。
(2)ARP是解决同一个局域网上主机或路由器的IP地址和硬件地址的映射关系的。如果要找的主机B和源主机A不在一个局域网时,则需要通过路由器R来转发,此时主机B的IP地址对应的硬件地址是路由器R,主机A先把数据发到路由器R,路由器R接着发送ARP请求分组找到主机B的IP对应的硬件地址,接着把数据转发到该硬件地址。
IP数据报格式
(1)版本 4位,一般为4表示IPv4
(2)首部长度,4位,该字段的单位是32位字(4个字节),由于首部不包括可选字段外,也有20个字节的固定长度,因此首部长度最小为20/4=5。该字段最大值为1111(十进制15),即15个4字节,即60字节。首部长度必须是4字节的整数倍数,否则需要填充。
(3)区分服务,8位,没用过
(4)总长度,16位,指首部与数据之和。单位为字节。因此数据报的最大长度为2^16-1=65535字节,注意:以太网规定数据链路层的MTU为1500字节,因此过长的IP数据报需要进行分片处理。
(5)标示,16位,IP软件在存储器中维持的一个计数器,每产生一个数据报,计数器加1,并赋值给该字段,该值不是序号,因为IP是无连接服务。当数据报长度超过网络的MTU时,会被分片,分片时该字段的值会赋值给所有数据报片的标识字段。相同标识字段的数据报最后可以重装成为原来的数据报。
(6)标志,3位,最低位为MF位,MF=1表示后面还有分片,MF=0表示已经是最后一个分片。中间位是DF,DF=0时,才允许分片。
(7)片偏移,13位,数据报分片后,该片在原有数据报的偏移位置。片偏移以8个字节为一个单位,即分片的长度一定是8字节的整数倍数。
(8)生存时间,8位,数据报在网络中的寿命,路由器转发一次,该值减1。
(9)协议,8位,指出数据段使用的协议,以便目的主机的IP层知道将数据部分上交给哪个处理过程。
协议名 | ICMP | IGMP | IP | TCP | EGP | IGP | UDP | IPv6 | ESP | OSPF |
协议字段值 | 1 | 2 | 4 | 6 | 8 | 9 | 17 | 41 | 50 | 89 |
(10)首部校验和,16位,校验首部数据
IP层转发分组的流程
(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N
(2)若N就是与此路由直接相连的某个网络地址,则直接交付,不需要经过其他的路由器,直接把数据报交给目的主机,(这里包括把目的主机的地址D转换为硬件地址,把数据报封装为MAC帧,再发送此帧),否则就是间接交付,执行(3)
(3)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指向的下一跳路由器。否则执行(4)
(4)若路由表有一个默认路由,则把数据报传送给路由表所指向的默认路由。否则执行(5)
(5)报告转发分组出错。
划分子网和构造超网
划分子网
划分子网的思路:
(1)本单位以外的网络看不到这个网络是由多少子网组成,对外仍表现为一个网络。
(2)划分子网的方法是从网络的主机号借用若干单位作为子网号
IP地址=<网络号><子网号><主机号>
(3)从其他网络发来的IP数据报仍根据数据报的目的网络号找到本单位网络上的路由器。但此路由器收到IP数据报后根据目的网络号和子网号找到目的子网,把IP数据交付到目的主机。
子网掩码
子网掩码用来查看本网络关于子网划分的信息。
使用子网时的分组转发
与前面IP层转发分组的流程一致,只不过取得IP地址后先与各子网的掩码做“与”操作,然后再判断是否有匹配的网络地址,若有直接交付。否则用IP地址与路由表每一行的掩码做“与”操作并与该行的网络号做匹配。
无分类编址CIRD(构成超网)
网络前缀
CIRD消除了传统A类、B类和C类以及子网划分的概念。表示如下:
IP地址=128.14.35.7/20
以上表示前20位是网络前缀,后12位是主机号
这个IP地址很容易算法该地址所在的地址块的最小地址和最大地址为:
最小地址:128.14.32.0
最大地址:128.14.47.255
由于一个CIRD地址块有很多地址,所以在路由表中利用CIRD地址块来查找目的网络。这种地址的聚合称为路由聚合。
最长前缀匹配
使用CIRD时,由于采用了网络前缀这种记法,IP地址由网络前缀和主机号这两部分构成,因此路由表的项目也要改变。这时,每个项目由网络前缀和下一跳地址组成。但是在查找路由表时可能会得到不止一个结果,这时应该从匹配结果中选择最长网络前缀的路由。因为网络前缀越长,地址块就越小。
二叉树查找路由表
对无分类编址的路由表的最简单的查找算法是对所有可能的前缀进行循环查找。这种方法查找次数太多。为了减少查找次数,将路由表放在二叉树中。IP地址中从左到右的比特值决定了从根节点逐层向下延伸的路径。最多有32层。
网际控制报文协议ICMP
为了有效的转发IP数据报和提高交付成功的机会。
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文格式如下:
ICMP报文种类
ICMP差错报文作为IP层数据报的数据字段,将被封装成IP数据报。ICMP差错报文的数据段又是由需要进行差错报告的IP数据报的首部和数据字段的前8个字节构成。提取IP数据报的数据字段前8个字节是为了获得运输层的端口号。具体结构如下:
因特网的路由选择协议
路由选择协议的几个基本概念
理想的路由算法
(1)算法必须是正确且完整的
(2)能适应通信量和网络拓扑的变化
(3)具有稳定性
(4)算法在计算上简单
(5)算法是公平的
(6)算法是最佳的
分层次的路由选择协议
因特网将整个互联网划分为许多较小的自治系统(AS)。一个AS对其他的AS表现出的是一个单一的和一致的路由选择策略。
路由选择协议分为两大类:
(1)内部网关协议IGP
在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。主要有RIP协议和OSPF协议。
(2)外部网关协议EGP
若源主机和目的主机不在一个自治系统,当数据传到一个自治系统的边界时,就需要使用一种路由协议将路由选择信息传递到另一个自治系统。主要是BGP-4。
内部网关协议RIP
工作原理
RIP是内部网关协议IGP最先得到广泛使用的协议。称为路由信息协议。
RIP要求网络上的每一个路由器维护从它到每一个目的网络的距离的记录。
RIP的协议特点:
(1)仅和相邻的路由器交换信息
(2)路由器交换的信息是当前路由器所知道的全部信息,即路由表,交换的信息是“我到本自治系统中所有网络的最短距离,以及到每个网络应经过的下一跳路由器”
(3)按固定时间间隔交换路由信息
距离向量算法
对每一个相邻路由器发送过来的RIP报文,执行以下步骤:
(1)对地址为X的相邻路由器发来的RIP报文,先修改此报文的所有项目:把”下一跳“字段中的地址改为X,并把所有的“距离”加1。每一个项目都有三个关键数据,即:到目的网络N,距离d,下一跳路由器是X
(2)对修改后的RIP报文的每一个项目,执行以下步骤:
若原来的路由表没有目的网络N,则把该项目添加到路由表(添加)
若下一跳路由地址是X,则把收到的项目替换原来的路由表的项目(更新)
否则(即这个项目是:到目的网络N,但下一跳路由器不是X)
若收到的项目的举例d小于路由表中的距离,则进行更新
否则什么也不做
(4)返回
RIP协议的报文格式
RIP协议使用运输层的UDP传送。
缺点:当网络出现故障时,要经过较长时间才能将此信息传递到所有的路由器。
内部网关协议OSPF
外部网关协议BGP
边界网关协议。
IP多播
虚拟专用网VPN和网络地址转换NAT