计算机网络「通关指南」
计算机网络通关指南
第 1 章 计算机网络和因特网
概念速览
计算机网络:一些具有独立功能的计算机通过通信介质相互连接起来,以实现资源共享的计算机的集合。
互连网:一些相互连接的计算机网络的集合(网络的网络)。
互联网:互连网的同义词。
internet 与 Internet
- internet:普通名词,泛指一般的互连网
- Internet:专有名词:世界范围的互连网;使用
TCP/IP
协议族;前身是阿帕网ARPANET
主机、端系统:与因特网相连的计算机或其他设备。如PC,工作站,服务器,智能手机,电视,游戏机,汽车,电器,手表,温度调节系统。
端系统通过通信链路和分组交换机连接在一起。
分组:当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,由此形成的信息包叫分组。
分组交换机分为路由器和链路层交换机两种
- 链路层交换机用于接入网
- 路由器用于网络核心
因特网标准(Internet Standard)由因特网工程任务组(IETF)研发
IETF 的标准文档称为请求评价(RFC)
因特网应用程序运行在端系统上,并不运行在网络核心中的分组交换机中。尽管分组交换机能够加速端系统之间的数据交换,但它们并不在意作为数据的源或宿的应用程序。
协议:定义了两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。
- 语法
- 语义
- 时序(同步)
网络边缘:端系统位于因特网的边缘,故称为端系统
接入网:将端系统物理连接到其边缘路由器的网络。边缘路由器:是端系统到任何其他远程端系统的路径上的第一台路由器。
- 家庭接入:DSL、电缆、FTTH、拨号和卫星
- 数字用户线(DSL):本地电话公司也是ISP。
- 电缆因特网接入:利用有线电视公司现有的有线电视基础设施。共享广播媒体:由头端发送的每个分组向下行经过每段链路到达每个家庭;每个家庭发送的每个分组经上行信道向头端传输。
- 光纤到户(FTTH):从本地中心局直接到家庭提供了一条光纤路径。
- 拨号与卫星:在无法提供以上方式的偏远地方,使用传统电话线拨号接入。
- 企业(和家庭)接入:以太网和 WiFi
- 广域无线网接入:3G和LTE
物理媒体
- 引导型媒体:光缆、双绞铜线、同轴电缆
- 非引导型媒体:无线局域网、数字卫星频道
网络核心:由互联因特网端系统的分组交换机和链路组成的网状网络。
分组交换:计算机网络中,源主机将长报文划分为较小的数据块,称之为分组。在源和目的地之间,这些分组中的每个都通过通信链路和分组交换机传送。
-
存储转发:在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。
-
丢包:因为排队缓存空间大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了,此时到达的分组或已经排队的分组之一将被丢弃。
电路交换:双方通话前先建立连接,连接期间在该网络链路上预留了恒定的传输速率,发送方能够以确保的恒定速率向接收方传送数据。
分组交换和电路交换的比较
- 电路交换不考虑需求,而预先分配了传输链路的使用,预留了端系统之间沿通信路径所需要的资源,这使得已分配而并不需要的链路时间未被利用(静默期专用链路空闲),发送方能够以确保的恒定速率向接收方传送数据。
- 分组交换按需分配链路使用,不预留资源,链路传输能力将在所有需要在链路上传输分组的用户之间逐分组地被共享。分组交换的端到端时延是可变的和不可预测的(主要是排队时延的变动),不适合实时服务,但是提供了比电路交换更好的带宽共享,比电路交换更简单、更有效,实现成本更低。
网络的网络
- 因特网服务提供商(ISP):端系统通过因特网服务提供商接入互联网。每个 ISP 自身就是一个由多台分组交换机和多段通信链路组成的网络。
- 因特网交换点(IXP):IXP 是一个汇合点,多个 ISP 能够在这里一起对等。客户 ISP 支付给提供商 ISP 的费用数额反映了它通过提供商交换的通信流量。为了减少这些费用,位于相同等级结构层次的邻近一对 ISP 能够对等(peer),也就是说,能够直接将它们的网络连到一起,使它们之间的所有流量经直接连接而不是通过上游的中间 ISP 传输。
时延
-
处理时延 \(d_{proc}\):检查分组首部和决定将该分组导向何处、检查比特级别差错等所需要的时间。
-
排队时延 \(d_{queue}\):如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达的分组必须在输出缓存中等待。时间无法确定。
-
传输时延 \(d_{trans}\):
L/R
,L 比特表示分组长度,R bps表示路由器之间的链路传输速率。这是将所有分组的比特推向链路所需要的时间。 -
传播时延 \(d_{prop}\):
d/s
,d 是路由器之间的距离,s 是链路的传播速率。表示从链路起点到另一个路由器传播所需要的时间。 -
总时延:\(d_{nodal}=d_{proc}+d_{queue}+d_{trans}+d_{prop}\)
-
流量强度:
La/R
,a 表示分组到达队列的平均速率。流量强度不能大于 1
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105213303121-1826237122.png)
吞吐量:单位时间内通过某个网络或接口的实际数据量。
实际吞吐量:\(min \left\{ R_1,R_2,...,R_N\right\}\) ,R 是链路传输速率。即瓶颈链路传输速率。当没有其他千扰流最时,其吞吐量能够近似为沿着源和目的地之间路径的最小传输速率
时延带宽积:传播时延*带宽,以比特位单位的链路长度,链路上存在的最大比特数。
通信子网:物理层、数据链路层、网络层
资源子网:传输层、会话层、表示层、应用层
计算机网络的宽带:网络可通过的最高数据率,即每秒多少比特。
宽带线路:可通过较高数据率的线路。每秒有更多比特从计算机注入到线路。
宽带线路和窄带线路上比特的传播速率是一样的。:通信线路上通常都是串行传输的。宽带线路传输的比特间距短,密度大。
协议
习题
🔔 注意点
- 大
B
是字节,小b
是比特,一个大B
顶 8 个小b
M = 10^6
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105215219136-112415330.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105215511616-55817967.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105220217208-1739224363.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105220849308-1565298335.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105221605607-1106378506.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105222218094-974880312.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105222711779-1024316701.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105231905173-810193031.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221105231936950-772458167.png)
略
平均排队时延大小随流量强度的增加而增加。随着流量强度接近于1,平均排队时延迅速增加。该强度的少量增加将导致时延大比例增加。
见上文图
- 引导型媒体:光缆、双绞铜线、同轴电缆
- 非引导型媒体:无线局域网、数字卫星频道
定义了两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。
计算机网络中,源主机将长报文划分为较小的数据块,称之为分组。在源和目的地之间,这些分组中的每个都通过通信链路和分组交换机传送。
将端系统物理连接到其边缘路由器的网络。
因特网工程任务组
第 2 章 应用层
概念速览
应用程序体系结构
- 客户-服务器体系结构:客户之间不直接通信,而是通过IP地址与服务器通信,服务器总是打开的。当服务器收到来自客户对某对象的请求时,它向该客户发送所请求的对象作为响应。
- P2P 体系结构:应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。对位于数据中心的专用服务器有最小依赖。自拓展性:尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。
套接字
- 进程通过一个称为套接字(sock)的软件接口向网络发送报文和从网络接收报文
- 同一台主机内应用层与运输层之间的接口
- 建立网络应用程序的可编程接口
- 应用程序和网络之间的应用程序编程接口
- 应用程序开发者可以控制套接字在应用层的一切,但是对运输层端几乎没有控制权,仅限于:
- 选择运输层协议
- 也许能设定几个运输层参数,如最大缓存和最大报文段长度等
IP地址:主机的唯一标识
端口号:进程的表示
运输层协议为调用它的应用程序提供的服务
- 可靠数据传输:一个协议提供了确保数据交付服务
- 吞吐量:运输层协议能够以某种特定的速率提供确保的可用吞吐量。
- 带宽敏感的应用:具有吞吐量要求的应用程序。如多媒体应用。
- 弹性应用:能根据当时可用的带宽或多或少地利用可供使用的吞吐量。如电子邮件、文件传输、Web传送
- 定时:规定时延不超过多少。电话和游戏等交互式实时应用程序要求高。
- 安全性
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106000506837-1054270395.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106001250731-569836716.png)
HTTP
-
概述:Web 的应用层协议是超文本传输协议(HTTP)
-
运输层协议:
TCP
-
Web 页面组成:HTTP 基本文件 + 引用对象
-
无状态协议:服务器不保存关于客户的任何信息。
-
非持续连接:每个请求/响应对是经过一个单独的
TCP
连接发送。每个TCP
连接在服务器发送一个对象后关闭,并不为其他对象而持续下来。每个TCP
连接只传输一个请求报文和一个响应报文。- 必须为每一个请求对象建立和维护一个全新的连接。对于每个这样的连接,在客户和服务器中都要分配
TCP
缓冲区和保持TCP
变量,给服务器带来了严重的负担。 - 每一个对象经受两倍
TCP
交付时延,一个RTT
用于创建TCP
,另一个RTT
用于请求和接收一个对象。
- 必须为每一个请求对象建立和维护一个全新的连接。对于每个这样的连接,在客户和服务器中都要分配
-
持续连接:所有的请求及其响应经相同的
TCP
连接发送
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106193403201-1242341218.png)
- HTTP 既能够使用非持续连接,也能够使用持续连接。默认使用持续连接
- 往返时间(RTT):一个短分组从客户到服务器然后再返回客户所花费的时间。包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延。
- TCP 连接三次握手
- 客户向服务器发送一个小
TCP
报文段 - 服务器用一个小
TCP
报文段做出确认和响应 - 客户向服务器返回确认。客户结合确认向
TCP
连接发送一个HTTP
请求报文。
- 客户向服务器发送一个小
- 一旦请求报文到达服务器,服务器就在该
TCP
连接上发送响应文件,总的响应时间就是两个RTT
加上服务器传输文件的时间 HTTP
默认模式是使用带流水线的持续连接。- 短距离情况使用持续
HTTP
更好,总请求数少,对服务器压力小,后续请求不需要再建立TCP
连接。 - 非持续并行 HTTP:请求基本页面需要建立
TCP
连接,建立连接之后进行请求,该请求过程可以并行,但因为非持续,后续申请需要重新建立TCP
连接。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106193211499-1586878811.png)
- HTTP 默认管道化(pipeling):在响应到达之前,可以将多条请求放入队列,当第一条请求发往服务器的时候,第二第三条请求也可以开始发送了,不用等到第一条请求响应回来,在高延时网络条件下,这样做可以降低网络的环回时间,提高性能。
![](https://img2023.cnblogs.com/blog/2288178/202301/2288178-20230128170509092-298999114.png)
- HTTP 请求报文
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106194128182-1483254765.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106194016329-1887033278.png)
-
请求行
- 方法:GET、POST、HEAD、PUT、DELETE
- GET:最常用,可在 url 中填入数据,向服务器请求
- POST:提交表单,内容放在实体体中,web 页面特定内容依赖于表单字段中的内容
- HEAD:当服务器收到一个使用 HEAD 方法的请求时,HTTP 报文进行响应,但是并不返回请求对象。应用程序开发者常用 HEAD 方法进行调试跟踪
- PUT:PUT 方法常 Web 发行工具联合使用,它允许用户上传对象到指定的 We 服务器上指定的路径(目录)。PUT 方法也被那些需要向 Web 服务器上传对象的应用程序使用
- DELETE:允许用户或者应用程序删除 Web 服务器上的对象
- 方法:GET、POST、HEAD、PUT、DELETE
-
首部行
- 首部 Host:指明了对象所在的主机
- Connection: close:不使用持续连接,要求服务器发送完请求对象后关闭连接
- User-agent:指明用户代理,即向服务器发送请求的浏览器类型
- Accept-language:用户客户端想得到该对象的语言版本
-
HTTP 响应报文
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106194707976-2003926976.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106194730437-2116848552.png)
- 首部行
- Connection: close:服务器发送完报文后关闭
TCP
连接 - Date:服务器产生并发送响应报文的日期和时间。不是对象创建或者最后修改时间,而是服务器从文件系统检索到对象,将对象插入响应报文,并发送该响应报文的时间。
- Server:服务器类型
- Last-Modified:对象创建或者最后修改的日期和时间
- Content-Length:被发送对象中的字节数
- Content-Type:指示了实体体中的对象是什么类型
- Connection: close:服务器发送完报文后关闭
- 常见状态码
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106195340992-1572271301.png)
- Cookie
- 作用:识别用户、限制用户访问、把内容与用户身份联系起来、保存用户状态
- 四个组件
- HTTP 响应报文中的一个 cookie 首部行
- HTTP 请求报文中的一个 cookie 首部行
- 用户端系统中保留有一个 cookie 文件,并由浏览器管理
- Web 站点的一个后端数据库
- 工作过程
- 用户第一次访问某站点,服务器后端产生一个唯一标识码,索引数据库,设置响应报文 Set-cookie 首部行,返回给浏览器
- 浏览器看到 Set-cookie 首部,在管理的 cookie 文件中添加一行,保存 cookie
- 之后访问该网站的每个 HTTP 请求报文中都包含首部行 Cookie,值为唯一标识码。
![](https://img2023.cnblogs.com/blog/2288178/202301/2288178-20230127201446658-1215607571.png)
-
Web 缓存(代理服务器):代表初始 Web 服务器来满足 HTTP 请求的网络实体。有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。
- 工作过程:
- 浏览器创建一个到 Web 缓存器的 TCP 连接,并发送一个 HTTP 请求
- Web 缓存器检查是否存储本地对象副本,如果有,则用 HTTP 响应返回对象
- 如果没有对象,则打开与对象初始服务器的 TCP 连接,发送 HTTP 请求,初始服务器收到请求之后返回对象
- Web 缓存器收到对象之后在本地存储空间存储一份副本,同时保存最后修改日期 Last-Modified首部行,向客户浏览器用 HTTP 响应返回对象副本。
- 好处(原因):
- 大大减少对客户请求的响应时间
- 大大减少一个机构的接入链路到因特网的通信量,降低费用
- 大大减低因特网上的 Web 流量,改善了所有应用的性能
- 工作过程:
-
条件GET
- 为了解决存放在缓存器中的对象副本可能是陈旧的问题
- 组成
- 请求报文使用 GET 方法
- 请求报文中包含一个 If-Modified-Since:首部行,其值等于最初缓存器存储的响应报文中 Last-Modified:首部行的值
- 工作流程
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106203545452-1626464956.png)
- 因特网中的电子邮件
-
组成部分
- 用户代理:允许用户阅读、回复、转发、保存和撰写报文。
- 邮件服务器:有邮箱和报文队列(如果发送失败,暂存在发送方邮件服务器的报文队列中,以后再尝试发送)
- 简单邮件传输协议(SMTP)
-
SMTP:用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器;将邮件从发送方的用户代理传送到发送方的邮件服务器
- 应用层协议
- SMTP 是因特网电子邮件的核心
- 使用 TCP 可靠数据传输服务
- 有客户端和服务器
- 不使用中间邮件服务器,客户端和服务器直接相连
- 推协议
-
邮件报文格式
- From:
- To:
- Subject:
-
邮件访问协议:用来将邮件从接收方的邮件服务器传送到接收方的用户代理
- 第三版的邮局协议(POP3)
- 特许:通过用户名和口令鉴别用户
- 事务处理:用户代理取回报文,对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息
- 更新:结束该 POP3 会话,邮件服务器删除那些被标记为删除的报文
- POP3 协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法,只能将邮件下载到本地主机
- 因特网邮件访问协议(IMAP)
- IMAP 服务器把每个报文与一个文件夹联系起来
- IMAP 协议为用户提供了创建文件夹以及将邮件从个文件夹移动到另一个文件夹的命令
- 为用户提供了在远程文件夹中查询邮件的命令
- 维护了 IMAP 会话的用户状态信息,
- 具有允许用户代理获取报文某些部分的命令
- HTTP:用户代理就是浏览器,发送方|接收方用户代理和邮件服务器之间都使用 HTTP
- 第三版的邮局协议(POP3)
-
邮件发送过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。当 Bob 要在他的邮箱中读取该报文时,包含他邮箱的邮件服务器(使用用户名和口令)来鉴别 Bob。Alice 的邮箱也必须能处理 Bob 的邮件服务器的故障。如果 Alice 的服务器不能将邮件交付给 Bob 的服务器,Alice 的邮件服务器在一个报文队列 (message queue) 中保持该报文并在以后尝试再次发送。通常每 30 分钟左右进行一次尝试;如果几天后仍不能成功,服务器就删除该报文并以电子邮件的形式通知发送方 (Alice)。
-
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106203752886-180778767.png)
-
HTTP 与 SMTP 的比较
- HTTP Web 服务器向 Web 客户 (通常是一个浏览器)传送文件(也称为对象); SMTP 从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)
- 当进行文件传送时,持续的 HTTP 和 SMTP 都使用持续连接
- HTTP 主要是一个拉协议 (pull protocol),用户从服务器拉取信息,TCP 连接是由想接收文件的机器发起的
- SMTP 基本上是一个推协议 (push protocol) , 即发送邮件服务器把文件推向接收邮件服务器。TCP连接是由要发送该文件的机器发起的
- SMTP 要求每个报文(包括它们的体)采用 7 比特 ASCII 码格式。HTTP 数据则不受这种限制
- 处理一个既包含文本又包含图形(也可能是其他媒体类型)的文档时,HTTP 把每个对象封装到它自己的 HTTP 响应报文中,而 SMTP 则把所有报文对象放在一个报文之中
-
DNS:因特网的目录服务
-
识别主机的方式:主机名和 IP 地址
-
DNS 的主要任务:进行主机名到 IP 地址的转换
-
DNS 是什么
- 域名系统:Domain Name System
- 一个由分层的 DNS 服务器实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
-
运行在 UDP 协议之上,使用 53 号端口
-
提供的服务
- 主机名到 IP 地址的转换
- 主机别名
- 邮件服务器别名
- 负载分配:DNS 返回 IP 地址集合循环
-
类型
- 根 DNS 服务器
- 顶级域(TLD) DNS 服务器
- 权威 DNS 服务器
- 本地 DNS 服务器(不属于 DNS 服务器的层次结构):每个 ISP 都有一个本地 DNS 服务器
-
递归查询和迭代查询
- 递归查询:查询不能立刻获得回答([1,8])
- 迭代查询:查询可以立刻获得回答([2,3],[4,5],[6,7])
-
DNS 缓存:在一个请求链中,当某 DNS 服务器接收到一个 DNS 回答,它能将映射缓存在本地存储器中。本地 DNS 服务器也能缓存 TLD 服务器的 IP 地址。除了少数 DNS 查询,根服务器被绕过了。
-
资源记录(RR):
(Name, Value, Type, TTL)
,DNS 服务器中存储,提供了主机名到 IP 地址的映射。Type = A, Name = 主机名, Value = IP 地址
:(relay1.bar.foo.com, 145.37.93.126, A)
Type = NS, Name = 域, Value = 权威 DNS 服务器主机名
:(foo.com, dns.foo.com, NS)
Type = CNAME, Name = 主机别名, Value = 规范主机名
:(foo.com, relay1.bar.foo.com, CNAME)
Type = MX, Name = 邮件服务器别名, Value = 邮件服务器规范主机名
:(foo.com, mail.bar.foo.com, MX)
-
DNS 报文:查询报文和回答报文格式相同。
- 每个 DNS 回答报文包含了一条或多条资源记录。
-
-
P2P
- 成对间歇连接的主机(称为对等方)彼此直接通信,对总是打开的基础设施服务器有最小的(或者没有)依赖
- 自拓展性:尽管每个对等方都由于请求文件产生工作负载,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。
- 探讨一下 CS 架构和 P2P 架构的分发时间
![](https://img2023.cnblogs.com/blog/2288178/202301/2288178-20230128161210985-44951454.png)
- 视频流和内容分发网
- HTTP 流:所有客户接收到相同编码的视频、尽管对不同的客户或者对于相同客户的不同时间而言,客户可用的带宽大小有很大不同
- 经 HTTP 的动态适应性流(DASH):视频编码为几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。允许客户使用不同的以太网接入速率流式播放具有不同编码速率的视频
- 内容分发网(CDN)
习题
R5.运行在一台主机上的进程,使用什么信息来标识运行在另一台主机上的进程?
目标主机的IP地址和目标进程中套接字的端口号
假如你想尽快地处理从远程客户到服务器的事务,你将使用TCP还是UDP,为什么?
使用UDP
因为TCP是面向连接的可靠数据传输协议,如果使用TCP,在数据流动之前,客户端先需要和服务器端完成三次握手,此外,TCP的拥塞控制机制也会使得数据的传输产生额外的开销。至少需要两个RTT,一个用于设置TCP连接,另一个用于客户机发送请求,用于服务器发送回复。
UDP没有拥塞控制机制,数据可以以任何速率从应用层向网络层注入。可以在一次往返时间RTT内完成客户端将事务请求发送到UDP套接字和服务器应答发送回客户端的UDP套接字两个操作
R12.考虑一个电子商务网站需要保留每一个客户的购买记录。描述如何使用Cookie来完成该功能?
当用户第一次访问站点时,服务器将创建一个唯一的标识号,在其后端数据库中创建一个条目,并将该标识号作为cookie编号设置在响应报文的Set-cookie:首部行中返回。此cookie编号存储在用户的主机上,并由浏览器管理。在后续每次访问该网站期间,浏览器请求会携带cookie:首部行发送给站点。站点可以将cookie标识和客户名建立关联,进而关联到后端数据库,保存客户的购买记录
R13.描述Web缓存器是如何减少接受被请求的对象的试验的,Web缓存器将减少一个用户请求的所有对象或只是其中的某些对象的时延吗?为什么?
- web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象副本,当客户浏览器请求对象已经被缓存到了web缓存器本地,web缓存器将直接向客户浏览器用http响应报文返回该对象,不需要向初始服务器发送请求报文,减少了被请求对象的时延。
- web缓存器将减少一个用于请求的所有对象的时延,即便可能有对象没有被缓存。因为web缓存器能够大大减少一个机构的接入链路到因特网的通信量,并且能整体上大大减少因特网上的web流量,从而改善了所有应用的性能。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106214323628-648731317.png)
获取IP地址所需要的总时间为 RTT1 + RTT2 + ... + RTTn
获取IP地址之后需要建立TCP连接,然后进行基本对象的请求和响应,总共需要 2RTT0
综上,客户点击该超链接到它接收到该对象需要 2RTT0 + RTT1 + RTT2 + ... + RTTn
P8. 参照习题P7,假定在同一服务器上某HTML文件引用了 8个非常小的对象。忽略发送时间,在下列情况下需要多长时间:
a.没有并行TCP连接的非持续HTTP。
b.配置有5个并行连接的非持续HTTP。
c.持续HTTP
a. 需要先获取IP地址,耗时 RTT1 + RTT2 + ... + RTTn ,之后对于每个对象的获取都需要两个RTT,总耗时
RTT1 + RTT2 + ... + RTTn + 2RTT0 * 9 = 18 RTT0 + RTT1 + RTT2 + ... + RTTn
b. 需要先获取IP地址,耗时 RTT1 + RTT2 + ... + RTTn ,之后获取基本对象耗时 2RTT0,8个小对象分成五组,五个组分别有 2,2,2,1,1个对象,五个组并行,耗时 2 * 2 * RTT0
总耗时 6RTT0 + RTT1 + RTT2 + ... + RTTn
c.
1)如果持续连接,不使用管道。需要先获取IP地址,耗时 RTT1 + RTT2 +... + RTTn,之后获取基本对象耗时 2RTT0,然后获取8个对象,不需要断开连接,耗时 8 * RTT0
总耗时 10RTT0 + RTT1 + RTT2 + ... + RTTn
2)如果持续连接,使用管道,即 HTTP 的默认模式。需要先获取IP地址,耗时 RTT1 + RTT2 +... + RTTn,之后获取基本对象耗时 2RTT0,然后获取8个对象,不需要断开连接,耗时 RTT0
总耗时 3RTT0 + RTT1 + RTT2 + ... + RTTn
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221106220807565-293316504.png)
![](https://img2023.cnblogs.com/blog/2288178/202301/2288178-20230128210852896-809391006.png)
a.求出总的平均响应时间。
b.现在假定在这个机构LAN中安装了一个缓存器。假定命中率为0.4,求出总的响应时间。
a.
\(\Delta\) =850000/15000000 = 0.0567sec$\Delta \beta $=0.0567 * 16 = 0.907
0.0567 / (1 - 0.0567 * 16) $\approx $ 0.6sec
总的平均响应时间:0.6 + 3 = 3.6sec
b.
接入链路上流量强度减少40%。平均访问延迟为 0.0567/(1-0.6 * 0.907) = 0.1244s
如果缓存满足,响应时间大约为0,如果缓存不满足,平均响应时间为 0.1244 + 3 = 3.1244s
因此总的响应时间为 0.4 * 0 + 0.6 * 3.1244 = 1.87sec
P1.是非判断题,并给出必要的说明。
a.假设用户请求由某些文本和3幅图像组成的Web页面。对于这个页面,客户将发送一个请求报文 并接收4个响应报文。
❌ 客户先发送一个请求报文,此时得到的响应报文中包含有文本内容以及 3 幅图像的 URL 信息,此时客户再针对每个图像的 URL 分别发送请求报文进行请求。
b.两个不同的 Web 页面(例如,www. mit.edu/research. html 及 www. mit.edu/students.html)可以通过同一个持续连接发送。
✅ HTTP 协议基于 TCP 连接,因为客户与
www.mit.edu
建立了 TCP 连接,所以同一台服务器上的不同网页都可以在该 TCP 连接上传送。
c.在浏览器和初始服务器之间使用非持续连接的话,一个TCP报文段是可能携带两个不同的HTTP 服务请求报文的。
❌ 非持续连接,一个 TCP 报文段只能携带一个 HTTP 请求报文
d.在HTTP响应报文中的Date:首部指出了该响应中对象最后一次修改的时间。
❌ HTTP 响应报文中的 Date: 字段值得是服务器检索到所请求的对象,生成响应报文并将其插入到响应报文中的时间点,而不是被请求对象的最后一次修改时间,最后一次的修改时间由首部行 Last-Modified: 首部行描述。
e. HTTP响应报文决不会具有空的报文体。
❌ HTTP 响应报文可以具有空的报文体,比如在 HTTP 请求报文中指定方法名为 HEAD 即可。
P5.下面文本中显示的是来自服务器的回答,以响应上述问题中HTTP GET报文。
HTTP/1.1 200 OK<cr><lf>
Date: Tue, 07 Mar 2008 12:39:45GMT<cr><lf>
Server: Apache/2.0.52 (Fedora) <cr><lf>
Last-Modified: Sat, 10 Dec2005 18:27:46 GMT<cr><lf>
ETag: “526c3-f22-a88a4c80”<cr><lf>
Accept- Ranges: bytes<cr><lf>
Content-Length: 3874<cr><lf>
Keep-Alive: timeout=max=100<cr><lf>
Connection: Keep-Alive<cr><lf>
Content-Type: text/html; charset= ISO-8859-1<cr><lf>
<cr><lf>
<!doctype html public “- //w3c//dtd html 4.0 transitional//en”><lf>
<html><lf>
<head><lf>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”><lf>
<meta name=”GENERATOR” content=”Mozilla/4.79 [en] (Windows NT 5.0; U) Netscape]”><lf>
<title>CMPSCI 453 / 591 / NTU-ST550A Spring 2005 homepage</title><lf>
</head><lf>
<much more document text following here (not shown)>
回答下列问题,指出你在下面报文中找到答案的地方。
a.服务器能否成功地找到那个文档?该文档提供回答是什么时间?
服务器已经成功的找到了该文档,该文档提供回答的时间是
Tue, 07 Mar 2008 12:39:45GMT
b.该文档最后修改是什么时间?
该文档最后修改时间是
Sat, 10 Dec2005 18:27:46 GMT
c.文档中被返回的字节有多少?
文档中被返回的字节数是
3874 字节
d.文档被返回的前5个字节是什么?该服务器同意一条持续连接吗?
前 5 个字节是
<!doc
,该服务器同意持续连接。
e: 从该报文中,你还可以获得什么信息?
使用的协议是 HTTP/1.1,状态码 200 OK
HTTP 协议使用的是持久连接 Connection: Keep-Alive
Server:该报文是由一台Apache Web服务器产生的,版本是 2.0.52
Content-Type:实体体中的对象是HTML文本,字符集是 ISO-8859-1
Accept-Ranges :客户端服务器能处理范围请求,允许客户端以bytes形式获取文件
ETag:资源标志
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221107000350116-2066930981.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221107000827927-251643069.png)
- 用户代理:允许用户阅读、回复、转发、保存和撰写报文。
- 邮件服务器:发送和接收邮件,同时还要向发件人报告邮件传送的结果。
- 简单邮件传输协议:是一个推协议,用在发送方邮件服务器和接收方服务器之间。
- 过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。
- 原因
- 大大减少对客户请求的响应时间
- 大大减少一个机构的接入链路到因特网的通信量,降低费用
- 大大减低因特网上的 Web 流量,改善了所有应用的性能
- 工作步骤
- 浏览器发送到 Web 缓存器的 TCP 连接,并发送一个 HTTP 请求
- Web 缓存器检查是否存储本地对象副本,如果有,则用 HTTP 响应返回对象
- 如果没有对象,则打开与对象初始服务器的 TCP 连接,发送 HTTP 请求,初始服务器收到请求之后返回对象
- Web 缓存器收到对象之后在本地存储空间存储一份副本,同时保存最后修改日期 Last-Modified首部行,向客户浏览器用 HTTP 响应返回对象副本。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221107195815912-1081754629.png)
![]()
主机向本地 DNS 服务器查询,如果主机所询问的本地 DNS 服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以DNS客户的身份,向根 DNS 服务器继续发出查询请求报文,而不是让主机自己进行下一步查询。根 DNS 服务器也不知道被查询的域名的 IP 地址,作为 DNS 客户向 TLD DNS 服务器继续发送查询请求报文。TLD DNS 服务器继续向权威 DNS 服务器发送查询报文,获得查询域名的 IP 地址之后,依次返回 TLD DNS 服务器,根 DNS 服务器,本地 DNS 服务器,最后返回请求主机。
![]()
请求主机与本地 DNS 服务器之间是递归查询,其他交互都是迭代查询。请求主机首先向它的本地 DNS 服务器发送一个 DNS 查询报文。该查询报文含有被转换的主机名。本地 DNS 服务器将该报文转发到根 DNS 服务器。该根 DNS 服务器向本地 DNS 服务器返回相应 TLD 的 IP 地址列表。本地 DNS 服务器再次向这些 TLD 服务器之一发送查询报文。TLD 服务器用权威 DNS 服务器的 IP 地址响应。最后,本地 DNS 服务器直接向该权威 DNS 服务器重发查询报文,权威 DNS 服务器用目标主机 IP 地址响应。
1)
持久协议
Connection: Keep-Alive
首部行可以判断使用 HTTP 协议的持久协议;如果是Connection: close
首部行,则是非持久协议2)
响应时间
Date: Mon, 29 Nov 2021 10:29:45GMT
3)
上一次修改的时间
Last-Modified: Sun, 28 Nov 2021 8:27:46GMT
4)
包含字节个数
Content-Length: 3374
5)
字符集是 GB-2312 字符集
Contend-Type: text/html;charset=GB-2312
6)
Web 服务器产品是 WebSphere 版本是 6.1.5
Server: WebSphere/6.1.5
(1)
获取IP地址所需要的总时间为 RTT1 + RTT2 + ... + RTTn
获取IP地址之后需要建立TCP连接,然后进行基本对象的请求和响应,总共需要 2RTT0
综上,客户点击该超链接到它接收到该对象需要 2RTT0 + RTT1 + RTT2 + ... + RTTn
(2)
需要先获取IP地址,耗时 RTT1 + RTT2 + ... + RTTn ,之后对于每个对象的获取都需要两个RTT,
总耗时 RTT1 + RTT2 + ... + RTTn + 2RTT0 * 9 = 18 RTT0 + RTT1 + RTT2 + ... + RTTn
(3)
如果持续连接,不使用流水线。需要先获取IP地址,耗时 RTT1 + RTT2 +... + RTTn,之后获取基本对象耗时 2RTT0,然后获取8个对象,不需要断开连接,耗时 8 * RTT0
总耗时 10RTT0 + RTT1 + RTT2 + ... + RTTn
第 3 章 运输层
概念速览
网络层提供了主机之间的逻辑通信,运输层为运行在不同主机上的进程之间提供了逻辑通信,而非物理通信。
运输层协议是在端系统而不是在路由器中实现的。
网络层路由器仅作用于该数据报的网络层字段;即它们不检查封装在该数据报的运输层报文段的字段。
运输层分组:报文段(segment)
IP 网际协议:IP 为主机之间提供了逻辑通信
- 尽力而为交付服务
- 不可靠服务
多路分解:接收主机检查一个到达的运输层报文段中的字段(端口),标识出接收套接字,进而将该报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。
- 工作流程:在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。然后报文段中的数据通过套接字进入其所连接的进程。
多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221107205947043-668921620.png)
端口号是 16 比特的数,其大小在 0 ~ 65535,0 ~ 1023 范围的端口号称为周知端口号 well-known port number), 是受限制的,这是指它们保留给诸如 HTTP (它使用端口号 80) 和 FTP (它使用端口号 21)之类的周知应用层协议来使用。
一个 UDP 套接字由一个二元组全面标识,包含一个目的 IP 地址和一个目的端口号。如果两个 UDP 报文端有不同的源 IP 地址和源端口号,但具有相同的目的 IP 地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的进程。
一个 TCP 套接字由一个四元组全面标识,包括源 IP 地址,源端口号,目的 IP 地址,目的端口号,四个字段都被用来标识和分解,多个报文段只有四个字段都匹配,才能被分解到同一个套接字。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221107210651272-2046702556.png)
UDP
-
无连接的服务
-
不可靠的数据传输服务
-
UDP 报文段结构:首部 8 个字节,其中 4 个字段,每个字段 2 个字节
- 长度字段:指示了在 UDP 报文段中的字节数(首部加数据)
- 校验和:接收方使用校验和来检查在该报文段是否出现了差错
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221107210845219-76756058.png)
-
UDP 校验和:提供了差错检测功能
- 求解方法:发送方的 UDP 报文段中所有 16 比特字段值的和进行反码运算,其中所有的加法遇到的溢出都被回卷
- 校验方法:接收方,全部的 4 个 16 比特字(包括校验和)加在一起。如果该分组中没有引入差错,则显然在接收方处该和应该是 111111111111111,如果这些比特之一是 0 ,则知道该分组中出现了差错。
可靠数据传输原理
- 经完全可靠信道的可靠数据传输
rdt1.0
- 求解方法:发送方的 UDP 报文段中所有 16 比特字段值的和进行反码运算,其中所有的加法遇到的溢出都被回卷
![](https://img2023.cnblogs.com/blog/2288178/202301/2288178-20230131224521915-1667106319.png)
-
经具有比特差错信道的可靠数据传输
rdt2.0
:肯定确认(ACK),否定确认(NAK),自动重传请求协议(ARQ)- ARQ 协议中另外三种协议功能lai来处理比特差错情况:差错检验(校验和)、接收方反馈(ACK、NAK)和重传
- 停等协议:当发送方处于等待 ACK 或 NAK 的状态时,它不能从上层获得更多的数据
- 上面的
rdt2.0
有缺陷,忽略了一个事实,接收方发送的 ACK 或 NAK 也可能出现比特差错。 - 考虑接收方发送的 ACK 或 NAK 出现差错的情况,解决方案是让发送方对数据分组编号并在数据分组中添加编号字段,接收方只需要检查序号即可确定收到的分组是否是一次重传,只需要 1 比特。这样,发送方如果没收到 NAK,或者收到的 ACK 或 NAK 出现了比特差错,直接重新发送分组即可。进而产生了
rdt2.1
这一改进版本。 rdt2.1
:序号
rdt2.2
:在有比特差错信道上实现的一个无 NAK 的可靠数据传输协议。接收方不发送 NAK, 而是对上次正确接收的分组发送一个 ACK, 我们也能实 NAK 一样 的效果。发送方接收到对同一个分组的两个 ACK (即接收 冗余 ACK(duplicate ACK)) 后,就知道接收方没有正确接收到跟在被确认两次的分组后面的分组
-
经具有比特差错的丢包信道的可靠数据传输
rdt3.0
:发送方无论是在一个数据分组丢失,还是一个 ACK 丢失,或者只是该分组或 ACK 过度延时,都采用同样的处理方式:重传。倒计时定时器,比特交替协议
-
流水线可靠数据传输协议
- 不以停等方式运行,允许发送方发送多个分组而无须等待确认
- 流水线技术
- 必须增加序号范围,因为每个输送中的分组必须有一个唯一的序号,而且也许有多个在输送中的未确认报文
- 发送方和确认方缓存多个分组。发送方缓存已发送但未确认的分组。接收方缓存已正确接收的分组
-
解决流水线的差错恢复有两种基本方法是:回退 N 步 (Go-Back- N, GBN) 和选择重传 (Selective Repeat, SR)
-
回退 N 步(GBN):滑动窗口协议
-
允许有发送方发送多个分组而不需等待确认,但它也受限于在流水线中未确认的分组数不能超过某个最大允许数 N
-
基序号
base
:最早未确认分组的序号 -
下一个序号
nextseqnum
:最小的未发送序号 -
[0, base - 1]
:已发送并被确认的分组,[base, nextseqnum - 1]
:已经发送但未被确认的分组,[nextseqnum, base + N - 1]
:要被立即发送的分组 -
发送方响应事件
- 上层调用
- 收到一个
ACK
- 超时事件:如果出现超时,发送重传所有已发送但未确认的分组。发送方仅使用一个定时器,它被当作最早的已发送但未确认的分组所使用的定时器。
-
接收方
- 累计确认:表明接收方已经正确收到序号
n
的以前包括n
以内的所有分组。 - 丢弃所有失序分组
- 如果一个序号为
n
的分组被正确收到,并且按序(上次交付给上层的是序号为 n - 1 的分组),则接收方为分组n
发送一个ACK
,其他情况下,丢弃该分组,并且为最近按序接收的分组重新发送ACK
- 累计确认:表明接收方已经正确收到序号
-
-
选择重传(SR)
- 通过让发送方仅重传那些它怀疑在接收方出错(丢失或受损)的分组而避免了不必要的重传。这种个别的、按需的重传要求接收方逐个确认正确接收的分组。再次用窗口长度 N 来限制流水线中未完成、未被确认的分组数。与 GBN 不同的是,发送方已经收到了对窗口中某些分组的 ACK
- 接收方将确认一个正确接收的分组而不管其是否按序。失序的分组将被缓存直到所有丢失分组(序号更小的分组)都被收到为止。
TCP
-
-
提供的服务
-
面向连接的服务:两个应用进程之间发送数据之前,必须先相互“握手”,即必须相互发送某些预备报文段,以建立确保数据传输的参数
-
可靠的数据传输的服务
-
拥塞控制
-
流量控制
-
全双工服务:如果一台主机上的进程A与另一台主机上的进程B存在一条TCP连接,那么应用层数据就可在从进程B流向进程A的同时,也从进程A流向进程B
-
点对点:单个发送方与单个接收方之间的连接
-
-
三次握手
- 客户首先发送一个特殊的TCP报文段
- 服务器用另一个特殊的TCP报文段来响应
- 客户再用第三个特殊报文段作为响应,前两个报文段不承载有效载荷,第三个报文段可以承载有效载荷
-
最大报文段长度 MSS:TCP 可以中缓存中取出并放入报文段中的数据数量受限于 MSS。典型值是 1460 字节。
- MSS 是指在报文段里应用层数据的最大长度,而不是指包括首部的 TCP 报文段的最大长度。
MSS 1460 字节 + TCP 首部 20 字节 + IP 首部 20 字节 = MTU 1500 字节
-
最大传输单元 MTU:最大链路层帧长度。典型值是 1500 字节。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221108210153997-1724662195.png)
-
组成:双方主机上的缓存、变量和套接字
-
TCP 报文段结构
- 序号和确认号:实现可靠数据传输
- 序号建立在传送的字节流上,而不是建立在传送的报文段的序列上
- 一个报文段的序号:报文段首字节的字节流编号
- 主机 A 填充进报文段的确认号是主机 A 期望从主机 B 收到的下一字节的序号,第二个意思是主机 A 确认已经收到了确认号之前所有的字节(不包括确认号)
- 接收窗口:用于流量控制
- 首部长度:指示了以 32 比特的字为单位的 TCP 首部长度。TCP 首部长度可变。
- 选项:可选可变
- 标志:
- ACK:指示确认字段中的值是有效的
- RST、SYN、FIN:连接建立和拆除
- PSH:指示接收方应立即将数据交给上层
- URG:指示报文段里存在着被发送方上层实体置为“紧急“的数据。
- 序号和确认号:实现可靠数据传输
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221108210323952-1370544889.png)
-
往返时间的估计与超时
- 指数加权移动平均:一旦获得一个新
SampleRTT
,TCP 就会用下列公式更新SampleRTT
均值EstimatedRTT
EstimatedRTT = (1 - a) * EstimatedRTT + a * SampleRTT
,a
一般取 0.125- RTT 偏差
DevRTT
:估算SampleRTT
一般会偏离EstimatedRTT
的程度 DevRTT = (1 - B) * DevRTT + B * |SampleRTT - EstimatedRTT|
,B
一般取 0.25- TCP 确定重传超时间隔
TimeoutInterval = EstimatedRTT + 4 * DevRTT
,但如果发生 TCP 超时重传,则直接设置下一次的超时间隔为先前值得二倍,即TimeoutInterval = 2 * TimeoutInterval
- 指数加权移动平均:一旦获得一个新
-
流量控制:消除发送方使接收方缓存溢出的可能性,通过接收窗口,解决发送方和接收方读取速率不匹配的问题
-
接收方
LastByteRead
:主机 B 上应用进程从缓存读出的数据流的最后一个字节的编号LastByteRcvd
:从网络中到达的并且已放入接收方缓存中的数据流的最后一个字节的编号RcvBuffer
:接收方为连接分配的接收缓存大小LastByteRcvd - LastByteRead <= RcvBuffer
必须成立rwnd
:接收窗口= RcvBuffer - [LastByteRcvd - LastByteRead]
,动态变化
- 主机 B 把当前
rwnd
值放入它发送给主机 A 的报文段接收窗口字段中,通知主机 A 它在该连接的缓存中还有多少可用空间 - 主机 A 需要保证
LastByteSend - LastByteAcked <= rwnd
,控制主机 A 已发送未确认的数据量在rwnd
之内 - 特殊情况:当主机 B
rwnd = 0
,且通知主机 A 之后,假设主机 B 之后没有任何数据发送给主机 A,则主机 A 被阻塞,它认为主机 B 的rwnd
一直为 0,即主机 Brwnd
非 0 的信息无法通知给主机 A。为了解决这个问题, TCP 规范中要求 当主机 B 的接收窗口为 0 时,主机 A 继续发送只有一个字节数据的报文段。这些报文段将会被接收方确认。最终缓存将开始清空,并且确认报文里将包含一个非 0 的rwnd
值。
-
-
TCP 连接管理(三次握手)
- 第一步:客户端的
TCP
首先向服务器端的 TCP 发送一个SYN
报文段。该报文段中不包含应用层数据,但在首部中设置 SYN 标志位为1
,随机选择一个初始序号client_isn
放置在报文段的序号字段中。该报文段被封装在一个IP
数据报中发送给服务器 - 第二步:服务器提取出
SYN
报文段,服务器分配缓存和变量,向客户TCP
发送SYNACK
允许连接报文段。在首部中设置SYN
标志为1
,确认号设置为client_isn + 1
,选择初始序号server_isn
设置到序号字段中 - 第三步:客户收到
SYNACK
报文段之后,客户分配缓存和变量,发送报文,对服务器的允许连接报文段进行确认。因为链接已建立了,设置 SYN 标志为 0 ,确认号为server_isn + 1
,序号为client_isn + 1
。可以在报文段负载中携带客户到服务器的数据。
- 第一步:客户端的
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221108225649414-128002109.png)
-
为什么不是两次握手
- 如果客户端一开始发送的连接请求超时,并且放弃了连接。这时服务端有可能会收到那个超时的包,如果是两次握手就可建立连接,那么此时对于服务端来说连接就是成功的,操作系统会创建新的线程和分配内存来处理后面的通信,可是此时客户端都放弃连接了,不会再有通信了,白白浪费服务器资源。
- TCP 是全双工通信,两次握手只能确定从客户端到服务端的网络是可达的,但却无法保证从服务端到客户端的网络是可达的。因为现实网络是不可靠的,可能丢包、超时、损坏,并且数据来回所经过的路由器也可能是不一样的,所以第三次握手就是为了确定从服务端到客户端的网络是否可达。
-
为什么不是四次握手
- 本来是四次:1️⃣ 客户发送 SYN 报文给服务器;2️⃣ 服务器发送 ACK 报文给客户;3️⃣ 服务器发送 SYN 给客户;4️⃣ 客户发送 ACK 给服务器
- 但是 TCP 可以捎带应答,将第二、三步合并起来,就成了三次握手
-
TCP 连接关闭(四次挥手)
- 第一步:客户 TCP 向服务器进程发送一个特殊 TCP 报文段,在首部中设置
FIN
标志 为1
- 第二步:服务器发送回一个确认报文段
- 第三步:服务器发送终止报文段,在首部中设置
FIN
标志 为1
- 第四步:客户对服务器的终止报文段进行确认
- 第一步:客户 TCP 向服务器进程发送一个特殊 TCP 报文段,在首部中设置
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230203155321810-917781627.png)
-
客户 TCP 状态序列
-
服务器 TCP 状态序列
-
TCP 拥塞控制:加性增,乘性减
- 发送方设置拥塞窗口
cwnd
,它对一个 TCP 发送方能向网络中发送流量的速率进行了限制 - 发送方必须满足
LastByteSend - LastByteAcked <= min{cwnd, rwnd}
- 慢启动:
cwnd
以1 MSS
开始,并且每当传输的报文段首次确认,拥塞窗口cwnd
大小扩大一倍,指数增加- 如果超时指示的丢包(拥塞),发送方设置
ssthresh = cwnd / 2
,重新开始慢启动,设置cwnd = 1
- 如果
cwnd == ssthresh
,结束慢启动,进入拥塞避免 - 如果收到三个冗余 ACK,执行快速重传并进入快速恢复状态
- 如果超时指示的丢包(拥塞),发送方设置
- 拥塞避免:
- 当
cwnd
等于ssthresh
时,进入拥塞避免,cwnd
之后每次只增加1
- 当出现丢包(超时重传)事件,
ssthresh
设置为cwnd / 2
,cwnd
设置为1
,重新开始慢启动和拥塞避免 - 当收到三个冗余 ACK,执行快速重传,接下来进入快速恢复
- 当
- 快速重传:一旦收到三个冗余 ACK,TCP 就执行快速重传,即在该报文段的定时器过期之前重传丢失的报文段。
- 快速恢复:
- TCP Tahoe:不管是发生了超时丢包还是 3 个冗余 ACK 丢包事件,都无条件将拥塞窗口减小到
1
个MSS
,ssthresh
设置为cwnd / 2
,并进行慢启动 - TCP Reno:配合快速重传,发送方一旦收到三个重复 ACK,设置
ssthresh = cwnd / 2
,cwnd = 新ssthresh + 3(课本) 或 cwnd = cwnd / 2
,并开始执行拥塞避免算法(跳过慢启动)
- TCP Tahoe:不管是发生了超时丢包还是 3 个冗余 ACK 丢包事件,都无条件将拥塞窗口减小到
- 发送方设置拥塞窗口
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221109001159707-449038567.png)
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230203170252982-1418494198.png)
习题
假设客户A向服务器S发起一个Telnet会话。与此同时,客户B也向服务器S发起一个Telnet会话。 给出下面报文段的源端口号和目的端口号:
a.如果A和B是不同的主机,那么从A向S发送的报文段的源端口号是否可能与从B向S发送的报文段的源端口号相同?
b.如果它们是同一台主机,情况会怎么样?
a 有可能, b 不可能
R15.假设主机A通过一条TCP连接向主机B发送两个紧接着的TCP报文段。第一个报文段的序号为90, 第二个报文段序号为110。
a.第一个报文段中有多少数据 ? ( 1 ) 字节
b.假设第一个报文段丢失而第二个报文段到达主机B。那么在主机B发往主机A的确认报文中, 确认号应该是多少? ( 2 )
a. 20
b. 90
P2.考虑图3-5。从服务器返回客户进程的报文流中的源端口号和目的端口号是多少?在承载运输层报文段的网络层数据报中,IP地址是多少?
(1)对于主机A,源端口号,源IP、目的端口号、目的IP为( , 、 、 ) 。
(2)对于主机C左侧进程,源端口号,源IP、目的端口号、目的IP为( , 、 、 ) 。
(3)对于主机C右侧进程,源端口号,源IP、目的端口号、目的IP为( , 、 、 ) 。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221109223754658-1376896008.png)
(1)
80, B, 26145, A
(2)
80, B, 7532, C
(3)
80, B, 26145, C
P4.
a.假定你有下列2个字节:01011100和01100101。这2个字节之和的反码是什么? (1)
b.假定你有下列2个字节:11011010和01100101。这2个字节之和的反码是什么?(2)
c.对于a中的字节,给出一个例子,使得这2个字节中的每一个都在一个比特反转时,其反码不会改变。(3)
a.
00111110
b.
10111111
c.
01011100
01100101交换两个字节的第 5 个比特位,变为
01001100
01110101这样加和不会变,自然反码也不会变
R14.
a 主机A经过一条TCP连接向主机B发送一个大文件。假设主机B没有数据发往主机A。因为主机B不能随数据捎带确认,所以主机B将不向主机A发送确认。
❌ 主机 B 会对主机 A 发送的每个分组单独发送一个确认报文,并在确认报文段的确认号域填写期望接收的下一字节序号。
b 在连接的整个过程中,TCP的 rwnd
的长度决不会变化。
❌
rwnd
会一直变化,rwnd
的值从接收方回传给发送方,用来进行流量控制。
c 假设主机A通过一条TCP连接向主机B发送一个大文件。主机A发送但未被确认的字节数不会超过接收缓存的大小。
✅ 但更为准确的描述应该是,主机 A 发送但未被确认的字节数不会超过 B 接收窗口
rwnd
的大小,(rwnd = RcvBuffer - [LastByteRecv - LastByteRead]
)
d 假设主机A通过一条TCP连接向主机B发送一个大文件。如果对于这条连接的一个报文段的序号为m,则对于后继报文段的序号将必然是m + 1。
❌ 对于握手报文段,的确是 m + 1 ,但是对于携带数据的报文段,下一个序号是前一个报文段携带数据的首字节序号加上数据的长度。
e TCP报文段在它的首部中有一个rwnd字段。
✅ 就是接收窗口字段
f 假定在一条TCP连接中最后的 SampleRTT
等于1秒,那么对于该连接的 Timeoutlnterval
的当前值必定大于等于1秒。
❌ 该连接当前的
TimeoutInterval
是由上一次的SampleRTT
和DevRTT
计算出来的,或者是超时重传加倍出来的,和这次的SmapleRTT = 1
没啥关系。
g 假设主机A通过一条TCP连接向主机B发送一个序号为38的4个字节的报文段。在这个相同的报文段中,确认号必定是42。
❌ 报文中的确认号和序号没半毛钱关系,确认号是期待接收到接收端的下一个字节的序号,序号是被发送的报文的第一个字节号
P24.
a 对于SR协议,发送方可能会收到落在其当前窗口之外的分组的ACK。
✅ 例如,发送方所发送的分组都已经正确到达接收方,接收方回传了所有确认 ACK,但发送方提前超时,又重传了一遍所有未确认的分组,那么当第一组 ACK 到达发送方后,发送方的滑动窗口已经移动,下一组冗余 ACK 到达时,就算作了落在当前窗口之外。
![]()
b. 对于GBN协议,发送方可能会收到落在其当前窗口之外的分组的ACK。
✅ 同上
c. 当发送方和接收方窗口长度都为 1 时,比特交替协议与SR协议相同。
✅
d. 当发送方和接收方窗口长度都为1时,比特交替协议与GBN协议相同。
✅
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221109231333786-2016441610.png)
R3. 考虑在主机A和主机B之间有一条TCP连接。假设从主机A传送到主机B的TCP报文段具有源端口号x和目的端口号y。对于从主机B传送到主机A的报文段,源端口号和目的端口号分别是多少?
源端口号为y,目的端口号为x
R7.假定在主机C上的一个进程有一个具有端口号6789的UDP套接字。假定主机A和主机B都用目的端口号6789向主机C发送一个UDP报文段。这两台主机的这些报文段在主机C都被描述为相同的套接字吗?如果是这样的话,在主机C的该进程将怎样知道源于两台不同主机的这两个报文段?
是的,两个报文段在主机C都被描述为相同的套接字。
对于每个收到的UDP报文段,在套接字接口上,操作系统将为进程提供IP地址,以确定各个报文段的来源。
P7.在rdt3.0协议中,从接收方向发送方流动的ACK分组没有序号(尽管它们具有ACK字段,该字段包括了它们正在确认的分组的序号)。为什么这些ACK分组不需要序号呢?
为了回答这个问题,首先考虑为什么我们需要序列号。我们看到发送方需要序列号以便于接收方能够区分出一个分组是不是己经接收到的分组的重复。考虑ACK信息,发送方不需要这个信息(也就是一个ACK的序列号)来告诉发送方检测到一个重复的ACK.因为当他接收到原始ACK信息后它就转入下一个状态,所以一个重复的ACK信息对rdt3.0的发送方是很明显的。重复的ACK信息不是发送方需要的ACK信息,因此被rdt3.0发送方忽略了。
P11.考虑在图3-14中的rdt2. 2接收方,在状态“等待来自下层的0”和状态“等待来自下层的1”中的自转换(即从某状态转换回自身)中生成一个新分组:sndpk = make_ pkt ( ACK, 1,checksum)和 sndpk = make_ pkt ( ACK, 0,checksum) 0如果这个动作从状态“等待来自下层的1”中的自转换中删除,该协议将正确工作吗?评估你的答案。在状态“等待来自下层的0”中的自转换中删除这个事件将会怎样?[提示:在后一种情况下,考虑如果第一个发送方到接收方的分组损坏的话,将会发生什么情况?
会发生死锁。
发送方发送 pkt0, 进入“等待ACK0状态”, 等待一个接收方发回的确认包。
接收方在“等待来自下层的0”的状态,接收一个损坏的包,如果它不返回信息,就待在“等待来自下层的0”的状态。
现在,发送方在等待来自接收方的确认,接收方在等待发送方的数据包,这样就会产生死锁。
P14.考虑一种仅使用否定确认的可靠数据传输协议。假定发送方只是偶尔发送数据。只用NAK的协议是否会比使用ACK的协议更好?为什么?现在我们假设发送方要发送大量的数据,并且该端到端连接很少丟包。在第二种情况下,只用NAK的协议是否会比使用ACK的协议更好?为什么?
在仅使用NAK的协议中,只有当接收到分组x+1时才能检测到分组x的丢失.也就是说接收方接收到x-1然后接 收到x+1,只有当接收方接收到x+1时才发现x的丢失.如果在传输x和传输x+1之间有很长时间的延时,那么在只有NAK的协议中,x的修复要花费很长的时间.另一方面,如果要发送大量的数据,那么在只有NAK的协议中修复的速度将很快.并且,如果错误很少,那么NAK只是偶尔发送,并且从不发送ACK.与只有ACK的情况相比,只有 NAK的情况将明显减少反馈时间.
P28. 主机A和B直接经一条100Mbps链路连接。在这两台主机之间有一条TCP连接。主机A经这条连接向主机B发送一个大文件。主机A能够向它的TCP套接字以高达120Mbps的速率发送应用数据, 而主机B能够以最大50Mbps的速率从它的TCP接收缓存中读出数据。描述TCP流量控制的影响。
主机A向接收缓存中发送数据的速度比主机B从缓存中读出数据的速度快。接收缓存大致以50Mbps的速度填充。当缓冲区满的时候,主机B通过将
RcvWindow
设置为0
来向主机A发送停止传输数据的信号。于是主机A停止传输数据直到接收到一个带有RcvWindow > 0
的TCP报文段。主机A就这样根据RcvWindow
的值反复地停止和开始传输数据。平均来说,主机A向主机B发送数据的速率不会超过50Mbps。
P20. 考虑一种主机A和主机B要向主机C发送报文的情况。主机A和C通过一条报文能够丢失和损坏(但不重排序)的信道相连接。主机B和C由另一条(与连接A和C的信道独立)具有相同性质的信道连接。 在主机C上的运输层,在向上层交付来自主机A和B的报文时应当交替进行(即它应当首先交付来自A 的分组中的数据,然后是来自B的分组中的数据,等等)。设计一个类似于停等协议的差错控制协议,以可靠地向C传输来自A和B的分组,同时以前面描述的方式在C处交替地交付。给出A和C的FSM描述。(提示:B的FSM大体上应当与A的相同。)同时,给出所使用的报文格式的描述.
在我们的解决方案中,发送方在接收到一对报文的ACK(seqnum和seqnum+1)后才开始发送下一对报文,数据分组携带有两bit的序列码,也就是说,有效的序列号是0,1,2,3。ACK信息携带己经确认的数据分组的序列号。接收方和发送方的FSM由下图所示.注意发送状态记录(1)当前对没有收到ACKs,(2)只收到seqnum的ACK或只收到 seqnum+1的ACK。在本图中,我们假设seqnum由0起始,发送方己经发送第一对数据.
![]()
![]()
![]()
P27. 主机A和B经一条TCP连接通信,并且主机B已经收到了来自A的最长为126字节的所有字节。 假定主机A随后向主机B发送两个紧接着的报文段。第一个和第二个报文段分别包含了 80字节和 40字节的数据。在第一个报文段中,序号是127,源端口号是302,目的地端口号是80。无论何时 主机B接收到来自主机A的报文段,它都会发送确认。
a.在从主机A发往B的第二个报文段中,序号、源端口号和目的端口号各是什么?
b.如果第一个报文段在第二个报文段之前到达,在第一个到达报文段的确认中,确认号、源端口号 和目的端口号各是什么?
c.如果第二个报文段在第一个报文段之前到达,在第一个到达报文段的确认中,确认号是什么?
d.假定由A发送的两个报文段按序到达B。第一个确认丟失了而第二个确认在第一个超时间隔之后到达。画出时序图,显示这些报文段和发送的所有其他报文段和确认。(假设没有其他分组丢失。)对于图上每个报文段,标出序号和数据的字节数量;对于你增加的每个应答,标出确认号。
a.
序号:207,源端口号:302,目的端口号:80
b.
确认号:207,源端口号:80,目的端口号:302
c.
确认号:127
d.
![]()
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221109234606022-717129710.png)
- 注意每一轮先算
EstimatedRTT
,然后去更新DevRTT
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110000153331-1421863236.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110000301719-995273748.png)
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230203185207729-101016563.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110111306691-1076395823.png)
BCD
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110112500407-50208971.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110112551057-1049756932.png)
持久连接,非持久连接
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110112631657-1826016879.png)
回退 N 步(GBN),选择重传(SR)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110112725808-1385283361.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221108204319443-981360474.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110113450520-1286991947.png)
- 第一步:客户端的
TCP
首先向服务器端的TCP
发送一个SYN
报文段。该报文段中不包含应用层数据,但在首部中设置 SYN 标志位为1
,随机选择一个初始序号client_isn
放置在报文段的序号字段中。该报文段被封装在一个IP
数据报中发送给服务器- 第二步:服务器提取出
SYN
报文段,分配缓存和变量,向客户TCP
发送SYNACK
报文段。在首部中设置SYN
标志为1
,确认号设置为client_isn + 1
,选择初始序号server_isn
设置到序号字段中- 第三步:客户收到
SYNACK
报文段之后,分配缓存和变量,发送报文,对服务器的允许连接报文段进行确认。因为链接已建立了,设置 SYN 标志为 0
作用:标识一台主机上的应用进程
位数长度:16 比特
周知端口号:0 — 1023 全局分配(静态分配)
周知端口号的作用:固定保留分配给诸如 HTTP 和 FTP 之类的周知应用层协议来使用
自由端口号:1024 — 65535
管理及分配方式:本地分配(动态连接)。这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(绑定)
是的,两个报文段在主机C都被描述为相同的套接字。
对于每个收到的UDP报文段,在套接字接口上,操作系统将为进程提供IP地址,通过源 IP 地址以确定各个报文段的来源。
第 4 章 网络层:数据平面
概念速览
数据平面和控制平面的主要作用
- 数据平面的主要作用是从其输入链路向其输出链路转发数据报。
- 控制平面的主要作用是协调这些本地的每路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。
转发和路由选择
- 转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。转发是在数据平面中实现的唯一功能。转发发生的时间尺度很短(通常为几纳秒),因此通常用硬件来实现。
- 路由选择:确定分组从源到目的地路由器所采取的端到端路径的网络范围处理过程。路由选择发生的时间尺度长得多 (通常为几秒) ,因此通常用软件来实现。
软件定义网络(SDN):控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。
网络层可能提供的服务
- 确保交付
- 具有时延上限的确保交付
- 有序分组交付
- 确保最小带宽
- 安全性
尽力而为服务:传送的分组既不保证顺序接收,不保证最终交付,不保证端到端时延,不保证最小带宽
分组交换机
- 链路层交换机:基于链路层帧中的字段值做出转发决定,是链路层设备
- 路由器:基于网络层数据报中的首部字段值做出转发决定,是网络层设备
路由器工作原理
-
组成
-
输入端口处理和基于目的地转发
-
最长前缀匹配:在转发表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组
-
-
交换
- 经内存交换:CPU 直接控制,通过中断方式。不能同时转发两个分组 ,即使它们有不同的目的端口,因为经过共享系统总线一次仅能执行一个内存读/写
- 经总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。分组有内部标签指示本地输出端口,总线上能被所有输出端口收到,但只有与标签匹配的端口才能保存分组。一次只能由一个分组跨越总线。
- 经互联网络交换:纵横交换机式非阻塞的,纵横式网络能并行转发多个分组。
-
输出端口处理
-
排队
- 输入排队:线路前部(HOL)阻塞,即在一个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口式空闲的),因为它被位于线路前部的另一个分组所阻塞。
- 输出排队
-
分组调度:解决排队的分组如何经输出链路传输的问题
-
先进先出
-
优先权排队(非抢占)
-
循环和加权公平排队
- 循环排队:分组分类,每个类循环传输,任何时间间隔收到相同数量的服务
- 加权公平排队:每个类在任何时间间隔内可能收到不同数量的服务
-
IPv4
-
数据报格式
- 首部长度:一般的 IP 数据报具有 20 字节的首部。
- 服务类型:使不同类型的 IP 数据报能相互区分开。
- 数据报长度:IP 数据报总长度(首部 + 数据),字节为单位。
- 标识,标志,片偏移:与 IP 分片有关。
- 协议:指示了一个到达的 IP 数据报的数据部分应该交给哪个特定的运输层协议。例如,
6
表明给TCP
,17
表明给UDP
- 首部校验和:用于帮助路由器检测收到的 IP 数据报中的比特错误
- 选项:扩展首部,IPv4 首部大小可变,不定长
- 一个 IP 数据报具有总长为 20 字节的首部,如果数据报承载了一个 TCP 报文段,则每个数据报共承载了总长 40 字节的首部以及应用层报文
-
数据报分片
- 将 IP 数据报中的数据分片成两个或更多个较小的 IP 数据报,用单独的链路层帧封装这些较小的 IP 数据报,然后通过输出链路发送这些帧。每个这些较小的数据报都称为片。
- 最大传输单元 MTU 严格限制 IP 数据报的长度。
- 由路由器对一个数据报分片,形成的每个数据报具有初始数据报的源地址、目的地址和标识号,最后一个片的标志比特被设为 0 ,而所有其他片的标志比特为 1,使用偏移字段指定该片应该放在初始 IP 数据报的哪个位置。
- 数据报的重新组装工作放到端系统中,而不是放到网络路由器中。
-
编址
-
主机与物理链路之间的边界叫做接口。
-
路由器与它的任意一条链路之间的边界也叫做接口,一台路由器有多个接口。
-
一个 IP 地址与一个接口相关联,而不是与包括该接口的主机或路由器相关联。
-
点分十进制:每个 IP 址长度为 32 比特(等价为 4 字节)。地址中的每个字节用它的十进制形式书写,各字节间以句点隔开。
-
子网:为了确定子网,分开主机和路由器的每个接口,产生了几个隔离的网络岛,使用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫做一个子网。
-
无类别域间路由选择(CIDR):因特网的地址分配策略。
-
子网掩码:
a.b.c.d/x
,x
最高比特构成了 IP 地址的网络地址,剩余32 - x
比特是用于区分子网内部设备的主机地址。 -
子网内的设备的 IP 地址共享共同的前缀。
-
分类编址:在 CIDR 被采用之前, IP 地址的网络部分被限制为长度为 8、16 或 24 比特。具有 8、16、24 比特子网地址的子网分别被称为 A、B、C 类网络。
-
IP 广播地址:
255.2555.255.255
:当一个主机发出一个目的地址为255.255.255.255
的数据报时,该报文会交付给同一个网络中的所有主机。 -
动态主机配置协议(DHCP):允许主机自动获取一个 IP 地址。
-
由于 DHCP 具有将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议或零配置协议
-
使用 UDP 协议实现
-
客户-服务器协议:客户是新到达的主机,每个子网都具有一台 DHCP 服务器,或DHCP 中继代理(路由器)
-
四个步骤
-
DHCP 服务器发现:新到达的主机向端口
67
广播 DHCP 发现报文 -
DHCP 服务器提供:DHCP 服务器广播 DHCP 提供报文
-
DHCP 请求:客户选择一个服务器提供,广播 DHCP 请求报文,指定选择的 DHCP 服务器 ID
-
DHCP ACK:服务器使用
DHCP ACK 报文
对 DHCP 请求报文进行响应,广播
-
-
-
-
网络地址转换(NAT)
- NAT 转换表
- NAT 使能路由器对外界的行为就如同一个具有单一 IP 地址的单一设备
- NAT 使能路由器对外界隐藏了子网内部的细节
- 从广域网到达 NAT 路由器的所有数据报都有相同的目的 IP 地址
- 离开 NAT 路由器的所有报文拥有相同的源 IP 地址
IPv6
-
数据报格式
- 重要变化
- 扩大的地址容量:IP 地址 128 比特
- 任播地址:可以使数据报交付给一组主机中的任意一个
- 简化高效的 40 字节首部:40 字节定长首部
- 流标签
- 扩大的地址容量:IP 地址 128 比特
- 有效载荷长度:数据载荷字节数
- 下一个首部:标识数据报中的内容需要交付给哪个协议。与 IPv4 中的协议字段相同。
- 与 IPv4 相比,去除的字段
- 分组/重新组装:IPv6 不允许在中间路由器上进行分片与重新组装。这种操作只能在源和目的地端系统执行。
- 首部校验和:因为因特网中的运输层和数据链路层协议已经执行了校验操作,并且 IPv4 上的 TTL 字段使得在每个路由器上都要重新计算校验和,耗时。
- 选项:IPv6 40字节 定长
- 重要变化
从 IPv4 到 IPv6 迁移
- 宣布一个标志日,指定某个日期和时间,届时因特网的所有及其都关机并从 IPv4 升级到 IPv6.
- 建隧道:假定两个 IPv6 节点要使用 IPv6 数据报进行交互,但它们是经由中间 IPv4 路由器互联的。我们将两台 IPv6 路由器之间的中间 IPv4 路由器的集合称为一个隧道。借助隧道,在隧道发送端的 IPv6 节点可将整个 IPv6 数据报放到一个 IPv4 数据报的有效载荷中。于是该 IPv4 数据报的地址设为指向隧道接收端的 IPv6 节点,再发送给隧道中的第一个节点。隧道中的中间 IPv4 路由器在它们之间为该数据报提供路由,就像对待其他数据报一样,完全不用知道该 IPv4 数据报自身就含有一个完整的 IPv6 数据报。隧道接收端的 IPv6 节点最终收到该 IPv4 数据报,检查到协议字段值是 41 ,并确定该 IPv4 数据报含有一个 IPv6 数据报,从中取出 IPv6 数据报,然后再为该 IPv6 数据报提供路由,就好像它是从一个直接相连的 IPv6 邻居那里接收到该 IPv6 数据报一样。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110204627077-1166306459.png)
-
协议翻译技术:对 IPv6 和 IPv4 报头时行相互翻译,实现 IPv4/IPv6 协议和地址的转换。
-
双栈技术:主机或路由器同时装有 IPv4 和 IPv6 两个协议栈,因此主机既能和 IPv4 通信, 也能和 IPv6 通信。
习题
路由选择和转发的主要区别是什么?
转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。转发发生的时间尺度很短,因此通常用硬件来实现。
路由选择是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程。路由选择发生的时间尺度长很多,因此通常用软件来实现。
什么是HOL阻塞?它出现在哪个端口?
HOL阻塞是线路前部阻塞,即在一个输入队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的),因为它被位于线路前部的另一个分组所阻塞。
出现在输入端口。
假定主机A向主机B发送封闭在一个IP数据报中的TCP报文段,当主机B接收到数据报时,主机B中的网络层怎么知道它应该将报文段(即数据报的有效载荷)交给TCP而不是UDP或某个其他东西呢?
如果是IPv4协议:IPv4数据报格式中包括协议字段,该字段通常仅当一个IP数据报到达其最终目的地时才会有用。该字段值指示了IP数据报的数据部分应交给哪个特定的运输层协议。例如值为6表明数据部分要交给TCP,而值为17表明数据要交给UDP。
如果是IPv6协议:IPv6数据报格式中包括下一个首部字段,该字段标识数据报中的内容需要交付给哪个协议。该字段使用与IPv4首部中协议字段相同的值。
路由器有IP地址吗?如果有,有多少个?
有IP地址。每个接口有一个IP地址。
比较对照 IPv4和IPv6首部字段,它们有相同的字段吗?
IPv6相比IPv4去掉了片偏移字段,IPv6不允许分片
IPv6去掉了首部校验和,因为因特网重的运输层和数据链路层协议已经执行了校验操作
IPv6去掉了选项字段,这样就保证了IPv6头部是40字节定长
IPv6多出了流的概念,因此多了一个流标签字段。
剩下IPv6头部中的字段如版本号,流量类型等字段都和IPv4里的字段有着类似的含义。如流量类型类似于IPv4中的服务类型字段,两者都有数据包长度这个字段,等等。
从IPv4过渡到IPv6的方法有哪些?
主要是三种方法:
(1)双栈技术:主机或路由器同时装有IPV4和IPV6两个协议栈,因此主机既能和IPV4通信, 也能和IPV6通信。
(2)隧道技术:在IPV6分组进入IPV4网络时,将IPV6分组封装成IPV4分组; 当封装成IPV4分组 离开IPV4网络时,再装数据部分(IPV6部分)转发给目的节点。
(3)协议翻译技术:对IPV6和IPV4报头时行相互翻译,实现IPV4/IPV6协议和地址的转换。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110210003795-549211166.png)
a.
匹配前缀 转发端口 11100000 00 0 11100000 01000000 1 1110000 2 11100001 1 3 otherwise 3 b.
第一个地址不匹配前四条,因此从 3 端口转发
第二个地址匹配第三条,从 2 端口转发
第三个地址匹配第四条,从 3 端口转发
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110210907563-471749602.png)
分配结果不唯一,但一般从需要地址最多的开始分配,以下仅供参考
地址必须以223.1.17/24为前缀,因此只有最后八位可供自由分配
子网一要60个接口,因此可选给这个子网64个地址,
最后八位为:
0000 0000到
0011 1111
子网地址为 223.1.17.0/26
子网二要90个接口,可以分配给他128个地址
最后八位为:
1000 0000到
1111 1111
子网地址为223.1.17.128/25
子网三要12个接口,可以给他分配16个地址
最后八位:
0100 0000到
0100 1111
子网地址为:223.1.17.64/28
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110211437608-546224500.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110211456438-859879004.png)
a.
从192.168.1.1开始,将地址依次分配给各接口即可,因此
各主机的IP分配为:192.168.1.1 192.168.1.2 192.168.1.3
路由器接口的IP为192.168.1.4
b. 网络地址转换NAT
注意实际情况下局域网(主机)地址的端口由主机进程决定的, 映射的广域网端口是由路由器随机分配的。这里我们都是随机指定的。
网络地址转换表
广域网地址 局域网地址 24.34.112.235, 4000 192.168.1.1, 3345 24.34.112.235, 4001 192.168.1.1, 3346 24.34.112.235, 4002 192.168.1.2, 3445 24.34.112.235, 4003 192.168.1.2, 3446 24.34.112.235, 4004 192.168.1.3, 3545 24.34.112.235, 4005 192.168.1.3, 3546
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221110212136249-308602908.png)
前缀匹配 接口
11000000 0
11011111
共32个地址
10000000 1
10111111
共64个地址
11100000 2
11111111
共32个地址
00000000 3
01111111
共128个地址
🔔 注意:从前缀最长的开始依次考虑
P14: 考虑向具有700字节MTU的一条链路发送一个2400字节的数据报,假定初始数据报标识号422,将会生成多少个分片?在生成相关分片的数据报中各个字段 的值是多少?画出分片示意图并标明:数据长度、标识、分片标志、偏移量等相关信息。
(2400-20) / (700-20) = 4,会生成4个分片。(2400-20)数据报去掉首部的有效载荷大小, (700-20) 数据报去掉首部的有效载荷大小
前三个分片大小是700字节,最后一个分片大小是360字节。每个分片都包含标识422。四个分片的偏移量(传输层大小除以 8)依次是0, 85, 170, 255。前三个分片的分片标志是1,最后一个分片的分片标志是0。
假定源主机A和目的主机B之间的数据报被限制为1500字节(包括首部),要发送一个5MB的MP3文件,需要多少个数据报?最后一个数据报中,数据的长度是多少?
假设使用 TCP 传输,1500 字节去掉 IP 数据报的首部和 TCP 报文段的首部,得 1500 - 40 是有效载荷大小
(5 * 10^6) / (1500 - 40) = 3425
除了最后一个数据报,每个数据报1500字节
最后一个数据报1000字节,数据长度960字节
假设某应用每20ms生成一个40字节的数据块,每块封装在一个TCP报文段中,TCP报文段再封装在一个IP数据报中,每个数据报的开销有多大?应用数据所占的百分比是多少?
TCP首部20字节
IP首部20字节
数据40字节
整个数据报80字节
应用数据所占百分比50%
第 5 章 网络层:控制平面
概念速览
转发表和流表是如何计算、维护和安装的
- 每路由器控制:每台路由器中都包含转发和路由选择功能。每台路由器有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算其转发表的值。
- 逻辑集中式控制:远程控制器计算每个路由器的转发表,并通过与每个路由器的控制代理(CA)交互来分配转发表,路由器只有转发的功能。
路由选择算法:找出从源到目的地的最低开销路径
-
集中式路由选择算法:用完整的、全局的网络知识计算出从源到目的地之间的最低开销路径。该算法以所有节点之间的连通性以及所有链路的开销为输入。具有全局状态信息的算法常被称为链路状态(LS)算法。
-
分散式路由选择算法:路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息。相反,每个节点仅有与其直接相连链路的开销知识即可开始工作。然后,通过迭代计算过程以及与相邻节点的信息交换,一个节点逐渐计算出到达某目的的节点或一组目的节点的最低开销路径。距离向量(DV)算法。
链路状态路由选择算法
D(v)
:到算法的本次迭代,从源节点到目的节点v
的最低开销路径的开销。p(v)
:从源到v
沿着当前最低开销路径的前一节点(v
的邻居)N'
:节点子集;如果从源到v
的最低开销路径已确知,v
在N'
中。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112212653982-1834286182.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112215201542-871215365.png)
距离向量路由选择算法
令 \(d_x(y)\) 是从节点 \(x\) 到节点 \(y\) 的最低开销路径的开销。则该最低开销与著名的 Bellman-Ford
方程相关,即
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112215827776-816834286.png)
-
无穷计数问题:遇到路由选择环路,当某链路开销突变,节点计算新的最低开销需要之前其他节点计算得出的链路开销信息,而该信息可能已经无效了,因为链路开销发生了突变,相当于在错误的开销上更新开销,一错再错。
如下面例子,\(x\) 和 \(y\) 之间的开销由 4 突变为 60,之前计算的开销有 \(D_y(x)=4,D_y(z)=1,D_z(y)=1,D_z(x)=5\) ,在 \(t_0\) 时刻,\(y\) 检测到链路开销变化,计算它到 \(x\) 的新的最低开销链路的开销,其值如下,明显是错误的。
\[D_y(x)=min\left\{c(y,x)+D_x(x),c(y,z)+D_z(x)\right\}=min\left\{60+0,1+5\right\}=6 \]
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112221055402-1826863843.png)
- 毒性逆转:如果 \(z\) 通过 \(y\) 路由选择到目的地 \(x\) ,则 \(z\) 将通告 \(y\) ,它到 \(x\) 的距离是无穷大,也就是 \(z\) 将向 \(y\) 通告 \(D_z(x)=\infty\) (即使 \(z\) 实际上知道 \(D_z(x)=5)\) 。只要 \(z\) 路由选择到 \(x\),\(z\) 就持续地向 \(y\) 讲述这个善意的小谎言。因为 \(y\) 相信 \(z\) 没有到 \(x\) 的路径,故只要 \(z\) 继续经 \(y\) 路由选择到 \(x\) (并这样去撒谎),\(y\) 将永远不会试图经由 \(z\) 路由选择到 \(x\)。
LS 与 DV 路由选算法的比较
在 DV
算法中,每个节点仅与它的直接相连的邻居交谈,但它为其邻居提供了从它自己到网络中(它所知道的)所有其他节点的最低开销估计。
LS
算法需要全局信息,因此当在每台路由器中实现时,每个节点与所有其他节点通信,但仅告诉它们与它直接相连链路的开销。
-
报文复杂性:
LS
算法要求每个节点都知道网络中每条链路的开销。这就要求发送O(|N||E|)
个报文。DV
算法要求在每次迭代时,在两个直接相连邻居之间交换报文。DV
算法仅当在新的链路开销导致与该链路相连节点的最低开销路径发生改变时,才传播已改变的链路开销。 -
收敛速度:LS 算法的实现是一个要求
O(|N||E|)
个报文的O(|N|^2)
算法。DV 算法收敛速度较慢,且在收敛时会遇到路由选择环路,还会遭遇无穷计数问题。 -
健壮性:在 LS 算法下,路由计算在某种情况下是分离的,提供了一定程度的健壮性。在 DV 算法下,一个节点可以向任意或所有目的节点通告其不正确的最低开销路径,一个不正确的节点计算值会扩散到整个网络。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113000533452-1390500049.png)
因特网中自治系统内部的路由选择:OSPF
- 自治系统(AS):每个
AS
由一组通常处在相同管理控制下的路由器组成。 - 自治系统内部路由选择协议:在一个自治系统内运行的路由选择算法。在相同
AS
中的路由器都运行相同的路由选择算法并且有彼此的信息。 - 开放最短路优先(OSPF):一种链路状态协议,使用洪泛链路状态信息和
Dijkstra
最低开销路径算法。使用OSPF
,一台路由器构建了一幅关于整个自治系统的完整拓扑图。于是,每台路由器在本地运行Dijkstra
的最短路径算法,以确定一个以自身为根节点到所有子网的最短路径树。各条路径开销是由网络管理员配置的。使用OSPF
时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路的状态发生变化时,路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性地广播链路状态。
因特网中自治系统之间的路由选择:BGP
- 自治系统间路由选择协议:分组跨越多个 AS 进行路由。
- 边际网关协议(BGP):在因特网中,所有的 AS 运行相同的 AS 间路由选择协议,称为 BGP。
- 外部 BGP(eBGP)连接:跨越两个 AS 的 BGP 连接。
- 内部 BGP(iBGP)连接:相同 AS 中的两台路由器之间的 BGP 会话
- 重要的 BGP 属性
AS-PATH
:包含了通告已经通过的 AS 的列表,当一个前缀通过某 AS 时,该 AS 将其 ASN 加入AS-PATH
中的现有列表。例如,从 AS1 到子网 x 有两条路:其中一条使用AS-PATH "AS2 AS3"
;而另一条使用AS-PATH "AS3"
。NEXT-HOP
:NEXT-HOP
是AS-PATH
起始的路由器接口的 IP 地址。例如,如图 5-10 中所指示的那样,对于从 AS1 通过 AS2 到 x 的路由"AS2 AS3 x"
,其属性NEXT-HOP
是路由器 2a 左边接口的 IP 地址;对于从 AS1 绕过 AS2 到 x 的路由"AS3 x"
,NEXT-HOP
属性是路由器 3d 最左边接口 IP 地址。
- 内部路由器:仅连接在它自己 AS 中的主机和路由器。
- 网关路由器:位于
AS
边缘的路由器,直接连接到在其他AS
中的一台或多台路由器。 - 热土豆路由选择:对于一个 AS 中的某一个路由器,它想要尽快地将分组送出其 AS,而不担心其 AS 外部到目的地的余下部分的开销。是自私的算法,试图减小在它自己 AS 中的开销,而忽略其在 AS 之外地端到端开销地其他部分。例如,路由器 1b 将查阅它的 AS 内部路由选择信息,以找到通往
NEXT-HOP
路由器 2a 的最低开销 AS 内部路径以及通往NEXT-HOP
路由器 3d 的最低开销 AS 间路径,进而选择这些最低开销路径中具有最低开销的那条。
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230206173357271-1052635551.png)
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230207163042229-1731806430.png)
ICMP:因特网控制报文协议
- 被主机和路由器用来彼此沟通网络层的信息。
- 最典型的用途是差错报告。
- 从体系结构上位于 IP 之上,承载在 IP 分组中,作为 IP 有效载荷承载。
- IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP协议。当传送IP数据包发生错误比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会
- 主要功能
- 侦测远端主机是否存在
- 建立及维护路由资料
- 重导数据传送路径
- 数据流量控制
习题
比较和对照链路状态和距离矢量这两种路由算法。
在
DV
算法中,每个节点仅与它的直接相连的邻居交谈,但它为其邻居提供了从它自己到网络中(它所知道的)所有其他节点的最低开销估计。路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息。
LS
算法需要全局信息,因此当在每台路由器中实现时,每个节点与所有其他节点通信,但仅告诉它们与它直接相连链路的开销。用完整的、全局的网络知识计算出从源到目的地之间的最低开销路径。该算法以所有节点之间的连通性以及所有链路的开销为输入。
报文复杂性:
LS
算法要求每个节点都知道网络中每条链路的开销。这就要求发送O(|N||E|)
个报文。DV
算法要求在每次迭代时,在两个直接相连邻居之间交换报文。DV
算法仅当在新的链路开销导致与该链路相连节点的最低开销路径发生改变时,才传播已改变的链路开销。收敛速度:LS 算法的实现是一个要求
O(|N||E|)
个报文的O(|N|^2)
算法。DV 算法收敛速度较慢,且在收敛时会遇到路由选择环路,还会遭遇无穷计数问题。健壮性:在 LS 算法下,路由计算在某种情况下是分离的,提供了一定程度的健壮性。在 DV 算法下,一个节点可以向任意或所有目的节点通告其不正确的最低开销路径,一个不正确的节点计算值会扩散到整个网络。
![]()
P3 考虑下面的网络。对于标明的链路费用,用Dijkwa的最短路径算法计算出从x到所有网络结点的最短路径,通过计算一个类似于表5-1的表,说明该算法是如何工作的。 同样的:分别计算机从t,u,v,w,y,z到所有网络节的最短路径。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112232607773-2124122580.png)
P5. 考虑下图所示的网络,假设每个节点初始时知道到它的每个邻居的开销,考虑距离向量算法,并显示在节点z中距离表表项。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112232740101-960752653.png)
P7 考虑下图所示的网络段。x只有两个相连邻居w与y。w有一条通向目的地u(没有显示)的最低费用路径,其值为5; y有一条通向目的地u的最低费用路径,其值为6。从w与y到u(以及w与y 之间)的完整路径未显示出来。网络中所有链路费用皆为正整数值。
a.给出x对目的地w,y和u的距离向量
b.给出对c(x,w)或c(x,y)的链路费用的变化,使得执行了距离向量算法后,x将通知其邻居有一条通向u的新最低费用路径。
c.给出对c(x,w)或c(x,y)的链路费用的变化,使得执行了距离向设算法后,x将不通知其邻居有一条通向u的新最低赀用路径。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112232847847-1179220094.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112233327447-2089078052.png)
>
P11 .考虑如下图所示网络。假定有另一台路由器w,与路由器y和z连接。所有链路的费用给定如下:c(x,y)= 4,c(x, z) =50, c(y, w) =1, c(z, w) =1, c(y, z) =3。假设在距离向量路由选择算法中使用了毒性逆转。
a.当距离向量路由选择稳定时,路由器w,y和z向x通知它们的距离。它们告诉彼此什么样的距离值?
b.现在假设x和y之间的链路成本增加到60。即使使用了毒性逆转,将会存在无穷计数问题吗?为什么?如果存在无穷计数问题,距离向量路由选择需要多少次迭代才能再次到达稳定状态?评估 你的答案。
c.如果C(y,x)从4变化到60,怎样修改c(y, z)使得不存在无穷计数问题。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221112233437293-938569096.png)
p14. 考虑下图所示的网络。假定AS3和AS2正在运行OSPF作为其AS内部路由选择协议。假定AS1和 AS4正在运行RIP作为其AS内部路由选择协议。假定AS间路由选择协议使用的是eBGP和iBGP。 假定最初在AS2和AS4之间不存在物理链路。
a.路由器3c从下列哪个路由选择协议学习到了前缀x:OSPF、RIP、eBGP或iBGP?
b.路由器3a从哪个路由选择协议学习到了前缀x?
c.路由器1c从哪个路由选择协议学习到了前缀x?
d.路由器1d从哪个路由选择协议学习到了前缀x?
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113001449881-1251647781.png)
a. eBGP
b. iBGP
c. eBGP
d. iBGP
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113001718440-1891955280.png)
a.
I 等于 I1,因为 I1 离 1c 的距离更近。
b.
I 等于 I2,通过 1c,1b 都需要两大跳,AS-PATH 相同,但是在自治区内部 1b 距离 1d 更近,最靠近 NEXT-HOP 路由器。
c.
I 等于 I1,通过 1c 需要自治区之间的两大跳,通过 1b 需要三大跳,通过 1c 的 AS-PATH 更短。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113100210671-1342313262.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113100310304-587213731.png)
不可靠的
可靠的
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113100359765-1838086788.png)
拥塞控制
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113100444230-253695444.png)
最长前缀匹配是指在IP协议中,被路由器用于在路由表中进行选择的一个算法。
因为路由表中的每个表项都指定了一个网络,所以一个目的地址可能与多个表项匹配。最明确的一个表项——即子网掩码最长的一个——就叫做最长前缀匹配。之所以这样称呼它,是因为这个表项也是路由表中,与目的地址的高位匹配得最多的表项。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113100811373-1530518040.png)
![]()
- 先进先出
- 优先权排队
- 循环和加权公平排队
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113101023529-858830612.png)
集中式路由选择算法:用完整的、全局的网络知识计算出从源到目的地之间的最低开销路径。该算法以所有节点之间的连通性以及所有链路的开销为输入。
分散式路由选择算法:路由器以迭代、分布式的方式计算出最低开销路径。没有节点拥有关于所有网络链路开销的完整信息。相反,每个节点仅有与其直接相连链路的开销知识即可开始工作。然后,通过迭代计算过程以及与相邻节点的信息交换,一个节点逐渐计算出到达某目的的节点或一组目的节点的最低开销路径。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113101231084-180743246.png)
自治系统:autonomous system。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用各种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113101456879-991509878.png)
工作范围:因特网中的自治系统内部
工作机制:一种链路状态协议,使用洪泛链路状态信息和
Dijkstra
最低开销路径算法。使用OSPF
,一台路由器构建了一幅关于整个自治系统的完整拓扑图。于是,每台路由器在本地运行Dijkstra
的最短路径算法,以确定一个以自身为根节点到所有子网的最短路径树。各条路径开销是由网络管理员配置的。使用OSPF
时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路的状态发生变化时,路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性地广播链路状态。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113101838188-1100675350.png)
a.
从192.168.1.1开始,将地址依次分配给各接口即可,因此
各主机的IP分配为:192.168.1.1 192.168.1.2 192.168.1.3
路由器接口的IP为192.168.1.4
b. 网络地址转换NAT
注意实际情况下局域网(主机)地址的端口由主机进程决定的, 映射的广域网端口是由路由器随机分配的。这里我们都是随机指定的。
网络地址转换表
广域网地址 局域网地址 24.34.112.235, 4000 192.168.1.1, 3345 24.34.112.235, 4001 192.168.1.1, 3346 24.34.112.235, 4002 192.168.1.2, 3445 24.34.112.235, 4003 192.168.1.2, 3446 24.34.112.235, 4004 192.168.1.3, 3545 24.34.112.235, 4005 192.168.1.3, 3546
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113105016839-366596915.png)
变化:
- IPv6 不允许分片,IPv4 允许分片
- IPv6的地址空间更大。 IPv4中规定IP地址长度为32,即有2^32-1个地址。 IPv6中IP地址的长度为128,即有2^128-1个地址
- IPv4 首部 20 字节,可变;IPv6 首部 40 字节,定长
- IPv4 有首部校验和字段,IPv6 去除首部校验和字段
- IPv6 增加流标签,IPv4 没有
单播地址:在 IPv4 网络中,0.0.0.0 到 223.255.255.255 属于单播地址。是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。每次只有两个实体相互通信,发送端和接收端都是唯一确定的。
组播地址:指把信息同时传递给一组目的地址。IP组播是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于TCP/IP网络上的多个接收者的协议。
任播地址:是一种网络寻址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
分配结果不唯一,但一般从需要地址最多的开始分配,以下仅供参考
地址必须以202.198.18.0/24为前缀,因此只有最后八位可供自由分配
子网一要90个接口,因此可选给这个子网128个地址,
最后八位为:
0000 0000到
0111 1111
子网地址为 202.198.18.0/25
子网二要60个接口,可以分配给他64个地址
最后八位为:
1000 0000到
1011 1111
子网地址为 202.198.18.128/26
子网三要30个接口,可以给他分配32个地址
最后八位:
1100 0000到
1101 1111
子网地址为:202.198.18.192/27
子网四要12个接口,可以给他分配16个地址
最后八位:
1110 0000到
1110 1111
子网地址为:202.198.18.224/28
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221113111437896-1257719074.png)
题目好像有点问题,咱们就用 A 点算吧
步骤 N' D(B), p(B) D(C), p(C) D(D), p(D) D(E), p(E) D(F), p(F) D(G), p(G) D(H), p(H) 0 A 1, A 4, A \(\infty\) \(\infty\) \(\infty\) \(\infty\) \(\infty\) 1 AB 3, B 10, B \(\infty\) \(\infty\) 5, B 3, B 2 ABC 4, C 6, C \(\infty\) \(\infty\) 3, B 3 ABCH 4, C 6, C \(\infty\) 17, H 4 ABCHD 5, D 7, D 5, D 5 ABCHDE 6, E 5, D 6 ABCHDEG 6, E 7 ABCHDEGF \(A \rightarrow B\):AB,开销 1
\(A \rightarrow C\):ABC,开销 3
\(A \rightarrow D\):ABCD,开销 4
\(A \rightarrow E\):ABCDE,开销 5
\(A \rightarrow F\):ABCDEF,开销 6
\(A \rightarrow G\):ABCDG,开销 5
第 6 章 链路层和局域网
概念速览
链路层协议提供的服务
- 成帧:网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。
- 链路接入:MAC
- 可靠交付:保证无差错地经链路层移动每个网络层数据报。通过确认和重传实现。通常用于易于产生高差错率的链路,例如无线链路,目的是本地(差错发生的链路上)纠正一个差错。
- 差错检测和纠正
链路层在何处实现
- 组成
- 链路层的主体部分是在网络适配器(网络接口卡)。
- 位于网络适配器核心的是链路层控制器:一个实现了许多链路层服务的专用芯片。
- 大部分链路层是在硬件中实现的,但部分链路层是在运行于主机CPU上的软件中实现 。链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117185315236-406681664.png)
- 链路层是硬件和软件的结合体,即此处是协议栈中软件与硬件交接的地方。
差错检测和纠正计数
-
奇偶校验
-
偶校验:发送方保证
d + 1
比特数据中1
的个数是偶数,如果接收方发现1
的个数是奇数,则出现了奇数个比特差错 -
奇校验:类比
-
二维奇偶校验:接收方不仅可以检测到出现了单个比特差错的事实,而且还可以利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特并纠正它。
-
接收方检测和纠正差错的能力被称为前向纠错(FEC)。
-
-
校验和方法
- 运输层使用校验和
- 为什么运输层使用校验和而链路层使用
CRC
?- 运输层通常是在主机中作为用户操作系统的一部分用软件实现的。因为运输层的差错检验用软件实现,采用简单而快速如校验和这样的差错检测方案是重要的。在另一方面,链路层的差错检测在适配器中用专用的硬件实现,它能够快速执行更复杂的
CRC
操作。
- 运输层通常是在主机中作为用户操作系统的一部分用软件实现的。因为运输层的差错检验用软件实现,采用简单而快速如校验和这样的差错检测方案是重要的。在另一方面,链路层的差错检测在适配器中用专用的硬件实现,它能够快速执行更复杂的
-
循环冗余检测
-
CRC
编码,多项式编码 -
发送方和接收方协商一个
r + 1
比特模式,即生成多项式,表示为G
。 -
发送方保证
d + r
比特模式用模2
算数恰好被G
整除。 -
接收方用
G
去除接收到的d + r
比特。如果余数是非零,接收方知道出现了差错;否则认为数据正确而被接收。 -
注意:模
2
运算中,加法不进位,减法不借位,相当于异或。 -
\(R=remainder\frac{D\cdot 2^r}{G}\),用 \(G\) 来除 \(D\cdot 2^r\) ,得到的余数就是 \(R\)
-
当
D = 101110,d = 6,G = 1001,r = 3
时,CRC
编码的计算过程:
-
多路访问链路和协议
-
点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成。如点对点协议(PPP)、高级数据链路控制(HDLC)
-
广播链路:让多个发送和接收节点都连接到相同的、单一的、共享的广播信道上。
-
如何协调多个发送和接收节点对一个共享广播信道的访问,这就是多路访问问题。
-
多路访问协议:节点通过这些协议来规范它们在共享的广播信道(局域网)上的传输行为。
-
碰撞:因为所有的节点都能够传输帧,所以多个节点可能会同时传输帧。当发生这种情况时,所有节点同时接到多个帧;这就是说,传输的帧在所有的接收方处碰撞。
-
多路访问协议
-
信道划分协议
-
时分多路复用(TDM):TDM 将时间划分为时间帧,并进一步划分每个时间帧为 N 个时隙,然后把每个时隙分配给 N 个节点中的一个。无论何时某个节点在有分组要发送的时候,它在循环的 TDM 帧中指派给它的时隙内传输分组比特。通常,选择的时隙长度应使一个时隙内能够传输单个分组。
-
频分多路复用(FDM):FDM 将 R bps 信道划分为不同的频段(每个频段具有 R/N 带宽),并把每个频率分配给 N 个节点中的一个。因此 FDM 在单个较大的 R bps 信道中创建了 N 个较小的 R/N bps 信道
-
码分多址(CDMA)
-
-
随机接入协议
-
一个传输节点总是以信道的全部速率(R bps)进行发送。当有碰撞时,涉及碰撞的每个节点反复重发它的帧,直到该帧无碰撞地通过为止。但是每经过一次碰撞,不必立刻重发该帧,而是在重发之前等待一个随机时延。
-
时隙 ALOHA
- 时间划分为时隙,一个时隙等于传输一帧的时间。
- 当节点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧。
- 所有节点同步传输,且只在时隙起点传输
- 如果没有碰撞,该节点成功地传输它的帧,从而不需要考虑重传该帧。
- 如果有碰撞,该节点在时隙结束之前检测到这次碰撞。该结点以概率
p
在后续的每个时隙中重传它的帧,直到该帧被无碰撞地传输出去。 - 效率是 \(Np\left( 1-p \right) ^{N-1}\),最大值是 \(\frac{1}{e}=0.37\)
-
ALOHA
- 非时隙、完全分散的协议
- 当一个帧首次到达,节点立刻将该帧完整地传输进广播信道。
- 如果一个传输到帧与一个或多个传输经历了碰撞,这个节点将立即(传输完碰撞帧之后)以概率
p
重传该帧。 - 否则,节点等待一个帧的传播时间。然后以概率
p
传输该帧,或者以概率1 - p
在另一个帧时间等待。 - 效率是 \(Np\left( 1-p \right) ^{2\left( N-1 \right)}\),最大值是 \(\frac{1}{2e}=0.18\)
-
载波侦听多路访问(CSMA)
- 载波侦听:一个节点在传输前先听信道。如果来自另一个节点的帧正向信道上发送,节点则等待直到检测到一小段时间没有传输,然后开始传输。
- 仅仅载波侦听无法解决碰撞问题,因为节点和节点之间存在广播信道的端到端信道传播时延,有可能一个节点刚刚开始传输一个帧,此时该帧还没有到达另一个节点,另一个节点认为信道空闲,就会发送自己的帧,产生碰撞。
-
具有碰撞检测的载波侦听多路访问(CSMA/CD)
-
碰撞检测:当一个节点在传输时一直在侦听此信道。如果它检测到另一个节点正在传输干扰帧,它就停止传输,在重复“侦听——当空闲时传输”循环之前等待一段随机时间。
-
适配器角度的运行过程
- 适配器从网络层一条获得数据报,准备链路层帧,并将其放入帧适配器缓存中。
- 如果适配器侦听到信道空闲(无信号能量从信道进入适配器),它开始传输帧;在另一方面,如果适配器侦听到信道正在忙,它将等待,直到侦听到没有信号能量时才开始传输帧。
- 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在。
- 如果适配器传输整个帧而未检测到来自其他适配器的信号能量,该适配器就完成了该帧;在另一方面,如果适配器在传输时检测到来自其他适配器的信号能量,它中止传(即它停止了传输帧)。
- 中止传输后,适配器等待一个随机时间,然后返回步骤 2。
-
碰撞后随机回退时间的时间间隔选择:当碰撞节点数量较少时,时间间隔较较短;碰撞节点数量较大时,时间间隔较长。
-
二进制指数后退:当传输一个给定帧时,在该帧经历了一连串 n 次碰撞后,节点随机从 \(\left\{ 0,1,2,...,2^n-1 \right\}\) 中选择一个 \(K\) 值。因此,一个帧碰撞次数越多,\(K\) 选择的间隔越大。对于以太网,一个节点等待的实际时间量是 \(K\cdot 512\) 比特时间(即发送 512 比特进入以太网所需时间量的 \(K\) 倍,\(n<10\))
-
-
-
轮流协议
- 轮询协议:节点之一被指定为主节点,主节点以循环的方式轮询每个节点。
- 缺点:1️⃣ 引入了轮询时延;2️⃣ 如果主节点故障,整个信道不可操作。
- 令牌传递协议:没有主节点。一个称为令牌的小的特殊帧在节点之间以某种固定的次序进行交换,一个节点将令牌发送给下一个节点,依次循环。持有令牌的节点有帧要发就发送最大数目的帧,没有就不发,然后把令牌转发给下一个节点。
- 缺点:1️⃣ 一个节点故障导致整个信道崩溃;2️⃣ 如果一个节点偶然忘记释放令牌,必须调用某些恢复步骤使令牌返回到循环中。
- 轮询协议:节点之一被指定为主节点,主节点以循环的方式轮询每个节点。
-
交换局域网
-
MAC 地址
- 并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址
- 链路层交换机并不具有与它们的接口相关联的链路层地址。这是因为链路层交换机的任务是在主机与路由器之间承载数据报;交换机透明地执行该任务,主机或路由器不必明确将帧寻址到其间的交换机。
- 链路层地址、LAN地址、物理地址、MAC 地址,等价。
MAC
地址长度 6 字节,有 \(2^{48}\) 个可能的 MAC 地址,采用十六进制表示法,每个字节被表示为一对十六进制数。- 没有两块适配器具有相同的地址。
- 适配器的
MAC
地址具有扁平结构,而且不论适配器到哪里用都不会变化。 MAC
广播地址:FF-FF-FF-FF-FF-FF
-
地址解析协议(ARP)
-
将一个
IP
地址解析为一个MAC
地址。 -
只为在一个子网上的主机和路由器接口解析 IP 地址。
-
每台主机或路由器在其内存中具有一个
ARP
表,这张表包含IP
地址到MAC
地址的映射关系。 -
工作过程:
- 主机发送一个数据报到另一台主机或路由器,发送主机需要获得给定 IP 地址的目的主机的 MAC 地址,如果发送方的 ARP 表中有该目的节点的表项,则可直接获得。
- 否则,发送方构造一个称为 ARP 分组的特殊分组。一个 ARP 分组有几个字段,包括发送和接收 IP 地址及 MAC 地址。
- 发送方向它的适配器传递一个 ARP 查询分组,并且指示适配器应该用 MAC 广播地址发送这个分组。
- 适配器在链路层帧中封装这个 ARP 分组,以广播地址作为帧的目的地址,并将该帧传输进子网中。
- 包含该 ARP 查询的帧能被子网上所有其他适配器接收到,并且每个适配器都把在该帧中的 ARP 分组向上传递给 ARP 模块。
- 这些 ARP 模块中的每个都检查它的
IP
地址是否与ARP
分组中的目的地址匹配,与之匹配的一个给查询主机发送回一个带有所希望映射的响应ARP
分组。 - 然后查询主机能更新它的
ARP
表,并发送它的IP
数据报。
-
查询 ARP 报文是在广播帧中发送的,而响应 ARP 报文是在一个标准帧中发送
-
ARP
是即插即用的。一个 ARP 表是自动建立的,不需要系统管理员来配置。 -
ARP 是跨越链路层和网络层边界两边的协议。
-
跨越子网时,发送主机的 MAC 地址先通过 ARP 查询之后设置为所在子网的路由器的 MAC 地址,然后路由器通过转发表将其转发到目的子网的路由器,该路由器通过 ARP 查询之后获取目的主机 MAC 地址,并发送帧。
-
-
以太网
-
一种有线局域网技术。
-
集线器:集线器 (hub) 是一种物理层设备,它作用于各个比特而不是作用于帧。当表示一个 0 或一个 1 的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去。因此,采用基于集线器的星形拓扑的以太网也是一个广播局域网,即无论何时集线器从它的一个接口接收到一个 比特,它向其所有其他接口发送该比特的副本。特别是,如果某集线器同时从两个不同的接口接收到帧,将出次碰撞,生成该帧的节点必须重新传输该帧。
-
以太网帧结构
- 数据字段:以太网的最大传输单元(
MTU
)是 1500 字节。如果 IP 数据报超过了 1500 字节,则主机必须将该数据报分片。 - 目的地址:目的适配器的
MAC
地址,6
字节。 - 源地址:传输该帧到局域网上的适配器的
MAC
地址,6
字节。 - 类型字段:指明目的适配器应该将数据字段的内容传递给哪个网络层协议(分解)。
- 数据字段:以太网的最大传输单元(
-
所有以太网技术都向网络层提供无连接服务和不可靠服务。
-
-
链路层交换机
-
任务:接收入链路层帧并将它们转发到出链路。
-
交换机自身对子网中的主机和路由器是透明的。
-
过滤:决定一个帧应该转发到某个接口还是应当将其丢弃。
-
转发:决定一个帧应该被导向哪个接口,并把该帧移动到那些接口。
-
交换机表
-
自学习:表是自动、动态和自治地建立的,即没有来自网络管理员或来自配置协议的任何干预。
-
即插即用:不需要网络管理员或用户干预。
-
-
交换机和路由器比较
交换机 | 路由器 | |
---|---|---|
地址 | MAC 地址 |
IP 地址 |
层次 | 第二层的分组交换机,物理链路层 | 第三层的分组交换机,网络层 |
优点 | 1️⃣ 即插即用;2️⃣ 相对高的分组过滤和转发速率 | 1️⃣ 网络寻址分层,当网络中存在冗余路径时,分组通常也不会通过路由器循环;2️⃣ 分组不会被限制到一棵生成树,可以使用源和目的地之间的最佳路径;3️⃣ 允许以丰富的拓扑结构构建因特网;4️⃣ 对第二层的广播风暴提供了防火墙保护。 |
缺点 | 1️⃣ 为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树;2️⃣ 大型交换网络要求主机和路由器中有大的 ARP 表,这将生成较大的 ARP 流量和处理量;3️⃣ 对广播风暴并不提供任何保护措施 | 1️⃣ 不是即插即用的,路由器和连接到它们的主机都需要人为配置 IP 地址。2️⃣ 路由器对每个分组的处理时间通常比交换机长。 |
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230209173203337-1483303811.png)
- 虚拟局域网(VLAN):支持 VLAN 的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。
⭐ Web 页面请求的历程(非常重要,请全部理解并能复述)
习题
R3.链路层协议能够向网络层提供哪些可能的服务?在这些链路层服务中,哪些在IP中有对应的服务? 哪些在TCP中有对应的服务?
链路层能够向网络层提供的服务有:成帧,链路接入,可靠传送,流量控制,纠错,检错,全双工传输等。
其中,在 IP 中有的服务是:成帧,检错。
在 TCP 有的服务是:成帧,可靠传送,流量控制,检错以及全双工传输。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117225830113-1308197711.png)
答:会出现冲突。因为当一个节点在传输数据的同时,又开始接受数据,这种情况下必然会发生冲突。
R9.MAC地址空间有多大?IPV4的地址空间呢?IPV6的地址空间呢?
\(2^{48}\)个
MAC
地址;\(2^{32}\) 个IPv4
地址;\(2^{128}\) 个IPv6
地址。
R10.假设结点A、B和C (通过它们的适配器)都连接到同一个广播局域网上。
如果A向B发送数千个IP数据报,每个封装帧都有B的MAC地址,C的适配器会处理这些帧吗?
如果会,C的适配器将会把这些帧中的IP数据报传递给C的网络层吗?
如果A用MAC广播地址来发送这些帧,你的回答将有怎样的变化呢?
C 的适配器会处理这些帧,但是不会将这些帧中的
IP
数据报传递给 C 的网络层。如果 A 使用的是广播地址,则 C 不仅会处理而且会传递这些数据包。
R11 ARP查询为什么要在广播帧中发送呢? ARP响应为什么要在一个具有特定目的MAC地址的帧中发送呢?
ARP查询要在广播帧中发送是因为查询主机不知道哪个适配器的地址对应于要查询的IP地址。
而ARP响应时,由于发送节点知道要给哪个适配器发送响应,所以该响应在包含具体目的MAC地址的帧中发送,而不必发送广播帧。
P7.在这道习题中,我们探讨CRC的某些性质。对于在5.2.3节中给出的生成多项式G(=1001),回答下列问题:
a.为什么它能够检测数据中的任何单比特差错?
b.上述G能够检测任何奇数比特差错吗?为什么?
因此,一个奇数比特错误不能被 11 整除,因此不能被 G 整除。即可以检测。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117231919720-147849502.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117231940488-1359981581.png)
P23、如果所有11=9+2节点以100 Mbps的最大可能速率发送数据,则总吞吐量为11*100=1100 Mbps是可能的。
P24、每个部门中心都是一个碰撞域,最大吞吐量为 100 Mbps。连接 Web 服务器和邮件服务器的链接的最大吞吐量为 100 Mbps。因此,如果三个碰撞域以及 Web 服务器和邮件服务器以各自 100 Mbps的最大可能速率发送数据,则 11 个终端系统之间的总总吞吐量可达到 500 Mbps。
P25、所有的11端系统都将处于相同的碰撞域。在这种情况下,在11个终端系统中,最大总吞吐量为100 Mbps是可能的。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117232013746-136004597.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117233722849-897367874.png)
P1.假设某分组的信息内容是比特模式1110 0110 1001 1101, 并且使用了偶校验方案。在采用二维奇偶校验方案的情况下.包含该检验比特的字段的值是什么?你的回答应该使用最小长度检验和字段。
11101
01100
10010
11011
11000
P5.考虑 5 比特生成多项式,G=10011,并且假设D的值为1010101010,R的值是什么?
G = 10010,r = 4
D 左移 4 位得到 d + r 比特模式:10101010100000
除以 G 得到余数 0100
P14.如图5-33所示,考虑通过两台路由器互联的3个局域网。
a.对所有的接口分配IP地址。对子网1使用形式为192.168. 1. xxx的地址,对子网2使用形式为 192. 168.2. xxx的地址,对子网3使用形式为192. 168. 3. xxx的地址。
b.为所有的适配器分配MAC地址。
c. 考虑从主机E向主机B发送一个IP数据报。假设所有的ARP表都是最新的,列举出所有步骤。
d.重复(c),现在假设在发送主机中的ARP表为空(并且其他表都是最新的)。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117233851745-869227693.png)
![]()
c.
1.E中的转发表决定数据报应该路由到接口192.168.3.0022.E中的适配器创建以太网目的地址为88-88-88-88-88-88的以太网数据包
3.路由器2收到数据包并提取数据报,该路由器中的转发表指示该数据报将被路由到198.162.2.002
4.路由器2通过其接口IP地址为198.162.2.003的以太网报文发送目的地址为33-33-33-33-33-33,源地址为55-55-55-55-55-55的以太网报文。
5.继续该过程,直到数据包到达主机B
d.
E中的ARP现在必须确定198.162.3.002的MAC地址。主机E在广播以太网帧内发送ARP查询报文,路由器2收到查询报文,并向主机E发送ARP响应报文。ARP响应报文由以太网帧承载,以太网目的地址为77-77-77-77-77-77。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117234003084-489340335.png)
a)否。E可以检查主机F的IP地址的子网前缀,然后了解F在同一个局域网上。因此,E不会将数据包发送到默认路由器R1。
从E到F的以太网帧:
源IP=E的IP地址
目的地IP=F的IP地址
源MAC=E的MAC地址
目的地MAC=F的MAC地址b)不,因为它们不在同一个局域网上。E可以通过检查B的IP地址来发现这一点。
从E到R1的以太网帧:
源IP=E的IP地址
目的地IP=B的IP地址
源MAC=E的MAC地址目的地MAC=连接到子网的R1接口的MAC地址。
c)交换机S1将通过两个接口广播以太网帧,因为接收到的ARP帧的目的地地址是广播地址。它了解到A驻留在连接到子网1的子网1上,并且S1将更新它的转发表以包括主机A的条目。
是的,路由器R1也接收这个ARP请求消息,但是R1不会将消息转发到子网3。
B不会发送请求A的MAC地址的ARP查询消息,因为这个地址可以从A的查询消息中获得。
一旦交换机S1接收到B的响应消息,它将在其转发表中为主机B添加一个条目,然后删除接收到的帧,因为目的地主机A与主机B在同一个接口上(即A和B位于同一个LAN段上)。
P18.假设结点A和结点B在同一个10Mbps广播信道上,这两个结点的传播时延为325比特时间。假设对这个广播信道使用CSMA/CD和以太网分组。假设结点A开始传输一帧,并且在它传输结束之前结点B开始传输一帧。在A检测到B已经传输之前,A能完成传输吗?为什么?如果回答是可以,则A错误地认为它的帧已成功传输而无碰撞。
提示:假设在t=0比特时刻,A开始传输一帧。在最坏的情况下,A传输一个512+64比特时间的最小长度的帧。因此A将在t =512+64比特时刻完成帧的传输。如果B的信号在比特时间t =512 +64比特之前到达A,则答案是否定的。在最坏的情况下,B的信号什么时候到达A?
在t=0时A开始发送,t=576时,A完成传输。在最坏的情况下,B在t=324时开始传送,该时间恰好在A的帧的第一位到达B之前。在时间t=324+325=649,B的第一位到达A,因为649>576,A在检测到B已经发送之前完成发送,所以A错误地认为已经完成传输,未发生碰撞。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117234104599-1549988536.png)
P22. 现在假定在图6-33最左边的路由器被一台交换机替换。主机A、B、C、D和右边的路由器以星形方式与这台交换机相连。当在下列场合传输该帧时,给出在封装该IP数据报的帧中的源和目的 MAC地址:
(i)从A到交换机;
(ii)从交换机到右边的路由器;
(iii)从右边的路由器到F。还要给出到达每个点时封装在该帧中的IP数据报中源和目的IP地址。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221117234420153-466861207.png)
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230209191040814-1463545334.png)
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230223222817870-2092298545.png)
i) 从A到交换机:
源MAC地址: 00-00-00-00-00-00
目的MAC地址: 55-55-55-55-55-55
源IP: 111.111.111.001
目的IP: 133.333.333.003
ii) 从交换机到右边的路由器:
源MAC地址: 00-00-00-00-00-00
目的MAC地址: 55-55-55-55-55-55
源IP: 111.111.111.001
目的IP: 133.333.333.003
iii) 从右边的路由器到F:
源MAC地址: 88-88-88-88-88-88
目的MAC地址: 99-99-99-99-99-99
源IP: 111.111.111.001
目的IP: 133.333.333.003
第 7 章 无线网络和移动网络
概念速览
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221124161632987-942611737.png)
-
无线网络的构件
-
无线主机:运行应用程序的端系统设备。可以是便携机、掌上机、智能手机或者桌面计算机。主机本身可以移动,也可能不移动。
-
无线链路:主机通过无线通信链路连接到一个基站或者另一个无线主机。不同的无线链路技术具有不同的传输速率和能够传输不同的距离。
-
基站:无线网络基础设施的一个关键部分。与无线主机和无线链路不同,基站在有线网络中没有明确的对应设备。它负责向与之关联的无线主机发送数据和从主机那里接收数据。基站通常负责协调与之相关联的多个无线主机的传输。
- 一台无线主机与某基站“相关联”:1️⃣ 该主机位于该基站的无线通信覆盖范围内;2️⃣ 该主机使用该基站中继它和更大网络之间的数据
-
切换:当一台移动主机的移动超出一个基站的覆盖范围而到达另一个基站的覆盖范围后,它将改变其接入到更大的网络的连接点(即改变与之相关联的基站)。
-
网络基础设施:无线主机希望与之进行通信的更大网络。
-
与基站关联的主机通常被称为以基础设施模式运行。因为所有传统的网络服务(如地址分配和路由选择)都由网络向通过基站相连的主机提供。
-
在自组织网络中,无线主机没有这样的基础设施与之相连。在没有这样的基础设施的情况下,主机本身必须提供诸如路由选择、地址分配、类似于 DNS 的名字转换等服务。
-
-
无线网络分类
- 单跳,基于基础设施
- 具有与较大的有线网络连接的基站。该基站与无线主机之间的所有通信都经过一个无线跳。
802.11
网络、4G LTE
数据网络。
- 单跳,无基础设施
- 不存在与无线网络相连的基站。单跳网络中的一个节点可以协调其他节点的传输。
- 蓝牙网络、具有自组织模式的
802.11
网络。
- 多跳,基于基础设施
- 一个基站表现为以有线方式与较大网络相连。某种无线节点为了经该基站通信,可能不得不通过其他无线节点中继它们的通信。
- 无线传感网络、无线网状网络
- 多跳,无基础设施
- 网络中没有基站,并且节点为了到达目的地可能必须在几个其他无线节点之间中继报文。
- 移动自组织网络(MANET)、车载自组织网络(VANET)
- 单跳,基于基础设施
-
无线链路和网络特征
-
路径损耗:电磁波在穿过物体时强度将减弱。即使在自由空间中,信号仍将扩散,这使得信号强度随着发送方和接收方距离的增加而减弱。
-
多径传播:当电磁波的一部分受物体和地面反射,在发送方和接收方之间走了不同长度的路径,则会出现多径传播。这使得接收方收到的信号变得模糊。位于发送方和接收方之间的移动物体可导致多径传播随时间而改变。
-
来自其他源的干扰:在同一个频段发送信号的电波源将相互干扰。
-
信噪比(SNR):所收到的信号和噪声强度的相对测量。单位是分贝(dB)。
-
比特差错率(BER):在接收方收到的有错传输比特的概率。
-
接收方无法检测到碰撞的两种情况:
- 隐藏终端问题:即使
A
和C
的传输确实是在目的地B
发生干扰,环境的物理阻拦(大山、建筑)也可能会妨碍A
和C
互相听到对方的传输。 - 衰减:
A
和C
所处的位置使得它们的信号强度不足以使它们相互检测到对方的传输,然而它们的传输足以强到在站点 B 处相互干扰。
- 隐藏终端问题:即使
-
CDMA
-
码分多址(CDMA)属于信道划分协议。
-
要发送的每个比特都通过乘以一个信号(编码)的比特来进行编码,这个信号的变化速率(通常称为码片速率, chipping rate) 比初始数据比特序列的变化速率快得多。
-
\(d_i\):第 \(i\) 个比特时隙中的数据比特值。
-
\(Z_{i,m}=d_i \cdot c_m\) :对于 \(d_i\) 比特传输时间的第 \(m\) 个微时隙,\(CDMA\) 编码器的输出 \(Z_{i,m}\) 是 \(d_i\) 乘以分配的 \(CDMA\) 编码的第 \(m\) 比特 \(c_m\)。
-
\(d_i=\frac{1}{M}\sum_{m=1}^M{Z_{i,m}\cdot c_m}\) :接收方恢复初始的数据比特。
-
当有多个发送方干扰目标发送方时,CDMA 假设对干扰的传输比特信号是加性的;接收方收到的值是在那个微时隙中从所有 N 个发送方传输的比特的总和,使用目标发送方的 CDMA 编码可以提取出目标发送方的初始数据比特。
-
-
-
WiFi:802.11 无线 LAN
-
IEEE 802.11 无线 LAN(WiFi)
:无线LAN
标准。 -
媒体访问协议:
CSMA/CA
,带碰撞避免的 CSMA,注意区分CSMA/CD
-
体系结构
- 基本服务集(BSS):一个
BSS
包含一个或多个无线站点和一个在802.11
术语中称为接入点的中央基站。 - 接入点(AP):中央基站
- 服务集标识(SSID):当网络管理员安装一个 AP 时,管理员为该接入点分配一个单字或双字的服务集标识。
- 一个典型的家庭网络中,有一个
AP
和一台将该BSS
连接到因特网中的路由器。 - WiFi 丛林:是一个任意物理位置,在这里无线站点能从两个或多个
AP
中收到很强的信号。 - 关联:为了获得因特网接入,无线站点需要加入其中一个子网并因此需要于其中的一个
AP
相关联。关联意味着这一无线站点在自身和该 AP 之间创建一个虚拟线路。 - 信标帧:
802.11
标准要求每个AP
周期性地发送信标帧,每个信标帧包括该AP
的SSID
和MAC
地址。 - 被动扫描:扫描信道和监听信标帧的过程。
- 主动扫描:通过向位于无线主机范围内的所有
AP
广播探测帧完成的。AP 用一个探测响应帧应答探测请求帧。无线主机则能够在响应的 AP 中选择某 AP 与之相关联。
- 基本服务集(BSS):一个
-
802.11 MAC 协议
-
带碰撞避免的 CSMA,
CSMA/CA
,一种随机访问协议。 -
802.11 使用碰撞避免而不是碰撞检测,一旦站点开始发送一个帧,它就完全地发送该帧,不会返回。
- 检测碰撞的能力要求站点具有同时发送和接收的能力。因为在 802.11 适配器上,接收信号的强度通常远远小于发送信号的强度,制造具有检测碰撞能力的硬件代价较大。
- 即使适配器可以同时发送和监听信号,是匹配器也会由于隐藏终端问题和衰减问题而无法检测到所有的碰撞。
-
802.11 使用链路层确认/重传(ARQ)
-
目的站点收到一个通过 CRC 校验的帧后,它等待一个被称为短帧间间隔(SIFS)的一小段时间,然后发挥一个确认帧。如果发送站点在给定的时间内未收到确认帧,它假定出现了错误并重传该帧,使用
CSMA/CA
协议访问该信道 。如果在若干固定次重传后仍未收到确认,发送站点将放弃发送并丢弃该帧。1️⃣ 如果某站点最初监听到信道空闲,它将在一个被称为分布式帧间间隔(DIFS)的段时间段后发送该帧。
2️⃣ 否则,该站点选取一个随机回退值并且在侦听信道空闲时递减该值。当侦听到信道忙时,计数值保持不变。
3️⃣ 当计数值减为 0 时(只可能发生在信道被侦听为空闲时),该站点发送整个数据帧并等待确认。
4️⃣ 如果收到确认,发送站点知道它的帧已被目的站正确接收了。如果该站点要发送另一个帧,它将从第二步开始
CSMA/CA
协议。如果未收到确认,发送站点将重新进入第二步中的回退阶段,并从一个更大的范围内选取随机值。 -
在以太网的 CSMA/CD 的多路访问协议下,一旦侦听到信道空闲,站点开始发送。然而,使用 CSMA/CA, 该站点在倒计数时抑制传输,即使它侦听到该信道空闲也是如此。为什么 CSMA/CD 和 CSMA/CA 采用了不同的方法?
- 在 CSMA/CD 中碰撞不是一个严重的问题,因为两个站点检测到碰撞后等都会放弃它们的发送,从而避免了由于碰撞而造成的该帧剩余部分的无用发送。
- 在 802.11 中,并不检测碰撞和放弃发送,遭受碰撞的帧仍将被完全传输。因此要尽可能避免碰撞。如果两个站点侦听到信道忙,它们都将立即进入随机回退,希望选取一个不同的回退值。如果这些值的确不同,一旦信道空闲,其中的一个站点将在另一个之前发送,并且“失败站点”将会听到“胜利站点”的信号,冻结它的计数器,并且在胜利站点完成传输之前一直抑制传输,避免了高代价的碰撞。
- 使用 802.11 仍然可能出现碰撞的情况:1️⃣ 两个站点可能相互是隐藏的;2️⃣ 两者可能选择了非常靠近的随机回退值
-
-
处理隐藏终端:RTS 和 CTS
-
请求发送(RTS)
-
允许发送(CTS)
-
传输 DATA 帧前,H1 首先广播一个 RTS 帧,指示传输 DATA 帧和确认(ACK)帧需要的总时间,该帧能被其范围内包括 AP 在内的所有站点听到。
-
AP 然后用一个 CTS 帧 进行广播响应,该帧也被其范围内的包括 H1 和 H2 在内的所有站点听到。目的是给发送方明确的发送许可,也指示其他站点在预约期内不要发送。
-
站点 H2 听到 CTS 后,才 CTS 帧中指明的时间内将抑制发送。
-
-
-
高级特色
- 802.11 速率适应:如果一个节点连续发送两个帧而没有收到确认,该传输速率降低到前一个较低的速率。如果 10 个帧连续得到确认,或如果用来跟踪自上次降速以来时间的定时器超时,该传输速率提高到上一个较高的速率。
- 功率管理:一个节点能够明显地在睡眠和唤醒状态之间交替。
-
-
移动管理
- 归属网络:在一个网络环境中,一个移动节点(智能手机)的永久居所被称为归属网络。
- 归属代理:在归属网络中代表移动节点执行移动管理功能的实体叫归属代理。
- 外部网络:移动节点当前所在网络叫作外部网络或被访网络。
- 外部代理:在外部网络中帮助移动节点做移动管理功能的实体称为外部代理。外部代理的作用之一是为移动节点创建一个所谓的转交地址(COA),该 COA 的网络部分与外部网络的网络部分相匹配
- 因此一个移动节点可与两个地址相关联,即其永久地址与其 COA
- 永久地址:又称为归属地址 / 主地址 ; 移动站点在归属网络中的原始地址。移动节点在从一个网络移动到另一个网络时 保持其地址不变。
- 转交地址 : 又称为辅助地址 ; 移动站点在外部网络中使用的临时地址 ;
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230211165055823-1151537666.png)
习题
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221124231222908-221817270.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221124231303454-427642618.png)
\(z_1=[-1,1,-1,1,-1,1,-1,1]\)
\(z_0=[1,-1,1,-1,1,-1,1,-1]\)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221124173641511-2073212752.png)
\(d_{1}^{2}=\frac{1}{8}\left( 1\cdot 0+\left( -1 \right) \cdot \left( -2 \right) +1\cdot 0+1\cdot 2+1\cdot 0+\left( -1 \right) \cdot 0+1\cdot 2+1\cdot 2 \right) =1\)
\(d_{0}^{2}=\frac{1}{8}\left( 1\cdot 2+\left( -1 \right) \cdot 0+1\cdot 2+1\cdot 0+1\cdot 2+\left( -1 \right) \cdot \left( -2 \right) +1\cdot 0+1\cdot 0 \right) =1\)
![]()
一个没有数据的帧的长度是 32 字节,假设传输速率是 11 Mbps,则传输一个控制帧(RTS 帧,CTS 帧,ACK 帧)的时间是
256 bits / 11 Mbps = 23 usec
,传输一个数据帧的时间是8256 bits / 11 Mbps = 751 usec
DIFS + RTS + SIFS + CTS + SIFS + FRAME + SIFS + ACK = DIFS + 3SIFS + (3*23 + 751) usec = DIFS + 3SIFS + 820 usec
a) 两个AP通常具有不同的 SSID 和 MAC 地址。无线站到达cafe将与其中一个 SSID(即其中一个AP)相关联。在关联之后,在新站点和AP之间存在虚拟链路。标记AP1和AP2。假设新站点与AP1相关联。当新的站发送帧,它将被寻址到AP1。尽管AP2还将接收帧,因为帧未被寻址,所以它将不处理帧。因此,两个 ISP 可以在同一信道上并行工作。然而,这两个ISP将共享相同的无线带宽。如果不同的无线站不同ISP同时发送,会发生冲突。对于802.11b,最大值两个ISP的聚合传输速率为11Mbps。
b) 现在,如果不同ISP(以及因此不同的信道)中的两个无线站发送同时,不会发生碰撞。因此,对于802.11b,两个ISP的最大传输速率为22Mbps。
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221125113409536-2008179131.png)
a) 1 message/ 2 slots
b) 2 messages/slot 。A 和 D 可以同时发送。
c) 1 message/slot。因为如果 A 和 C 同时发送的话,B 会听到两个节点发送,出现冲突,所以 A 和 C 只能分开发送。
d)
i) 1 message/slot
ii) 2 messages/slot
iii) 2 messages/slot
e)
i) 1 message/4 slots
ii)
slot 1: Message A→ B, message D→ C
slot 2: Ack B→ A
slot 3: Ack C→ D
= 2 messages/ 3 slots
iii)
slot 1: Message C→ D
slot 2: Ack D→C, message A→ B
slot 3: Ack B→ A
重复上面三个
= 2 messages/3 slots
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221125120030795-1691413274.png)
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221125120105470-1791933673.png)
路径损耗:电磁波在穿过物体时强度将减弱。即使在自由空间中,信号仍将扩散,这使得信号强度随着发送方和接收方距离的增加而减弱。
多径传播:当电磁波的一部分受物体和地面反射,在发送方和接收方之间走了不同长度的路径,则会出现多径传播。这使得接收方收到的信号变得模糊。位于发送方和接收方之间的移动物体可导致多径传播随时间而改变。
来自其他源的干扰:在同一个频段发送信号的电波源将相互干扰。
a)增加传输功率
b)降低比特传输率
为什么802. 11中使用了确认,而有线以太网中却未使用?
检测碰撞的能力要求站点具有同时发送和接收的能力。因为在 802.11 适配器上,接收信号的强度通常远远小于发送信号的强度,制造具有检测碰撞能力的硬件代价较大。
即使适配器可以同时发送和监听信号,是匹配器也会由于隐藏终端问题和衰减问题而无法检测到所有的碰撞。
与可以检测到碰撞的以太网不同,在无线网环境中检测碰撞非常困难,因为在发送处的信号强度比接受处强得多。由于检测不到碰撞,发送方就不能确定数据是否已发送到目的地,因此就必须使用确认机制。
无线信道中误码率比较高
描述RTS门限值的工作过程。
每个无线站可以设置RTS阈值,使RTS/CTS序列仅在要发送的数据帧大于阈值时使用。这确保RTS/CTS机制仅用于大帧。
假设IEEE 802.11 RTS和CTS帧与标准的DATA和ACK帧一样长,使用CTS和RTS帧还会有好处吗?为什么?
永久地址与转交地址的区别是什么?谁指派转交地址?
1)永久地址:移动结点在从一个网络移动到另一个网络时保持其地址不变。
转交地址:被访(外部)网络生成的临时地址。
2)外部代理指派的。
R20. 考虑经移动IP的一条TCP连接
是非判断:在通信者和移动主机之间的TCP连接阶段经过该移动用户的归属网络,但数据传输阶段直接通过该通信者和移动主机,绕开了归属网络。
否。
TCP的连接建立和通讯阶段都是始终保持在同一条链路(虚电路)上,不可能出现同一条连接建立阶段和传输阶段的链路不同的情形, 参见图7-23,至少使用了两条TCP连接,它说的控制流和数据流是应用层的概念,而非传输层的概念。
R6.是非判断802. 11站在传输一个数据帧前,必须首先发送一个RTS帧并收到一个对应的CTS帧。
错
尽管RTS/CTS交换有助于降低碰撞,担它同样引入了时延以及消耗了信道资源。因此,RTS/CTS仅用于为长数据帧预约信道。只有最大数据帧长度大于门限值时才使用 RTS/CTS 序列。
R8. 是非判断: 以太网和802. 11使用相同的帧格式。
错
802.11帧
![]()
以太网帧
![]()
第 8 章 计算机网络中的安全
概念速览
-
重要特性
-
机密性:仅有发送方和接收方能够理解传输报文的内容,要求对报文加密,因为窃听者可以截取报文。
-
报文完整性:希望确保通信的内容在传输过程中不被改变。
-
端点鉴别:发送方和接收方都应该能确定通信过程所涉及的另一方,以确信通信的另一方确实具有所声称的身份。一个实体经过计算机网络向另一个实体证明其身份的过程。
-
运行安全性:防火墙,入侵检测系统反制网络攻击。
-
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230211181155584-546822045.png)
-
密码学概念
-
明文:报文的最初形式。
-
密文:使用加密算法加密明文报文,生成的加密报文。
-
密钥:一串数字或字符,作为加密或解密算法的输入。
-
对称密钥系统(对称加密):
- 发送方和接收方的密钥是相同的并且是秘密的。
- 对称加密有两种类型:
- 流密码
- 块密码:全表块密码映射、函数模拟随机排列表(常用)。
DES
、3DES
、AES
-
公开密钥系统(非对称加密):
- 发送方和接收方使用一对密钥:一个密钥为双方所知(周知),另一个密钥只有发送方或接收方知道(并非双方都知道)
RSA
-
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230211181910354-1158418767.png)
-
报文完整性(报文鉴别)
-
密码散列函数:
-
以
m
为输入,并计算得到一个称为散列的固定长度的字符串H(m)
。 -
性质:找到任意两个不同的报文
x
和y
使得H(x) = H(y)
在计算上是不可能的。
-
-
鉴别密钥:发送方和接收方需要共享密码
s
,这个共享的秘密是一个比特串。 -
报文鉴别码(MAC):发送方生成报文
m
,用s
级联m
以生成m + s
,并计算散列H(m + s)
。H(m + s)
被称为报文鉴别码。使用 MAC, 实体能够鉴别它们相互发送的报文,而不必在完整性过程中综合进复杂的加密过程。生成 MAC 的过程,不涉及对称密码机制也不涉及非对称密码机制
-
数字签名:在数字领域,人们通常需要指出一个文件的所有者或创作者,或者表明某人认可一个文件内容。为了获得数字签名,首先取得报文的散列,然后用私钥加密。 \(K^-(H(m))\)。生成数字签名技术含量更高的,是需要由 CA(将公钥和特定实体绑定的机构)进行公钥认证的。
-
公钥认证:证实一个公钥属于某个特定的实体。
-
认证中心(CA):将公钥与特定实体绑定。
-
CA
证实一个实体的真实身份。 -
一旦
CA
验证了某个实体的身份,这个CA
会生成一个将身份和实体的公钥绑定起来的证书。由CA
对这个证书进行数字签名。
-
-
-
端点鉴别
-
端点鉴别就是一个实体经过计算机网络向另一个实体证明其身份的过程
-
鉴别协议(ap):
-
ap1.0:发送方直接发送报文表明身份。但是,接收方无法确定发送方报文内容和其真实身份是否一致。
-
ap2.0:发送方总是使用周知网络地址(IP),接收方可以通过验证携带鉴别报文的 IP 数据报的源地址是否与发送方的周知 IP 地址匹配。但是,发送方可以在数据包中填入任意 IP 地址。
-
ap3.0:发送方和接收方使用共享的秘密口令。但是,可以窃听发送方通信,嗅探数据分组,窃取口令。
-
ap3.1:加密口令,发送方和接收方共享对称加密密钥。但是,接收方受制于回放攻击:可以窃听发送方通信,并记录口令的加密版本,并向接收方回放该口令的加密版本,接收方不能区分发送方的初始鉴别报文和后来入侵者回放的初始鉴别报文。
-
ap4.0:不重数(nonce):一个协议的生存期中只使用一次的数。对称加密:发送方对不重数加密
- A 向 B 发送报文表明身份。
- B 选择一个不重数
R
,发送给 A。 - A 使用与 B 共享的对称密钥来加密不重数,然后把加密的不重数发回给 B。
- B 解密接收到的报文。如果解密得到的不重数等于他发送给 A 的不重数,则可以鉴别 A 的身份。
-
-
-
安全电子邮件
1️⃣ 提供机密性的安全电子邮件系统
2️⃣ 提供发送方鉴别和报文完整性的安全电子邮件系统(不关心机密性)
3️⃣ 提供机密性、发送方鉴别和报文完整性的安全 电子邮件系统
-
PGP(Pretty Good Privacy):电子邮件加密方案
-
发送方:
-
对报文
m
进行散列函数,获得散列(数字指纹)H(m)
-
报文
m
和数字指纹H(m)
构成拓展报文 -
对报文
m
使用随机密钥 \(K_s\) 进行对称加密形成密文Ks(m)
-
对数字指纹
H(m)
使用发送方的私钥进行加密形成数字签名 -
对发送方的随机密钥
Ks
使用接收方的公钥进行加密,形成数字信封
-
-
接收方:
-
使用接收方的私钥对数字信封解密,获得发送方的随机密钥
-
使用随机密钥对报文
m
解密,获取报文m
-
使用发送方的公钥对数字签名解密,获得数字指纹
H(m)
-
使用和发送方一致的哈希算法对报文
m
加密 -
如果加密之后的报文和数字指纹一致,则鉴别成功
-
-
-
SSL 安全套接字层
![](https://img2022.cnblogs.com/blog/2288178/202211/2288178-20221102175008376-1443056584.png)
- 防火墙(firewall) :是一个硬件和软件的结合体,它将一个机构的内部网络与整个因特网隔离开,允许一些数据分组通过而阻止另一些分组通过。防火墙允许网络管理员控制外部和被管理网络内部资源之间的访问,这种控制是通过管理流入和流出这些资源的流量实现的。
![](https://img2023.cnblogs.com/blog/2288178/202302/2288178-20230213160438739-375449009.png)