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

news2024/12/25 23:54:33

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.coloradmin.cn/o/1060790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(四)正点原子STM32MP135移植——u-boot移植

一、概述 u-boot概述就不概述了,u-boot、kernel、dtb三件套,dddd 经过国庆艰苦奋战,已经成功把所有功能移植好了 二、编译官方代码 进入u-boot的目录 2.1 解压源码、打补丁 /* 解压源码 */ tar xf u-boot-stm32mp-v2022.10-stm32mp-r1-r0.…

zookeeper选举机制

全新集群选举 zookeeper 全新集群选举机制网上资料很多说法很模糊,仔细思考了一下,应该是这样 得到票数最多的机器>机器总数半数 具体启动过程中的哪个节点成为 leader 与 zoo.cfg 中配置的节点数有关,下面以3个举例 选举过程如下 server…

【Vue组件化编程】

Vue组件化编程 1 对组件的理解2 非单文件组件2.1 基本使用2.2 几个注意点2.3 组件的嵌套2.4 VueComponent构造函数2.5 一个重要的内置关系 3 单文件组件 1 对组件的理解 组件:实现应用中局部功能代码和资源的集合。优点:文件好维护;依赖关系不…

力扣 -- 96. 不同的二叉搜索树

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int numTrees(int n) {vector<int> dp(n1);//初始化dp[0]1;//填表for(int i1;i<n;i){for(int j1;j<i;j){//状态转移方程dp[i](dp[j-1]*dp[i-j]);}}//返回值return dp[n];} }; 你学会了吗&…

SpringBoot美食网站系统

采用技术:springbootvue 项目亲测可以完美运行

typscript开发环境搭建

typescript是基于javascript的强类型标记性语言&#xff0c;使用typescript语言可开发出不同规模的、易于扩展的web页面应用&#xff0c;本文主要描述typescript的开发环境搭建。 npm install -g typescript 如上所示&#xff0c;在本地开发环境中&#xff0c;使用nodejs运行…

苹果ios应用ipa文件签名为什么需要签名才能上架?有没有别的方式替代苹果签名?

近年来&#xff0c;苹果设备的普及程度逐渐加深&#xff0c;随之而来的是越来越多的应用程序涌入了苹果的应用商店。为了保障用户设备和数据的安全&#xff0c;以及减少恶意程序和恶意软件的传播&#xff0c;苹果公司实行了一套严格的应用安全机制&#xff0c;其中就包括应用程…

【现代机器人学】学习笔记十四:中文版印刷/翻译勘误

首先声明&#xff0c;这个印刷/勘误并非经过官方的认可&#xff0c;只是我个人的粗浅的理解。如果内容有误&#xff0c;恳请大家谅解指正。 其实有的并不算错&#xff0c;只是我个人认为不太准确&#xff0c;在我学习过程中产生了一些小疑惑和误解。 都是一些小毛病&#xff…

2024级199管理类联考之数学基础(下篇)

平面几何(平均2题) 三角形(性质、特殊三角形、全等与相似) 性质 由不在同一直线的三条线段首尾依次连接所组成的图形三条边、三个内角、三个定点三角形内角和为180度,外角和为360度,多边形的外角和为360度,n多边形的内角和为(n-2)*180度一个外角等于不相邻的两个内角之和任意…

NXP公司K60N512+PWM控制BLDC电机

本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡&#xff1a;1.塔式系统支撑模块&#xff08;TWR-Elevator&#xff09;&#xff0c;用以连接微控制器以及周边模块&#xff1b;2.低…

雷达编程实战之提高探测速度

有效帧频率作为雷达一个非常核心的指标&#xff0c;它代表了雷达探测识别的速度&#xff0c;速度越快&#xff0c;后级各项智能驾驶功能就能得到更快、更有效的判断。本篇文章首先从硬件的角度&#xff0c;提供了一种合理利用片上资源提高探测识别速度的常用方法&#xff0c;然…

qt 5.15.2 安卓 macos

macos环境安卓配置 我的系统是monterey12.5.1 打开qt的配置界面 这里版本是java1.8&#xff0c;注意修改这个json文件&#xff0c;显示包内容 {"common": {"sdk_tools_url": {"linux": "https://dl.google.com/android/repository/comm…

Boost程序库完全开发指南:1-开发环境和构建工具

Boost官方于2019年12月发布的1.72版编写&#xff0c;共包含160余个库/组件&#xff0c;涵盖字符串与文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域&#xff0c;使用Boost&#xff0c;将大大增强C的功能和表现力。环境&#xff1a;Windows 10&#x…

JAVA学习(4)-全网最详细~

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

vertx的学习总结6

Beyond the event bus 一、章节覆盖&#xff1a; 如何在事件总线之上公开服务 verticles和事件总线服务的异步测试 动态代理&#xff1a; MyService 接口 package porxy.test;import io.vertx.codegen.annotations.ProxyGen;ProxyGen public interface MyService {void he…

Linux学习之悟空派上实现OLED的无线网IP及CPU温度显示【守护进程】

起因 最近各种网购平台似乎都在推送99元的悟空派全志H3的开发板&#xff0c;出于好奇就买了一块来试试水&#xff0c;由于这块板子基本上和orangepi-Zero的硬件结构一模一样&#xff0c;所以设备树、boot这些就用orangepi现成的部件了。 因为本人比较喜欢使用SSH操作&#xff…

全志ARM926 Melis2.0系统的开发指引①

全志ARM926 Melis2.0系统的开发指引① 1. 编写目的2. Melis2.0 系统概述3. Melis2.0 快速开发3.1. Melis2.0 SDK 目录结构3.2. Melis2.0 编译环境3.3. Melis2.0 固件打包3.4. Melis2.0 固件烧录3.5.串口打印信息3.6. Melis2.0 添加和调用一个模块3.6.1. 为什么划分模块&#xf…

Sentinel-微服务保护

一、初识Sentinel 1、雪崩问题及解决方案 雪崩问题 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。 解决雪崩问题的常见方式有四种&#xff1a; 1、超时处理&#xff1a;设定超时时间&#xff0c;请求超过一定时间…

【C语言】内存函数的详细教学和模拟实现

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是gugugu。希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f194;本文由 gugugu 原创 CSDN首发&#x1f412; 如需转载还请通知⚠…