计算机网络(第8版)-第4章 网络层
4.1 网络层的几个重要概念
4.1.1 网络层提供的两种服务
如果主机(即端系统)进程之间需要进行可靠的通信,那么就由主机中的运输层负责(包括差错处理、流量控制等)。
4.1.2 网络层的两个层面
4.2 网际协议 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 位,因此数据报的最大长度为 字节。
(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
相关文章:
计算机网络(第8版)-第4章 网络层
4.1 网络层的几个重要概念 4.1.1 网络层提供的两种服务 如果主机(即端系统)进程之间需要进行可靠的通信,那么就由主机中的运输层负责(包括差错处理、流量控制等)。 4.1.2 网络层的两个层面 4.2 网际协议 IP 图4-4 网…...

chromadb 0.4.0 后的改动
本文基于一篇上次写的博客:[开源项目推荐]privateGPT使用体验和修改 文章目录 一.上次改好的ingest.py用不了了,折腾了一会儿二.发现privateGPT官方更新了总结下变化效果 三.others 一.上次改好的ingest.py用不了了,折腾了一会儿 pydantic和c…...

Windows环境下下载安装Elasticsearch和Kibana
Windows环境下下载安装Elasticsearch和Kibana 首先说明这里选择的版本都是7.17 ,为什么不选择新版本,新版本有很多坑,要去踩,就用7就够了。 Elasticsearch下载 Elasticsearch是一个开源的分布式搜索和分析引擎,最初由…...

机器学习:随机森林
集成学习 集成学习(Ensemble Learning)是一种机器学习方法,通过将多个基本学习算法的预测结果进行组合,以获得更好的预测性能。集成学习的基本思想是通过结合多个弱分类器或回归器的预测结果,来构建一个更强大的集成模…...

ctfshow-web11(session绕过)
php代码审计: function replaceSpecialChar($strParam){$regex "/(select|from|where|join|sleep|and|\s|union|,)/i";return preg_replace($regex,"",$strParam);} 首先定义了一个函数,主要是使用preg_replace函数对我们提交的内…...

状态模式:对象状态的变化
欢迎来到设计模式系列的第十七篇文章。在本文中,我们将深入探讨状态模式,这是一种行为型设计模式,用于管理对象的状态以及状态之间的变化。 什么是状态模式? 状态模式是一种允许对象在内部状态发生变化时改变其行为的设计模式。…...

解耦常用方法
1、类别 DIP依赖倒置、IoC控制反转、DI依赖注入(Dependency Injection) c11 实现依赖注入 控制反转、依赖注入、依赖倒置傻傻分不清楚? 我曾想深入了解的:依赖倒置、控制反转、依赖注入 2、方法 解耦基本方法 step1:…...

根据二叉树创建字符串--力扣
🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…...

代码事件派发机制(观察者模式)
事件派发机制主要用来解决: 代码解耦和维护,一般在代码中会要管理一些闭包函数 然后在指定的业务中触发运行闭包函数逻辑用了事件派发机制 就可以先把要处理的事件 挂在在一个事件管理类中 上面挂满要处理的闭包函数然后通过dispatch 出发要执行的任务 也就是闭包1. PHP中实…...

微服务技术栈-Nacos配置管理和Feign远程调用
文章目录 前言一、统一配置管理1.添加配置文件2.微服务拉取配置3.配置共享 三、Feign远程调用总结 前言 在上篇文章中介绍了微服务技术栈中Nacos这个组件的概念,Nacos除了可以做注册中心,同样可以做配置管理来使用。同时我们将学习一种新的远程调用方式…...

操作系统 OS
本文章是学习《操作系统》慕课版 和 王道《2024年 操作系统 考研复习指导》后所做的笔记,其中一些图片来源于学习资料。 目录 概念(定义) 目标 方便性 有效性 可扩充性 开放性 作用 OS 作为用户与计算机硬件系统之间的接口 — 人机交…...

基于ffmpeg给视频添加时间字幕
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,我们可以基于ffmpeg对视频进行各种操作。本文主要介绍基于ffmpeg给视频添加字幕,字幕的内容为视频所播放的时间(故需要安装ffmpeg,具…...

爬虫基础知识点快速入门
以下是一个包含注释的Python示例,演示了基本的网页爬取过程,以及一些常见的爬虫知识点: # 导入必要的库 import requests # 用于发送HTTP请求 from bs4 import BeautifulSoup # 用于解析HTML import csv # 用于数据存储# 1. 指定目标网站…...

解释器模式 行为型模式之五
1.定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器。比如加减乘除在代码里是一种表示,我们需要翻译成可以阅读的数学公式,并且可以供用户输入数字得到输出结果。 2.组成结构 抽象表达式(Abstract Expres…...

2023年中国汽车座舱行业发展现状及趋势分析:高级人机交互(HMI)系统将逐步提升[图]
2022年有22.3%的汽车用户认为座舱内车载娱乐功能成为影响使用体验的关键因素。当前智能电动汽车的用户画像与娱乐、游戏等应用的用户画像相似,均以年轻人作为目标用户。年轻化的用户将娱乐功能的使用习惯延伸至汽车座舱内,对于座舱功能的需求不再局限于导…...

常见的通用型项目管理软件推荐
常用项目管理软件有很多。按适合的行业来分,有针对各种垂直行业定制的,也有全行业通用的。从厂商来看,有国外研发的,也有国内厂商的,体现在软件的设计思路不同,上手的手感也很不一样。从体量来看࿰…...

手机总是提醒系统更新,到底要不要更新呢?
不知道你们会不会和我一样,在收到手机系统更新的通知时,犹豫要不要更新? 更新完了手机会变卡顿吗? 每次都要更新吗?怎样才能关闭它呢? 01 手机系统更新啥内容? 手机系统更新可以分为大版本更新和小版本更新。 (1) 大版本更新 如iOS15升…...

什么是API
API (Application Programming Interface,应用程序编程接口) Java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层封装起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档…...

RedissonClient 分布式锁 处理并发访问共享资源
1.分布式锁的概念及需求 分布式锁是一种在多个进程或线程之间同步访问共享资源的机制。在分布式系统中,由于各个节点之间的通信延迟以及资源访问的竞争,可能导致数据不一致和并发问题。为了解决这些问题,我们需要一种能够在不同节点上保证同…...

Hadoop-2.5.2平台环境搭建遇到的问题
文章目录 一、集群环境二、MySQL2.1 MySQL初始化失败2.2 MySQL启动报错2.3 启动时报不能打开日志错2.4 mysql启动时pid报错 二、Hive2.1 mr shuffle不存在2.1.2 查看yarn任务:2.1.3 问题描述:2.1.4 参考文档 一、集群环境 java-1.8.0-openjdk-1.8.0.181…...

基于WTMM算法的图像多重分形谱计算matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、WTMM算法概述 4.2、WTMM算法原理 4.2.1 二维小波变换 4.2.2 模极大值检测 4.2.3 多重分形谱计算 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部…...

VR全景展示带来旅游新体验,助力旅游业发展!
引言: VR(虚拟现实)技术正以惊人的速度改变着各行各业,在旅游业中,VR全景展示也展现了其惊人的影响力,为景区带来了全新的宣传机会和游客体验。 一.什么是VR全景展示? VR全景展示是…...

Xcode 15 编译出错问题解决
正常升级xcode 15以后发现原来没有出现报错的代码,现在出现了编译错误。(如果没有出现请忽略)下面教你如何解决这个问题。 1、pod update更新cocoapods,因为其根据xcode15做了很多的更新,保证cocoapods是最新的。 千…...

基于指数趋近律的机器人滑模轨迹跟踪控制算法及MATLAB仿真
机械手是工业制造领域中应用最广泛的自动化机械设备,广泛应用于工业制造、医疗、军工、半导体制造、太空探索等领域。它们虽然形式不同,但都有一个共同的特点,即能够接受指令,并能准确定位到三维(或二维)空间的某一点进行工作。由…...

华为云API自然语言处理的魅力—AI情感分析、文本分析
云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI自言语言的情感分析、文本分词、文本翻译 1 IntelliJ IDEA 之API插件介绍 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE&a…...

微擎小程序获取不到头像和昵称解决方案
这是一个使用微擎小程序的代码示例,其中包含了获取用户头像和昵称的功能。以下是解决方案: 首先,在<button>标签上添加open-type"chooseAvatar"属性,并绑定bindchooseavatar事件: <button class&qu…...

Qt 对界面类重命名的步骤
有些时候因为一些原因,需要修改Qt中创建的界面类,修改的地方比较多,一定要留意有没有修改完全,否则会出现各种奇怪报错。 比如,将MainWindow界面类名修改为lb_logdisplay 修改步骤: 修改文件名:…...

使用docker搭建nacos单机、集群 + mysql
单机搭建 1 拉取mysql镜像 docker pull mysql:5.7.40 2 启动mysql容器 docker run -d --namemysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 mysql:5.7.40 3 执行nacos的数据库脚本 /* * Copyright 1999-2018 Alibaba Group Holding L…...

FreeRTOS自我救赎2之基本工程建立
System Core 1.System Core >SYS 2.System Core >RCC 3.System Core >NVIC Middleware Middleware >FREERTOS Clock configuration Project Manager 在编译生成的代码前需要找一个与芯片对应的启动文件,启动文件添加进来,编译就没问题了...

【C++设计模式之解释器模式:行为型】分析及示例
简介 解释器模式(Interpreter Pattern)是一种行为型设计模式,它提供了一种解决问题的方法,通过定义语言的文法规则,解释并执行特定的语言表达式。 解释器模式通过使用表达式和解释器,将文法规则中的句子逐…...