计算机网络概述

计算机网络:简称网络,由若干节点(node,计算机、集线器、交换机、路由器)和连接这些节点的链路(link)组成

互联网:网络间通过路由器连接起来,组成覆盖范围更大 的计算机网络,也称为“网络的网络 network of networks ”

因特网:特指当前全球最大的、开放的、由众多网络相互 连接而成的互联网,采用TCP/IP协议族作为通信规则,前身是美国的APARNET

两种描述“因特网”的方式

  1. 描述构成因特网的具体构成,基本硬件和软件组件;
  2. 描述为基础设施向分布式应用程序提供的服务

具体构成

计算设备统称为 主机(端系统) 如:传统的桌面PC、 工作站、 服务器 • 非传统的因特网设备如便携机、智 能手机、平板电脑、电视、游戏机、 温度调节装置、家用电器、手表、眼 镜、汽车、运输控制系统.

通信链路

有多种不同类型的物理媒体: Fiber光纤, copper同轴电缆, radio 无线电频谱, satellite卫星

衡量链路性能的指标:

  • 传输速率 transmission rate: 比特/秒、bit/s、bps
  • 带宽 bandwidth

分组交换机

分组 packet: 当一台端系统向另 一台端系统发送数据时,发送端系统将数据分段,每段加上首部 字节。

路径 path 或 route:一个分组所经历的一系列通信链路分组交换机

两种最主要类型的分组交换机

  • 路由器 routers,用于核心网;
  • 链路层交换机 switches,用于 接入网

因特网服务提供商 ISP

  • 住宅区ISP、公司ISP、大学ISP、 WiFi ISP、蜂窝数据ISP
  • 提供不同种类的网络接入,住宅宽带接入DSL、高速局域网接入、 移动无线接入
  1. 较高层ISP通过高速光纤链路和高速路由器组成;
  2. 较低层ISP通过国家的、国际的较 高层ISP互联到因特网
  3. 无论高层还是低层ISP都独立管理

协议protocols

在网络上控制信息的发送 接收

e.g. TCP, IP, HTTP, Skype, 802.1

服务描述

从为应用程序提供服务的基础设施的角度描述因特网。

套接字接口 socket interface

一 套发送程序必须遵循的规则集合, 规定了运行在一个端系统上的应用程序请求因特网基础设施向 行在另一个端系统上的特定目的程序交付数据的方式

网络协议 network protocols

协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及报文发送和/或 接收及其他事件所采取的动作

  • 通信双方交换报文,而不是语句
  • 通信实体是设备

网络结构

网络结构可以分为:

  • 网络边缘:主机/端系统,应用程序
  • 接入网络:有线或者无线通信链路
  • 网络核心:互连着的路由器 , 网络的网络

接入网络

接入网 Access networks:将端系统物理连接到其边缘路由器的网络。

边缘路由器:是端系统到任何远程端系统的路径上的第一台路由器

怎样将端系统和边缘路由器连接?

  • 住宅接入网络
  • 单位接入网络 (学校、公 司)
  • 无线接入网络

家庭接入网

宽带住宅接入有两种流行方式:数字用户线 DSL和电缆。

数字用户线 DSL:双绞线

电缆:

  • 由于外层屏蔽层 的作用,具有很 好的抗干扰性, 适于高速率传输
  • 利用现有的有线电视基础设施

光纤入户:

其他方式:

  • 卫星接入光纤到户:超过1Mbps的速率接入。
  • 传统电话线的拨号接入: 与DSL类似,56Kbps的速率

企业接入网

使用局域网LAN将多个端接系统连接到边缘路由器,用户设备 位于几十米范围内

多使用基于IEEE802.11技术的无线LAN接入,也称Wifi

企业网接入方式广泛应用于家庭,设备价格低廉

广域无线接入网

Iphone、安卓等智能手机使用蜂窝网络的无线基础设施(基 站)来接入因特网,发送和接收分组。

物理媒介

physical medium 物理媒体:通过传播电信号或光脉冲来发送bit

guided media 引导型媒体: signals propagate in solid media: copper, fiber, coax

unguided media 非引导型媒体: signals propagate freely, e.g. radio

物理链路的实际成本与组网的其它成本相比是比较小的,特别是安装物理链路的劳动力成本

双绞线:

  • 两根绝缘的铜线以规则的螺旋状绞合起来,为减少临近类似 的双绞线的电气干扰
  • 大多数情况下,使用无屏蔽双绞线 UTP,广泛用于计算机网 络局域网组网中,灵活易布线,性价比高

同轴电缆

  • 由于外层屏蔽层的作用,具有很好的抗干扰性,适于高速 率传输

光纤

光脉冲

  • 高传输速率
  • 长距离传输,100km,光缆信号衰减极低,很难窃听
  • 低误码率,不受电磁干扰
  • 这些特性使其适用于长途引导型媒体,特别是跨海链路。

无线电信道

优点:穿墙、长距离、移动 连接 缺点:性能依赖于传播环境 和传播距离

网络核心

因特网核心是由分组交换机和链路构成的网状网络。

端系统彼此间想要交换的是报 文(message),包含控制信息和 数据,但其长度往往超出因特 网转发的长度限制。

数据怎样通过网络进行传输?

  • 电路交换:为每个呼叫预留一条 专有电路:如电话网
  • 分组交换:将要传送的数据分成一个个单位(分组)
    • 将分组从一个路由器传到相邻路由器(hop),一段段最终从源端传到目标端
    • 每段:采用链路的最大传输能力( 带宽 )

分组交换

  • 以分组为单位存储-转发方式
  • 存储转发传输(store-and-forward transmission): 是指在分组交换机能够开始向输出链路传输该分组的第一个比特之前,必须 接收到整个分组
  • $\text {packet transmission delay} =\frac{L}{R} $,L是分组长度,R是传输速率
  1. 通过由N条速率均为R的链路组成的路径(源和目的端之间有N-1台路由器),从源到目的地发送一个分组, 端到端的时延是$N \cdot \frac{L}{R} $
  2. P个分组经过N条链路序列的端到端时延: (N+P1)LR(N+P-1) \cdot \frac{L}{R}

排队时延

每台分组交换机有多条链路与之相连,对于每条链路分组交 换机设置一个输出缓存output buffer,也称为输出队列

排队时延取决于队列长度,即网络的拥塞程度.

缓存空间大小有限,当分组到达时缓存已满,将出现分组丢 失(即丢包)packet loss的现象:或丢弃新到达的分组, 或丢弃队列中已排队的分组(通常是优先级低)

电路交换

在端系统间通信过程中,创 建电路时就预留了端系统间沿路径通信所需要的全部资 源(缓存、链路传输速率),并会话期间独占这些资源

分组交换网中资源不是预留的,会话期间需要的资源可 能需要等待

电路交换分配专用链路的两种方式: 频分复用时分复用

频分复用(FDM):链路的频谱由跨该链路的所有连接共享,为每条经过的电路分配一个划分的子频段

​ 频段的宽度称为带宽 bandwidth

image-20241210213849851

时分复用(TDM): 通信时间被划分为固定期间的帧,每个帧又被划分为固定数量的时隙,网络中 建立电路时在各段链路上的每个通信周期(时域)指定一个专用时隙,该时隙用于传输该电路连接的数据。

image-20241210213941677

TDM中电路的传输速率等于帧速率乘以一个时隙的比特数.

  • 例如,链路每秒传8000帧,每个时隙有8比特,则每条电路的传输速率为64Kbps

电路交换缺点:

  • 电路交换因为在静默期(slient period)专用电路空闲导致浪费。
  • 创建端到端的电路和预留资源是复杂的,需要复杂的信令和协 调沿路径的交换机操作。 (RSVP资源预留协议

image-20241210214210049

分组交换 vs. 电路交

  • 分组交换网不适合实时服务(如电话和视频会议),因为排队时 延导致端到端时延可变、不可预测。

  • 分组交换网提供了比电路交换好的带宽共享,比电路交换更简单、 更有效、实现成本低

  • 分组交换网适合于对突发式数据传输 :资源共享 , 简单,不必建立呼叫 但是过度使用会造成网络拥塞:分组延时和丢失,对可靠地数据传输需要协议来约束:拥塞控制

互联网络结构

松散的层次模型

中心:第一层ISP,国家/国际覆盖,速率极高 直接与其他第一层ISP相连 与大量的第二层ISP和其他客户网络相连

第二层ISP: 更小些的 (通常是区域性的) ISP 与一个或多个第一层ISPs,也可能与其他第二层ISP

第三层ISP与其他本地ISP 接入网 (与端系统最近)

ISP之间的连接

  • 存在点PoP(Point of Presence):存在于除底层(接入ISP)外的所有层次,是提供商网络中的一个或若干个路由器群组,客户网络通过提供商的租用高速链路将它的路由器之一连接到PoP的路由器之一。
  • 多宿(multi-home):除第一层ISP外,任何ISP可以与两个或多 个提供商ISP连接。 当一个ISP多宿时,若提供商ISP之一故障时,仍能传输分组。
  • 客户ISP根据与提供商ISP交换的通信流量来付费。
  • 对等:位于相同等级结构层次的临近一对ISP可以直接连接在 一起,它们之间的所有直接相互流量,不通过上游ISP转输, 彼此间互不付费。
  • 因特网交换点(Internet Exchange Point,IXP):是一个汇合点, 多个ISP能够在这里一起对等,通常位于独立建筑物内。

image-20241214214154806

分组延时、丢失和吞吐量

产生时延和分组丢失的原因:

  • 分组到达链路的速率超过了链路输出的能力
  • 分组等待排到队头被传输

最大吞吐量:一台路由器能够转发分组的最大速率。

时延构成

时延类型

时延类型

  • 节点处理时延:
    • 检查 bit级差错
    • 检查分组首部和决定将分组导向何处
  • 传输时延 :将分组所有比特发射到链路上所需的时间
    • RR是链路带宽(bps) LL是分组长度(bits) ,将分组发送到链路上的时间为 L/RL/R
    • 存储转发延时
  • 传播时延: 每个比特从链路起点到下一 路由器传播所需要的时间
    • dd = 物理链路的长度, $ s$ = 在媒体上的传播速度 ( 2108m/sec~2 \cdot 10^8 m/sec) 传播延时 = d/sd/s
    • 链路的传播速率取决于链路的物理媒体 ( 光纤、双绞线) ,略小于光速。
  • 排队时延:在输出链路上等待传输的时间
    • 依赖于路由器的拥塞程度

节点时延

dnodal=dproc+dqueue+dtrans+dpropd_{nodal}=d_{proc}+d_{queue}+d_{trans}+d_{prop}

  • dprocd_{proc} = 处理延时
    • 通常是微秒数量级或更少
  • dqueued_{queue} = 排队延时
    • 取决于拥塞程度
  • $ d_{trans}$ = 传输延时
    • = L/RL/R, 对低速率的链路而言很大(如拨号),通常为微秒级 到毫秒级
  • $ d_{prop} $= 传播延时
    • 几微秒到几百毫秒

排队时延和丢包

  • 节点时延的构成成分中,最复杂的是排队时延
  • 与其它3种时延不同的是,排队时延对每个分组可能是不 同的,即每个分组需要的排队时间不同
  • 表征排队时延时,通常使用统计量,如:
    • 平均排队时延、排队时延的方差、排队时延超过某特定值的概率
  • 排队时延的大小取决于:
  • 流量到达队列的速度、链路的传输速率、到达流量的性质(周期性的、突发的)

流量强度

丢包

  • 通常路由器内的队列容量是有限的,不能容纳所有到达的分组排队。
  • 队列容量取决于路由器的设计和成本。
  • 因此:
  • 随着流量强度接近于1,排队时延并不是真的趋于无穷大,只是量级发生了变化;
  • 队列满了的时候,路由器将丢弃(drop)到达的分组或优先级低的分组,此时将产生丢包(lost)。
  • 分组的丢失比例随着流量强度增加而增加。
  • 丢失的分组可能由前一个节点重传,或基于端到端的重传 原则重传

端到端时延

image-20241214220359892

吞吐量

端到端单位时间内传输的数据量

吞吐量是衡量计算机网络性能的另一个重要指标。

瓶颈链路:端到端路径上,限制端到端吞吐的链路

image-20241214220531031

image-20241214220617499

协议层次

  • 服务( Service):低层实体向上层实体提供它们之间的通信的能力
    • 服务用户(service user)
    • 服务提供者(service provider )
  • 原语(primitive):上层使用下层服务的形式,高层使用低层提供的服务,以及低层向高层提供服务都是通过服务访问原语来进行交互的—形式
  • 服务访问点 SAP (Services Access Point) :上层使用下层提供的服务通过层间的接口—地点
    • 例子:邮箱
    • 地址(address):下层的一个实体支撑着上层的多个实体, SAP有标志不同上层实体的作用
    • 可以有不同的实现,队列
    • 例子:传输层的SAP: 端口(port)

服务与协议的区别 :

  • 服务(Service):低层实体向上层实体提供它们之间的通信的能力,是通过原语(primitive)来操作的,垂直
  • 协议(protocol) :对等层实体(peer entity)之间在相互通信的过程中,需要遵循的规则的集合,水平

服务与协议的联系 :

  • 本层协议的实现要靠下层提供的服务来实现
  • 本层实体通过协议为上层提供更高级的服务

分层的体系结构

  • 网络设计者以分层的方式组织协议,以及实现协议的网络硬件和软件:
  • 每一层向它的上一层提供服务(service)。
  • 每层通过执行该层的某些动作或直接使用下层服务来提供服务。
  • 一个协议层能够使用软件、硬件或两者的结合来实现。
    • 应用层协议几乎用软件实现;
    • 物理层、数据链路层协议通常在网络接口卡(硬件)实现;
    • 网络层协议通常由软、硬件混合实现.
  • 第n层协议分布在网络的端系统、分组交换机和其它组件

分层的原因:

  • 结构化分层易于定义和实现
  • 模块化,易于维护和升级

分层的潜在缺点

  • 功能可能在多层冗余,如差错检验;
  • 某层功能可能调用其它层提供的信息,分层不彻底.

Internet 协议栈

协议栈:各层所有协议的集合

image-20241214221427100

image-20241214221445098

协议 任务 信息单位
应用层 HTTP SMTP FTP DNS 端系统之间 报文
传输层 TCP UDP 应用程序端点之间传送应用层报文 报文段
网络层 IP 路由选择协议 主机之间 数据报
链路层 链路层协议 DOCSIS PPP 整个从一个节点到下一个节点
物理层 与实际传输媒体相关 一个个比特从一个节点到下一个节点 比特

ISO/OSI

image-20241214221526455

TCP/IP协议栈中,将表示层放入了应用层,session放进了传输层

应用层

网络核心中没有应用层软件,网络核心没有应用层功能,网络应用只在端系统上存在

应用层协议原理

网络应用体系结构

  1. 从应用程序开发者的角度看,网络体系结构是固定的 ,并为应用程序提供了特定的服务集合。
  2. 应用程序体系结构由应用程序研发者设计,规定了如何在端系统上组织该应用程序

当前主流的两种:

  • 客户-服务器体系结构
  • **对等(P2P)**体系结构

客户-服务器体系结构

服务器: 服务于来自许多其他称为客户的主机的请求。

  • 一直运行
  • 固定的IP地址和周知的端口号(约定)
  • 扩展性:服务器场
    • 数据中心进行扩展
    • 扩展性差

客户端:

  • 主动与服务器通信
  • 与互联网有间歇性的连接
  • 可能是动态IP 地址
  • 不直接与其它客户端通信

例如:Web FTP 电子邮件

P2P结构

  • (几乎)没有一直运行的服务 器
  • 任意端系统之间可以进行通信
  • 每一个节点既是客户端又是服 务器
  • 自扩展性-新peer节点带来新的服务能力,当然也带来新的服务请求
  • 参与的主机间歇性连接且可以改变IP地址
  • 难以管理
  • 面临安全性、性能、可靠性挑 战

例子: Gnutella,迅雷

适用于流量密集型应用,如文件共享,下载,视频会议

进程通信

在构建网络应用程序前,还需要对运行在多个端系统上的程序是如何互相通信的情况有一个基本了解。

进行通信的实际上是**进程(process)**而不是程序。

  • 在同一个主机内,使用 进程间通信机制 通信( 操作系统定义)
  • 在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。

[客户和服务器进程]

对每对通信进程, 我们通常将这两个进程之一标识为客户(client),而另一个进程标识为服务器(serve)。

在一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。

对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程。对于P2P文件 共享,下载文件的对等方标识为客户,上载文件的对等方标识为服务器。

一个进程可能既是客户又是服务器

image-20241215195325691

[套接字]

进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络接收报文。

image-20241215195117150

套接字,是同一台主机内应用层与传输层之间的接口 ,也称为应用程序和网络之间的应用程序编程接口API。

应用程序开发者可以控制套接字在应用层端的一切, 对于套接字在传输层端的控制仅限于

  1. 选择传输层协议;
  2. 设定几个传输层参数,如最大缓存和最大报文⻓度等

进程寻址

在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。为了标识该接收进程,需要定义两种信息:

  • 主机的地址,主机由其**IP地址(IP address)**标识
  • 在目的主机中指定接收进程的标识符:端口号

一个进程:用IP+port标示

本质上,一对主机进程之间的通信由2个端节点构成

可供应用程序使用的运输服务

当开发一个应用时,必须选择一种可用的运输层协议

通过研究这些可用的 运输层协议所提供的服务,选择一个最能为你的应用需求提供恰当服务的协议。

大体能够从四个方面对应用程序服务要求进行分类:可靠数据传输(正确,不丢失)、吞吐量、定时和安全性

image-20241215195908318

因特网提供的运输服务

因特网为应用程序提供 两个运输层协议,即UDP和TCP。当你(作为一个软件开发者)为因特网创建一个新的应用时,首先要做出的决定是,选择UDP还是选择TCP

TCP服务:

  • 面向连接服务
  • 可靠数据传输服务:无差错 按序 无丢失 无冗余
  • 拥塞控制机制
  • 流量控制
  • 但是不提供加密

UDP服务:UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务

  • 不可靠数据传输
  • 无连接服务
  • 不提供可靠性 流量控制拥塞控制 定时 吞吐量保证 安全性

image-20241215201516696

image-20241215201544812

image-20241215201342712

  • 因特网能够为时延敏感的应用提供满意的服务,但是并不提供任何定时或带宽的保证
  • 因特网电话等容丢失应用喜欢UDP,但是防火墙经常配置成阻挡UDP流量,所以用TCP做备份

应用层协议

应用层协议(application-layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。特别是应用层协议定义了 :

  • 交换的报文类型,例如请求报文和响应报文。
  • 各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
  • 字段的语义,即这些字段中的信息的含义。
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则

可以分为:

  • 公域协议
  • 专用协议

Web和HTTP

Web的基本介绍

Web使用了客户 -服务器应用程序体系结构

image-20241215204314556

HTTP

Web的应用层协议是超文本传输协议(HyperText Transfer Protocol, HTTP),它是Web 的核心

HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换 HTTP报文进行会话。

Web 浏览器(Web browser)实现 了 HTTP 的客 户端,Web服 务器(Web server)实现了 HTTP的服务器端,它用于存储Web对象,每个对象由URL寻 址。

  • HTTP使用TCP:
    • 客户发起一个与服务器的 TCP连接 (建立套接字) , 端口号为 80
    • 服务器接受客户的TCP连接
    • 在浏览器(HTTP客户端) 与 Web服务器(HTTP服 务器 server)交换HTTP报文 (应用层协议报文)
    • TCP连接关闭
  • HTTP是无状态的,服务器并不维护关于客户的任何信息

HTTP连接类型

[往返时间]

该时间是指一个短分组从客户到服务器然后再返回客户所花费的时间。RTT包括分组传播时延、分组在中间路由器和交换机上的排队时延以及分组处理时延

  • 非持续连接

    • 最多只有一个对象在 TCP连接上发送
    • 下载多个对象需要多个TCP连接
    • HTTP/1.0使用非持 久连接

    image-20241215205827065

    image-20241215205845301

    image-20241215205948191

  • 持续连接

    • 多个对象可以在一个 (在客户端和服务器之间的)TCP连接上传输
    • HTTP/1.1 默认使用 持续连接

HTTP在默认方式下使用持续连接,如果需要也可以配置为非持续连接。

image-20241215210141066

HTTP报文格式

  • 请求报文
  • 响应报文

[HTTP请求报文]

ASCII文本书写 人类可读的格式

HTTP请求报文格式

例如:

1
2
3
4
5
6
7
8
9
10
GET /index.html HTTP/1.1\r\n 
Host: www-net.cs.umass.edu\r\n
User-Agent: Firefox/3.6.10\r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
Keep-Alive: 115\r\n
Connection: keep-alive\r\n
\r\n

提交表单输入的方式:

POST:包含在实体主体 (entity body )中的 输入被提交到服务器

URL:使用GET方法,输入通过请求行的 URL字段上载

Method 类型:

HTTP/1.0:

  • GET:表单数据添加在URL末尾
  • POST:表单数据放在实体字段中
  • HEAD:只发送响应报文,而不返回请求对象,用 于应用程序的调试追踪。

HTTP/1.1:

  • GET
  • POST
  • HEAD
  • PUT:将实体主体中的文件上载到URL字段规定的路径
  • DELETE:删除URL字段规定的文件

[HTTP响应报文]

HTTP响应报文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HTTP/1.1 200 OK\r\n 
Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n
Server: Apache/2.0.52 (CentOS)\r\n
Last-Modified: Tue, 30 Oct 2007 17:00:02
GMT\r\n
ETag: "17dc6-a5c-bf716880"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 2652\r\n
Keep-Alive: timeout=10, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html;
charset=ISO-8859-1\r\n
\r\n
data data data data data ...

响应状态码

用户-服务器状态:cookies

HTTP是无状态的,但是很多应用中服务器希望识别用户身份进一步提供服务。

[组成]

  • 在HTTP响应报文中有 一个cookie的首部行
  • 在HTTP请求报文含有 一个cookie的首部行
  • 用户端系统中保留有 一个cookie文件,由用户的浏览器管理
  • Web站点有一个后端数据库

image-20241215211755501

image-20241215211836861

Web缓存(代理服务器)

Web缓存的存储空间中保存最近请求过的对象的副本,不访问原始服务器,就满足客户的请求

image-20241215212031137

为什么要使用Web缓存 ?

  • 降低客户端的请求响应时间
  • 可以大大减少一个机构内部网络与Internent接入链路上的流量
  • 互联网大量采用了缓存: 可以使较弱的ICP也能够 有效提供内容

条件GET方法

如果缓存器中的对象拷贝是最新的,就不要发送对象(由缓存器通过发送一个条件GET执行最新检查)

image-20241215212543651

电子邮件

主要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)

image-20241215214930367

邮件服务器:邮件服务器形成了电子邮件体系结构的核心

  • 邮箱中管理和维护发送给用户的邮件
  • 输出报文队列保持待发送邮件报文

邮件服务器之间的SMTP协议 :发送email报文

  • 客户:发送方邮件服务器
  • 服务器:接收端邮件服务器

SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务

SMTP简单邮件传输协议

  • 使用TCP在客户端和服务器之间传送报文,端口号为25
  • 直接传输:从发送方服务器到接收方服务器(无论多远都是直接传输,SMTP 一般不使用中间邮件服务器发送邮件,即使这两个 邮件服务器位于地球的两端也是这样。邮件并不在中间的某个邮件服务器存留。)
  • 传输的3个阶段
    • 握手
    • 传输报文
    • 关闭
  • 命令/响应交互
    • 命令:ASCII文本
    • 响应:状态码和状态信息
  • 报文必须为7位ASCII码
  • SMTP使用持久连接

image-20241215215436959

vs. HTTP

  • HTTP:拉(pull)
  • SMTP:推(push)
  • 二者都是ASCII形式的命令/ 响应交互、状态码
  • HTTP:每个对象封装在各自的响应报文中
  • SMTP:多个对象包含在一个报文中

邮件报文格式

image-20241215215624390

邮件访问协议

从服务器访问邮件

典型的用户通常在本地PC上运行一个用户代理程序,而它访问存储在总是保持开机的共享邮件服务器上的邮箱。该邮件服务器与其他用户共享,并且通常由用户的ISP进行维护 (如大学或公司)。

image-20241215215917387

  • POP:邮局访问协议
    • 用户身份确认 (代理<–>服务器) 并下载
  • IMAP :Internet邮件访问协议
    • 更多特性 (更复杂)
    • 在服务器上处理存储的报文
  • HTTP:
    • 方便

[POP协议]

POP3按照三个阶段进行工作:特许(authorization)、事务处理以及更新

image-20241215220250939

上述过程中的dele是标记删除,只有执行quit退出后才会真正删除

image-20241215220447769

DNS:域名系统

识别主机有两种方式,通过主机名或者IP地址,我们需要一种能进行主机名到IP地址转换的目录服务,即域名系统

DNS是:

  1. 一个由分层的DNS服务器(DNS server)实现的分布式数据库
  2. 一个使得主机能够查询分布式数据库的应用层协议

DNS协议运行在UDP之上,使用53号端口

DNS服务

  • 主机名到IP地址的转换
  • 主机别名(host aliasing):调用DNS获得alias names(更好记)对应的规范主机名或IP
  • 邮件服务器别名(mail server aliasing) :电子邮件应用程序调用DNS获得邮件服务器别名对应的规范主机名或IP地址
  • 负载均衡(load distribution):当用户发出对某繁忙站点域名的DNS请求时,DNS服务器用整个IP集合响应并每次都循环这个集合,用户向集合里IP地址排在前面的服务器发送请求。

DNS工作机理

转换过程:

  1. 用户主机上的应用程序需要将一个主机名转换为IP地址;
  2. 用户主机调用DNS客户端,并指明需要转换的主机名;
  3. 用户主机DNS客户端向网络发送一个DNS查询报文;
  4. 经过若干秒到若干毫秒的时延,用户主机DNS客户端收到一 个回答报文,回答报文中保护映射结果;
  5. DNS客户端将映射结果传递到调用DNS的应用程序。

为什么DNS不设计为一个服务器这样的集中式设计,而采用分布式的设计?

  • 单点故障,集中服务器坏因特网瘫痪
  • 通信容量,单个DNS服务器不能处理所有DNS查询
  • 远距离通信,存在严重的时延,拥塞、 低速
  • 维护,中央数据库将过于庞大,而且它还不得不为解决每个新添加的主机而频繁更新

因此,DNS设计为分布式的层次数据库

image-20241216202121549

  • 根服务器:根名字服务器提供TLD服务器的IP地址
  • 顶级域(TLD)DNS服务器: TLD服务器提供了权威DNS服务器的IP地址
  • 权威DNS服务器:因特网上具有公共可访问主机的组织机构必须提供公共可访问的DNS记录,将公共可访问主机名映射为IP

[本地DNS服务器]

严格说来,一个 本地DNS服务器并不属于该服务器的层次结构

每个ISP都有一台本地DNS服务器(也叫默认名字服务器),主机的本地DNS服务器通常“邻近”本主机。

当主机发岀 DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中

[名字解析过程]

  • 迭代查询
  • 递归查询

迭代查询:

image-20241216204655119

递归查询:
image-20241216204719639

DNS缓存

在一个请求链中,当某DNS 服务器接收一个DNS回答(例如,包含某主机名到IP地址的映射)时,它能将映射缓存在本地存储器中

由于主机和主机名与IP地址间的映射并不是永久的,DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

TLD servers IP address typically cached in local name servers thus root name servers not often visited

DNS记录

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record, RR), RR提供了主机名到IP地址的映射。每个DNS回答报文包含了一条或多条资源记 录。

RR是四元组:

1
RR format: (name, value, type, ttl)
  1. TTL:该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。
  2. Name和Value的值取决于Type:
Type取值 Name取值 Value取值 例子
A 主机 IP地址 (Tayl. bar. foo. com, 145. 37.93. 126, A)
CNAME 规范名字的别名 规范名字 (foo.com, relay1. bar. foo. com, CNAME)
NS 域名 该域名的权威服务器的域名 (foo.com, dns.foo.com, NS)
MX name对应的邮件服务器的名字 (foo.com, mail. bar. foo. com, MX)

值得注意的是,通过使用MX记录,一个公司的邮件服务器和其他服务器(如它的Web服务器)可以使用相同的别名。为了获得邮件服务器的规范主机名,DNS客户应当请求一条MX记录;而为了获得其他服务器的规范主机名,DNS客户应当请求CNAME记录。

  • 如果当前DNS是收到的请求中所请求主机名的权威DNS服务器,或者缓存中有所请求主机名的A记录,则返回一条A记录;
  • 如果当前DNS服务器不是所请求主机名的权威DNS服务器, 则返回一条NS记录提供所请求主机的域及其权威DNS服务器主机名,同时再返回一条A记录包含该权威DNS服务器的IP地址

DNS报文

只有查询和回答报文,并且格式相同

image-20241216210203915

标识符:16位数,用于标识该查询。

flag标志:查询/应答 希望递归 递归可用 应答为权威

在DNS数据库中插入记录

image-20241216210652604

image-20241216210811952

传输层

  • 传输层为运行在不同主机上的应用进程提供直接的通信服务。
  • 将网络层在两个端系统之间的交付服务扩展到运行在 两个不同端系统上的应用层进程之间的交付服务。
  • 并解决两个对等通信实体如何在尽力而为(会丢失或 损坏数据)的因特网上进行可靠的通信
  • 控制运输层实体的传输速率以避免网络中的拥塞,或从拥塞中恢复过来

概述和传输层服务

传输层为运行在不同主机上的应用进程提供逻辑通信

逻辑通信:应用进程使用传输层提供的逻辑通信功能发送报文,无需考虑承载这些报文的物理基础设施

传输协议运行在端系统:

  • 发送方:将应用层的报文分成报文段,然后传递给网络层
  • 接收方:将报文段重组成报文,然后传递给应用层

有多个传输层协议可供应用选择 如Internet: TCP和UDP

image-20241218092357878

传输层 vs. 网络层

  • 网络层服务:主机之间的逻辑通信
  • 传输层服务:进程间的逻辑通信
    • 依赖于网络层的服务(延时、带宽)
    • 并对网络层的服务进行增强 (数据丢失、顺序混乱、 加密)

有些服务是可以加强的:不可靠 -> 可靠,安全 . 但有些服务是不可以被加强的:带宽,延迟

多路分解与多路复用

多路分解与多路复用 : 将由网络层提供的主机到主机的交付服务延伸到运行在主机上的应用程序,提供进程到进程的交付服务

  • 通过套接字实现,一个进程有一个或多个套接字,相当于从网络向进程传递数据或者从进程向网络传递数据的门户

  • 每个传输层报文段中都包含套接字的标识符字段(端口号),在发送端填入源和目的端口号,在接收端提取

    • 发送方主机多路复用:从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装 (该头部信息用于以后的解复用)

    • 接收方主机多路解复用:根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)

多路复用工作原理

  • 主机收到IP数据报
    • 每个数据报有源IP地址目标IP地址
    • 每个数据报承载一个传输层报文段
    • 每个报文段有一个源端口号目标端口号 (特定应用有著名的端口号)
  • 主机联合使用IP地址和端口号将报 文段发送给合适的套接字

image-20241218094342788

端口号

16位二进制数,范围:0~65535

  • 0~1023是众所周知端口号;
  • 1024~5000是临时端口号,分给客户端;
  • 大于5000的服务器端留用,支持并发。

如何标识一对网络通信进程

五元组来标识因特网上彼此通信的一对网络通信进程

1
<TCP or UDP,源端口号,源IP地址,目的端口号,目的IP地址>
  1. TCP还是UDP?在开发网络应用程序时就已由程序人员确定
  2. 客户端发起通信时,要创建套接字,并指明创建TCP套接字还是UDP套接字,并请求分配源端口号
  3. 套接字在形成报文段时,要封装源端口号目的端口号,然后调用TCP或UDP服务,完成传输层功能,并将报文段传给网络层。
  4. 报文段到达网络层后,添加源IP地址目的IP地址等字段,形成分组

无连接(UDP)的多路复用

接收端UDP套接字用二元组标识 (目标IP地址、目标端口号)

主机收到UDP报文段: 检查报文段的目标端口号 , 用该端口号将报文段定位给套接字

如果两个不同源IP地址/源端口号的数据报,但是有相同的目标IP地址和端口号,则被定位到相同的套接字

image-20241218100059270

面向连接(TCP)的多路复用

  • 接收端TCP套接字:四元组本地标识: 源IP地址 源端口号 目的IP地址 目的端口号 , 接收主机用这四个值来将数据报定位到合适的套接字
  • 服务器能够在一个TCP 端口上同时支持多个 TCP套接字: 每个套接字由其四元组标识(有不同的源IP和源 PORT)

Web服务器对每个连接客户端有不同的套接字, 非持久连接对每个请求有不同的套接字

image-20241218100046626

无连接传输:UDP

UDP只提供了复用/分解少量差错检验功能。(除了复用/分解功能及少量的差错检测外,它几乎没有对IP增加别的东西。)

UDP是尽力而为的服务,报文段可能会丢失 、乱序

无连接:

  • UDP发送端和接收端之间没有握手
  • 每个UDP报文段都被独立地处理(每个UDP报文段都独立存在,发送方不会等待接收方的确认,也不跟踪连接状态。接收方接收到数据后,不会知道这些数据是由同一源发送的、也不会了解这些数据是属于同一应用会话的。)

TCP服务由于拥塞控制限速、建立连接的时延开销、维护连接状态需要缓存参数等资源、首部开销大等原因并不适合所有应用。

UDP被用于: 流媒体(丢失不敏感, 速率敏感、应用可控制 、传输速率), DNS , SNMP

UDP报文

image-20241218102933247

为什么要有UDP?

  • 不建立连接 (会增加延时 )
  • 简单:在发送端和接收端没有连接状态
  • 报文段的头部很小(开销小)
  • 无拥塞控制和流量控制: UDP可以尽可能快的发送报文段
  • 应用->传输的速率= 主机->网络的速率

UDP校验和

检测在被传输报文段中的差错 (如比特反转)

发送方:

  • 将报文段的内容视为16 比特的整数
  • 校验和:报文段的加法和取反 (1的补运算)
  • 发送方将校验和放在 UDP的校验和字段

接收方:

  • 计算接收到的报文段的校验和
  • 检查计算出的校验和与校验和字段的内容是否相等:
    • 不相等––检测到差错
    • 相等––没有检测到差错 ,但也许还是有差错 • 残存错误

image-20241218103324060

为什么UDP提供了差错检验,而有些链路层协议也提供了差错检验功能?

  • 不能确保源端和目的端之间所有的链路都提供差错检验。
  • 不能确保报文段在某个路由器内存中存储时不出错。
  • UDP提供差错检验,但对差错没有恢复功能。

可靠数据传输(rdt)原理

Rdt1.0:在可靠信道上的可靠数据传输

前提:

下层的信道是完全可靠的:

  • 没有比特出错
  • 没有分组丢失

image-20241218104519486

image-20241218104946106

Rdt2.0:具有比特差错的信道

下层信道可能会出错:将分组中的比特翻转 : 用校验和来检测比特差错

会出现比特差错, 但报文段不丢失、不乱序

怎样从差错中恢复:

  • 确认(ACK):接收方显式地告诉发送方分组已被正确接收
  • 否定确认( NAK): 接收方显式地告诉发送方分组发生了差错
    • 发送方收到NAK后,发送方重传分组

image-20241218105442915

rdt2.0称为停等协议:发送方发送一个分组, 然后等待接收方的应答

rdt2.0新机制:

  • 差错检测
  • 从接收方到发送方的控制信息(ACK,NAK)

image-20241218105657205

缺陷:

如果ACK/NAK出错,发送方却不知道发生了什么,发送方若重传会造成冗余,若什么都不做会造成死锁

应对重复的措施:---->rdt2.1

  • 发送方在每个分组中加 入序号
  • 如果ACK/NAK出错,发送方重传当前分组
  • 接收方丢弃(不发给上层)重复分组

Rdt2.1

在2.0的基础上给分组加入了序号

发送方:

  • 在分组中加入序列号
  • 两个序列号(0,1)就 足够了
  • 一次只发送一个未经确认的分组
  • 必须检测ACK/NAK是否出错(需要EDC : Error Detection Code错误检测码)
  • 状态数变成了两倍
  • 必须记住当前分组的序列号为0还是1

接收方:

  • 必须检测接收到的分组是否是重复
  • 状态会指示希望接收到的分组的序号为0还是1
  • 接收方并不知道发送方是否正确接受到ACK/NAK,不会继续设计确认的确认,不然就没完没了

image-20241218110037342

image-20241218110128306

image-20241218110144763

Rdt2.2:无NAK的协议

  • 功能同rdt2.1,但只使用ACK(ack 要编号)
  • 接收方对最后正确接收的分组发ACK,以替代NAK
    • 接收方必须显式地包含被正确接收分组的序号
  • 当收到重复的ACK(如:再次收到ack0)时,发送方与收到NAK采取相同的动作:重传当前分组
  • 为后面的一次发送多个数据单位做一个准备
    • 一次能够发送多个
    • 每一个的应答都有:ACK,NAK;麻烦
    • 使用对前一个数据单位的ACK,代替本数据单位的NAK
    • 确认信息减少一半,协议处理简单

image-20241218111223662

image-20241218111245711

image-20241218111313677

Rdt3.0:具有比特差错和分组丢失的信道

假设:

下层信道可能会丢失分组(数据 或ACK)

方法:

发送方等待ACK一段合理的时间,发送端超时重传:如果到时没有收到ACK->重传

需要一个倒计数定时器

方法存在的问题:

如果分组(或ACK )只是被延迟了, 重传将会导致数据重复,但利用序列号已经可以处理这 个问题 ,那么接收方必须指明被正确接收的序列号

image-20241218111710449

image-20241218111757806

  • 过早超时(延迟的ACK)也能够正常工作;但是效率较低,一半 的分组和确认是重复的;
  • 设置一个合理的超时时间也是比较重要的;

性能

image-20241218112151691

image-20241218112217273

image-20241218112327914

流水线可靠传输协议

流水线:允许发送方在未得到对方确认的情况下一次发送多个

  • 必须增加序号的范围:用多个bit表示分组的序号
  • 在发送方/接收方要有缓冲区
    • 发送方缓冲:未得到确认,可能需要重传;
    • 接收方缓存:
      • 上层用户取用数据的速率 ≠ 接收到的数据速率;
      • 接收到的数据可能乱序,排序交付(可靠)

通用的流水线协议,根据差错的恢复方式不同:

回退N步(GBN):全部重传 累计确认

选择重传(SR): 选择重传 单独确认

GBN:滑动窗口协议

发送缓冲区

  • 形式:内存中的一个区域,落入缓冲区的分组可以发送
  • 功能:用于存放已发送,但是没有得到确认的分组(滑动窗口)
  • 必要性:需要重发时可用

发送缓冲区的大小:一次最多可以发送多少个未经确认的分组

  • 停止等待协议=1
  • 流水线协议>1,合理的值,不能很大,链路利用率不能够超100%

发送缓冲区中的分组

  • 未发送的:落入发送缓冲区的分组,可以连续发送出去;
  • 已经发送出去的、等待对方确认的分组:发送缓冲区的分组只有得到确认才能删除

发送方:

image-20241218162004733

1
2
3
4
[0, base - 1 ]段内的序号对应于已经发送并被确认的分组。
[base, nextseqnum - 1 ]段内对应已经发送但未被确认的分组。
[nextseqnum, base +N- 1 ]段内的序号能用于那些要被立即发送的分组
大于或等于base + N的序号是不能使用的,直到当前流水线中未被确认的分组(特别是序号为base的分组)已得到确认为止
  • 序号:k-bit seq # in pkt header。 k比特长度二进制数。
  • 序号空间:可使用的序号范围,为[0,2k1][0, 2^k-1] 序号循环使用。
  • 基序号(base):最早已发送但未确认的数据片的序号。
  • 下一个待发送序号(nextseqnum):也称为最小未使用的序号。
  • 窗口“ window ” :发送缓冲区的一个范围,能被发送但还未确认的分组的许可序号范围。发送窗口的最大值<=发送缓冲区的值
  • 窗口长度N:窗口内序号的个数。 窗口尺寸:(1,2k1](1,2^k-1] ,k为序号的位数
  • GBN协议也被称为滑动窗口协议

image-20241218163501491

发送窗口的移动:

base移动向后移动:

  • 条件:收到老分组的确认
  • 移动的极限:不能够超过nextsqnum

接收窗口

  • 接收窗口用于控制哪些分组可以接收
  • 只有收到的分组序号落入接收窗口内才允许接收 ,若序号在接收窗口之外,则丢弃;
  • GBN协议的接收窗口尺寸Wr=1,则只能顺序接收

滑动

  • 只有接受窗口内要求的数据包到来才移动

发送确认

  • 接收窗口尺寸=1 ; 发送连续收到的最大的分组确认(累计确认) (GBN)
  • 接收窗口尺寸>1 ; 收到分组,发送那个分组的确认(非累计确认)(SR协议)

image-20241218164113789

优缺点

优点:

  • 接收方简单,不需要缓存任何失序的数据片,不需 要设置缓存。

缺点:

  • 发送方需要设置缓存已发送但未确认的数据片,并维护 窗口的上下边界和nextseqnum。
  • 由于失序而丢弃一个正确的数据片后,随后可能需要更 多的重传,包括之前删除的正确的失序数据片。
  • 当窗口长度和带宽时延积很大时,单个数据片的错误就 能引起GBN重传大量数据片!导致传输效率大大降低。

选择重传(SR)

发送窗口:

image-20241218165254370

发送窗口长度:范围在(1,2k1](1,2^{k-1}]

发送窗口的移动:

base移动向后移动:

  • 条件:收到老分组的确认
  • 移动的极限:不能够超过nextsqnum

image-20241218170430234

接受窗口:

image-20241218170321635

  • 接收窗口用于控制哪些分组可以接收
  • 只有收到的分组序号落入接收窗口内才允许接收 ,若序号在接收窗口之外,则丢弃;
  • SR的接受窗口尺寸>1可以乱序接受

接受窗口滑动

  • 低序号的分组到来,接收窗口移动
  • 只有接受窗口内要求的数据包到来才移动
  • 高序号分组乱序到,缓存但不交付(因为要实现rdt,不允许失序),不滑动

image-20241218170649125

接收方发送确认

  • 接收窗口尺寸>1 ; 收到分组,发送那个分组的确认(非累计确认)

image-20241218170851213

GBN vs. SR

GBN SR
发送窗口大小 $(1,2^k- 1] $ (1,2k1](1,2^{k-1}]
接收窗口大小 =1,接收方只能顺序接收
发送方:一旦一个分组没有发成功,
如:0,1,2,3,4 ; 假如1未成功,234都发送出去
了,要返回1再发送;GB1
>1,接收方可以乱序接收
发送方发送0,1,2,3,4,
一旦1未成功,2,3,4,已发送,
无需重 发,选择性发送1
确认 累计确认 选择确认
定时器 发送端拥有对最老的未确认分组的定时器
当定时器到时时,重 传所有未确认分组
发送方为每个未确认的分组保持一个定时器
当超时定时器到时,只是 重发到时的未确认分组

面向连接的传输:TCP

  • 点对点:一个发送方、一个接收方
  • 可靠的、按顺序的字节流,没有报文边界
  • 管道化(流水线),TCP拥塞控制和流量控制设置窗口大小
  • 有发送和接收缓存
  • 全双工数据
  • 面向连接
  • 有流量控制,发送方不会淹没接收
  • 逻辑连接,其共同状态仅保留在两个通信端系统的TCP程序中,TCP协议只在端系统中运行
  • 累计确认

TCP建立连接的过程称为三次握手

  1. 客户端首先发出一个建立TCP连接的特殊TCP报文段;
  2. 服务器用另一个特殊的TCP报文段来响应;
  3. 客户端再用第三个特殊TCP报文段作为对服务器响应报文的响应 ,同时可以承载有效载荷(即应用层数据)。

TCP传输数据的过程:
客户进程将要传输的数据流交给发送端套接字,然后数据流将开始由TCP控制,TCP将数据流引导到连接的发送缓存(三次握手时设置)里。 然后TCP将不时地从发送缓存里取出一块数据递交到网络层传输,每次从缓存取出放入报文段的数据量最大报文段长度MSS限制注意到MSS是 指在报文段里应用层数据的最大长度,而不是指包括首部的TCP报文段的最大长度。

MSS通常根据最初确定的由本地发送主机发送的最大链路层帧长度(即所谓的最大传输单元(MTU))来设置。设置该MSS要保证一个TCP 报文段(当封装在一个IP数据报中)加上TCP/IP首部长度(通常40字节)将适合单个链路层帧。以太网和PPP链路层协议都具有1500字节的MTU,因此MSS的典型值为1460 字节

TCP为每块客户数据配上一个TCP首部,从而形成多个TCP报文段(TCP segment)。 这些报文段被下传给网络层,网络层将其分别封装在网络层IP数据报中。然后这些IP数据报被发送到网络中。

TCP接受数据过程:

当TCP在另一端接收到一个报文段后,该报文段的数据就被放入该 TCP连接的接收缓存中,应用程序从此缓存中读取数据流。

报文段

image-20241218195546375

序号和确认号

TCP把数据看成一个无结构的、有序的字节流。序号是建立在传送的字节流之上,而不是建立在传送的报文段的序列之上。—个报文段的序号是该报文段首字节字节流编号

如:假设主机A上的一个进程想通过一条TCP连接向主机B上的一个进程发送一 个数据流。主机A中的TCP将隐式地对数据流中的每一个字节编号。假定数据流由一个 包含500 000字节的文件组成,其MSS为1000字节,数据流的首字节编号是0。该TCP将为该数据流构建500个报文段。给第一个报文段分配序号0,第二个报文 段分配序号1000,第三个报文段分配序号2000,以此类推。每一个序号被填入到相应TCP 报文段首部的序号字段中。

image-20241218195739741

TCP是全双工的, 因此主机A在向主机B发送数据的同时,也接收来自主机B的数据,从主机B到达的每个报文段中都有一个序号用于从B流向A的数据。主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号

假设主机A已收到了来自主机B的编号为0 ~535的所有字节,同时假设它打算发送一个报文段给主机B。主机A等待主机B的数据流中字节536及之后的所有 字节。所以主机A就会在它发往主机B的报文段的确认号字段中填上536。累计确认,

  • TCP采用累计确认的方式
  • TCP采取捎带应答:TCP对客户到服务器的数据的确认,被装载在一个服务器到客户的数据报文段中, 即使最后一个报文段里没有数据仍然有序号,报文格式需要
  • 接收方如何处理乱序的报文段:没有规定

TCP往返延时和超时

TCP采用超时/重传机制来处理报文段的丢失问题。

显然,超时间隔必须大于该连接的往返时间(RTT)否则会造成不 必要的重传,太长:对报文段丢失反应太慢,消极

估计往返时间RTT

在任意时刻,仅为一个已发送的但目前尚未被确认的报文段估计SampleRTT,从而产生一个接近每个RTT的新SampleRTT值。另外,TCP决不为已被重传的报文段计算SampleRTT;它仅为传输一次的报文段测量SampleRTT

为了估计一个典型的RTT,自然要采取某种对SampleRTT取平均的办法。TCP维持一个SampleRTT均值 (称为EstimatedRTT)一旦获得一个新SampleRTT时,TCP就会根据下列公式来更新EstimatedRTT

EstimatedRTT=(1a)EstimatedRTT+aSampleRTTa一般取0.125EstimatedRTT = (1 - a) * EstimatedRTT + a * SampleRTT ,a 一般取 0.125

EstimatedRTT是一个SampleRTT值的加权平均值,这种平均被称为指数加权移动平均

RTT偏差(DevRTT) 用于估算SampleRTT 一般会偏离EstimatedRTT的程度:

DevRTT=(1β)DevRTT+βSampleRTTEstimatedRTTβ一般取0.25DevRTT = (1 - \beta) * DevRTT + \beta* |SampleRTT - EstimatedRTT|,\beta 一般取 0.25

设置超时TimeoutInterval

EstimtedRTT + 安全边界时间,若EstimatedRTT变化大 (方差大)那就采用 较大的安全边界时间

TimeoutInterval=EstimatedRTT+4DevRTTTimeoutInterval = EstimatedRTT + 4 * DevRTT

推荐的初始Timeoutinterval值为1秒

TCP:可靠数据传输

  • TCP在IP不可靠服务的基础上 建立了可靠数据传输:无损坏、 无间隙、非冗余、按序

    • 管道化的报文段
    • 累计确认
    • 单个重传定时器,定时器管理的开销很大
    • 没有规定是否可以接受乱序
  • 通过以下事件触发重传

    • 超时(只重发那个最早的未确认段:SR)
    • 重复的确认,连续3个冗余ACK

image-20241218202351615

image-20241218203617974

  • 对于右图:当超时事件发生时,主机A重传序号92的第一个报文段,并重启定时器。只要第二个报文段的ACK在新的超时发生以前到达,则第二个报文段将不会被重传。
  • 对顺序收到的最高字节确认

image-20241218203821356

image-20241218204153435

TCP快速重传

超时触发重传存在的问题之一是超时周期可能相对较长。当一个报文段丢失时, 这种长超时周期迫使发送方延迟重传丢失的分组,因而增加了端到端时延。解决方法便是快速重传

image-20241218203951089

如果TCP发送方接收到对相同数据的3个冗余ACK,它 把这当作一种指示,说明跟在这个已被确认过3次的报文段之后的报文段已经丢失。一旦收到3个冗余ACK, TCP就执行快速重传,即 在该报文段的定时器过期之前重传丢失的报文段。

流量控制

流量控制:是一个速度匹配服务,使得发送方速率与接收方速率向匹配, 不至于导致接收方缓存溢出

拥塞控制:因IP网络拥塞而限制发送方的发送速率。

image-20241218205254802

image-20241218205435689

  • 主机 B 把当前 rwnd 值放入它发送给主机 A 的报文段接收窗口字段中,通知主机 A 它在该连接的缓存中还有多少可用空间
  • 主机 A 需要保证 LastByteSend - LastByteAcked <= rwnd,控制主机 A 已发送未确认的数据量在 rwnd 之内
  • 特殊情况:当主机 B rwnd = 0 ,且通知主机 A 之后,假设主机 B 之后没有任何数据发送给主机 A,则主机 A 被阻塞,它认为主机 B 的 rwnd 一直为 0,即主机 B rwnd 非 0 的信息无法通知给主机 A。为了解决这个问题, TCP 规范中要求 当主机 B 的接收窗口为 0 时,主机 A 继续发送只有一个字节数据的报文段。这些报文段将会被接收方确认。最终缓存将开始清空,并且确认报文里将包含一个非 0 的 rwnd 值。

TCP连接管理

在正式交换数据之前,发送方和接收方握手建立通信关系:

  • 同意建立连接(每一方都知道对方愿意建立连接)
  • 同意连接参数

image-20241218205550448

image-20241218205825927

三次握手建立连接

image-20241218210123442

  1. 客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包含应用层数据.报文段的首部中的一个标志位 (即SYN比特)被置为1,并且客户端会随机地选择一个初始序号,并将此编号放置于该起始的TCP SYN 报文段的序号字段中,这个特殊报文段被称为SYN报文段
  2. 服务器会从该数据报中提取出TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。这个允许连接的报文段也不包含应用层数据,SYN比特被置为1,该TCP报文段 首部的确认号字段被置为client _ isn + 1,服务器选择自己的初始序号,并将其放置到TCP报文段首部的序号字段中。该允许连接的报 文段被称为SYNACK报文段
  3. 在收到SYNACK报文段后,客户也要给该连接分配缓存和变量。客户主机则向服务器发送另外一个报文段;这最后一个报文段对服务器的允许连接的报文段进行了确认(该客户通过将值server_isn + 1放置到TCP报文段首部的确认字段中来完成此项工作)。因为连接已经建立了,所以该SYN比特被置为0。该三次 握手的第三个阶段可以在报文段负载中携带客户到服务器的数据。

四次挥手关闭连接

image-20241218210729991

  • 第一步:客户 TCP 向服务器进程发送一个特殊 TCP 报文段,在首部中设置 FIN 标志 为 1
  • 第二步:服务器发送回一个确认报文段
  • 第三步:服务器发送终止报文段,在首部中设置 FIN 标志 为 1
  • 第四步:客户对服务器的终止报文段进行确认

拥塞控制原理

原因:发送方发送速度过快,网络来不及处理

拥塞的表现:

  • 分组丢失 (路由器缓冲区溢出)
  • 分组经历比较长的延迟(在路由器的队列中排队)

代价:

  • 为了达到一个有效输出,网络需要做更多的工作(重传)
  • 没有必要的重传,链路中包括了多个分组的拷贝
  • 当分组丢失时,任何“关于这个分组的上游传输能力” 都被浪费了

拥塞控制方法:

image-20241218211714742

网络层:数据平面

image-20241219103014047

image-20241219113403807

概述

  • 因特网中所有主机和交换设备都有网络层功能。
  • 网络层解决如何实现主机到主机的通信,在发送主机和接收主机对之间传送段(segment)。
  • 将网络层分为数据平面控制平面:
    • 数据平面每台路由器的功能,决定达到路由器输入链路的数据报如何转发到该路由器的输出链路之一。硬件完成,纳秒级
      • IP转发,基于数据报携带的目的地址;
      • 通用转发,使用数据报首部的几个不同域值执行转发
    • 控制平面,也是每台路由器或集中服务器的功能,控制数据报沿着源主机到目的主机的端到端路径中路由器之间的路由方式,软件完成,毫秒级
      • 传统方法:路由选择算法,OSPFBGP
      • 软件定义的网络SDN,控制平面置于一台远程控制器
  • 网络层的功能就是转发和路由

网络服务模型

定义了分组在发送与接收端之间的端到端传输特性

因特网的网络层只提供了单一的服务,称为尽力而为服务,即:传送的分组既不能保证以它们发送的顺序被接收,也不能保证它们最终交付;既不能保证端到端时延,也不能保证有最小的带宽

路由器组成

  • 分组交换机:指一台通用分组交换设备,根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组,是第三层设备
  • 路由器:基于网络层数据报(分组)的首部字段做 出转发决定,是第三层设备
  • 链路层交换机:基于链路层帧的首部字段做出转发决定,是第二层设备

通用路由器的体系结构包含四个组件:输入端口、交换结构、输出端口、路由选择处理器

image-20241219104147119

输入端口

image-20241219104537377

  • 绿色框完成物理层功能,接收比特流信号;
  • 蓝色框完成数据链路层功能,CRC校验、解封帧;
  • 红色框完成网络层功能,查找转发表决定转发的路由器输出端口。
  • 路由器支持的端口数量范围较大,几个到ISP的几百个10Gbp

[基于目标的转发/基于目的地的转发]

最长前缀匹配规则:当给定目标地址查找转发表时,采用最长地址前缀匹配的目标地址表项

image-20241219105520950

在路由器中经常采用TCAMs硬件来完成

[输入端口缓存]

  • 当交换机构的速率小于输入端口的汇聚速率时,在输入端口可能要排队
  • Head-of-the-Line (HOL) blocking: 排在队头的数据报 阻止了队列中其他数据报向前移动

交换结构

作用: 将路由器的输入端口连接到输出端口,根据查询转发表的结果将到达的分组通过路由器的交换结构转发到输出端口

交换速率:分组可以按照该速率从输入传输到输 出

  • 运行速度经常是输入/输出链路速率的若干倍
  • 如果有N 个输入端口那么交换机构的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈

三种典型的交换机构:

交换机构

[通过内存交换]

image-20241219111255929

[通过总线交换]

image-20241219111335065

[通过互联网络的交换]

image-20241219111410219

纵横式交换机就是一种由2N条总线组成的互联网络,它连接N个输入端口 与N个输岀端口,每条垂直的总线在交叉点与每条水平的总线交叉, 交叉点通过交换结构控制器(其逻辑是交换结构自身的一部分)能够在任何时候开启和闭合,纵横式网络能够并行转发多个分组。纵横式交换机是非阻塞

然而,如果来自两个不同输入端口的两个 分组其目的地相同输出端口,则一个分组必须在输入端等待,因为在某个时刻经给定总线仅能够发送一个分组

输出端口

  • 从交换结构接收分组,并执行必要的链路层和物理层功能,然后在输出链路上发送出去这些分组。
  • 取出已经存放在输出端口内存中的分组并将其发送到输出链路上,涉及到选择
  • 当一条链路是双向传输数据时,输入端口与输出端口成对出现在同一线路卡上

image-20241219111639029

  • 当数据报从交换机构的到达速度传输速率快 就需要输出端口缓存
  • 调度规则选择排队的数据报进行传

image-20241219112836002

[调度规则]

调度: 选择下一个要通过链路传输的分组

**FIFP:**按照分组到来的次序发送,

丢弃策略: 如果分组到达一个满的队列,哪个分组将会 被抛弃? tail drop: 丢弃刚到达的分组 priority: 根据优先权丢失/移除分组 random: 随机地丢弃/移除

image-20241219113128679

**优先权排队(非抢占):**发送最高优先权的分组

多类,不同类别有不同的 优先权

类别可能依赖于标记或者其 他的头部字段,

先传高优先级的队列中的分 组,除非没有

高(低)优先权中的分组传 输次序:FIFO

image-20241219113116939

循环排队RR:
多类  循环扫描不同类型的队列, 发送完一类的一个分组 ,再发送下一个类的一个分组,循环所有类

加权公平排队

image-20241219113105857

  • 循环排队:分组分类,每个类循环传输,任何时间间隔收到相同数量的服务
  • 加权公平排队:每个类在任何时间间隔内可能收到不同数量的服务

路由选择处理器

  • 维护路由选择表与关联链路状态信息,为该路由器计算转发表(或者在SDN路由器中负责与远程控制器通信),并在路由器是输入端口红框中下发计算结果即转发表
  • 路由器的输入/输出端口交换结构都是由硬件实现的

IP

IPV4数据报格式

image-20241219113502648

  • 版本:IP协议版本号
  • 首部长度:一般的 IP 数据报具有 20 字节的首部
  • 服务类型:使不同类型的 IP 数据报能相互区分开。
  • 数据报长度:IP 数据报总长度(首部 + 数据),字节为单位。
  • 标识,标志,片偏移:与 IP 分片有关。
  • 上层协议:指示了一个到达的 IP 数据报的数据部分应该交给哪个特定的运输层协议。例如,6 表明给 TCP17 表明给 UDP
  • 首部校验和:用于帮助路由器检测收到的 IP 数据报中的比特错误
  • 选项:扩展首部,IPv4 首部大小可变,不定长
  • 一个 IP 数据报具有总长为 20 字节的首部,如果数据报承载了一个 TCP 报文段,则每个数据报共承载了总长 40 字节的首部以及应用层报文

IP数据包传输TCP段时的头部有40字节:TCP(20字节)+IP(20字节)

IP数据报分片与装配

  • 最大传输单元MTU:一个链路层的帧能承载的最大数据量
  • 链路层MTU限制IP分组长度
  • 不同的链路层协议具有不同的 MTUs,例如以太网是1500字节,某些广域网链路是576字节。

因此,大的IP数据报在网络上被分片:

  • 一个数据报被分割成若干个小的数据报:相同的ID 不同的偏移量 最后一个分片标记为0
  • “重组”只在最终的目标主机进行
  • IP头部的信息被用于标识,排序相关分片

image-20241219143210876

源主机发送分组时给每个分组添加标识,标识号依次+1。

当中间某个路由器需要分片时,按8个字节的倍数分片:同一个分组 的每个分片具有相同的号;标志位置为1/最后一个置0;偏移量指明分片在分组的起始位置

IPv4编址

主机与物理链路之间的边界叫作接口

  • 一台路由器有多个接口,主机也有可能有多个接口
  • IP要求每台主机和路由器接口拥有自己的IP地址
  • 一个IP 地址与一个接口相关联

IP地址:32位,对主机或者路由器的接口编址,用点分十进制表示

  • 子网部分(高位bits)

  • 主机部分(低位bits)

子网: 每个互相隔离的网络成为 一个子网 subnet

  • 一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同 ,这些节点构成的网络 的一部分叫做子网
  • 无需路由器介入,子网内各主机可以在物理上相互直接到达

子网号223.1.1.0/24为一个子网号

子网掩码 通常指示了IP地址中哪些位是子网号,可以用/24, 也可以表示为255.255.255.0 = 11111111 11111111 11111111 00000000

CIDR无类别域间路由选择

因特网的IP地址分配策略称为无类别域间路由策略

  • 32位的IP地址被划分为两部分
  • a.b.c.d/x, x指示了IP地址的子网部分的比特数,即IP地址中前x位为子网号,也称为IP地址的前缀, 或网络前缀,剩余 32 - x 比特是用于区分子网内部设备的主机地址。
  • 一个接入因特网的组织通常被分配一块连续的地址,即具有相同前缀的一块地址
  • 路由器的转发表,在搜索时也是匹配网络号

分类编址:在 CIDR 被采用之前, IP 地址的网络部分被限制为长度为 8、16 或 24 比特。具有 8、16、24 比特子网地址的子网分别被称为 A、B、C 类网络。

image-20241219223145187

  • 当一台主机发出一个目的地址为255. 255. 255. 255的数据报时,该报文会交付给同一个网络中的所有主机
  • 子网部分: 全为 0—本网络 主机部分: 全为0—本主机

image-20241219144810360

image-20241219144834223

image-20241219145012828

DHCP:动态主机配置协议

目标: 允许主机在加入网络的时候,动态地从服务器那里获得IP地址

  • 可以更新对主机在用IP地址的租用期-租期快到了
  • 重新启动时,允许重新使用以前用过的IP地址
  • 支持移动用户加入到该网络(短期在网)
  • 即插即用、零配置,自动工作
  • 是一个客户-服务器协议,使用DHCP协议分配IP地址的子网 内通常有一台DHCP服务器;如果没有服务器则需要一个 DCHP中继代理(通常也是一台路由器),代理知道该子网的DHCP服务器的地址

DHCP的4个步骤:

  • DHCP 服务器发现:新到达的主机向子网广播 即 “DHCP discover ” msg [optional]来发现一个DHCP服务器,客户主机在UDP分组中向端口67发送该发现报文,使用 广播目的地址255.255.255.255和源地址0.0.0.0
  • DHCP 服务器提供:DHCP 服务器广播 DHCP 提供报文,该报文向该子网的所有节点广播,仍然使用IP广播地址255. 255. 255. 255,每台服务器提供的报文包含有收到的发现报文的事务ID、向客户推荐的IP地址网络掩码以及IP地址租用期 , 即IP地址有效的时间量。服务器租用期通常设置为几小时或几 天
  • DHCP 请求:客户选择一个服务器提供,广播 DHCP 请求报文,指定选择的 DHCP 服务器 ID
  • DHCP ACK:服务器使用 DHCP ACK 报文对 DHCP 请求报文进行响应,广播

image-20241219150921894

DHCP 返回:

  • IP 地址
  • 第一跳路由器的IP地址(默认网关)
  • DNS服务器的域名和IP地址
  • 子网掩码 (指示地址部分的网络号和主机号)

image-20241219151102178

image-20241219151119687

NAT: 网络地址转换

image-20241219151327710

动机: 本地网络只有一个有效IP地址:

  • 不需要从ISP分配一块地址,可用一个IP地址用于所有的(局域网)设备–省钱
  • 可以在局域网改变设备的地址情况下而无须通知外界
  • 可以改变ISP(地址变化)而不需要改变内部的设备地址
  • 局域网内部的设备没有明确的地址,对外是不可见的–安全

image-20241219153435835

image-20241219153511388

image-20241219153708111

IPv6

初始动机: 32-bit地址空间将会被很快用完

另外的动机:

  • 头部格式改变帮助加速处理和转发
  • TTL-1
  • 头部checksum
  • 分片
  • 头部格式改变帮助QoS

image-20241219153945792

相对于IPv4主要的变化:

  • 扩大的地址容量。IPv6将IP地址长度 从32比特增加到128比特
  • 简化高效的40字节首部,40字节定长首部允许路由器更快地处理IP数据报
  • 流标签
  • 不允许分片,中间路由器不允许对分组进行分片,如果收 到了过大的分组不能转发到输出链路上只需要将其丢弃分组的分片和重新装配只能在源/目的端进行
  • 取消校验和 checksum: 传输层和数据链路层都有这个功能,而且由于TTL字段的存在导致校验和在每个路由器需要重新计算再 写入,影响了路由器的快速转发
  • 选项 options: 没有完全取消,如果需要可在“下一个首部”字段 中指出
  • ICMPv6: ICMP的新版本
    • 附加了报文类型, e.g. “Packet Too Big”
    • 多播组管理功能

IPv4迁移到IPv6

IPv6向后兼容,在IPv6系统里可以转发IPv4分组;但IPv4系统里却不可以转发IPv6分组

隧道: 在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报

image-20241219154503178

image-20241219154539737

网络层:控制平面

2种构建网络控制平面功能的方法:

  • 每个路由器控制功能实现(传统)
  • 逻辑上集中的控制功能实现(SDN)

路由选择算法

路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条从源节点到目标节点的较好路径

网络为单位进行路由(路由信息通告+路由计算)

分类:

  1. 算法是集中式还是分散式来划分
    • 集中式路由选择算法: 所有的路由器拥有完整的拓扑和边的代价的信息 eg : “link state”
    • 分散式路由选择算法:
      • 路由器只知道与它有物理连接关系邻居路由器,和到相应邻居路由器的代价值
      • 迭代式地与邻居交换路由信息、 计算路由信息 “distance vector”
  2. 静态或者动态
    • 静态路由选择算法:路由随时间变化缓慢,通常是人工-进行调整(如人为手工编辑一条链路开销)
    • 动态路由选择算法:路由变化很快,周期性更新,响应拓扑和开销变化
  • 各点通过各种渠道获得整个网络拓扑, 网络中所有链路代价等信息
  • 使用LS路由算法,计算本站点到其它站点的最优路径,得到路由表

image-20241220114632817

[Dijsktra算法]

链路状态路由选择算法的其中一种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   Initialization:
N' = {u}
for all nodes v
if v is a neighbor of u
then D(v) = c(u,v)
else D(v) = INF

Loop
find w not in N' such that D (w) is a minimum
add w to N'
update D(v) for each neighbor v of w and not in N'
D (v) = min (D (v) , D (w) + c (w , v))
/* new cost to v is either old cost to v or known
least path cost to w plus cost from w to v */

until N'= N

image-20241220115134276

image-20241220115150513

算法复杂度: O(n2)O(n^2 )可以降到O(nlogn)O(n\log n)

存在路由震荡问题

距离向量DV路由选择算法

  • 迭代的,交换信息并重新计算的过程要一直持续到邻居之间 无更多信息要交换位置(链路状态稳定后自停止)
  • 异步的,不要求所有节点相互之间步伐一致地操作。
  • 分布式,每个节点要从一个或多个直接相连的邻居交换某 些信息,并执行计算

Bellman- Ford方程:

dx(y)d_x(y)是从节点x到节点y的最低开销路径的开销

dx(y)=minv{c(x,v)+dv(y)}d_x(y) = \min_v\{c(x,v) + d_v(y) \}

方程中的minv\min_v是对于x的所有邻居的

image-20241220134105143

image-20241220134226740

节点x真正需要知道的不是到y的最短路径距离,而是沿着最短路径到y的 下一跳路由器邻居节点v(y)v^*(y)

image-20241220134533654

DV的无穷计数问题

遇到路由选择环路,当某链路开销突变,节点计算新的最低开销需要之前其他节点计算得出的链路开销信息,而该信息可能已经无效了,因为链路开销发生了突变,相当于在错误的开销上更新开销,一错再错。

坏消息的传播速度非常慢,好消息传得快

毒性逆转解决

image-20241220134941881

image-20241220135051006

因特网中自治系统内部的路由选择(intra-AS)

在相同AS中的路由器都运行相同的路由选择算法并且有彼此的信息。在一个自治系统内运行的路由选择算法叫作自治系统内部路由选择协议

开放最短路优先OSPF

“open”: 标准可公开获得

OSPF是一种链路状态协议,它使用洪泛链路状态信息和Dijkstra最低开销路径算法。

使用 OSPF ,一台路由器构建了一幅关于整个自治系统的完整拓扑图。于是,每台路由器在本地运行 Dijkstra 的最短路径算法,以确定一个以自身为根节点到所有子网的最短路径树。各条路径开销是由网络管理员配置的。使用 OSPF 时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是向其相邻路由器广播。每当一条链路的状态发生变化时,路由器就会广播链路状态信息。即使链路状态未发生变化,它也要周期性地广播链路状态

image-20241220141527468

image-20241220141546911

image-20241220141600512

ISP之间的路由选择

BGP

AS间路由选择协议涉及多个AS之间的协调,所以AS通信必须运行相同的AS间路由选择协议。在因特网中,所有的AS运行相同的AS间路由选择协议,称为边界网关协议(Broder Gateway Protocol, BGP)

分布式的 异步的路由选择协议

胶水协议

对于位于相同AS中的目的地而言,在路由器转发表中的表项由AS内部路由选择协议所决定。而对于位于该AS外部的目的地而言情况如何 呢?这正是BGP用武之地

  • BGP 提供给每个AS以以下方法:
    • eBGP: 从相邻的ASes那里获得子网可达信息
    • iBGP: 将获得的子网可达信息传遍到AS内部的所有路由器 ,逻辑的非物理链路的
    • 根据子网可达信息和策略来决定到达子网的“好”路径
  • 允许子网向互联网其他网络通告“我在这里”
  • 基于距离矢量算法(路径矢量),不仅仅是距离矢量,还包括到达各个目标网络的详细路径(AS 序号的列表)能够避免简单DV算法的路由环路问题

image-20241220142423610

BGP 会话: 2个BGP路由器(“peers”)在一个半永久的TCP连接上 交换BGP报文:通告向不同目标子网前缀的“路径”(BGP是一个“路径矢量”协议)

重要的BGP 属性

  • AS-PATH:包含了通告已经通过的 AS 的列表,当一个前缀通过某 AS 时,该 AS 将其 ASN 加入 AS-PATH 中的现有列表。检测环路;多路径选择
  • NEXT-HOPNEXT-HOPAS-PATH 起始的路由器接口的 IP 地址。例如,如图 所指示的那样,对于从 AS1 通过 AS2 到 x 的路由 "AS2 AS3 x",其属性 NEXT-HOP 是路由器 2a 左边接口的 IP 地址;对于从 AS1 绕过 AS2 到 x 的路由 "AS3 x"NEXT-HOP 属性是路由器 3d 最左边接口 IP 地址。

image-20241220143029257

路由表项是由AS内和 AS间的路由共同决定的

image-20241220143341091

image-20241220143420749

image-20241220143443826

image-20241220143838053

image-20241220143931331

image-20241220144030914

ICMP:因特网控制报文协议

  • 主机路由器用来彼此沟通网络层的信息。
  • 最典型的用途是差错报告
  • 从体系结构上位于 IP 之上,处于网络层 , 承载在 IP 分组中,作为 IP 有效载荷承载。
  • IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP协议。当传送IP数据包发生错误比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会
  • 主要功能
    • 侦测远端主机是否存在
    • 建立及维护路由资料
    • 重导数据传送路径
    • 数据流量控制

image-20241220144329323

链路层和局域网

引论和服务

在一个网络内部如何由一个节点(主机或者路由器)到达另外一个相邻节点:链路层的点到点传输层功能

两种类型的链路层信道

  • 广播信道,用于局域网,以广播方式通信,需要媒体访问控制。
  • 点对点信道,用于核心网里路由器之间长距离连接,控制较简单。

子网的若干节点的连接方式:

  • 点到点连接
  • 多点连接:
    • 共享型介质
    • 通过网络交换机

WAN:网络形式采用点到点链路

LAN:一般采用多点连接方式

  • 数据链路层负责从一个节点通过链路将 (帧中的)数据报发送到相邻的物理节点 (一个子网内部的2节点)
  • 数据报(分组)在不同的链路上以不同的链路协议传送
  • 不同的链路协议提供不同的服务

链路层提供的服务

可能的服务如下:

  • 成帧
  • 链路接入:MAC(媒体访问控制)协议:规定了帧在链路上传输的规则
  • 相邻节点的可靠交付:通常用于易产生高差错率的链路
  • 流量控制
  • 错误检测和差错纠正
  • 半双工和全双工

为什么在链路层和传输层都实现了可靠性:

一般化的链路层服务,不是所有的链路层都提供这些服务 一个特定的链路层只是提供其中一部分的服务

为什么要在采用无线链路的网络上,链路层做可靠数据传输工作 ;还要在传输层做端到端的可靠性工作?

原因:出错率高,如果在链路层不做差错控制工作,漏出去的错误比较高;到了上层如果需要可靠控制的数据传输代价会很大

链路层工作在每一个网络设备上

链路层的主体部分是在网络适配器中实现的,网络适配器有时也称为网络接口卡,位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(成 帧、链路接入、差错检测等)的专用芯片。因此,链路层控制器的许多功能是用硬件实现。链路层主要由硬件实现,也有部分功能用软件如链路层寻址、响应中断。

image-20241221103456292

image-20241221103711011

差错检测和纠正

比特级差错检测和纠正 ,即对从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正,它们通常是链路层提供的两种服务。

奇偶校验

[一维奇偶校验]

image-20241221104225811

  • 偶校验:发送方保证 d + 1 比特数据中 1 的个数是偶数,如果接收方发现 1 的个数是奇数,则出现了奇数个比特差错
  • 奇校验:发送方保证 d + 1 比特数据中 1 的个数是奇数,如果接收方发现 1 的个数是偶数,则出现了奇数个比特差错
  • 差错往往是突发的,而非独立的,检错率50%

[二维奇偶校验]

image-20241221104450246

接收方不仅可以检测到出现了单个比特差错的事实,而且还可以利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特并纠正它。

接收方检测和纠正差错的能力被称为前向纠错(FEC)

Internet校验和

检测在传输报文段时的错误(如位翻转),(注: 仅仅用在传输层),相对于CRC码来讲检错能力弱

image-20241221104744707

为什么运输层使用检验和而链路层使用CRC呢?

前面讲过运输层常是在主机中作为用户操作系统的一部分用软件实现的。因为运输层差错检测用软件实现,采用简单而快速如检验和这样的差错检测方案是重要的。

在另一方面,链路层的差错检测在适配器中用专用的硬件实现,它能够快速执行更复杂的CRC操作。

检验和:CRC(循环冗余校验)

强大的差错检测码

[思想]

  • 将要发送的二进制数看做是0或1为系数的一个多项式 D。
  • 发送方和接收方事先协商一个r+1比特的生成多项式 G
  • 选择r位CRC附加位R,使得:
    • 正好被 G整除 (模2运算)
    • 接收方知道 G, 将 除以 G. 如果非0余数: 检查出错误!
    • 能检出所有少于r+1位的突发错误

image-20241221105808649

模2算数前提下,加法和减法相同且等价于按位异或

如何选择R:

R满足:$D \cdot 2^r \ XOR\ R =nG $

则: $D \cdot 2^r = nG\ XOR\ R $

由于位模2运算,异或等价于加减法,那么我们用左边除以GG余数即为RR

image-20241221110659877

image-20241221110825599

多路访问链路和协议

两种类型的链路(一个子网内部链路连接形式):

  • 点对点
  • 拨号访问的PPP
  • 以太网交换机和主机之间的点对点链路 (以太网是是一种广泛使用的局域网(LAN)技术)
  • 广播 (共享线路或媒体)
  • 传统以太网
  • HFC上行链路
  • 802.11无线局域

共享广播信道

  • 2个或更多站点同时传送: 碰撞
  • 当发生碰撞时,没有一个接收节点能有效的获得传输的帧;
  • 碰撞的帧重叠在一起,所有涉及的帧传输都失败了;
  • 如果许多节点要频繁的传输帧会加剧碰撞浪费带宽

如何协调多个发送和接收节点对一个共享广播信道的访问,这就是多路访问问题

多路访问协议:用于控制共享广播信道里的节点如何传输帧的分布式算法

image-20241221111953017

多路访问(MAC)协议划分为3种类型:

  • 信道划分协议
    • 把信道划分成小片(时间、频率、编码)
    • 分配片给每个节点专用
  • 随机接入协议
    • 信道不划分,允许碰撞
    • 碰撞后恢复
  • 轮流协议
    • 节点依次轮流
    • 但是有很多数据传输的节点可以获得较长的信道使用权

信道划分MAC协议

时分多路复用(TDM):TDM 将时间划分为时间帧,并进一步划分每个时间帧为 N 个时隙,然后把每个时隙分配给 N 个节点中的一个。无论何时某个节点在有分组要发送的时候,它在循环的 TDM 帧中指派给它的时隙内传输分组比特。通常,选择的时隙长度应使一个时隙内能够传输单个分组。

如果站点无帧传输,时隙空闲-》浪费

频分多路复用(FDM):FDM 将 R bps 信道划分为不同的频段(每个频段具有 R/N 带宽),并把每个频率分配给 N 个节点中的一个。因此 FDM 在单个较大的 R bps 信道中创建了 N 个较小的 R/N bps 信道

分配给站点的频段如果没有被使用,则空闲

image-20241221112423891

码分多路访问CDMA:

  • 所有站点在整个频段上同时进行传输, 采用编码原理加以区分
  • 完全无冲突
  • 假定:信号同步很好,线性叠加

随机访问协议

一个传输节点总是以信道的全部速率(即Kbps)进行发送。当有碰撞时,涉及碰撞的每个节点反复地重发它 的帧(也就是分组),到该帧无碰撞地通过为止。但是当一个节点经历一次碰撞时,它不必立刻重发该帧。相反,它在重发该帧之前等待一个随机时延。涉及碰撞的每个节点 独立地选择随机时延。

随机访问协议要解决/规定:

  • 如何检测碰撞
  • 如何从碰撞中恢复

常见的随机访问协议:

  • 时隙ALOHA
  • ALOHA(纯ALOHA)
  • CSMA,CSMA/CD,CSMA/CA (载波监听多路访问)

时隙ALOHA

假设:

  1. 所有帧由L比特组成。
  2. 时间被划分成长度为L/R秒的时隙(这就是说,一个时隙等于传输一帧的时间)。
  3. 节点只在时隙起点开始传输帧。
  4. 节点是同步的,每个节点都知道时隙何时开始。
  5. 如果在一个时隙中有两个或者更多个帧碰撞,则所有节点在该时隙结束之前检测到该碰撞事件。

在每个节点中,时隙ALOHA的操作:

  • 当节点获取新的帧,在下一 个时隙传输
  • 传输时没有检测到冲突,成功
    • 节点能够在下一时隙发送新帧
  • 检测时如果检测到冲突,失败
    • 节点在每一个随后的时隙以概率p重传帧直到成功

优点:

  • 节点可以以信道带宽全速连续传输
  • 高度分散:仅需要节点之间在时隙上的同步,每个节点检测碰撞并独立地决定什么时候重传
  • 简单

缺点:

  • 存在冲突,浪费时隙
  • 即使有帧要发送,仍然有可能存在空闲的时隙
  • 节点检测冲突的时间<帧传输的时间
    • 必须传完
  • 需要时钟上同步

image-20241221144558625

image-20241221144714528

ALOHA/纯ALOHA(非时隙)

纯 ALOHA中,当一帧首次到达(即一个网络层数据报在发送节点从网络层传递下来),节点 立刻将该帧完整地传输进广播信道。如果一个传输的帧与一个或多个传输经历了碰撞,这个节点将立即在完全传输完它的碰撞帧之后)以概率p重传该帧。否则,该节点等待一个帧传输时间。在此等待之后,它则以概率p传输该帧,或者以概率1-p在另一个帧时间等待(保持空闲)。

  • 简单、无须节点间在时间上同步

  • 当有帧需要传输:马上传输

  • 冲突的概率增加:

    • 帧在t0 发送,和其它在[t0 -1, t0 +1]区间内开始发送的帧冲突
    • 和当前帧冲突的区间(其他帧在此区间开始传输)增大了一倍

    image-20241221145158341

image-20241221145052473

CSMA(载波侦听多路访问)

在时隙和纯ALOHA中,一个节点传输的决定独立于连接到这个广播信道上的其他节 点的活动。特别是,一个节点不关心在它开始传输时是否有其他节点碰巧在传输,而且即使有另一个节点开始干扰它的传输也不会停止传输。

载波侦听(carrier sensing),即一个节点在传输前先听信道。如果来自另一 个节点的帧正向信道上发送,节点则等待直到检测到一小段时间没有传输,然后开始传输

碰撞检测(collision detection),即当一个传输节点在传输时一直在侦听此信道。如果它检测到另 一个节点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间

CSMA: 在传输前先侦听信道:

  • 如果侦听到信道空闲,传送整个帧
  • 如果侦听到信道忙,推迟传送

但仍然会发生碰撞,由于端到端信道传播延迟造成两个节点可能侦听不到正在进行的传输,并且该传播时延越长,载波侦听节点不能侦听到网络中另一个节点已经开始传输的机会就越大

例如:在时刻t0t_0,节点B侦听到信道是空闲的,因为当前没有其他节点在传输。因此节点B开始传输,沿着广播媒体在两个方向上传播它的比特。图中B的比特随着时间的增加向下传播,这表明B的比特沿着广播媒体传播所实际需要的时间不是零(虽然以接近光 的速度)。在时刻t1(t1>t0)t_1(t_1>t_0),节点D有一个帧要发送。尽管节点B在时刻t1t_1正在传输, 但B传输的比特还没有到达D,因此D在t1t_1侦听到信道空闲。根据CSMA协议,从而D开始传输它的帧。一个短暂的时间之后,B的传输开始在D干扰D的传输

image-20241221150109348

CSMA/CD(具有碰撞检测的载波侦听多路访问)

碰撞检测(collision detection),即当一个传输节点在传输时一直在侦听此信道。如果它检测到另 一个节点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间

CSMA/CD:

  • 载波侦听CSMA:和在CSMA中一样发送前侦听信道
  • 没有传完一个帧就可以在短时间内检测到冲突
  • 冲突发生时则传输终止,减少对信道的浪费

碰撞检测(CD)技术,有线局域网中容易实现:检测信号强度,比较传输与接收到的信号是否相同 或者 通过周期的过零点检测,无线局域网中较难实现

image-20241221150843794

在从与广播信道相连的适配器(在节点中)的角 度总结它的运行:

  1. 适配器从网络层一条获得数据报,准备链路层帧,并将其放入帧适配器缓存中。
  2. 如果适配器侦听到信道空闲(即无信号能量从信道进入适配器),它开始传输帧。在另一方面,如果适配器侦听到信道正在忙,它将等待,直到侦听到没有信号能量时才开始传输帧。
  3. 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在。
  4. 如果适配器传输整个帧而未检测到来自其他适配器的信号能量,该适配器就完成了该帧。在另一方面,如果适配器在传输时检测到来自其他适配器的信号能量,它中止传输(即它停止了传输帧)。 除放弃外,还发送一个Jam 信号,所有听到冲突的适配器也是如此 强化冲突:让所有站点都知道冲突
  5. 中止传输后,适配器等待一个随机时间量,然后返回步骤2。

如何确认退避时间?

  • 退避时间长,信道空闲浪费
  • 退避时间短,会发生再次碰撞造成反复重传

二进制指数退避算法:在第mm次失败后,适配器从$ { 0,1,2, , 2^m-1 } 中随机选择一个中随机选择一个K,等待,等待K*512比特时间(即发送512比特进入以太网所需时间量的K)时,然后转到上述的步骤2,比特时间(即发送512比特进入以太网所需时间量的K倍)时 ,然后转到上述的步骤2 ,m$的最大值在10以内

假设一个适配器首次尝试传输一个帧,并在传输中它检测到碰撞。然后该节点以概率0.5选择K=0K=0,以概率0.5选择K=1K = 1 , 如果该节点选择K=0K=0,则它立即开始侦听信道。如果这个适配器选择$K = 1 $,它在开始“侦听-当空闲时传输” 。周期前等待512比特时间(例如对于100Mbps以太网来说为5. 12ms)。在第2次碰撞之后,从 (0,1,2,3](0, 1, 2, 3]中等概率地选择KK。在第3次碰撞之后,从(0,1,2,3,4,5,6,7](0, 1, 2, 3, 4, 5, 6, 7] 中等概率地选择KK。在10次或更多次碰撞之后,从{0,1,2,,1023}\{0, 1, 2,\cdots ,1023\}中等概率地选择KK。因此从中选择K的集合长度随着碰撞次数呈指数增长;正是由于这个原因,该算法被称为二进制指数后退

image-20241221152104889

轮流协议

image-20241221153354829

轮询

image-20241221153425319

令牌传递

image-20241221153513815

image-20241221153616037

局域网

链路层寻址和ARP

MAC地址/LAN地址/物理地址

事实上,并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址,因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层 地址,就像它也具有与之相关联的多个IP地址一样。

链路层交换机并不具有与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址

image-20241221155357264

image-20241221155524292

image-20241221155550093

局域网上每个适配器都有一个唯一的LAN地址

image-20241221155610756

ARP协议(地址解析协议)

因为存在网络层地址(例如,因特网的IP地址)和链路层地址(即MAC地址),所 以需要在它们之间进行转换。对于因特网而言,这是地址解析协议。

  • 在LAN上的每个IP节点都有一个ARP表
  • ARP表:包括一些 LAN节点IP/MAC地 址的映射
  • < IP address; MAC address; TTL>
    • TTL时间是指地址映射失效的时间
    • 典型是20mi
  • 查询 ARP 报文是在广播帧中发送的,而响应 ARP 报文是在一个标准帧中发送
  • 只为在一个子网上的主机和路由器接口解析 IP 地址

image-20241221160210877

image-20241221160348096

image-20241221160422000

image-20241221160442811

image-20241221160524817

image-20241221160649760

以太网

以太网几乎占领着现有的有线局域网市场

image-20241221160807454

物理拓扑

image-20241221161318609

以太帧结构

image-20241221161403558

前同步码(8Byte):

  • 7Byte 10101010 + 1Byte 10101011
  • 用来同步接收方和发送方的时钟速率
    • 使得接收方将自己的时钟调到发送端的时钟
    • 从而可以按照发送端的时钟来接收所发送的帧

目的地址/源地址:6字节

  • 如果帧目标地址与本站MAC地址相同,或者目标地址为广播地址那就接收,递交帧中的数据到网络层
  • 否则,适配器忽略该帧

类型:指出高层协议(大多情况下是IP,但也支持其它网络层协议)

CRC:接收方校验

  • 如果没有通过校验,丢弃错误帧

所有以太网技术都向网络层提供无连接服务不可靠服务

  • 无连接:帧传输前,发送方和接收方之间没有握手
  • 不可靠:接收方适配器不发送ACKs或NAKs给发送方
    • 递交给网络层的数据报流可能有间隙
    • 如上层使用像传输层TCP协议这样的rdt,间隙会被补上( 源主机,TCP实体)
    • 否则,应用层就会看到gap
  • 以太网的MAC协议:采用二进制退避的CSMA/CD 介质访问控制形式

image-20241221162109771

交换机

  • 任务:接收入链路层帧并将它们转发到出链路。

  • 链路层设备:扮演主动角色(端口执行以太网协议)

    • 对帧进行存储和转发
    • 对于到来的帧,检查帧头,根据目标MAC地址进行选择性 转发
    • 当帧需要向某个(些)网段进行转发,需要使用 CSMA/CD进行接入控制
    • 通常一个交换机端口一个独立网段
  • 透明:主机对交换机的存在可以不关心

    • 通过交换机相联的各节点好像这些站点是直接相联的一样
    • 有MAC地址;无IP地址
  • 即插即用,自学习

    • 交换机无需配置

image-20241221162645075

image-20241221162806138

image-20241221162824613

image-20241221163045040

过滤(filtering)是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。

转发(forwarding)是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。交换机的过滤和转发借助于**交换机表(switch table)**完成。

image-20241221163228796

image-20241221163318394

image-20241221163416878

image-20241221163424668

VLAN(虚拟局域网)

支持 VLAN 的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。

image-20241221163650382

image-20241221163743913

image-20241221163851470

image-20241221163902257

无线网络和移动网络

无线链路、特征

image-20241222101338352

无线网络的构件

  • 无线主机:运行应用程序的端系统设备。可以是便携机、掌上机、智能手机或者桌面计算机。主机本身可以移动,也可能不移动。

  • 无线链路:主机通过无线通信链路连接到一个基站或者另一个无线主机。不同的无线链路技术具有不同的传输速率和能够传输不同的距离。

  • 基站:无线网络基础设施的一个关键部分。与无线主机和无线链路不同,基站在有线网络中没有明确的对应设备。它负责向与之关联的无线主机发送数据和从主机那里接收数据。基站通常负责协调与之相关联的多个无线主机的传输

    • 一台无线主机与某基站“相关联”:1️⃣ 该主机位于该基站的无线通信覆盖范围内;2️⃣ 该主机使用该基站中继它和更大网络之间的数据
  • 切换:当一台移动主机的移动超出一个基站的覆盖范围而到达另一个基站的覆盖范围后,它将改变其接入到更大的网络的连接点(即改变与之相关联的基站)。

  • 与基站关联的主机通常被称为以基础设施模式运行。因为所有传统的网络服务(如地址分配和路由选择)都由网络向通过基站相连的主机提供。

  • 自组织网络中,无线主机没有这样的基础设施与之相连。在没有这样的基础设施的情况下,主机本身必须提供诸如路由选择、地址分配、类似于 DNS 的名字转换等服务。


无线网络分类

  • 单跳,基于基础设施
    • 具有与较大的有线网络连接的基站。该基站与无线主机之间的所有通信都经过一个无线跳。
    • 802.11网络、4G LTE 数据网络。
  • 单跳,无基础设施
    • 不存在与无线网络相连的基站。单跳网络中的一个节点可以协调其他节点的传输。
    • 蓝牙网络、具有自组织模式的 802.11 网络。
  • 多跳,基于基础设施
    • 一个基站表现为以有线方式与较大网络相连。某种无线节点为了经该基站通信,可能不得不通过其他无线节点中继它们的通信。
    • 无线传感网络、无线网状网络
  • 多跳,无基础设施
    • 网络中没有基站,并且节点为了到达目的地可能必须在几个其他无线节点之间中继报文。
    • 移动自组织网络(MANET)、车载自组织网络(VANET)

无线链路和网络特征

  • 路径损耗:电磁波在穿过物体时强度将减弱。即使在自由空间中,信号仍将扩散,这使得信号强度随着发送方和接收方距离的增加而减弱。
  • 多径传播:当电磁波的一部分受物体和地面反射,在发送方和接收方之间走了不同长度的路径,则会出现多径传播。这使得接收方收到的信号变得模糊。位于发送方和接收方之间的移动物体可导致多径传播随时间而改变。
  • 来自其他源的干扰:在同一个频段发送信号的电波源将相互干扰

image-20241222101654545

  • 信噪比(SNR):所收到的信号和噪声强度的相对测量。单位是分贝(dB)。

  • 比特差错率(BER):在接收方收到的有错传输比特的概率

  • 对于给定的调制方案,SNR越高,BER 越低,由于发送方通过增加它的传输功率就能够增加SNR,因此发送方能够通过增加它的传输功率来降低接收到差错帧的概率 ,当该功率超过某个阈值时,,可证明几乎不会有实际增益.也会伴随着一些缺点:发送方必须消耗更多的能量(对于用电池供电的移动用户,这一点非常重要),并且发送方的传输更可能干扰另一个发送方的传输

  • 对于给定的SNR , 具有较高比特传输率的调制技术将具有较高的BER

  • 物理层调制技术的动态选择能用于适配对信道条件的调制技术。


接收方无法检测到碰撞的两种情况:

  • 隐藏终端问题:即使 AC 的传输确实是在目的地 B 发生干扰,环境的物理阻拦(大山、建筑)也可能会妨碍 AC 互相听到对方的传输。
  • 衰减AC 所处的位置使得它们的信号强度不足以使它们相互检测到对方的传输,然而它们的传输足以强到在站点 B 处相互干扰。
    img

CDMA(码分多址)

码分多址(Code Division Multiple Access, CDMA)属于信道划分协议族。它在无线LAN和蜂窝技术中应用很广泛。

要发送的每个比特都通过乘以一个信号(编码)的比特来进行编码,这个信号的变化速率(通常称为码片速率, chipping rate) 比初始数据比特序列的变化速率快得多。

image-20241222102223846

  • did_i:第ii 个比特时隙中的数据比特值。
  • $Z_{i,m}=d_i⋅c_m $:对于 did_i 比特传输时间的第 mm 个微时隙,CDMA 编码器的输出 Zi,mZ_{i,m},是 did_i 乘以分配的 $CDMA $编码的第 mm 比特 cmc_m
  • di=m=1MZi,mcmMd_i=\frac{∑_{m=1}^{M}Z_{i,m}⋅c_m}{M} :接收方恢复初始的数据比特。
  • 当有多个发送方干扰目标发送方时,CDMA 假设对干扰的传输比特信号是加性的;接收方收到的值是在那个微时隙中从所有 N 个发送方传输的比特的总和,使用目标发送方的 CDMA 编码可以提取出目标发送方的初始数据比特。

image-20241222102356703

IEEE 802.11 无线局域网

  • IEEE 802.11 无线 LAN(WiFi)协议族:无线 LAN 标准。

image-20241222113829336

上述协议都

  • 采用CSMA/CA媒体访问协议
  • 使用相同的链路层帧结构
  • 都向后兼容

802.11体系结构

image-20241222113911297

  • 802.11体系结构的基本构件模块是基本服务集(Basic Service Set, BSS)
  • 一个BSS包含一个或多个无线站点和一个在 802. 11术语中称为**接入点( AP)的中央基站**
  • 每个802. 11无线站点都具有一个6字节的MAC地址,该地址 储在该站适配器(即802. 11网络接口卡)的固件中,每个AP的无线接口也具有一个 MAC地址。与以太网类似,这些MAC地址由IEEE管理,理论上是全球唯一的。
  • 配置AP的无线LAN经常被称作基础设施无线LAN,其中的“基础设施”是指AP连同互联AP和一台路由器的有线以太网

信道与关联

  • 在802. 11中,每个无线站点在能够发送或者接收网络层数据之前,必须与一个AP相 关联 , 关联意味 着这一无线站点在自身和该AP之间创建一个虚拟线路。
  • 当网络管理员安装一个AP时,管理员为该接入点分配一个单字或双字的服务集标识符(Service Set Identifier, SSID) 管理员还必须为该AP分配一个信道号。
  • WiFi丛林(WiFi jungle)是一个任意物理位置,在这里无线站点能从两个或多个AP中收到很强的信号。
  • 802.11标准要求每个AP周期性地发送信标帧(beacon frame),每个信标帧包括该AP 的SSID和MAC地址
  • 被动扫描:扫描信道和监听信标帧的过程。
  • 主动扫描:通过向位于无线主机范围内的所有 AP 广播探测帧完成的。AP 用一个探测响应帧应答探测请求帧。无线主机则能够在响应的 AP 中选择某 AP 与之相关联。

image-20241222114918980

802.11 MAC协议

  • 我们将无线设备或AP称为站点(station),它们共享多个接入信道

  • 802.11的设计者为802. 11无线LAN选择了一种随机访问协议。这个随机访问 协议称作带碰撞避免的CSMA ( CSMA with collision avoidance),或简称为CSMA/CA

  • 尽管以太网 和802. 11都使用载波侦听随机接入,但这两种MAC协议有重要的区别:

    • 首先,802. 11 使用碰撞避免而非碰撞检测。
    • 其次,由于无线信道相对较高的误比特率,802. 11 使用链路层确认/重传(ARQ)方案,(不同于以太网)。
  • 802.11 MAC协议并未实现碰撞检测。这主要由两个重要的原因所致:

    • 检测碰撞的能力要求站点具有同时发送(站点自己的信号)和接收(检测其他站 点是否也在发送)的能力。因为在802. 11适配器上,接收信号的强度通常远远小 于发送信号的强度,制造具有检测碰撞能力的硬件代价较大。
    • 更重要的是,即使适配器可以同时发送和监听信号(并且假设它一旦侦听到信道 忙就放弃发送),适配器也会由于隐藏终端问题和衰减问题而无法检测到所有的碰 撞

由于802. 11无线局域网不使用碰撞检测,一旦站点开始发送一个帧,它就完全地发送该帧

802.11 使用链路层确认/重传(ARQ)

目的站点收到一个通过 CRC 校验的帧后,它等待一个被称为**短帧间间隔(SIFS)**的一小段时间,然后发挥一个确认帧。如果发送站点在给定的时间内未收到确认帧,它假定出现了错误并重传该帧,使用 CSMA/CA 协议访问该信道 。如果在若干固定次重传后仍未收到确认,发送站点将放弃发送并丢弃该帧。

image-20241222115409912

  1. 如果某站点最初监听到信道空闲,它将在一个被称为**分布式帧间间隔(DIFS)**的段时间段后发送该帧。
  2. 否则,该站点选取一个随机回退值并且在侦听信道空闲时递减该值。当侦听到信道忙时,计数值保持不变。
  3. 当计数值减为 0 时(只可能发生在信道被侦听为空闲时),该站点发送整个数据帧并等待确认。
  4. 如果收到确认,发送站点知道它的帧已被目的站正确接收了。如果该站点要发送另一个帧,它将从第二步开始 CSMA/CA 协议。如果未收到确认,发送站点将重新进入第二步中的回退阶段,并从一个更大的范围内选取随机值。

在以太网的 CSMA/CD 的多路访问协议下,一旦侦听到信道空闲,站点开始发送。然而,使用 CSMA/CA, 该站点在倒计数时抑制传输,即使它侦听到该信道空闲也是如此。为什么 CSMA/CD 和 CSMA/CA 采用了不同的方法?

  • 在 CSMA/CD 中碰撞不是一个严重的问题,因为两个站点检测到碰撞后等都会放弃它们的发送,从而避免了由于碰撞而造成的该帧剩余部分的无用发送。
  • 在 802.11 中,并不检测碰撞和放弃发送,遭受碰撞的帧仍将被完全传输。因此要尽可能避免碰撞。如果两个站点侦听到信道忙,它们都将立即进入随机回退,希望选取一个不同的回退值。如果这些值的确不同,一旦信道空闲,其中的一个站点将在另一个之前发送,并且“失败站点”将会听到“胜利站点”的信号,冻结它的计数器,并且在胜利站点完成传输之前一直抑制传输,避免了高代价的碰撞。
  • 使用 802.11 仍然可能出现碰撞的情况:1️⃣ 两个站点可能相互是隐藏的;2️⃣ 两者可能选择了非常靠近的随机回退值

处理隐藏终端

802.11 MAC协议也包括了一个极好(但为可选项)的预约方案,以帮助在出现隐藏终端的情 况下避免碰撞。

image-20241222151145124

为什么隐藏终端会导致出现问题?

假设站点H1正在传输一个帧,并且 在H1传输的中途,站点H2要向AP发送一个帧。由于H2未听到来自H1的传输,它将首先等待一个DIFS间隔,然后发送该帧,导致产生了一个碰撞。从而在H1和H2的整个发送阶段,信道都被浪费了。

为了避免这一问题,IEEE 802.11协议允许站点使用一个短请求发送(Request to Send, RTS)控制帧和一个短允许发送 (Clear to Send, CTS)控制帧预约对信道的访问

image-20241222151315105

当发送方要发送一个data帧 时,它能够首先向AP发送一个RTS帧, 指示传输DATA帧和确认(ACK)帧需要的总时间。当AP收到RTS帧后,它广播 一个CTS帧作为响应。该CTS帧有两个目的:给发送方明确的发送许可,也指示其 他站点在预约期内不要发送。

在上例中:

  • 传输 DATA 帧前,H1 首先广播一个 RTS 帧,指示传输 DATA 帧和确认(ACK)帧需要的总时间,该帧能被其范围内包括 AP 在内的所有站点听到。
  • AP 然后用一个 CTS 帧 进行广播响应,该帧也被其范围内的包括 H1 和 H2 在内的所有站点听到。目的是给发送方明确的发送许可,也指示其他站点在预约期内不要发送。
  • 站点 H2 听到 CTS 后,在CTS 帧中指明的时间内将抑制发送

RTS和CTS帧的使用能够在两个重要 方面提高性能

  • 隐藏终端问题被缓解了,因为长DATA帧只有在信道预约后才被传输。
  • 因为RTS和CTS帧较短,涉及RTS和CTS帧的碰撞将仅持续短RTS和CTS帧的持续期。一旦RTS和CTS帧被正确传输,后续的DATA和ACK帧应当能无碰撞地发送。

802.11 帧结构

image-20241222153450347

  • 帧的核心是有效载荷,它通常是由一个IP数据报或者ARP分组组成。尽管这一字段 允许的最大长度为2312字节,但它通常小于1500字节,放置一个IP数据报或一个ARP 分组
  • 802.11帧包括一个循环冗余校验(CRC),从而接收方可以检 测所收到帧中的比特错误。
  • 有4个地址字段,其中每个都可以包 含一个6字节的MAC地址:
    • 地址2是传输该帧的站点的MAC地址
    • 地址1是要接收该帧的无线站点的MAC地址
    • 地址3:第一跳的MAC地址,接入点所连接的路由器的接口MAC地址

高级特色

  • 802.11 速率适应:如果一个节点连续发送两个帧而没有收到确认,该传输速率降低到前一个较低的速率。如果 10 个帧连续得到确认,或如果用来跟踪自上次降速以来时间的定时器超时,该传输速率提高到上一个较高的速率。
  • 功率管理:一个节点能够明显地在睡眠和唤醒状态之间交替。

移动管理

如果一个移动实体在移动过 程中能够保持其IP地址不变,从应用的角度,移动性就变得不可见

名词介绍:

  • 归属网络:在一个网络环境中,一个移动节点(智能手机)的永久居所被称为归属网络
  • 归属代理:在归属网络中代表移动节点执行移动管理功能的实体叫归属代理
  • 外部网络:移动节点当前所在网络叫作外部网络被访网络
  • 外部代理:在外部网络中帮助移动节点做移动管理功能的实体称为外部代理外部代理的作用之一是为移动节点创建一个所谓的转交地址(COA),该 COA 的网络部分与外部网络的网络部分相匹配 ,外部代理的第二个作用就是告诉归属代理,该移动节点在它的(外部代理的)网络中且具有给定的COA
  • **通信者(**correspondent):就是希 望与该移动节点通信的实体

image-20241222152004387

当某移动节点位于一个外部网络时,所有指向此节点固定地址的流量需要导向外部网络

此一个移动节点可与两个地址相关联,即其永久地址(permanent address)(类比于流动青年的家 庭地址)与其COA,该COA有时又称为外部地址(foreign address)(类比于流动青年当前居 住的房屋地址)。

间接路由选择

image-20241222152312902

通信者只是将数据报寻址到移动节点的固定地址,并将数据报发送到网络 中去,完全不知道移动节点是在归属网络中还是正在访问某个外部网络,因此移动性对于通信者来说是完全透明的。这些数据报就像平常一样首先导向移动节点的归属网络。

image-20241222152451449

直接路由选择

三角路由选择问题 (triangle routing problem) 该问题是指即使在通信者与移动节点之间存在一条更有效的路由,发往移动节点的数据报也要先发给归属代理,然后再发送到外部网络。

  • 间接路由选择会引起三角路由选择问题
  • 直接路由选择克服了三角路由选择的低效问题,但却是以增加复杂性为代价的。

image-20241222152633038

  • 通信者所在网络中的一个通信者代理先知道该移动节点的COA,这可以通过让通信者代理向归属代理询问得知,这里假设与间接路由选择情况类似,移动节点具有一个在归属代理注册过的最新的 COA,与移动节点可以执行外部代理的功能相类似,通信者本身也可能执行通信者代理的功能。在图中显示为步骤1和步骤2。
  • 通信者代理然后将数据报直接通过隧道技术发往移动节点的COA,这与归属代理使用的隧道技术相类似,参见图中步骤3 和步骤4。

**锚外部代理:**我们将首次发现移动节点的外部网络中的外部代理标识为锚外部代理

  • 当移动节点到达一个新外部网络后,移动节点向新的外部代理注册(步骤3)
  • 新外部代理向锚外部代理提供移动节点的新COA (步骤4)。
  • 当锚外部代理收到一个发往已经离开的移动节点的封装数据报后,它可以使用新的COA重新封装数据报并将其转发给该移动节点(步骤5)。
  • 如果移动节点其后又移到另一个外部网络中,在该被访网络中的外部代理随后将与锚外部代理联系,以便建立到该新外部网络的转发。

image-20241222152902343

移动IP

支持移动性的因特网体系结构与协议合起来称为移动IP ,当前的标准[RFC 5944]规定到移动节点使用间接路由选择 的方法。

移动IP标准由三部分组成:

  • 代理发现。移动IP定义了一个归属代理或外部代理用来向移动节点通告其服务的协议,以及移动节点请求一个外部代理或归属代理的服务所使用的协议。
  • 向归属代理注册。移动IP定义了移动节点和/或外部代理向一个移动节点的归属 代理注册或注销COA所使用的协议。
  • 数据报的间接路由选择。该标准也定义了数据报被一个归属代理转发给移动节点 的方式,包括转发数据报使用的规则、处理差错情况的规则和几种不同的封装形式

image-20241222154150591

image-20241222154405926