计组相关笔记④
什么计组学到最后变成计网了!??
计算机与网络组织
互联网
互联网的定义
互联网是连接了数百万台计算设备的网络,这些设备包括:
- 主机:运行网络应用程序的终端系统
- 通信链路:光纤、铜线、无线电、卫星,其传输速率(比特/秒)定义了带宽
- 分组交换机:转发数据包(数据块),例如路由器和交换机
互联网的组成
互联网可以被视为“网络的网络”,由互连的 ISP 组成。互联网中的所有通信活动都由协议管理,例如 TCP,IP,HTTP,Skype,802.11 等。这些协议控制消息的发送和接收。
互联网的标准
互联网的标准通常以 RFC(请求评论)的形式发布,并由 IETF(互联网工程任务组)进行维护。
互联网作为服务的基础设施
互联网提供了各种服务的基础设施,包括网络、VoIP、电子邮件、游戏、电子商务、社交网络等。它还提供了应用程序的编程接口,使应用程序能够通过连接到互联网来发送和接收消息。
协议
什么是协议?
协议定义了网络实体之间发送和接收消息的格式、顺序以及消息传输和接收时采取的操作。这不仅包括人类协议,如“现在几点了?”或“我有个问题”,也包括网络协议,这些协议由机器而不是人来管理。
协议的例子
一个人类协议和一个计算机网络协议的例子:
- “你好” - “你好”
- “现在几点了?” - “2:00”
- TCP 连接请求 - TCP 连接响应
- 获取http://www.sydney.edu.au - <文件>
网络分层
网络是复杂的,包含许多组成部分,如主机、路由器、各种介质的链路、应用程序、协议、硬件和软件。为了更好地组织网络结构,我们可以将其分层。
分层的类比:航空旅行
航空旅行的组织可以作为网络分层的一个类比。航空旅行包括一系列步骤,如购票、行李检查、登机、起飞、飞行路线、投诉、行李提取、卸货和着陆。每一步都可以看作是网络组织中的一层。
在航空旅行中,每一层通过其自身的内部操作实现服务,同时依赖于下一层提供的服务。例如,购票、行李检查、登机、起飞、飞行路线、出发机场、到达机场和中间的空中交通管制中心。
互联网协议栈
互联网协议栈是网络分层的一个具体实例,包括以下层次:
- 应用层:支持网络应用,如 FTP,SMTP,HTTP
- 传输层:处理数据传输,如 TCP,UDP
- 网络层:负责从源到目的地的数据报路由,如 IP,路由协议
- 链路层:处理相邻网络元素之间的数据传输,如以太网,802.11(WiFi),PPP
- 物理层:处理在线路上的比特
ISO/OSI 参考模型
ISO/OSI 参考模型是另一个网络分层的模型,它包括两个额外的层:
- 表示层:允许应用程序解释数据的含义,如加密、压缩、机器特定约定
- 会话层:负责同步、检查点、数据交换恢复
需要注意的是,互联网协议栈缺少这些层;如果需要这些服务,必须在应用层实现。
网络结构
网络边缘
网络边缘包括:
- 主机:客户端和服务器(通常在数据中心)
- 接入网络,物理媒体:有线,无线通信链路
网络核心
网络核心包括:
- 互连的路由器,网络的网络
接入网络和物理媒体
接入网络
接入网络的主要问题是如何将终端系统连接到边缘路由器。这包括:
- 住宅接入网
- 机构接入网(学校、公司)
- 移动接入网
我们需要考虑接入网络的带宽(每秒比特数)以及是共享还是专用。
主机发送数据包
主机发送数据包的功能包括:
- 接收应用程序消息,分解成长度为 L 比特的小块(数据包)
- 以传输速率 R(链路容量或链路带宽)将数据包传输到接入网络
物理媒体
物理媒体是比特在发送器/接收器对之间传播的物理链路。物理链路可以是:
- 有导介质:信号在固体介质中传播(铜线、光纤、同轴电缆)
- 无导介质:信号自由传播(例如,无线电)
有导介质
有导介质包括:
- 双绞线:两根绝缘铜线(5 类:100 Mbps,6a 类:10 Gbps)
- 同轴电缆:两根同心铜导体,双向,宽带
- 光纤电缆:玻璃纤维传输光脉冲,高速,低错误率
网络核心
网络核心是互连路由器的网状结构。它主要负责如何从端到端传输数据,主要有两种方式:分组交换和电路交换。
分组交换
分组交换是主机将应用层消息分解为数据包,从一个路由器转发到下一个路由器的过程。
存储转发
存储转发是整个数据包必须到达路由器,然后才能在下一条链路上传输的过程。例如,传输 L 比特的数据包到链路以 R bps 速率需要 L/R 秒。端到端延迟为 2L/R(假设零传播延迟)。例如,如果 L = 7.5 Mbits,R = 1.5 Mbps,那么延迟 = 5 秒。
排队延迟和丢包
如果在一段时间内到达链路的速率超过链路的传输速率,数据包将排队等待在链路上传输。如果内存(缓冲区)满了,数据包可能会被丢弃(丢包)。
转发和路由
转发是将数据包从路由器的输入移动到适当的路由器输出的过程。路由则是确定数据包从源到目的地的路径,包括路由算法和本地转发表。
电路交换
电路交换是为源和目的地之间的“呼叫”分配和保留端到端资源的过程。每条链路都有有限数量的电路,呼叫获得专用电路段。这些资源是专用的,不共享,因此可以提供类似电路的(有保证的)性能。
频分多路复用和时分多路复用
频分多路复用(FDM)和时分多路复用(TDM)是电路交换的两种主要技术。频分多路复用是不同的频道在不同的频带中传输,而时分多路复用是不同的频道在不同的时间槽中传输。
分组交换与电路交换的比较
分组交换允许更多用户使用网络,非常适合突发数据,资源共享,更简单,无需呼叫设置。但是,分组交换可能会遭受过度拥塞,导致数据包延迟和丢失,需要协议进行可靠的数据传输和拥塞控制。
网络延迟
网络延迟主要有四个来源:
- 节点处理延迟 (dproc): 检查比特错误,确定输出链路,通常 < 毫秒
- 排队延迟 (dqueue): 在输出链路等待传输的时间,取决于路由器的拥塞程度
- 传输延迟 (dtrans): L: 数据包长度(比特),R: 链路带宽(bps),dtrans = L/R
- 传播延迟 (dprop): d: 物理链路长度,s: 介质中的传播速度 (~2x10^8 米/秒),dprop = d/s
车队类比
我们可以通过车队类比来理解网络延迟:
- 汽车以 100 公里/小时的速度“传播”
- 收费站需要 12 秒钟为一辆车服务(比特传输时间)
- 汽车 ~ 比特;车队 ~ 数据包
车队类比的计算
- 将整个车队推进收费站到高速公路的时间 = 12*10 = 120 秒
- 最后一辆车从第一个收费站到第二个收费站的传播时间:100 公里/(100 公里/小时) = 1 小时
- 因此,车队排到第二个收费站前需要的总时间为:62 分钟
排队延迟
排队延迟的计算公式为:
- R: 链路带宽(bps)
- L: 数据包长度(比特)
- a: 数据包到达率
- 流量强度 = La/R
- La/R ~ 0: 小排队延迟
- La/R >~ 1: 大排队延迟
- La/R > 1: 到达的数据包超过处理能力,平均延迟无穷大
网络路径和延迟
我们可以使用 Traceroute 程序来测量从源到路由器沿端到端互联网路径的延迟。
数据包丢失
数据包丢失通常是由于前一个链路的队列(即缓冲区)容量有限,到达满队列的数据包将被丢弃(即丢失)。丢失的数据包可能由上一个节点、源端系统或根本不重新传输。
吞吐量
吞吐量是发送方/接收方之间比特传输的速率(比特/时间单位)。
- 瞬时:给定时间点的速率
- 平均:较长时间段的速率
吞吐量的计算
- Rs < Rc:平均端到端吞吐量是多少?
- Rs > Rc:平均端到端吞吐量是多少?
吞吐量的应用场景
在互联网场景下,例如 10 个客户端从 10 个服务器下载文件:
- 每个连接的端到端吞吐量:min(Rc, Rs, R/10)
- 实际中:Rc 或 Rs 通常是瓶颈
Web 和 HTTP
Web 页面由对象组成,如 HTML 文件、JPEG 图像、Java applet、音频文件等。一个网页由基 HTML 文件组成,其中包含多个引用对象。每个对象可通过 URL 寻址(例如,www.someschool.edu/someDept/pic.gif)。
HTTP 概述
HTTP(超文本传输协议)采用客户端/服务器模型:
- 客户端:使用 HTTP 协议请求、接收和显示 Web 对象的浏览器
- 服务器:使用 HTTP 协议响应请求并发送对象的 Web 服务器
HTTP 使用 TCP 进行通信,客户端发起到服务器的 TCP 连接(创建套接字)到端口 80,服务器接受客户端的 TCP 连接。HTTP 消息在浏览器(HTTP 客户端)和 Web 服务器(HTTP 服务器)之间交换,然后关闭 TCP 连接。值得注意的是,HTTP 是无状态的,服务器不维护过去客户端请求的信息。
HTTP 连接
HTTP 连接可以分为非持久 HTTP 和持久 HTTP:
- 非持久 HTTP:在 TCP 连接上最多发送一个对象,然后关闭连接。下载多个对象需要多个连接。
- 持久 HTTP:客户端和服务器之间可以通过单个 TCP 连接发送多个对象。
HTTP 请求消息
HTTP 请求消息是 ASCII(人类可读格式):
- 请求行(GET、POST、HEAD 命令)
- 标头行
- 行首的回车换行表示标头行结束
HTTP 请求消息的通用格式包括请求行、标头行和主体(可选)。
HTTP 方法
HTTP 方法包括 POST、GET、PUT、DELETE 和 HEAD:
- POST:用户填写表单时使用
- GET:请求对象时使用,对象在 URL 字段中标识
- PUT:用于将对象上传到特定 Web 服务器的特定路径
- DELETE:用于删除 Web 服务器上的对象
- HEAD:类似于 GET,但省略请求的对象,用于调试
HTTP 响应消息
HTTP 响应消息包括状态行(协议、状态代码、状态短语)、标头行和数据(例如,请求的 HTML 文件)。
HTTP 响应状态代码
状态代码出现在服务器到客户端响应消息的第一行,例如:
- 200 OK:请求成功,请求的对象在消息中稍后出现
- 301 Moved Permanently:请求的对象已移动,新位置在消息中指定
- 400 Bad Request:服务器无法理解请求消息
- 404 Not Found:服务器上未找到请求的文档
- 505 HTTP Version Not Supported
用户服务器状态:Cookie
虽然 HTTP 服务器是无状态的,简化了服务器设计并允许开发高性能 Web 服务器,但 Cookie 允许网站识别用户并跟踪其状态。Cookie 技术组件包括 HTTP 响应消息的 Cookie 标头行、下一个 HTTP 请求消息中的 Cookie 标头行、保存在用户主机上的 Cookie 文件(由浏览器管理)和网站的后端数据库。
Cookie 的用途包括授权、购物车、推荐和用户会话状态(例如,Web 电子邮件)。然而,Cookie 也涉及到隐私问题,因为它允许网站了解用户的许多信息,用户可能会向网站提供个人信息。
Web 缓存与性能测量
Web 缓存(代理服务器)
Web 缓存通过以下方式访问 Web:
- 浏览器将所有 HTTP 请求发送到缓存。
- 如果对象在缓存中,则缓存返回对象。
- 否则,缓存从原始服务器请求对象,然后返回给客户端。
目标是在不涉及原始服务器的情况下满足客户端请求。
Web 缓存的角色和目标
缓存既作为客户端又作为服务器:
- 对原始请求客户端来说是服务器。
- 对原始服务器来说是客户端。
通常,缓存由 ISP(大学、公司、住宅 ISP)安装。
Web 缓存的目标包括:
- 减少客户端请求的响应时间。
- 减少机构访问链接上的流量。
Web 缓存的性能测量
以下是一些假设和结果的示例,以说明 Web 缓存如何影响性能:
示例 1:基本情况
假设:
- 平均对象大小:100K 比特
- 浏览器到原始服务器的平均请求率:15 次/秒
- 从互联网路由器到任何原始服务器的 RTT:2 秒
- 访问链路速率:1.54 Mbps
结果:
- 局域网利用率:0.15%
- 访问链路利用率:97.4%
- 总延迟:互联网延迟 + 访问延迟 + 局域网延迟 = 2 秒 + 分钟 + 微秒
示例 2:增加访问链路速度
假设与示例 1 相同。
结果:
- 局域网利用率:0.15%
- 访问链路利用率:0.974%
- 总延迟:互联网延迟 + 访问延迟 + 局域网延迟 = 2 秒 + 分钟 + 微秒
成本:增加访问链路速度(不便宜!)
示例 3:安装本地缓存
假设与示例 1 相同。
结果:
- 局域网利用率:15%
- 访问链路利用率:?
- 总延迟:?
成本:Web 缓存(便宜!)
使用缓存计算访问链路利用率和延迟
假设缓存命中率为 0.4:
- 40%的请求在缓存中满足,60%的请求在原始服务器中满足
- 访问链路利用率:60%的请求使用访问链路
- 总延迟:0.6 _(来自原始服务器的延迟)+ 0.4 _(在缓存中满足时的延迟)= 0.6(2.01)+ 0.4(~毫秒)= ~1.2 秒
条件 GET
条件 GET 的目标是,如果缓存有最新的缓存版本,则不发送对象。缓存在 HTTP 请求中指定缓存副本的日期(If-modified-since:
计算机性能测量
目标
- 了解计算机性能的各种测量。
- 使用这些思想来构建或改进系统性能。
- 讨论影响系统性能的因素和改进程序性能的技巧。
性能测量的数学基础
- 通过测量完成相同工作量的时间来比较性能。
- 如果系统 A 比系统 B 快 n 倍,如果系统 A 比系统 B 快 x%。
- 示例:两辆赛车,A 车在 2 分钟内完成比赛,B 车在 3 分钟内完成比赛。A 车比 B 车快 1.5 倍,比 B 车快 50%。
- 在评估系统性能时,我们关注给定工作负载下的预期性能。
- 使用衡量集中趋势的统计工具。
- 算术平均数(平均值)是最熟悉的度量。
- 如果数据偏斜或分散,算术平均数可能会产生误导。
- 如果已知执行频率(预期工作负载),加权平均数可以揭示性能。
- 但是,工作负载可能会随时间变化。
- 针对一种工作负载优化的系统在工作负载变化时可能表现不佳。
- 如果我们的测量值表现出很大的变异性,我们不能使用算术平均数。
- 几何平均数是比较系统相对性能的首选度量。
- 几何平均数通常使用被测系统和参考机器之间的标准化比率。
- 无论使用哪种系统作为参考,几何平均数的比率是一致的。
- 几何平均数不提供系统性能的真实期望,只是一个比较工具。
- 调和平均数提供了一种比较表示为速率的执行时间的方法。
- 调和平均数使我们能够形成吞吐量的数学期望,并比较相对吞吐量。
- 调和平均数适用于预测机器行为和改善最慢的性能。
- 各性能度量适用时间的总结。
性能基准测试
- 性能基准测试是对系统性能进行客观评估的科学。
- 性价比可以从标准基准测试中得出。
- CPU 速度通常与性能等同,但这只有在 ISA 相同的情况下才有效。
- 不同的 ISA 可以在相同的墙钟时间内产生相同的结果。
- 合成基准测试试图描述与时钟速度和 ISA 无关的性能。
- 早期的合成基准测试(例如,Whetstone,Dhrystone,Linpack)很小且易于优化,限制了它们的实用性。
总结
- 性能度量(算术平均数,几何平均数,调和平均数)有特定的用途和限制。
- 基准测试提供了一种客观评估系统性能的方法,但必须谨慎使用以避免误导结果。
实用提示
- 使用适合被评估工作负载和系统的性能度量。
- 考虑平均和最坏情况下的性能,以获得完整的画面。