本篇主要包括网络层的相关介绍,网络层提供的两种服务,网际协议 IP,划分子网,网际控制报文协议 ICMP,互联网的路由选择协议,IPv6,IP 多播,虚拟专用网 VPN 和网络地址转换 NAT。
网络层提供的两种服务
- 长期争论交点:网络层是否提供可靠交互,是由网络层负责还是由端系统负责。
- 两种服务:虚电路服务,数据报服务
- 目前,网络层提供简单灵活、无连接的、尽最大努力交付的数据报服务。不提供服务质量承诺。
- 降低网络成本,运行方式灵活,能适应多种应用。
网际协议 IP
- 网际协议 IP 是 TCP/IP 体系中最重要的协议之一。
- 与 IP 配套使用的还有三个协议:地址解析协议 ARPAddress Resolution Protocal,网际控制报文协议 ICMPInternet Control Message Protocol,网际组管理协议 IGMPInternet Group Management Protocol。
IP互连网络
- 网际协议 Internet Protocol,互连使用同一网际协议的计算机网络看成虚拟互连网络。使用 IP 协议让原本各异的网络看起来是同一的网络,所以 IP 协议的虚拟互连网简称 IP 网。
- 物理层中继系统:转发器;数据量链路层中继系统:网桥或桥接器;网络层中继系统:路由器;网桥和路由器的混合物:桥接器;网络层以上的中继系统:网关。
分类的IP地址
- IP 协议的虚拟互连网通过 IP 地址实现在网络上如何寻址。
- IP 地址的编址方式有三个历史阶段:分类的 IP 地址,子网的划分,构成超网(无分类)。
- 分类的 IP 地址如图所示

- IP 地址中不做一般使用的特殊 IP 地址
网络 | 主机号 | 源地址 | 目的地址 | 含义 |
---|---|---|---|---|
0 | 0 | 可以 | 不可 | 在本网络上的本主机 |
0 | host-id | 可以 | 不可 | 在本网络上的某个主机 host-id |
全 1 | 全 1 | 不可 | 可以 | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全 1 | 不可 | 可以 | 对 net-id 上的所有主机进行广播 |
127 | 非全 0 或全 1 的任何数字 | 可以 | 可以 | 对本地软件环回测试只用 |
- 特点:每个 IP 地址都由网络号和主机号两部分组成。1.管理机构仅分配网络号,路由器根据网络号来转发分组减小资源和时间消耗。2.网络号的不同标识着不同的网络,相同网络号则在同一个局域网内。因此多归属主机则至少由两个不同的 IP 地址(其中网络号是不同的),路由器也至少由两个不同的 IP 地址。3.通过转发器或网桥连起来的若干个局域网仍然是一个网络,由同样的网络号。4.任何网络无论大小,分配网络号的网络均是等价的。
IP地址与硬件地址
- 硬件地址(物理地址)是数据链路层和物理层使用的地址。
- IP 地址是网络层和以上各层使用的地址,是逻辑地址(IP 地址是用软件实现的)。
- IP 地址在 IP 数据报的首部,而硬件地址在 MAC 帧的首部。
- IP 地址与硬件地址关系图:

地址解析协议 ARP
- 地址解析协议 ARP 解决 IP 地址与本地主机或路由器 MAC 地址间的对应关系。
- 解决方案:ARP 高速缓存,存储局域网的 IP 和 MAC 地址,TTL(Time To Live)有效映射时间表。
- 同一局域网下,A 向 B 通讯,则查 ARP 高速缓存,有则直接生成 MAC 帧;无则广播 ARP 请求分组,目标机 B 则向 A 单播告诉其 MAC 地址。
- 主要解决异构网络 MAC 地址不一样,复杂 MAC 地址的分级、分组路由算法等不好实现的问题。可通过 IP 编址利用计算机软件自动实现 ARP 的过程,主机用户(及应用层和运输层)不知道地址解析过程。
IP数据报的格式
- IP 数据报由首部和数据组成。首部包含 20 字节固定长度和可选字段。
- 固定部分中包括版本(目前 IPv4,4 位),生存时间(占 8 位,通过路由器的最大数目,Time To Live),协议(占 8 位,区分数据使用的协议便于目的主机将数据交给指定进程,如网络层的 ICMP, IGMP, OSPF, 运输层的 TCP, UDP)
- 可选部分用于排错、测量及安全等措施,长度 1-40 字节。由于增加开销,一般使用。

IP层转发分组的流程
- 路由器的路由表是使用网络地址来制作的。
- 路由表中每条路由主要包含两个信息:(目的网络地址, 下一跳地址)。
- 只有到达最后一个路由器时,才试图向目的主机交付。
- 分组转发算法:
- 从数据报首部提取目的主机 IP 地址 D,得到网络地址 N。
- 若网络 N 直接相连,通过 ARP 解析封装 MAC 帧直接交付,终止。
- D 在路由表中有特定主机路由,则下一跳特定主机路由,终止。
- 路由表中有到达 N 网络的路由或到达 N 网络的下一跳路由,则执行下一跳,终止。
- 路由表有默认路由,则下一跳默认路由,终止。
- 报告转发出错。
划分子网
划分子网
- 两级 IP 地址设计不合理:IP 地址空间利用率有时低;每个物理网络分配一个网络号使得路由表过大,网络性能变差;两级网络地址不够灵活,构建新的小网络比较麻烦。
- 因此将 host-id 划分为 subnet-id 子网号字段和 host-id 两部分。从两级 IP 地址变成三级 IP 地址,叫做划分子网。整个网络对外依然表现为没有划分子网的情况。
子网掩码
- IP 数据报首部无法判断网络是否子网划分,使用子网掩码可以快速找出 IP 地址子网部分。
- 子网掩码长度与 IP 地址长度一样,1 则对应 IP 地址中的网络号和子网号部分,0 对应主机号部分。“与”运算可快速查询子网号。
- 分组转发算法发生变化:
- 从数据报首部提取目的主机 IP 地址 D。
- 判断是否直接交付。先用本网络的子网掩码和 D 逐位相“与”,看是否和本网络地址匹配,终止。
- D 在路由表中有特定主机路由,则下一跳特定主机路由,终止。
- 路由表中每一行的子网掩码与 D 作“与”运算,结果与目的网路地址匹配,则执行下一跳,终止。
- 路由表有默认路由,则下一跳默认路由,终止。
- 报告转发分组出错。
无分类编制CIDR
- 无分类的 IP 地址,CIDR Classless Inter-Domain Routing,构造超网。IP 地址::={<网络前缀>,<主机号>}。主机号>网络前缀>
- 路由表中存储网络前缀和下一跳地址。匹配结果会不只一个,匹配最长前缀。采用二叉线索树存储查找路由表最长匹配。
网际控制报文协议ICMP
- Internet Control Message Protocol 是为有效转发 IP 数据报提高交付成功几率,使用的网际控制报文协议,属于 IP 层协议,不属于高层协议。
- 分为 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文中的 IP 数据报报文部分(前面还有 IP 数据报首部)前四个字节固定格式:类型、代码和校验和。接着四个字节的内容与 ICMP 的类型有关,最后是数据字段也和类型有关。

ICMP报文的种类
ICMP差错报告报文
- ICMP 差错报告报文分为五种:终点不可达,源点抑制,时间超过(TTL 为 0 和预定时间内不能收到一个数据报的全部报文片), 参数问题,改变路由(重定向)。
- 差错报告报文结构如图所示:

- 特殊情况不发送 ICMP 差错报告报文:ICMP 差错报告报文的数据报,分片数据报的后续报片不发送,多播数据报,有特殊地址的数据报(127.0.0.0 或 0.0.0.0)
ICMP询问报文
- 回送请求和回答:询问特定的目的主机了解其状态;时间戳请求和回答:请求某个主机或路由器回答当前日期和时间,用于时钟同步和测量时间。
ICMP的应用实例
PING 应用
- Packet InterNet Groper:用于测试两主机间的连通性;PING 使用了 ICMP 回送请求与回送回答报文;是应用层直接使用网络层 ICMP 的例子,没有经过运输层的 TCP 和 UDP。
- 格式:Ping + 地址
Traceroute应用
- Unix 系统下是 Traceroute,Windows 下是 tracert,用于跟踪一个分组从源到终点的路径。
- 利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对源点到重点路径的跟踪。使用了 UDP 报文,不过是不可交付的 UDP 报文。
- 格式:Traceroute/tracert + 地址
互连网的路由选择协议
几个基本概念
- 理想的路由算法:正确、简单、自适应、稳定公平、最佳。实际上最佳路由算法仅仅是特定要求下较为合理的选择而已。
- 路由选择问题的复杂性:它是所有结点共同协调工作的结果,路由的选择往往是不断变化的,这种变化无法事先知道。
- 两大路由选择协议:内部网关协议(IGP Interior Gateway Protocol)和外部网关协议(EGP External Gateway Protocol)
- 自洽系统之间的路由选择叫做域间路由选择,自洽系统内部的路由选择叫做域内路由选择。
- 常用的内部网关协议 IGP:路由信息协议 RIP,OSPF 协议;外部网关协议 EGP,BGP-4。
内部网关协议RIP
- 路由信息协议 RIP,Routing Information Protocol 是一种分布式的、基于距离向量的路由选择协议。要求每一个路由器都要维护一个自己到其他每一个网络的距离记录(直接连接为 1,每跳一次+1,距离之最短距离,最大距离为 15,最大值为 16 时相当于不可达)。
- RIP 协议三个要点:
- 仅和相邻的路由器交换信息;
- 交换的信息是当前路由器知道的全部信息;
- 按照固定时间间隔交换路由信息。
- 特点:好消息传播快,坏消息传播慢(相互传递较好的消息,屏蔽了本身的坏消息,导致坏消息更新慢)。
- 距离向量算法的基础是 Bellman-Ford 算法(或 Ford-Fulkerson 算法)。
内部网关协议OSPF
- 开放最短路径优先 OSPF(Open Shortest Path First)
- OSPF 协议三个要点:
- 向本自洽系统中所有路由器发送信息;
- 发送的信息仅是与本路由相邻的所有路由器的链路状态(说明本链路与哪些链路相连,及与该链路的”度量”);
- 只有链路状态发送变化时,才用洪泛法发送此信息。
- 为了更好的运用于大规模网络,对自洽系统进行划分,得到若干个小范围,叫做区域,每个区域有 32 位区域标识符。(区域内路由器个数<200 为佳)洪泛法则仅需要更新区域内的路由器发送信息,减小通信量。
- OSPF 协议特点:
- OSPF 协议对不同类型的业务可计算得到不同的路由路径(不同类型的业务有不同的代价)。
- 相同目的网络可能有多条代价相同的路径,可将通信量分配个几条路径,多路径间的负载均衡。
- 支持可变长度的子网划分和无分类的编制 CIDR。
- 每条链路状态都有 32 位的序号。序号越大状态越新。
- 较大规模网络时,OSPF 协议比 RIP 好得多,更快。
外部网关协议BGP
- Border Gateway Protocol:不同自洽系统的路由器间交换信息的协议。比较新的版本 BGP-4。
- BGP 寻找的时比较好的路由(不兜圈子),而并非寻找最佳路由。
- 每个自洽系统的管理员至少有一个路由作为“BGP 发言人”。
- BGP 发言人间交换路由信息:建立 TCP 连接,交换 BGP 报文以建立 BGP 会话(session),用 BGP 会话交换路由器信息。
- BGP 协议特点:
- BGP 发言人数目少网络不致于过分复杂;
- BGP 交换路由信息的结点数量要比自洽系统中的网络数少很多;
- BGP 刚运行时 BGP 的邻站交换整个 BGP 路由表,但随后仅更新有变化部分。
IPv6
基本首部及其他数据报结构
- IPv6 主要变化:更大地址空间 128bit,扩展的地址层次结构,灵活的首部,改进的选项(放入有效载荷内),允许协议继续扩充,支持即插即用(自动配置),支持资源预分配。
- IPv6 数据报由两部分组成:基本首部(40 字节)和有效载荷(有效载荷包含 0 个或多个扩展首部和数据部分,总长不超过 64KB)。

- 各个字段作用举例:有效载荷长度:占 16 位,指明除基本首部外的字节数目。下一个部首:有扩展首部类型则指明下一个扩展首部类型,没有则指明高层协议(例如 TCP 或 UDP 等)。
- 六种类型扩展首部:逐跳选项,路由选择,分片,鉴别,封装安全有效载荷和目的站选项。
- 扩展首部举例:分片扩展首部:源点选取最小 MTU 或发送前完成路径最大传送单元发现(Path MTU Discovery),确保路径中数据报片长度小于路径中的 MTU。在拓展首部中会包含下一部首、片偏移、标识符、M 值(指明是否是最后一报片)等字段。
- 考虑到最大传输单元问题,IPv6 不能随便采用新路径。原路径故障,采用新路径,如果新路径 MTU 小于原有路径 MTU,需要采用隧道技术来传送。将现有数据封装成多个新 IPv6 数据报片,不改变原有的基本首部和拓展首部内容,到终点后再重新封装得到原来的数据报。
IPv6的地址
- IPv6 的目的地址分为以下三类:单播,多播,任播(任播的目的站是一组计算机,但交付时只交付其中一个,通常是距离最近的那个)。
- 冒号 16 进制记法:
- IPv6 中每个地址 128 位,地址空间大于$3.4\times 10^{38}$
- 每十六个位之间用冒号隔开,一个十六位用一个四位十六进制数表示。允许省略四位十六进制数的前导 0。示例:68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF。
- 支持零压缩:一连串冒号 0 可省略,但任意一个地址仅能一次零压缩。示例:FF05:0:0:0:0:0:0:B3 可压缩为 FF05::B3。
- 可与点分十进制记法结合。示例:0:0:0:0:0:0:128.10.2.1 压缩为::128.10.2.1
从IPv4向IPv6过渡
- 只能逐步演进,并且还要保证新安装的 IPv6 向后兼容:IPv6 系统能够接受和转发 IPv4 分组,并能为 IPv4 分组选择路由。
- 过渡策略:双协议栈,隧道技术。
- 双协议栈:利用具有双协议栈的主机(或路由器)在连接不同 IP 类型主机或路由时采用不同协议栈,不同协议栈间转换,会改变首部。从 IPv4 到 IPv6 转换时,会出现部分首部字段丢失的情况。
- 隧道技术:利用双协议站主机将”整个 IPv6 数据报”作为数据部分报完全封装成 IPv4 数据报,并在 IPv4 局域网中传播(此时源主机和目的主机分别时两端的双协议站主机)。到大目的站端的双协议站主机再将数据报恢复成 IPv6 数据报。
ICMPv6
- IPv6 也不保证数据可靠交付,所以也需要 ICMP 来反馈差错信息。
- ICMPv6 包括了类似 IPv4 中的 IGMP 和 ARP 协议功能。
IP多播
IP多播的基本概念
- IP 多播(也称为组播):更好的支持一对多通信。不同局域网时,路由器实现复制分组。同一局域网,硬件多播功能,无需复制分组。
- 多播 IP 地址:IP 地址前四位为 1110 紧接着五位不用后接剩下 23 位。一个 D 类地址对应一个多播组,只能用于目的地址,不能用于源地址。
- 多播数据报:使用 D 类地址作为目的地址,首部的协议字段使用值是 2,表明使用网际组管理协议 IGMP。“尽最大努力交付”,但不保证多播组内成员都能得到交付。不产生 ICMP 差错报文。
网际组管理协议IGMP和多播路由器选择协议
- 网际组管理协议 IGMP Internet Group Management Protocol:可使得路由器知道多播组成员的信息。
- IGMP 协议:让连接到本局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。
- IGMP 分为两阶段:
- 加入多播组:主机向多播组多播地址发送 IGMP 报文,声明自己要成为该组成员,本地多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上其他多播路由器。
- 探询组成员变化情况:本地多播路由器周期性地探询本地局域网上的主机,知道其是否继续是组成员。只要有一个主机响应,该组则活跃,几次探询都没有任何响应则不再将该组成员关系转发给其他多播路由器。
- 多播路由选择协议:局域网的多播路由器和互联网上的多播路由器协同工作,以便以最小代价送给所有组成员。
- 多播路由选择协议:实际是找出以源主机为根节点的多播转发树。目前协议尚未标准化。
- 多播路由选择协议在转发多播数据报时使用的三种方法:
- 洪泛与剪除:采用反向路径广播策略。路由器发现下游树枝没有多播组成员则剪除它和下游树枝。适用于临近的局域网有较小而共同多播组。
- 隧道技术:将整个多播数据报完全封装(包括首部)在单播 IP 数据报中,传递到目标网络后,在恢复成多播数据报。适用于多播组分散的情况。
- 基于核心的发现技术:每个多播组有一个核心路由器,给出它的 IP 单播地址,核心路由器创建除对应于多播组的转发树。适用于多播组大小在较大范围内变化的情况。
虚拟专用网VPN和网络地址转换NAT
虚拟专用网VPN
- IP 地址紧缺,互联网并不安全。如果机构计算机内部通信也采用 TCP/IP 协议,那么在机构内部可以自行分配其 IP 地址。
- 虚拟专用网 Virtual Private Network:利用公共网络作为机构各专用网之间的通信载体。
- 专用网:是因为本机构内部通信。虚拟:并没有实际通信专线。经常用隧道技术实现虚拟专用网的通信。
网络地址转换NAT
- 解决专用网使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?解决方案
- 再申请一些全球 IP 地址;一般不容易做到。
- 采用网络地址转换 NAT。
- 网络地址转换 NAT Network Address Translation:在专用网连接到互联网的路由器上安装 NAT 软件,成为 NAT 路由器(至少有一个有效的全球 IP 地址)。
- 与外界通信时,都由 NAT 路由器将本地地址转换成全球 IP 地址。