计算机网络(第8版)-第4章 网络层

4.1 网络层的几个重要概念

4.1.1 网络层提供的两种服务

如果主机(即端系统)进程之间需要进行可靠的通信,那么就由主机中的运输层负责(包括差错处理、流量控制等)。

4.1.2 网络层的两个层面

4.2 网际协议 IP

图4-4 网际协议 IP 及其配套协议

4.2.1 虚拟互连网络

从一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:

(1)物理层使用的中间设备叫作转发器(repeater)。

(2)数据链路层使用的中间设备叫作网桥桥接器(bridge),以及交换机(switch)。

(3)网络层使用的中间设备叫作路由器(router)。

(4)在网络层以上使用的中间设备叫作网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。

讨论网络互连时,都是指用路由器进行网络互连和路由选择。

在互联网的词汇中,分组在传送途中的每一次转发都称为一“(hop)”。

4.2.2 IP 地址

IP 地址编址方式有 3 种:分类、子网划分、无分类。

1. IP 地址及其表示方法

对主机或路由器来说,IP 地址都是 32 位的二进制代码(IPv4)。

一个 IP 地址在整个互联网范围内是唯一的。

2. 分类的 IP 地址

图4-10 分类的 IP 地址(a)以及各类地址所占的比例(b)

但要注意,第一,网络号为全 0 的 IP 地址有特殊的用途,它表示“本网络;第二,网络号为127(即01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用

这里要指出,由于近年来已经广泛使用无分类 IP 地址进行路由选择(即网络位任意,主机位全 0,网络主机 ID),A 类、B 类和 C 类这种分类地址已成为历史[RFC 1812]。

3. 无分类编制 CIDR

这种编制方法的全名是无分类域间路由选择 CIDR(Classless Inter-Domain Routing,CIDR 的读音是“sider”)[RFC 4632],其要点有以下三个。

(1)网络前缀

(2)地址块

(3)地址掩码

地址掩码(常简称为掩码,又称为子网掩码)由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。

把二进制的 IP 地址和地址掩码进行按位 AND 运算,即可得出网络地址。

4. IP 地址的特点

4.2.3 IP 地址与 MAC 地址

这里要强调指出以下几点:

(1)在 IP 层抽象的互联网上只能看到 IP 数据报

(2)虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址进行转发

(3)在局域网的链路层,只能看见 MAC 帧

(4)尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信

4.2.4 地址解析协议 ARP

(a)主机 A 广播发送 ARP 请求分组(广播请求)

(b)主机 B 向 A 发送 ARP 响应分组(单播)

图4-18 地址解析协议 ARP 的工作原理

然而 IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个 IP 地址,它们之前的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。

4.2.5 IP 数据报的格式

图4-20 IP 数据报的格式

从图4-20 可以看出,一个 IP 数据报由首部和数据两部分组成。首部的前一部分长度是固定的,共 20 字节,是所有 IP 数据报必须具有的。

下面介绍首部各字段的意义。

1. IP 数据报首部的固定部分中的各字段

(1)版本

(2)首部长度

(3)区分服务

(4)总长度

总长度指首部和数据之和的长度,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 2^{16}-1=65535 字节

(5)标识(identification)

(6)标志(flag)

占 3 位,但目前只有两位有意义。

  • 标志字段中的最低位为 MF(More Fragment)。MF = 1即表示后面“还有分片”的数据报。MF = 0表示这已是若干数据报片中的最后一个。
  • 标志字段中间的一位记为 DF(Don't Fragment),意思是“不能分片”。只有当 DF = 0 时才允许分片。

(7)片偏移

占 13 位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。这就是说,除最后一个数据报片外,其它每个分片的长度一定是 8 字节(64 位)的整数倍。

(8)生存时间

(9)协议

(10)首部检验和

(11)源地址

(12)目的地址

2. IP 数据报首部的可变部分

4.3 IP 层转发分组的过程

4.3.1 基于终点的转发

分组每到达一个路由器,路由器就根据分组中的终点(目的地址)查到转发表,然后就得知下一跳应当到哪一个路由器。

4.3.2 最长前缀匹配

4.3.3 使用二叉线索树查找转发表

4.4 网际控制报文协议 ICMP

4.4.1 ICMP 报文的种类

4.4.2 ICMP 的应用举例

4.5 IPv6

4.5.1 IPv6 的基本首部

在 RFC 8200 中定义了以下六种扩展首部:(1)逐跳选项;(2)路由选择;(3)分片;(4)鉴别;(5)封装安全有效载荷;(6)目的站选项。

4.5.2 IPv6 的地址

一般来讲,一个 IPv6 数据报的目的地址可以是以下三种基本类型地址之一:

(1)单播(unicast)        单播就是传统的点对点通信。

(2)多播(multicast)        多播是一点对多点的通信,数据报发送到一组计算机中的每一个。

(3)任播(anycast)        这是 IPv6 增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。

4.5.3 从 IPv4 向 IPv6 过渡

4.5.4 ICMPv6

4.6 互联网的路由选择协议

4.6.1 有关路由选择协议的几个基本概念

1. 理想的路由算法

路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目。一个理想的路由算法应具有如下的一些特点[BELL86]:

(1)算法必须是正确的和完整的

(2)算法在计算上应简单

(3)算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性

(4)算法应具有稳定性

(5)算法应是公平的

(6)算法应是最佳的

所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

2. 分层次的路由选择协议

这样,互联网就把路由选择协议划分为两大类,即:

(1)内部网关协议 IGP(Interior Gateway Protocol):具体的协议有很多种,如 RIP 和 OSPF 等

(2)外部网关协议 EGP(External Gateway Protocol):目前使用的协议是 BGP-4。

4.6.2 内部网关协议 RIP

1. 协议 RIP 的工作原理

RIP(Routing Information Protocol)是内部网关协议 IGP 中最先得到广泛使用的协议[RFC 1058],它的中文译名是路由信息协议。RIP 是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。

RIP 允许一条路径最多包含 15 个网络。因此“距离”等于 16 时即相当于不可达。可见 RIP 只适用于小型互联网

协议 RIP 的特点是:

(1)仅和相邻路由器交换信息。

(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表

(3)按固定的时间间隔交换路由信息,例如,每隔 30 秒。

2. 距离向量算法

3. 坏消息传播得慢

4.6.3 内部网关协议 OSPF

1. 协议 OSPF 的基本特点

OSPF 最主要的特征就是使用链路状态协议(link state protocol),而不是像 RIP 那样的距离向量协议。协议 OSPF 的特点是

(1)向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法(flooding),这就是路由器通过所有输出端口向所有相邻的路由器发送信息。

(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息

(3)当链路状态发生变化或每隔一段时间(如 30 分钟),路由器向所有路由器用洪泛法发送链路状态信息

2. OSPF 的五种分组类型

4.6.4 外部网关协议 BGP

1. 协议 BGP 的主要特点

我们知道,内部网关协议(如 RIP 或 OSPF)主要是设法使数据报在一个 AS 种尽可能有效地从源站传送到目的站。在一个 AS 内部也不需要考虑其它方面的策略。然而 BGP 使用的环境却不同。这主要是因为以下的两个原因:

第一,互联网的规模太大,使得自治系统 AS 之间的路由选择非常困难

第二,自治系统 AS 之间的路由选择必须考虑有关策略

由于上述情况,边界网关协议 BGP 只能是力求选择出一条能够到达目的网络前缀且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由BGP采用了路径向量(path vector)路由选择协议,它与距离向量协议(如 RIP)和链路状态协议(如 OSPF)都有很大的区别。

2. BGP 路由

3. 三种不同的自治系统 AS

4. BGP 的路由选择

5. BGP 的四种报文

4.6.5 路由器的构成

1. 路由器的结构

图4-54 典型的路由器的结构(图中的数字1~3表示相应层次的构件)

从图4-54 可以看出,整个的路由器结构可划分为两大部分:路由选择部分和分组转发部分

2. 交换结构

4.7 IP 多播

4.7.1 IP 多播的基本概念

4.7.2 在局域网上进行硬件多播

4.7.3 网际组管理协议 IGMP 和多播路由选择协议

4.8 虚拟专用网 VPN 和网络地址转换 NAT

4.8.1 虚拟专用网 VPN(安全)

为了解决这种仅在内部使用的本地地址和互联网中某个 IP 地址重合所出现地址的二义性问题,RFC 1918 指明了一些专用地址(private address,即私有地址)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。2013 年 4 月,RFC 6890 全面地给出了所有特殊用途的 IPv4 和 IPv6 地址,但三个 IPv4 专用地址块的指派并无变化,即

(1)10.0.0.0/8,即从 10.0.0.0 到 10.255.255.255。

(2)172.16.0.0/12,即从 172.16.0.0 到 172.31.255.255。

(3)192.168.0.0/16,即从 192.168.0.0 到 192.168.255.255。

有时一个机构的 VPN 需要有某些外部机构(通常就是合作伙伴)参加进来。这样的 VPN 就称为外联网(extranet 或 extranet VPN,即外联网 VPN)。

4.8.2 网络地址转换

装有 NAT 软件的路由器叫作 NAT 路由器,它至少有一个有效的外部全球 IP 地址。

4.9 多协议标签交换 MPLS

4.9.1 MPLS 的工作原理

4.9.2 MPLS 首部的位置与格式

4.9.3 新一代的 MPLS

4.10 软件定义网络 SDN 简介

本章的重要概念

习题

4-15

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/148827.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch实例:简单线性回归的训练和反向传播解析

文章目录 🥦引言🥦什么是反向传播?🥦反向传播的实现(代码)🥦反向传播在深度学习中的应用🥦链式求导法则🥦总结 🥦引言 在神经网络中,反向传播算法…

【Java 进阶篇】JDBC 数据库连接池 C3P0 详解

数据库连接池是数据库编程中常用的一种技术,它可以有效地管理数据库连接,提高数据库访问的性能和效率。在 Java 编程中,有多种数据库连接池可供选择,其中之一就是 C3P0。本文将详细介绍 C3P0 数据库连接池的使用,包括原…

linux内核分析:网络协议栈

从本质上来讲,所谓的建立连接,其实是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,并用这样的数据结构来保证面向连接的特性。TCP 无法左右中间的任何通路,也没有什么虚拟的连接,中间的通路根本意识不到两端使用了 TCP 还是 UDP。 所谓的连接…

redis持久化与调优

一 、Redis 高可用: 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。但是在Redis语境中,高可用的含义似乎要宽泛一些&#x…

OpenCV利用Camshift实现目标追踪

目录 原理 做法 代码实现 结果展示 原理 做法 代码实现 import numpy as np import cv2 as cv# 读取视频 cap cv.VideoCapture(video.mp4)# 检查视频是否成功打开 if not cap.isOpened():print("Error: Cannot open video file.")exit()# 获取第一帧图像&#x…

【赠书活动第3期】《构建新型网络形态下的网络空间安全体系》——用“价值”的视角来看安全

目录 一、内容简介二、读者受众三、图书目录四、编辑推荐五、获奖名单 一、内容简介 经过30多年的发展,安全已经深入到信息化的方方面面,形成了一个庞大的产业和复杂的理论、技术和产品体系。 因此,需要站在网络空间的高度看待安全与网络的…

UE5报错及解决办法

1、编译报错,内容如下: Unable to build while Live Coding is active. Exit the editor and game, or press CtrlAltF11 if iterating on code in the editor or game 解决办法 取消Enable Live Coding勾选

企业部署,springboot+vue+vue,Linux上部署mysql与redis,docker中部署nginx,jenkins。完整详细。

企业项目部署全流程笔记 前言 涉及:Linux服务器,docker,Jenkins,nginx,springoot,vue,mysql,redis,git, docker生成容器类型:MySql&#xff0c…

string类的模拟实现(万字讲解超详细)

目录 前言 1.命名空间的使用 2.string的成员变量 3.构造函数 4.析构函数 5.拷贝构造 5.1 swap交换函数的实现 6.赋值运算符重载 7.迭代器部分 8.数据容量控制 8.1 size和capacity 8.2 empty 9.数据修改部分 9.1 push_back 9.2 append添加字符串 9.3 运算符重载…

[学习笔记]ARXML - Data Format

参考AUTOSAR文档: https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdfhttps://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdf 编码 arxml只允许使用UTF-8编码&#xff…

小谈设计模式(19)—备忘录模式

小谈设计模式(19)—备忘录模式 专栏介绍专栏地址专栏介绍 备忘录模式主要角色发起人(Originator)备忘录(Memento)管理者(Caretaker) 应用场景结构实现步骤Java程序实现首先&#xff…

VC++创建windows服务程序

目录 1.关于windows标准可执行程序和服务程序 2.服务相关整理 2.1 VC编写服务 2.2 服务注册 2.3 服务卸载 2.4 启动服务 2.5 关闭服务 2.6 sc命令 2.7 查看服务 3.标准程序 3.1 后台方式运行标准程序 3.2 查找进程 3.3 终止进程 以前经常在Linux下编写服务器程序…

小程序中如何开启分销

小程序共享微信生态,商家可以通过小程序来快速扩大自己的销售渠道,其中一个非常受重要的功能就是分销。通过开启分销功能,商家可以让更多的人参与到销售中来,从而提高销售额。那么,在小程序中如何开启设置分销呢&#…

Qt model/view 理解01

在 Qt 中对数据处理主要有两种方式:1)直接对包含数据的的数据项 item 进行操作,这种方法简单、易操作,现实方式单一的缺点,特别是对于大数据或在不同位置重复出现的数据必须依次对其进行操作,如果现实方式改…

1802_在Linux系统上开发ARM单机片机嵌入式软件

全部学习汇总: GreyZhang/little_bits_of_linux: My notes on the trip of learning linux. (github.com) 1. 在Linux上也有嵌入式的开发环境,或许还有很多。不过,我现在接触到的大部分还是Windows居多。这一份文件介绍的是一个mbed platform…

OK3568 forlinx系统编译过程及问题汇总

1. 共享文件夹无法加载;通过网上把文件夹加载后,拷贝文件很慢,任务管理器查看发现硬盘读写速率很低。解决办法:重新安装vmware tools。 2. 拷贝Linux源码到虚拟机,解压。 3. 虚拟机基本库安装 forlinxubuntu:~$ sudo…

《C和指针》笔记33:指针数组

除了创建整型数组一样,也可以声明指针数组。 int *api[10];为了弄清这个复杂的声明,我们假定它是一个表达式,并对它进行求值。下标引用的优先级高于间接访问,所以在这个表达式中,首先执行下标引用。因此,a…

连续爆轰发动机

0.什么是爆轰 其反应区前沿为一激波。反应区连同前驱激波称为爆轰波。爆轰波扫过后,反应区介质成为高温高压的爆轰产物。能够发生爆轰的系统可以是气相、液相、固相或气-液、气-固和液-固等混合相组成的系统。通常把液、固相的爆轰系统称为炸药。 19世纪80年代初&a…

Spring Boot中的@Controller使用教程

一 Controller使用方法,如下所示: Controller是SpringBoot里最基本的组件,他的作用是把用户提交来的请求通过对URL的匹配,分配个不同的接收器,再进行处理,然后向用户返回结果。下面通过本文给大家介绍Spr…

Vue中如何进行网页截图与截屏

在Vue中实现网页截图与截屏功能 网页截图与截屏功能在许多Web应用程序中都非常有用。Vue.js作为一个流行的JavaScript框架,提供了许多工具和库来简化网页截图和截屏的实现。本文将介绍如何使用Vue来实现一个网页截图和截屏功能的示例,包括使用html2canv…