计算机网络网络层
概述
为什么需要网络层?
数据链路层解决了同一局域网计算机间帧的传输问题,但没有解决异构网络之间的连接和资源共享问题。
也就是局域网和局域网之间如果要实现连接的话,由于网络具有丰富的拓扑结构,仅仅只用数据链路层是不够的,因此引出了网络层。
但是网络层有几个争论需要解决:
数据链路层帧的校验没有解决可靠传输的问题,网络层需要解决可靠传输吗?
网络层应该向运输层提供怎样的服务?面向连接还是无连接?
在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
网络层的两种观点
面向连接的可靠交付。
无连接的、尽最大努力交付的数据报服务,不提供服务质量的承诺。




两种观点的对比

因为互联网是全世界最大的网络,并且互联网使用的是数据报服务,所以我们下面的重点也是数据报。
网络层所处地位和功能

网络层是计算机网络中最核心的层次之一,起到一个承上启下的作用,然后互联网的核心协议是IP协议,传输单位是IP数据报。
IP地址:用32bit表示。常以8bit为一组(因此每个部分的合法范围是0-255),记为十进制数。
网络层的功能

网络层协议
虚拟互联网络
上面书说道网络层的作用是为了将各个局域网连在一起实现通信,但是会有一些问题:

所以使用中间设备进行连接

路由器以下的中间设备理论上都只属于一个网络,只有路由器以上的设备连接才能称之网络互连。

既然进行了互连,那么现在网络层要转发的信息应该有两个:
1.路由信息(为数据传输服务)
2.数据
这也是后续的所有协议出现的原因。
IP协议(IPv4)


简单说,IP协议配套的三个协议的作用就是:
ARP协议用于查询IP地址和MAC地址之间的映射关系。
ICMP协议用于在IP主机、路由器之间传递控制消息:例如网络可不可达,主机可不可达等。
IGMP协议用于管理IP组播成员,让主机能够加入或离开组播组,并让路由器能够了解哪些组播组在本地网络中有成员。
后续会继续深入讲解ARP协议,但是现在先说IP协议本身的内容。
IP数据报

当IP数据报达到链路最大传输单元(MTU)限制时会分片,同时收到数据链路层中CSMA/CD的最短帧长限制。


每一个分片都是一个可以被独立转发的IP数据报,都包含首部。

数据报的其他字段


源地址:发送方的IP地址。 目的地址:接收方的IP地址。
校验码计算

IP地址


由国际机构分配

IP地址分类
IP地址数量很多,设置IP地址的目的最初就是为了找对应主机,因此需要分类。
比如某公司申请A类地址,机构就给这个公司分配一个固定的8bit的网络号,后面的24bit可以给这个公司自己分配;申请B类地址,就给固定的16位网络号,后面16位由申请者自己分配。
C类地址同理。


然后有一些IP地址具有特殊作用,不能分配(主要是全0和全1的地址)

网关实质上是一个网络通向其他网络的IP地址,一般指一个网络连向外部网络的路由器的IP地址(也叫网关路由)。
但是采用这种分类方法会出现一个问题,那就是IP地址很快会用完。

为了解决这个问题于是出现了子网划分技术和无分离编址技术(CIDR)。
子网划分技术
还是举个例子,比如一个公司申请了一个B类地址,机构给了固定的16位网络号,后面16位可以由申请者自己分配,但是这时候公司将网络号后的第一位(也就是第17位bit)单独划分出来,就可以形成两个子网(17位可以是0或者1,分别对应一个子网),这一位bit也被称为子网号。
然后这个公司如果有两个办公地址就可以分开了使用两个子网了,提高了IP地址的利用率。
当然这个子网号可以是多位,n位就会划分出2^n个子网
| 子网数量 | 2^n(n 为借用的子网位数) | 网络号和子网号合称 “网络前缀” |
| 每个子网主机数 | 2^m - 2(m 为剩余主机位数) | m = 原主机位数 - 子网位数,减 2 是为排除网络地址和广播地址。 |
| 子网掩码 | 网络号部分全 1 + 子网号部分全 1 + 主机号部分全 0 | 例如 n=1 时,B 类子网掩码为 11111111.11111111.10000000.00000000(255.255.128.0)。 |
子网掩码
主要作用是为了计算网络号,把网络号后面的冗余信息全部变成0,剩下前面的就是网络号了。
掩码的原理举个例子:1011,0101,1100和1111,1100,0000(假设是子网掩码)“逐位与(所有操作数都为1时返回1,反之都是0)”结果就是1011,1000,0000(网络号)

无分类编制CIDR
出现原因也是因为每一个接入互联网的主机都要一个唯一的IP地址的话,IP地址不够用。
首先就是把上面那个什么ABC类地址划分去掉,要不然的话从8位到16位再到24位网络号中间的跨越的位数太大了,会产生大量的浪费,就不分类了,所以叫无分类编址。

同样的,在无分类编址的基础上再进行子网划分可以让IP地址的利用率提高。
然后之前说的子网划分是固定的,但是如果一个公司在一个地址有1000台主机,另一个地址只有5台,固定长度的子网划分分成来两个子网的主机个数是相同的就会产生浪费。
所以可以使用变长子网划分技术,提高IP地址利用率。


这个例题讲的挺清楚的,可以通过构造哈夫曼树划分子网。



ARP协议
因为IP定位到目标主机后需要也得在数据链路层进行帧的传输,但是IP地址是不是完全固定的,MAC地址才是唯一的,所以需要一张表(ARP表)用于IP地址与MAC地址的相互映射。
每一个主机都会维护一个ARP表
当主机需要向目标 IP 地址发送数据时:
- 检查ARP表中是否存在该 IP 对应的 MAC 地址;
- 若存在,直接封装 MAC 地址发送数据帧;
- 若不存在,发送ARP广播请求获取目标 MAC 地址,更新ARP表后再发送。
因为ARP请求报文以广播方式发送,该广播域内所有主机都会接收到请求,但只有被请求的主机会对该请求进行处理(以单播方式发送ARP响应报文给请求方,发送内容包括了自身的MAC地址,并且将请求方的MAC地址和IP地址写入自己的ARP表)。
ARP 表是主机内存中存储的 IP - MAC 地址映射表,每条条目记录某个 IP 地址对应的 MAC 地址,以及映射的生存时间(TTL)。
网络转发过程

路由协议
AS自治系统
AS是在单一技术管理体系下由唯一自治系统号标识的多个路由器的集合,是具有(同种或多种)路由协议策略的巨型网络或网络群组。

简单说就是由很多个路由组成的一个大型网络。
比如下图学校就构成一个AS自治系统

自治系统之间的路由选择也叫做域间路由选择 (interdomain routing)。
自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。

路由聚合
路由聚合是将路由表里面的目标IP地址聚合,原因就是当转发接口相同时,只要部分前缀也一样,最终转发出去的接口都是一样的,不会受后面的位的影响,那就干脆聚合减少路由表的大小

引入无效地址的原因就是因为扩大了目标网络的范围,所以可能有一些IP地址没有被使用,但是还是会被识别为有这个地址从而转发出去,但是由于无效IP没有主机最终也找不到目标IP,最终还是会被识别为0.0.0.0/0的IP地址,然后丢弃。
路由选择和路由算法
路由表中目标网络的前缀都能匹配上目标IP的地址时,使用表项中最长的前缀的一项的接口转发出去。


内部网关RIP协议
基于UDP协议进行传输。



例题:
内部网关OSPF协议

外部网关协议GBP
1.GBP使用TCP协议,目的端口号为179
2.路由更新时,BGP只发送更新的路由
3.BGP避免环路发生。
AS之间:携带AS路径信息来标记途经的AS,将带有自身AS号的路由丢弃,避免产生环路。
AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。
4.GBP支持CIDR




VPN虚拟专用网
由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
如果一个机构内部的计算机通信也是采用 TCP/IP 协议,那么这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。


采用专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
专用 IP 地址也叫做可重用地址 (reusable address)

NAT网络地址转化
为了解决在专用网上使用专用地址的主机与互联网上的主机通信。



软件定义网络SDN
一些期末考的知识点


如有错误或者建议欢迎补充
参考资料
王道考研计算机网络
《计算机网络》第八版 谢希仁
《计算机网络自顶向下方法》







2007

被折叠的 条评论
为什么被折叠?



