什么计组学到最后变成计网了!??

  1. 计组相关笔记①
  2. 计组相关笔记②
  3. 计组相关笔记③
  4. 计组相关笔记④

计算机与网络组织

互联网

互联网的定义

互联网是连接了数百万台计算设备的网络,这些设备包括:

  • 主机:运行网络应用程序的终端系统
  • 通信链路:光纤、铜线、无线电、卫星,其传输速率(比特/秒)定义了带宽
  • 分组交换机:转发数据包(数据块),例如路由器和交换机

互联网的组成

互联网可以被视为“网络的网络”,由互连的 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: )。如果缓存副本是最新的,服务器在响应中不包含对象(HTTP/1.0 304 Not Modified)。


计算机性能测量

目标

  • 了解计算机性能的各种测量。
  • 使用这些思想来构建或改进系统性能。
  • 讨论影响系统性能的因素和改进程序性能的技巧。

性能测量的数学基础

  • 通过测量完成相同工作量的时间来比较性能。
  • 如果系统 A 比系统 B 快 n 倍,如果系统 A 比系统 B 快 x%。
  • 示例:两辆赛车,A 车在 2 分钟内完成比赛,B 车在 3 分钟内完成比赛。A 车比 B 车快 1.5 倍,比 B 车快 50%。
  • 在评估系统性能时,我们关注给定工作负载下的预期性能。
  • 使用衡量集中趋势的统计工具。
  • 算术平均数(平均值)是最熟悉的度量。
  • 如果数据偏斜或分散,算术平均数可能会产生误导。
  • 如果已知执行频率(预期工作负载),加权平均数可以揭示性能。
  • 但是,工作负载可能会随时间变化。
  • 针对一种工作负载优化的系统在工作负载变化时可能表现不佳。
  • 如果我们的测量值表现出很大的变异性,我们不能使用算术平均数。
  • 几何平均数是比较系统相对性能的首选度量。
  • 几何平均数通常使用被测系统和参考机器之间的标准化比率。
  • 无论使用哪种系统作为参考,几何平均数的比率是一致的。
  • 几何平均数不提供系统性能的真实期望,只是一个比较工具。
  • 调和平均数提供了一种比较表示为速率的执行时间的方法。
  • 调和平均数使我们能够形成吞吐量的数学期望,并比较相对吞吐量。
  • 调和平均数适用于预测机器行为和改善最慢的性能。
  • 各性能度量适用时间的总结。

性能基准测试

  • 性能基准测试是对系统性能进行客观评估的科学。
  • 性价比可以从标准基准测试中得出。
  • CPU 速度通常与性能等同,但这只有在 ISA 相同的情况下才有效。
  • 不同的 ISA 可以在相同的墙钟时间内产生相同的结果。
  • 合成基准测试试图描述与时钟速度和 ISA 无关的性能。
  • 早期的合成基准测试(例如,Whetstone,Dhrystone,Linpack)很小且易于优化,限制了它们的实用性。

总结

  • 性能度量(算术平均数,几何平均数,调和平均数)有特定的用途和限制。
  • 基准测试提供了一种客观评估系统性能的方法,但必须谨慎使用以避免误导结果。

实用提示

  • 使用适合被评估工作负载和系统的性能度量。
  • 考虑平均和最坏情况下的性能,以获得完整的画面。