计算机网络
男大学生自用 99 新笔记
第一章 绪论¶
1.1 计算机网络定义及其特点¶
计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路(硬件)连接起来,由功能完善的软件实现资源共享和信息传递的系统。
计算机网络向用户提供的两个最重要的功能:
- 数据通信(连通性):计算机网络最基本==最重要== 的功能。
- 资源共享
网络:若干个节点(node)以及连接节点的链路(linker)组成,节点可以为计算机,集线器,交换机,路由器等
1.2 互联网概述¶
-
互联网发展的三个阶段:
- 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。
- 第二阶段:建成三级结构的互联网:主干网、地区网和校园网(或企业网)。
- 第三阶段:形成多层次的ISP(Internet Service Provider 互联网服务提供者)结构的互联网。 分为不同层次的 ISP : 主干 ISP,地区 ISP,本地 ISP
-
基于 ISP 的多层结构的互联网的概念示意图
- 正常位于不同主干 ISP 的计算机通过 ISP 过程:主机 A->本地 ISP->地区 ISP-》主干 ISP->地区 ISP->本地 ISP->主机 B
-
IXP(Internet exchange Point 互联网交换点) : 允许两个网络直接连接并交换分组,不在需要通过第三个网络来交换;
- 典型的 IXP 有由多个网络交换机组成: 工作在数据链路层的网络交换机,局域网连接交换机
- IXP 能更快地转发分组
-
internet 和 Internet 的区别:
- \(internet\):通用名词,它泛指由多个计算机网络互连而成的网络。
- \(Internet\):专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用 TCP/IP 协议族作为通信的规则,且其前身是美国的 ARPANET。
-
制定 Internet 的正式标准经历过程:
- 互联网草案(Internet Draft)
- 建议标准(Proposed Standard) ---此阶段就成为 RFC(Request For Comments)
- 草案标准(Draft Standard)
- 互联网标准(Internet Standard)
1.3 互联网的组成 P8¶
-
计算机网络的组成的分类
- 从组成部分看: 一个完整的计算机网络主要由硬件, 软件, 协议组成
-
从工作方式
- 边缘部分:由所有连接在互联网上的主机组成。这部分由用户直接使用,用来进行通信和资源共享。
- 核心部分: 由大量的网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)
-
从功能组成看: 通信子网和资源子网
- 通信子网: 传输介质, 通信设备和相应的网络协议
- 资源子网: 实现资源共享功能的设备及其软件的集合
-
计算机之间通信:不同主机之间的进程相互通信
-
处于边缘部分的用户通信方式 P9-P10
- 客户服务器方式(C/S 方式):即 Client/Server 方式。(客户是服务的请求方,服务器是服务的提供方)
- 对等方式(P2P 方式):即 Peer-to-Peer 方式。(对等连接中的每一个主机既是客户又同时是服务器)
-
Internet 的核心部分:路由器(router),专用计算机,转发收到的分组。
-
核心部分的交换技术 P11-15
- 电路交换的三个阶段:建立连接——通话——释放连接在通话时,两用户之间始终占用端到端的资源,而由于绝大部分时间线路都是空闲的,所以线路的传输速率往往很低。
- 分组交换的组成:报文、首部、分组。采用存储转发技术,即收到分组——存储分组——查询路由(路由选择协议)——转发分组。优点:高效、灵活、迅速、可靠。缺点:时延、开销。关键构件:路由器。
- 报文交换整个报文传送到相邻结点,全部存储下来之后查询转发表,转发到下一个结点。
-
- 电路交换︰端对端通信质量因约定了通信资源获得可靠保障,对连续传送大量数据效率高。
- 报文交换:无须预约传输带宽,动态逐段利用传输带宽对突发式数据通信效率高,通信迅速。
- 分组交换∶具有报文交换之高效、迅速的要点, 且各分组小, 路由灵活, 网络生存性能好
1.4 计算机网络的类别 P17¶
- 按分布范围分:
- 广域网(WAN Wide Area Network )
- 城域网(MAN Metropolitan )
- 局域网(LAN Local)
- 个人局域网(PAN/WPAN Wireless Personal )
- 按网络拓扑结构分:星型网、树型网、环型网、总线网
- 按传输带宽分:基带网、宽带网
- 按使用范围分:公用网、专用网
- 按速率分:高速网、中速网、低速网
- 按通信传播方式分:广播式、点到点式
- 广播式网络:共享公共通信通道
- 点对点网络:使用分组存储转发和路由选择机制 性能指标(P18):速率、带宽、时延
- 局域网基本采用广播式网络, 广域网基本采用点对点网络
1.5 计算机网络的性能指标¶
-
速率(data rate/bit rate):指连接在计算机网络上的主机在数字信道上传送数据的速率
- 也称 数据传输速率, 数据率, 比特率
- 单位:
比特/秒
,b/s
(bps
) - 如 100M 以太网,实际是指 100Mb/s。往往是指额定速率或标称速率
-
带宽(bandwidth):数字信道所能传送的最高速率
- 单位:
比特/秒
,b/s
(bps
) - 原本表示通信线路允许通过的信号频带范围(频带宽度)
- 单位:
-
吞吐量(throughput):单位时间内通过某个网络(或信道、接口)的实际数据量。其绝对上限值等于带宽。
-
时延(delay/latency):数据(一个报文或分组、甚至比特)从网络(或链路)的一段传送到另一端的时间,也称延迟。
- 发送时延 (传输时延):主机或路由器发送数据帧所需的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。也成传输时延。 - $发送时延 = 数据帧长度(b) (分组长度,数据总量) / 信道带宽 (b/s) $
- 传播时延:电磁波在信道中传输一定距离所需划分的时间 - $传播时延 = 信道长度(m) / 传播速率(m/s) $
- 处理时延:主机或路由器处理收到的分组所花费的时间。包括分析分组首部,提取分组数据部分,差错检测,查找路由等
- 排队时延:分组在输入队列中等待处理的时间加上其在输出队列中等待转发的时间。分组转发的时候,经过诸多路由器确定转发接口后,还要在输出队列中排队等待转发,即排队时延
- 综上:
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
- 注:对于高速网络链路,提高的是发送速率而不是传播速率
- 时延带宽积:\(时延带宽积 = 传播时延 * 带宽\)。表示链路的容量。
- 往返时间 RTT(Round-Trip Time):从发送方发送数据开始,到发送发收到接收方的确认为止,所花费的时间。
- 信道利用率:某信道有百分之几是被利用的(有数据通过)
- \(信道利用率 = 有数据通过时间 / (有+无)数据通过时间\)
- 网络利用率 : 全网络的信道利用率的加权平均值
- 信道或网络利用率过高会产生非常大的时延, \(当前时延 = 网络空闲的时延/(1-网络利用率)\ ,即 D = \frac{D_0}{1-U}\)
1.6 计算机网络的体系结构 P25¶
-
网络协议:简称协议,是为了进行网络中的数据交换而建立的规则、标准或约定,是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,而要实现本层协议,还需要使用下一层提供的服务。
-
网络协议的三要素
- 语法:传输数据的格式
- 语义:规定了所要完成的功能 (比如, 需要发出何种控制信息,完成何种动作以及做出何种响应)
- 同步:各种操作的条件, 操作顺序的详细说明
-
几个概念
- 实体:第 n 层的活动元素称为 n 层实体。同一层的实体叫对等实体。
- 接口:上层使用下层服务的入口
- 服务:下层为相邻上层提供的功能调用。
- 体系结构(architecture)简称分层结构,是计算机网络的各层及其协议的集合。
-
7 层OSI 参考模型:
- 物理层、数据链路层、网络层:提供点到点的服务
- 传输层、会话层、表示层、应用层:提供端到端的服务
- 低三层(物理层、数据链路层、网络层)统称为资源子网, 为联网附加的通信设备, 完成数据的传输功能
-
4 层TCP/IP 参考模型:网络接口层、网际层 IP、运输层、应用层
- TCP/IP 设计之初就考虑到异构网互联问题,将 IP 作为重要层次;而 OSI 参考模型先于协议发明,不偏向特定协议。
-
两者常考的异同点:
- OSI 参考模型网络层是「无连接+面向连接」,而 TCP/IP 模型是「无连接」的;
- OSI 参考模型传输层是「面向连接」,而 TCP/IP 模型是「无连接+面向连接」。
- 广泛应用, 成为了事实上的国际标准
-
五层协议的体系结构(综合了 OSI 和 TCP/IP 的优点)
-
物理层:物理层的任务就是透明地传送比特流。
- 注意:传递信息的物理媒体,如双绞线、同轴电缆、光缆等,是在物理层的下面,当做第 0 层。 - 物理层还要确定连接电缆插头的定义及连接法。 - 数据单位:
比特
2. 数据链路层:将网络层交下来的 IP 数据报组装成帧,在两个相邻结点间的链路上”透明“的传送数据。
- 每一帧包括数据和必要的控制信息(同步信息、地址信息、差错控制等)。 - 数据单位:`帧`
-
网络层:为分组交换网上的不同主机提供通信服务。选择合适的路由,使源主机运输层所传下来的分组能通过网络中的路由器找到目的主机。
- 数据单位:
分组(IP数据报/数据报)
-
传输层:向两个主机中进程间的通信提供通用的数据传输服务。
- TCP(Transmission control Protocol): 提供面向连接的,可靠的数据传输服务。 数据单位:
报文段
- <font color='#66ccff'>UDP</font>(User Datagram Protocol): 提供无连接的,尽最大努力的数据传输服务。 数据单位:`用户数据报`
-
应用层:直接为用户的应用进程提供服务(HTTP、FTP 等),通过应用进程间的交互来完成特定网络应用 - 数据单元:报文。
- PDU(Protocol Data Unit)协议数据单元,对等层次之间传送的数据单元。
- 一些概念
- 实体:任何可发送或接受信息的硬件或软件进程。
- 协议:控制对等实体间通信的规则集合。在协议控制下,两个对等实体间通信使得本层能够向上一层提供服务。实现本层协议,还需要使用下面一层提供的服务。 - 服务:有下层向上层提供层间接口提供的。只有那些能被上一层实体“看得见”的功能,才能称之为服务。
- 使用本层服务的实体只能看见服务而无法下面的协议。即下面的协议对上面的实体使透明的。
- SAP(Service Access Point):同一系统中相邻两层的实体进行交互的地方(抽象概念) - SDU(Service Data Unit):层与层之间交换的数据的单位。
-
第二章 应用层¶
- 网络应用的原理与实现
- 应用层所需的网络服务
- 客户和服务器
- 进程和传输层接
- 创建网络应用程序
- 套接字接口
- 通过观察流行的网络应用,学习相关协议
- Web:HTTP
- 电子邮件:SMTP/POP3 /IMAP
- 域名解析:DNS
- 对等文件分发:P2P
- 地址分配:DHCP(网络层)
2.1 应用层协议原理¶
Principles of network applications
2.1.1 网络应用程序体系结构¶
Network application structure
应用程序体系结构(application architecture)由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。现代网络应用程序中所使用的两种主流体系结构:
一. 客户-服务器体系结构¶
Client-server architecture
-
Server 服务器
- 总是在线(always on host) 1. 永久的 IP 地址(permanent IP address) 1. 配置在数据中心(often in data centers)
-
Client 客户机 - 只与服务器通信 5. 可以间歇性(intermittently)地连接服务器 5. 可以拥有动态地址 5. 客户之间不直接联系
二. P2P 体系结构¶
Peer-peer architecture
- 没有一直在线的服务器
- 端与端之间直接进行连接
- 自拓展性(self-scalability),每个对等方通过向其他对等方分发文件为系统提供服务能力
-
对等方可间歇性的被连接并且可以改变 IP 地址;
2.1.2 进程通信¶
Process communicating
用操作系统的术语来说,进行通信的实际上是进程(process)而不是程序;在两个不同端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。
一. 客户和服务器进程¶
- 客户进程:发起通信的进程
- 服务进程:在会话开始时等待联系的进程;
二. 进程与计算机网络之间的接口¶
Socket
进程通过一个称为套接字(Sockets)的软件接口向网络发送报文和从网络接受报文。
- 连接应用层和传输层
由于该套接字是建立网络应用的可编程接口,因此套接字被称为应用程序和网络之间的应用程序编程接口(Application Programming Interface,API)
三. 进程寻址¶
Addressing processes
- 主机地址 👉 IP 地址(IP address)
- 目的主机指定接受进程的标识符 👉 目的地端口号(port number)
2.1.3 可供应用程序使用的运输服务¶
Transport service used in application
- 可靠数据传输(reliable data transfer)
- 一些应用需要 100%可靠数据传输
- 一些应用允许丢包(loss);
-
吞吐量(Throughout)
- 具有吞吐量要求是应用程序被称为带宽敏感的应用(bandwidth-sensitive application)
- 弹性应用(elastic application) 能够根据当时可用的带宽或多或少地利用可供使用的吞吐量
-
定时(Timing)
- 低延时(low delay) 要求;
-
安全(Security)
- 加密技术(encryption)、数据完整性(data integrity)
2.1.4 因特网提供的运输服务¶
Transport protocols services
一. TCP 服务¶
- 面向连接的服务(connection-oriented):报文开始流动之前,TCP 让客户和服务器互相交换运输层控制信息(握手阶段),握手阶段后,一条 TCP 连接(TCP connection)就在两条进程的套接字之间建立
- 可靠的数据传送服务(reliable transport):无差别、按适当顺序交付所有发送的数据
- 拥塞控制机制(congestion control)
二. TCP 安全¶
-
安全套接字层(Secure Sockets Layer,SSL) 提供了关键的进程到进程的安全性服务。
- 我们平时上网冲浪时,网址前面的 http 与 https 的关系其实就是 http + SSL = https
-
SSL
- 用于加密, 数据完整性, 端点鉴别
- 位于应用层, 应用程序使用 SSL 库, 想 SSL 套接字传输明文, SSL 加密该数据并将其传递给 TCP 套接字, 经由因特网传输, 由接收方 SSL 进行解密
三. UDP 服务¶
- 提供一种不可靠数据传送服务(unreliable data transfer)
- 当进程将报文发送至 UDP 套接字时,UDP 并不能保证该报文将到达接收进程
2.1.5 应用层协议¶
Application-layer protocol
应用层协议(Application-layer protocol) 定义了运行在不同端系统上的应用程序进程如何相互传递报文。
2.1.6 网络应用¶
- Web
- 电子邮件
- 目录服务
- 流式视频
- P2P
- 。。。
2.2 Web 和 HTTP¶
Web and http
2.2.1 HTTP 概况¶
HTTP overview
Web 的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP),它是 Web 的核心
- Web 页面(Web page)(也叫文档)是由对象组成。一个对象(object)只是一个文件,诸如一个 HTML 文件、一个 JPEG 图片、一个 Java 小程序等等
- 多数 Web 页面包含HTML 基本文件(base HTML) 以及几个引用对象
- Web 浏览器(Web browser) 实现了 HTTP 的客户端;Web 服务器(Web server) 实现了 HTTP 的服务器端
- HTTP 使用 TCP 作为它的支撑运输协议
- 因为 HTTP 服务器并不保存关于客户的任何信息,所以我们会说 HTTP 是一个无状态协议(stateless protocol);
2.2.2 非持续连接和持续连接¶
Non-persistent HTTP and Persistent HTTP
一. 非持续连接¶
- TCP 连接开启
- 最多一个对象通过该 TCP 连接发送
- 该 TCP 连接关闭;
二. 持续连接¶
-
持续连接的 HTTP
- TCP 连接开启
- 多个对象通过该 TCP 连接发送
- 该 TCP 连接关闭;
-
无流水线的持续:
- 仅当前面的响应已经收到, 客户端才发出新的请求
-
每一个应用对象就需要一个 RTT
-
有流水线的持续
- 在 HTTP/1.1 为默认
- 只要客户遇到一个引用对象, 它就发送请求
-
对于所有引用的对象花费一个 RTT 时间
- 往返时间(Round-Trip Time,RTT) 定义:该时间是指一个短分组从客户到服务器然后在返回客户所需要的时间;
2.2.3 HTTP 报文格式¶
HTTP message format
HTTP 请求报文¶
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
- 请求报文的第一行叫做请求行(request line),其后继的行叫作首部行(header line)
-
请求行有 3 个字段:① 方法字段、②URL 字段和 ③HTTP 版本字段
- 方法可取
GET
,POST
,HEAD
,PUT
,DELETE
- 方法可取
- 首部行 HOST:指明了对象所在的主机;首部行 User-Agent:指明了用户代理,即浏览器类型
HTTP 请求报文通用格式:
HTTP 响应报文¶
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 ... )
- 上例响应报文包括一个初始状态行(status line),9 个首部行(header line),然后是实体体(entity boby)
- 状态行有 3 个字段:协议版本字段、状态码和状态信息
- 200 OK:请求成功
- 301 Moved Permanently:请求对象以及被永久转移
- 400 Bad Request:一个通用差错代码,该请求不能被服务器理解
- 404 Not Found:被请求的文档不在服务器上
- 505 HTTP Version Not Support:服务器不支持请求报文使用的 HTTP 协议版本
2.2.4 用户与服务器的交互:cookie🍪¶
Maintaining user/server state: cookies🍪
前面提到 HTTP 服务器为无状态的,而一个 Web 站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望把内容与用户身份联系起来。为此,HTTP 使用了 cookie🍪。
cookie 技术有 4 个组件:
- HTTP 响应报文的 cookie 首部行
- HTTP 请求报文的 cookie 首部行
- 用户端系统中保留一个 cookie 文行
- 位于 Web 站点的一个后端数据库;
2.2.5 Web 缓存¶
Web cache(proxy server)
-
Web 缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始 Web 服务器(origin server) 来满足 HTTP 网络请求的实体。
-
请求过程:
- 浏览器创建一个到 Web 缓存器的 TCP 连接,并向 Web 缓存器中的对象发送一个 HTTP 请求
- Web 缓存器进行检查,看看本地是否存储该对象副本。如果有,Web 缓存器向客户返回该对象
- 如果缓存器中没有该对象,它就打开一个与该对象的初始服务器的 TCP 连接。Web 缓存器向初始服务器发送请求,并得到初始服务器的响应
- 当 Web 缓存器接受对象后,在本地创建给对象的副本,并向客户发送响应报文返回该对象;
- 通过使用内容分发网络(Content Distribution Network,CDN),Web 缓存器正在因特网中发挥着越来越重要的作用。
2.2.6 条件 GET 方法¶
Conditional GET
尽管高速缓存器能减少用户感受到的响应时间,但引入了一个新的问题,即存放在缓存器中的副本可能陈旧的。
条件 GET 方法:
- 请求报文使用 GET 方法
- 请求报文中包含一个 If-Modified-Since:首部行;
响应报文中状态行为 304 Not Modified 表示缓存器可以使用该对象的副本。
2.3 因特网中的电子邮件¶
电子邮件三个主要组成部分:
- 用户代理(User agent)
- 邮件服务器(mail server)
- 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP);
用户代理
- 撰写、编辑、阅读邮件
- 服务器上存储的传入和传出的消息;
邮件服务器
- 邮箱(mailbox)包括用户传入的消息
- 报文队列(message queue)中为待发送的邮件报文;
SMTP 协议
- 在邮箱服务器之间传输邮件报文;
2.3.1 SMTP¶
假设 Alice 想给 Bob 发送一封简单的 ASCII 报文:
- Alice 调用她的邮件代理程序并提供 Bob 的邮件地址,撰写报文,然后指示用户代理发送该报文
- Alice 的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中
- 运行在 Alice 的邮件服务器上的SMTP 客户端发现了该报文队列中的这个报文,它就创建一个到运行在 Bob 的邮件服务器上的 SMTP 服务器的TCP 连接
- 经过一些初始 SMTP 握手后,SMTP 客户通过该 TCP 连接发送 Alice 的报文
- 在 Bob 的邮件服务器上,SMTP 的服务器端接受该报文。Bob 的邮件服务器然后将该报文放入 Bob 的邮箱中
- 在 Bob 方便的时候,他调用用户代理阅读该报文;
- 如果 Bob 的邮件服务器没有开机,该报文会保留在 Alice 的邮件服务器上并等待进行新的尝试,这意味着邮件并不在中间的某个邮件服务器存留。
2.3.2 与 HTTP 对比¶
-
- HTTP 主要是一个拉协议(pull protocol),TCP 连接是由想接受文件的机器发起的;
- SMTP 是一个推协议(push protocol),TCP 连接是由发送文件的机器发起
-
- SMTP 要求报文采用 7 比特 ASCII 码格式,如果含有非 7 比特 ASCII 字符,则这些数据必须按照 7 比特 ASCII 码进行编码
- HTTP 不受这种限制
-
- HTTP 把每个对象分别封装在不同的 HTTP 响应报文中
- SMTP 则把所有报文对象放在一个报文中;
2.3.3 邮件报文格式¶
2.3.4 邮件访问协议¶
Mail accss protocol
收件人的用户代理不能使用 SMTP 得到报文,因为取得报文是一个拉操作,而 SMTP 协议是一个推协议。通过引用一个特殊的邮件访问协议来解决这个问题,该协议将收件人邮件服务器上的报文传送给他的本地 PC。目前有一些流行的邮件访问协议,包括第三版的邮局协议(Post Office Protocol-Version 3,POP3)(不常用)、因特网邮件访问协议(Internet Mail Access Protocol,IMAP)以及 HTTP。
2.4 DNS:因特网的目录服务¶
Domain Name System
2.4.1 DNS 提供的服务¶
DNS:services
识别主机的两种方式:通过主机名(hostname)或者 IP 地址(IP address)。人们喜欢记忆主机名标识方式,而路由器喜欢定长的、有着层次结构的 IP 地址。域名系统的主要任务:主机名到 IP 地址转换的目录服务。
DNS 是:
- 一个由分层的DNS 服务器(DNS service) 实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议;
DNS 协议运行在 UDP 之下,使用53 号端口;
DNS 重要的服务:
- 主机名到 IP 地址的转换(hostname to IP address translation)
- 主机别名(host aliasing):应用程序调用 DNS 获取主机别名对应的规范主机名(canonical hostname) 以及主机的 IP 地址
- 邮件服务器别名(mail server aliasing)
- 负载分配(load distribution):繁忙的站点被冗余分布在多台服务器上,每台服务器运行在不同的端系统上,每个都有着不同的 IP 地址。由于这些冗余的 Web 服务器,一个 IP 地址集合于一个规范主机名相联系。当客户对映射到某处到某地址集合的名字发出一个 DNS 请求时,该服务器用 IP 地址的整个集合进行响应,但在每个回答中循环这些地址次序。因为客户通常 总是向 IP 地址排在最前面的服务器发送 HTTP 请求报文 ,所以 DNS 就在所有这些冗余的 Web 服务器之间循环分配了负载;
2.4.2 DNS 工作机理概述¶
Overview of How DNS Works
集中式设计的问题包括:
- 单点故障(a single point of failure)
- 通信容量(traffic volume)
- 远距离的集中式数据库(distant centralized database)
- 维护(maintenance);
分布式,层次数据库¶
分布式 DNS 服务器的层次结构:
- 根 DNS 服务器(root DNS servers)
- 顶级域服务器(Top-Level Domain DNS servers)
- 权威 DNS 服务器(authoritative DNS servers)
- 本地服务器(local DNS servers):不属于该服务器的层次结构,但它对 DNS 层次结构是至关重要的;
查询方式¶
- 递归查询(Recursive query)
- 迭代查询(Iterative query)
从请求主机到本地的 DNS 服务器的查询是递归的,其余的查询是迭代的。
DNS 缓存¶
在某一个请求链中,当某 DNS 服务器接收一个 DNS 回答,它能映射在本地存储器中。由于主机和主机名与 IP 地址的映射并不是永久的,DNS 服务器在一段时间后将丢弃缓存的信息。
2.4.3 DNS 记录和报文¶
DNS Record and Protocol Message
DNS 记录¶
所有 DNS 服务器存储了资源记录(Resourse Record,RR),资源记录是一个包含了下列字段的 4 元组:
- (Name, Value, Type, TTL)
下面为不同类型 Type 的 Name 和 Value:
DNS 报文¶
DNS 报文中各字段的语义如下:
2.5 P2P 文件分发¶
Peer-to-Peer File Distribution
CS 系统极大依赖于总是打开的基础设施服务器,P2P 对总是打开的服务器有最小的(或者没有)依赖。
P2P 体系结构的扩展性¶
Scalability of P2P Architectures
文件分发问题的示例图如下:
对于客户-服务器体系结构的分发时间如下:\(D_{cs}=\max\{\frac{NF}{u_s},\frac{F}{d_{min}}\}\)
对于 P2P 体系结构分发时间如下:\(D_{P2P}=\max\{\frac{F}{u_s},\frac{F}{d_{min}},\frac{NF}{u_s+\sum^N_{i=1}u_i}\}\)
P2P 和客户-服务器体系结构的分发时间随用户数量变化如下:
BitTorrent¶
参与一个特定文件分发的所有对等方的集合被称为一个洪流(torrent)。在一个洪流中的对等方彼此下载等长度的文件块(chunk) ,典型块长度为 256KB。当一个对等方下载块时,也为其他对等方上载了多个块。每个洪流具有一个基础设施节点,称为追踪器(tracker)。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性地通知追踪器它仍在该洪流中。
- 决定请求哪些块的过程:最稀缺优先(rarest first) 技术
- 决定响应哪个请求:根据当前能够以最高速率的疏通(unchoked) 的对等方提供数据的邻居,给出优先权;
2.6 视频流和内容分发网¶
Video Streaming and Content Distribution Networks
2.6.1 HTTP 流和 DASH¶
HTTP 流所有客户接受到相同编码的视频,但对不同用户或者不同时间,客户可用的带宽大小有很大不同。HTTP 的动态适应性流(Dynamic Adaptive Streaming over HTTP,DASH):视频编码成几个不同的版本,其中每个版本具有不同的比特率,对应于不同的质量水平。客户动态地请求来自不同版本且长度为几秒的视频段数据块。
每个视频版本存储在 HTTP 服务器中,每个版本都有一个不同的 URL。HTTP 服务器也有一个告示文件(manifest file),为每个版本提供了一个 URL 及其比特率。
2.6.2 内容分发网¶
为了应对向分布于全世界的用户分发巨量视频数据的挑战,几乎所有主要的视频流公司都利用内容分发网(Content Distribution Network,CDN)。CDN 管理分布在多个地理位置上的服务器,在它的服务器中存储视频的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的 CDN 位置。CDN 可以是专用 CDN(private CDN),即它由内容提供商自己所拥有;另一种 CDN 可以是第三方 CDN(third-party CDN),它代表多个内容提供商分发内容。
CDN 操作¶
当客户请求一个特定视频时,CDN 必须截获该请求,以便能够:
- 确定此时适合用于该客户的 CDN 服务器集群
- 将客户的请求重定向到该集群的某台服务器;
CDN 操作步骤如下:
2.7 套接字编程:生成网络应用¶
Socket Programming: Creating Network Applications
2.7.1 UDP 套接字编程¶
2.7.2 TCP 套接字编程¶
第三章 运输层¶
3.1 概述和运输层服务¶
Introduction and Transport-Layer Services
运输层协议为运行在不同的主机上的应用进程之间提供了逻辑通信(logic communication) 功能从应用程序的角度看,通过逻辑通信,运行不同进程的主机好像直接相连一样。逻辑通信的概念如下:
运输层协议是==在端系统中== 而不是在路由器中实现。在发送端,运输层将从发送应用程序接收到的报文转换成传输层分组,用因特网术语来讲该分组称为运输层报文段(segment)。
3.1.1 运输层和网络层的关系¶
Relationship Between Transport and Network Layers
在协议栈中,运输层刚好位于网络层之上。网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。运输协议能够能够提供的服务常常受制于底层网络层协议的服务模型。如果网络层协议无法为主机之间发送的运输层报文段提供时延或带宽保证的话,运输层协议也就无法为进程之间发送的应用程序报文提供时延或带宽保证。
- 运输层是端到端(端口), 网络层是点到点(主机到主机)
即使底层网络协议是不可靠的,也就是说网络层协议会使分组丢失、篡改和冗余,运输层协议也能为应用程序提供可靠的数据传输服务。另一方面,即使网络层不能保证运输层报文段的机密性,运输协议也能使用加密来确保应用程序报文不被入侵者读取。
3.1.2 Internet 运输层概述¶
Overview of the Transport Layer in the Internet
-
因特网提供两种不同的可用的运输层协议。
- UDP(User Datagram Protocol) : 为调用它的应用程序提供了一种不可靠、无连接的服务;
- TCP(Transmission Control Protocol): 为调用它的应用程序提供了一种可靠的、面向连接的服务。
- 拥塞控制, 流量控制, 连接建立
-
因特网网络层协议有一个名字叫IP(Internet Protocol),即网际协议,IP 的服务模型是尽力而为交付服务(best-effort delivery service), 所以 IP 被称为不可靠服务(unreliable service)
- UDP 和 TCP 最基本的责任是,将两个端系统间 IP 的交付服务扩展为运行在端系统上的两个进程之间的交付服务。
- 将主机间交付扩展到进程间交付被称为运输层的多路复用(transport-layer multiplexing)与多路分解(demultiplexing)。
3.2 多路复用与多路分解¶
Multiplexing and Demultiplexing
-
运输层的多路复用与多路分解,也就是将由网络层提供的主机到主机的交付服务延伸到为运行在主机上的应用程序提供进程到进程的服务。
- 一个进程(作为网络应用的一部分)有一个或多个套接字(socket),它相当于从网络向进程传递数据和从进程向网络传递数据的门户。
- 进程交付过程:
-
多路分解和多路复用
- 多路分解(Demultiplexing):在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字,即将运输层报文段的数据交付到正确的套接字的工作;
-
多路复用(Multiplexing):在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文传递到网络层;
\(应用层一个端口(套接字)发送信息\stackrel{运输层多路复用}{\longrightarrow}网络层\stackrel{运输层多路分解}{\longrightarrow}分配到对于的端口(套接字)\)
-
运输层多路复用要求:
- 套接字由唯一标识符;
- 每个报文段有特殊字段来指示该报文段所要交付的套接字;
- 这些特殊字段是源端口号字段(source port number field)和目的端口号字段(destination port number field),如下图所示:
- 端口号是一个 16 比特的数,其大小在 0~65535 之间。0~1023 范围的端口号称为周知端口号(well-know port number),是受限制的(可能被占用)。 - 常用的熟知端口
UDP 的 socket 表示¶
UDP 套接字采用二元组表示(源端口, 目的端口)
具体过程如下图所示:
TCP 的 socket 表示¶
TCP 套接字采用四元组表示(源 IP 地址, 源端口号, 目的 IP 地址, 目的端口号)
下图为两个客户使用相同的目的端口号(80)与同一个 Web 服务器应用通信:
3.3 无连接运输:UDP¶
Connectionless Transport: UDP
-
使用 UDP 时,在发送报文段之前,发送方和接收方的运送层实体之间没有握手,UDP 被称为无连接的(connectionless)。许多应用更适合用 UDP 的原因如下:
- 无拥塞控制(no congestion control): UDP 能尽可能快的传输报文
- 无须连接建立(no connection establishment) & 无连接状态(no connection state): 有连接的服务会增加时延, 发送和接受方无需维护连接状态
- 分组首部开销小(small header size)
-
流行的因特网应用及其下面的运输协议如下图:
3.3.1 UDP 报文段结构¶
UDP Segment Structure
- 报文段包括上面提到的源端口号和目的端口号, 还有
- 长度字段,指明 UDP 报文段中的字节数(首部 ➕ 数据);
- 检验和字段来检查在该报文段中是否出现差错。
- 报文段结构如下图:
3.3.2 UDP 检验和¶
UDP Checksum
-
目的 : 在传送的报文段中检查“差错”
-
校验和的计算
-
校验和计算需要用到伪首部, UDP 首部, UDP 数据部分
- 伪首部是在计算校验和时临时添加在 UDP 数据报前的, 并不会向下(网络层)传送或是向上(应用层)递交
-
计算流程: (以发送方为例)
-
校验和字段先置 0
-
将伪首部, UDP 首部, UDP 数据部分以 16bit(字)为单位划分
- 数据部分如不足 16 位补 0
-
对 16 位字按位求和, 最高位进位必须加到最低位上(回卷)
-
最后对结果求反码, 放入校验和字段
-
- 接收方,全部的 16 比特字(包括检验和)加在一起,如果分组中没有差错,接收方处该和将是 1111111111111111,如果比特字中出现 0,那么就认为该分组出现差错。
-
3.4 可靠数据传输原理¶
Principles of Reliable Data Transfer
可靠数据传输的框架:为上层实体提供的服务抽象是:数据可以通过一条可靠的信道进行传输。如下图所示:
实现这种服务抽象是可靠数据传输协议(reliable data transfer protocol,rdt) 的责任,下图为可靠数据传输协议的相关接口(Interface):
3.4.1 构造可靠数据传输协议 [别看]¶
Building a Reliable Data Transfer Protocol
经完全可靠信道的可靠数据传输:rdt1.0¶
发送方和接收方的表示使用 有限状态机(Finite-State Machine,FSM) 定义
- 如果对一个事件没有动作,或没有就发生发生而采取了一个动作,我们将在横线上方或下方使用符号\(\Lambda\) ,以分别明确地表示缺少动作或事件。
- ——上方表示表示状态转换条件, ——下方表示状态转换的动作
我们考虑最简单的情况,即底层信道是完全可靠的,我们称该协议为 rdt1.0,发送方和接收方的 FSM 定义如下:
经具有比特差错信道的可靠数据传输:rdt2.0¶
底层信道更为实际的模型是分组中的比特可能受损的模型。
- 在分组传输、传播或缓存的过程中,这种比特差错通常会出现在网络的物理部件中。在接收方得到比特差错的信息时,需要发送方进行重传。
-
在计算机网络环境中,基于这种重传机制的可靠数据传输协议称为自动重传请求(Automatic Repeat reQuest,ARQ)协议。ARQ 协议中还需要另外三种协议来处理存在比特差错的情况:
- 差错检测:发送方同时发送检测和(checksum)到接收端判断是否出现比特差错;
- 接收方反馈:
- 肯定确认(Acknowledgement,ACK):接收方告诉发送方包数据无差错;
- 否定确认(Negative acknowledgement,NAK):接收方告诉发送方包数据有错误;
- 重传:接收方收到有差错的分组时,发送方将重传该分组文;
- rdt2.0 的 FSM 如下图:
- 当发送方处于等待 ACK 或 NAK 的状态时,它不能从上层获得更多的数据;这就是说,在等待 ACK/NAK 期间 rdt_send()事件不可能出现;仅当接收到 ACK 并离开该状态时才能发生这样的事件。 因此,发送方将不会发送一块新数据,除非发送方确信接收方已正确接收当前分组。由于这种行为,rdt2.0 这样的协议被称为停等(stop-and-wait)协议。
rdt2.1¶
- rdt2.0 协议并没有考虑ACK 和 NAK 受损(受损之后)的情况,为了解决这一问题,就是在数据分组中添加一新字段,让发送方对其数据分组编号,即将发送数据分组的序号(sequence number)放在该字段。于是,接收方只需要检查序号即可确定收到的分组是否一次重传。
- rdt2.1 的 FSM 如下图:
- 发送方 :
- 接收方 :
- rdt 总结
- 发送方
- 分组新增了序列号(只需要使用 0,1 两个序列号即可)
- 必须检查是否收到 ACK/NAK
- 状态增加, 反映出当前正在发送的分组是 0 还是 1
- 接收方
- 必须检查接收到的分组是否冗余(根据状态的 0/1)
- 注意 : 接收方不可能知道最新发送的 ACK/NAK 是否已经被发送方正确接收
- 发送方
rdt2.2¶
如果收到受损的分组,则接收方将发送一个否定确认。如果不发送 NAK,而是对上次正确接收的分组发送一个 ACK,我们也能实现与 NAK 一样的效果。
发送方接收到对同一个分组的两个 ACK,即冗余 ACK(duplicate ACK)后,就知道接收方没有正确接收到跟在被确定两次的分组后面的分组。
rdt2.2 的 FSM 如下图所示:
- 发送方 :
- 接收方 :
经具有比特差错的丢包信道的可靠数据传输:rdt3.0¶
- 因为特别大的时延,发送方和接收方的信道中引入了冗余数据分组(duplicate data packet) 的可能性;
- 需要一个倒计数定时器(countdown timer),实现基于时间的重传机制;
- rdt3.0FSM 如下图:
- 发送方 :
- 接收方 :
因为分组序号在 0 和 1 之间交替,因此 rdt3.0 有时被称为比特交替协议(alternating-bit protocol)。运行如下图所示:
- rdt3.0 说明
- 发送方发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。
- 分组和确认都必须进行编号。
- 超时计时器的超时时间设定,应当比数据在分组传输的平均往返时间更长一些。
- 发送方最终总是可以收到对所有发出的分组的确认。如果发送方不断重发分组但总是收不到确认,就说明通信线路太差,不能进行通信。
- 这种可靠传输协议常称为自动重传请求 ARQ(Automatic Repeat reQuest)。意思是重发的请求是自动进行的,接收方不需要请求发送方重发某个出错的分组。
3.4.2 流水线可靠数据传输协议¶
Pipelined Reliable Data Transfer Protocols
- 定义发送方(或信道)的利用率(utilization)为:发送方实际忙于将放送比特送进信道的那部分时间与发送时间之比。 对于一个等停协议的发送方利用率 \(\textcolor{#66ccff}{U_{sender}=\frac{L/R}{RTT+L/R}}\) L/R:发送时延
- 解决该问题的方法是:不以停等方式运行,允许发送方发送多个分组而无须等待确认。 因为许多从发送方向接收方输送可以看成是填充到一条流水线中,故这种技术被称为流水线(pipeline)
- 下图为停等和流水线发送示意图:
3.4.3 回退 N 帧¶
Go-Back-N,GBN
在回退 N 帧协议中,将基序号(base)定义为最早未确认分组的序号,将下一个序号(nextseqnum)定义为最小的未使用序号,则将序号范围分割成如下 4 段:
[0,base-1]
: 已经发送并得到确认的分组;[base,nextseqnum-1]
: 已经发送但未被确认的分组;[nextseqnum,base+N-1]
: 能用于那些要被立即发送的分组;[base+N,end]
: 不能使用;
那些已被发送但还未被确认的分组的许可序号范围可以被看成一个在序号范围内长度未 N 的窗口。随着协议的运行,该窗口在序号空间向前滑动。因此,N 常被称为窗口长度(window size),GBN 协议也常被称为滑动窗口协议(sliding-window protocol)。
为一个基于 ACK、无 NAK 的 GBN 协议的发送方和接收方两端的扩展 FSM 描述,因为加入了变量 base 和 nextseqnum 所以我们称其为扩展 FSM,下图为发送端的扩展 FSM 描述:
下图为接收端的 FSM 描述:
在 GBN 协议中,接收方丢弃所有失序分组。这种方法的优点是接收缓存简单,即接收方不需要缓存任何失序分组。因此,虽然发送方必须维护窗口的上下边界及 nextseqnum 在该窗口的位置,但接收方需要维护的唯一信息就是下一个按序接收的分组序号。运行中的 GBN 如下图所示:
回退 N 帧(Go-Back-N)的优缺点
- 优点:接收方丢弃所有失序分组,简单
- 缺点:发送方必须重发那些失序分组(哪怕这些分组正确到达接收方),但重发可能丢失或出错,而需要更多重发,当通信线路质量不好时,GBN 协议会带来负面的影响。
3.4.4 选择重传¶
Selective Repeat,SR
在 GBN 发送方有窗口 N 的基础上,接收方同时维护一个窗口 N,下图为 SR 发送方和接收方的序号空间:
- 对于发送方
- 上层有数据需要发送:如果发送窗口未满,发送分组,缓存未收已发送未收到确认的分组
- timeout(n): 重发分组 n,重启定时器
- ACK(n)落在[sendbase,sendbase+N]: 表明序号为 n 的分组已经收到,如果 n=sendbase,向前滑动窗口 sendbase 指针到是当前最小的未被确认的分组序号
- 对于接收方
- 分组 n 落在[rcvbase, rcvbase+N-1]且被正确接收: 发送 ACK(n)
- 新分组:缓存
- 分组序号=rcv_base: 该分组与 rcv_base 序号之后的,之前缓存的连续分组,交付到上层,向前滑动窗口到下一个未收到分组的序号
- 分组 n 落在[rcvbase-N,rcvbase-1]且被正确接收: ACK(m),表明这是之前已经确认过的分组
- 其他: 忽略
- 分组 n 落在[rcvbase, rcvbase+N-1]且被正确接收: 发送 ACK(n)
SR 具体操作如下:
3.5 面向连接的运输:TCP¶
Connection-Oriented Transport: TCP
3.5.1 TCP 连接¶
TCP Connection
- 面向连接(connection-oriented):相互发送预备报文段,以建立确保数据传输的参数
- 全双工服务(full-duplex service):如果一台主机上的进程 A 与另一台主机上的进程 B 存在一条 TCP 连接,那么应用层数据就可以在从进程 B 流向进程 A 的同时,也从进程 A 流向进程 B
- 点对点(point-to-point):即在单个发送方与单个接收方之间的连接
- 三次握手(three-way handshake):客户先发送一个特殊 TCP 报文段,服务器用另一个特殊的 TCP 报文段来响应,最后客户再用第三个特殊报文段作为响应
客户进程通过套接字,TCP 会将要发送的数据引导到该连接的发送缓存(send buffer),发送缓存是发起三次握手期间设置的缓存之一,TCP 发送缓存与接收缓存如下图所示:
TCP 可以从缓存中取出并放入报文段中数据数量限制于最大报文段长度(Maximum Segment Size,MSS),MSS 通常根据最初确认的由本地发送主机发送的最大链路层帧长度(即所谓的最大传输单元(Maximum Transmission Unit,MTU))来设置。
3.5.2 TCP 报文段结构¶
TCP Segment Structure
TCP 报文段结构如下图:
与 UDP 一样,首部包括源端口号(Source port)和目的端口号(Dest port),它被用于多路复用和多路分解来自或送到上层应用的数据,也包括检验和字段(Internet checksum),首部还包括以下字段:
- 32bit 的序号字段(Sequence number)和 32bit 的确认号字段(Acknowledgement number);
- 16bit 的接受窗字段(Receive window):用于控制流量;
- 4bit 的首部长度字段(Header length):指示了以 32bit 的字为单位的 TCP 首部长度;
- 可选和变长的选项字段(Options):用于发送方与接收方协商最大报文段长度(MSS)时,或在高速网络环境下用作窗口调节因子时使用;
- 6bit 的标志字段(flag field):
ACK
:确认字段中的值是否有效;RST
,SYN
,FIN
:用于连接建立和拆除;CWR
,ECE
:在明确拥塞通过中使用;PSH
:被置位时,指示接收方立即将数据交给上层;URG
:指示报文段中存放着被发送端上层实体置为“紧急”的数据;
- 16bit 的紧急数据指针字段(Urgent data point):指出紧急数据的最后一个字节;
序号和确认号¶
Sequence number and Acknowledgement number
一个报文段的序号(sequence number for a segment) 是该报文段首字节的字节流编号,而不是建立在传送的报文段的序列之上
TCP 是全双工的,因此主机 A 在向主机 B 发送数据的同时,也许也接收来自主机 B 的数据。从主机 B 到达的每个报文段都有一个序号用于从 B 流向 A 的数据。主机 A 填充进报文段的确认号是主机 A 期望从主机 B 收到的下一字节的序号。如下图所示:
3.5.3 往返时间的估计与超时¶
Round-Trip Time Estimation and Timeout
估计往返时间¶
-
报文段的样本 RTT(表示为 SampleRTT),在任意时刻,仅为一个已发送的但目前尚未确认的报文段估计 SampleRTT,从而产生一个接近每个 RTT 的新 SampleRTT 值。另外,TCP 绝不为已重传的报文段计算 SampleRTT;它仅为传输一次的报文段测量。
-
TCP 维持一个SampleRTT 均值(称为EstimatedRTT / RTTS),EstimatedRTT 更新方式如下:
- \(\textcolor{#66ccff}{EstimatedRTT=(1-\alpha)\times EstimatedRTT+\alpha\times SampleRTT;\quad \alpha推荐值为\alpha=0.125}\)
- 这种平均方法被称为指数加权移动平均(Exponential Weighted Moving Average,EWMA)。
-
定义 RTT 偏差DevRTT / RTTD,用于估算 SampleRTT 一般会偏离 EstimatedRTT 的程度:
- \(\textcolor{#66ccff}{DevRTT=(1-\beta)\times DevRTT+\beta\times |SampleRTT-EstimatedRTT|;\quad \beta推荐值\beta=0.25}\)
- RTTD 初值取为测量到的 RTT 样本值的一半
设置和管理重传超时间隔¶
超时重发时间(TimeoutInterval / RTO)应该大于等于 EstimatedRTT,否则,将造成不必要的重传。
在 TCP 确定重传超时间隔的设置方法如下:
- $\textcolor{#66ccff}{{TimeoutInterval / RTO} = EstimatedRTT + 4\times DevRTT} $
超时重传
- \(\textcolor{#66ccff}{TimeoutInterval(i)=\gamma*TimeoutInterval(i)};\quad \gamma =2\)
3.5.4 可靠数据传输¶
Reliable Data Transfer
TCP 在 IP 不可靠的尽力而为服务之上创建了一种可靠数据传输服务(reliable data transfer service)。为了减少多个定时器管理带来的相当大的开销,TCP 在即使有多个已发送但未确认的报文段的情况下,定时器的管理过程仅使用==单一== 的定时器。
简化的 TCP 发送方如下:
/* Assume sender is not constrained by TCP flow or congestion control, that data from above is less than MSS in size, and that data transfer is in one direction only. */
NextSeqNum=InitialSeqNumber
SendBase=InitialSeqNumber
loop (forever) {
switch(event)
event: data received from application above
create TCP segment with sequence number NextSeqNum
if (timer currently not running)
start timer
pass segment to IP
NextSeqNum=NextSeqNum+length(data)
break;
event: timer timeout
retransmit not-yet-acknowledged segment with smallest sequence number
start timer
break;
event: ACK received, with ACK field value of y
if (y > SendBase) {
SendBase=y
if (there are currently any not-yet-acknowledged segments)
start timer
}
break;
} /* end of loop forever */
超时间隔加倍¶
当发生超时事件时,TCP 重传时都会将下一次的超时间隔设为先前值的两倍;当发生其他两个事件计时器重启时,TimeoutInterval 由最近的 EstimatedRTT 值与 DevRTT 值推算得到。这种修改提供了一个形式受限的拥塞控制。
快速重传¶
当比期望序号大的失序报文段到达,接收方立即发送冗余 ACK(duplicate ACK),指示下一个期待字节的序号(其为间隔的低端的序号)。如果 TCP 发送方接收到对相同数据的 3 个冗余 ACK,TCP 就执行快速重传(fast retransmit),即在该报文段的定时器过期之前重传丢失的报文段。快速重传示例如下图:
选择确认¶
selective acknowledgment
允许 TCP 接收方有选择地确认失序报文段,而不是积累地确认最后一个正确接收的有序报文。当该机制与选择重传机制结合起来使用时,TCP 看起来就很像通常的 SR 协议。因此,TCP 的差错恢复机制最好分类为 GBN 协议与 SR 协议的混合体。
3.5.5 流量控制¶
Flow Control
TCP 通过让发送方维护一个称为接收窗口(receive window) 的变量来提供流量控制。通俗的说,接收窗口用于给发送方一个指示——该接收方还有多少可用的缓存空间。因为 TCP 是全双工通信,在连接两端的发送方都各自维护一个接收窗口。
接收窗口(rwnd)和接收缓存(RcvBuffer)如下图所示:
3.5.6 TCP 连接管理¶
TCP Connection Management
三次握手连接¶
three-way handshake
TCP 三次握手:报文交换交换过程如下:
- TCP 规定:
- SYN 报文段和 SYN+ACK 报文段都不能携带数据,但要消耗一个序号
- ACK 报文段可以携带数据,但如果不携带数据,则不消耗序号,其序号下一个数据报文段仍可使用。
四次握手关闭¶
four-way handshake
由客户端关闭一条 TCP 连接的四次握手过程如下:
TCP 状态¶
TCP State
客户 TCP 经历的典型的 TCP 状态序列如下图:
- ESTABLISHED 状态:已建立连接状态,TCP 客户能发送和接收包含有效载荷数据;
服务器端 TCP 经历的典型的 TCP 状态序列如下图:
3.6 拥塞控制原理<略>¶
Principles of Congestion Control
3.6.1 拥塞原因与代价¶
The Causes and the Costs of Congestion
- 当分组的到达速率接近链路容量时,分组经历巨大的排队时延;
- 发送方在遇到大时延时所进行的不必要重传会引起路由器利用其链路带宽来转发不必要的分组副本;
- 当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费掉;
3.6.2 拥塞控制方法¶
Approaches to Congestion Control
- 端到端拥塞控制(End-to-end congestion control):在端到端拥塞控制方法中,网络层没有为运输层拥塞控制显示支持。即使网络中存在拥塞,端系统也必须通过对网络行为的观察来判断;
- 网络辅助的拥塞控制(Network-assisted congestion control):网络辅助的拥塞控制中,路由器向发送方提供关于网络中拥塞状态的显示反馈信息;
3.7 TCP 拥塞控制¶
TCP Congestion Control
- 运行在发送方的 TCP 拥塞控制机制跟踪一个额外的变量,即拥塞窗口(congestion window,
cwnd
)。 - 拥塞窗口对一个 TCP 发送方能向网络中发送流量的速率进行限制。发送方中未被确认的数据量不会超过 cwnd 和 rwnd 中的最小值,即: $ LastByteSent-LastByteACK\le \min{cwnd,rwnd}$
因为 TCP 使用确认来触发(或计时)增大它的拥塞窗口长度,TCP 被说成是自计时(self-clocking)的。TCP 基于本地信息设置它们的发送速率的指导性原则:
- 一个丢失的报文段表意味着拥塞,因此当丢失报文段时应当降低 TCP 发送方的速率;
- 一个确认报文段指示该网络正在向接收方交付发送方的报文段,因此,当对先前未确认报文段的确认到达时,能够增加发送方的速率;
- 带宽探测;
3.7.1 TCP 拥塞控制算法¶
TCP congestion control algorithm
该算法主要包括 3 个部分:慢启动(slow-start)、拥塞避免(congestion avoidance)、快速恢复(fast recovery)。
-
慢启动(slow-start)状态,cwnd 的值以 1 个 MSS 开始, 并且每当传输的报文段首次被确认就增加 1 个 MSS, 这样, 每经过一个 RTT, cwnd 加倍
- TCP 发送速率起始很慢,但在慢启动阶段以指数增长
- TCP 慢启动如下图所示:
-
慢启动的结束
- 引入慢启动阈值变量 ssthresh, ssthresh 在 TCP 初始化时被设置成一个很大的值(通常为 65KB)
- 当 cwnd>=ssthresh 时, 发送方进入拥塞避免状态
- 超时事件发生:
- ssthresh=当前 cwnd 值/2,cwnd =1 MSS;
- 重新进入慢启动状态
- 收到 3 个冗余的 ACK:
- ssthresh=当前 cwnd 值/2,cwnd=ssthresh+3*MSS
- 发送方快速重发那些导致冗余 ACK 的丢失分组,进入快速恢复状态
-
快速重发 : 当收到三个相同的冗余 ACK 时, 不等待定时器超时, 而是直接重发引发冗余 ACK 的对应分组
-
TCP 拥塞避免
- 每经过一个传输轮次(RTT),cwnd 只增加 1MSS,cwnd 呈线性增长
- 具体实现时常用的计算方法:收到一个对先前未确认报文段的确认,\(cwnd=cwnd+MSS* (Mss/ cwnd)\)
- 如何结束拥塞避免?
- 超时事件发生:
ssthresh=当前cwnd值/2
,cwnd= 1MSS; 重新进入慢启动状态
- 收到 3 个冗余的 ACK: (没有超时严重)
ssthresh=当前cwnd值/2
,cwnd=ssthresh+3*MSS- 发送方快速重发那些导致冗余 ACK 的丢失分组,进入快速恢复状态
- 超时事件发生:
- 每经过一个传输轮次(RTT),cwnd 只增加 1MSS,cwnd 呈线性增长
-
TCP 快速恢复
- 快速恢复 : 收到冗余 ACK, cwnd=cwnd+ 1MSS
- 如何结束快速恢复?
- 超时事件发生:
- ssthresh=当前 cwnd 值/2,cwnd= 1 MSS;
- 重新进入慢启动状态
- 收到一个对先前未确认报文段的确认:
- 降低 cwnd,cwnd=ssthresh
- 进入拥塞避免状态
- 超时事件发生:
-
三个状态变换 FSM 如下图:
-
拥塞控制方式
- 加性增、乘性减(Additive-Increase,Multiplicative-Decrease,AIMD)
- 加性增 :在拥塞避免阶段,每一个 RTT 时间后,拥塞窗口(cwnd)值增加一个 MSS(最大报文段长度),直到检测到丢包
- 乘性减 :丢包后将拥塞窗口(cwnd)减少到原来的一半
对 TCP 吞吐量的宏观描述¶
\(一条连接的平均吞吐量=\frac{0.75\times W}{RRT}\)
第四章 网络层¶
4.1 概述¶
- 网络层: 从发送主机到接收主机传输数据段
- 发送端: 将数据段封装到数据报
- 接收端: 向传输层交付数据段
- 网络层协议运行于每一台主机/路由器中
- 路由器检查所有通过他的 IP 数据报首部字段
-
网络层核心功能–转发与路由
- 转发: 将分组从路由器输入端口移动到适当的路由器输出端口
- 路由选择: 决定分组从原到目的地所采用的路径 — 路径选择算法
4.1.2 连接建立¶
- 在某些网络体系结构中第三个核心功能:
- ATM,帧中继,X.25
- 在数据分组传输之前,两台主机之间需要创建虚拟连接
- 路由器参与连接建立
- 网络层和运输层的连接服务的对比:
- 网络层:在两台主机之间
- 传输层:在两个进程之间
4.1.3 网络层服务模型¶
-
网络层为传输层提供什么样的服务
-
对于单个分组
- 确保交付
- 具有时延上界的确保交付
- 对分组流
- 有序分组交付
- 确保最小带宽
- 确保最大时延抖动
- 安全性服务
- 有序分组交付
-
-
几种服务模型
网络体系结构 服务模型 带宽保证 无丢包保证 有序 有时 拥塞指示 因特网 尽力而为 无 无 任何可能的顺序 不维护 无 ATM
Asynchronous Transfer Mode
异步传输模式CBR
Constant Bit Rate保证恒定速率 是 有序 维护 拥塞不出现 ATM ABR
Available Bit Rate保证最小速率 无 有序 不维护 提供拥塞提示 - ATM 使用虚电路建立数据传输通道, TCP/IP 协议取代了 ATM 在某些领域的应用 但是如需要高带宽、低延迟和可靠性高的数据传输 (如视频传输、实时通信等) 的业务中,ATM 技术仍然具有优势。
-
网络体系结构中, 网络层提供的服务类型可以归纳为两类
- 无连接服务—数据报网络
- 有连接服务—虚电路网络
- 网络层服务与运输层的区别
- 网络层:提供主机到主机的服务,在端系统和网络核心实现
- 传输层:进程到进程的服务,仅在端系统实现
4.2 虚电路和数据报网络¶
虚电路网络提供网络层连接服务
数据报网络提供网络层无连接服务
与运输层服务的类比:
- 服务:主机到主机
- 实现:在网络核心实现
4.2.1 虚电路网络¶
-
虚电路网络 (Virtual Circuit, VC)
- 从源端到目的端,建立的一条类似于电路交换的路径,路径上的每一个路由器,维护虚电路的连接状态
- 数据传输采用分组交换形式,每个分组携带虚电路标识符 VCID
- 链路、路由器资源(带宽、缓存等)可以面向虚电路进行资源预留
-
虚电路组成
- 一条虚电路包括:
- 从源到目的地的一条路径(逻辑连接)
- 虚电路号:沿着该路径的每段链路的编号
- 沿着该路径的每个路由器中转发表,记录了经过 该路由器的每一条虚电路
- 属于一条虚电路的分组携带一个虚电路号
每到达一段链路,分组携带的虚电路号必须改变
- 新的虚电路号从连接链路的路由器的转发表获得
- 一条虚电路包括:
-
虚电路转发表
- 每一个路由器都需要维护虚电路的连接状态信息
-
虚电路信令协议
- 用于建立、维护和拆除 VC
- 应用于典型的虚电路网络:ATM、帧中继、X.25 中
- 没有用于今天的因特网中
4.2.2 数据报网络¶
- 数据报网络概述
- 在网络层无连接
- 分组携带目的主机地址
- 路由器根据分组目的地址转发分组
- 基于路由选择协议构造转发表
- 每个分组独立选路
- 相同源和目的地址情况下,可能采用不同的路径
-
转发表
- 转发表不可能列出所有的目的地址, 而是给出地址范围
-
最长前缀匹配优先
- 最长前缀匹配原则: 在查找给定目的地址的转发表项时,使用与目标地址匹配的最长地址前缀
-
例子:
-
DA: 11001000 00010111 0001==0110 10100001==
接口 0
- DA: 11001000 00010111 0001==1000 10101010==
接口 1
-
总结 数据报网络 or 虚电路网络
- 因特网(数据报网络)
- 在计算机间交换数据
- “弹性”服务,无严格的定时要求
- “智能”端系统(计算机
- 能够适应,执行控制,差错控制
- 网络内部简单,“边缘”复杂许多链路类型
- 不同特点、难以提供统一服务
- ATM(虚电路网络)
- 从电话网络演化而来
- 类似人类交谈:
- 严格定时,可靠性要求高
- 需要有保障的服务
- “哑”端系统
- 电话,网络边缘简单; 网络内部复杂
4.3 路由器的构成<略>¶
- 如题 略
4.4 网际协议–IP ★¶
Internet Protocol—IP
4.4.0 IP 协议概述¶
- 网际协议 IP 是 TCP/IP 体系中两个最重要的协议之一,也是最重要的互联网标准协议之一。
-
与 IP 协议配套是用的四个协议:
- 地址解析协议 ARP:是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
- 逆地址解析协议 RARP:是解决同一个局域网上的主机或路由器的硬件地址和 IP 地址的映射问题。
- 网际控制报文协议 ICMP:提供差错报告和询问报文,以提高 IP 数据交付成功的机会
- 网际组管理协议 IGMP::用于探寻、转发本局域网内的组成员关系。
- 互联网服务被定义成==不可靠的== 、尽力而为 、无连接分组交付 系统。
- 服务是不可靠的,因为分组可能丢失、重复、延迟或不按序交付等,但服务不检测这些情况,也不提醒发送方和接收方。
- 服务是尽力而为的,互联网并不随意地丢弃分组;只有资源用完或底层网络出现故障时才可能出现不可靠性。
- 服务是无连接的,因为每个分组都是独立对待的。分组序列可能经过不同的传输路径或者有的丢失有的到达。
4.4.1 IP 数据报¶
IP 数据报格式¶
一个 IP 数据报由首部(20 字节+可选字段)和数据两部分组成
-
总长度 16 位
- 指首部和数据部分长度之和(单位为字节)
- 216 - 1=65535B, 但是以太网帧的最大传输单元(MTU)为 1500B, 当一个 IP 数据报成帧时, 不能超过 MTU 的值, 只能进行分片
-
标识 16 位
- 用于分片时标识片来自同一个数据报 (见下 IP 分片和重新组装)
-
标志 3 位
- 标志分片情况 (见下 IP 分片和重新组装)
-
段偏移 13 位
- 指出分片后在原分组中的相对位置
-
生存时间(TTL-Time To Live) 8 位
- 数据报在网络中可以通过的路由器数的最大值, 标识分组在网络中的寿命。 路由器在转发分组前, 先将 TTL-1 若 TTL=0, 丢弃分组
- TTL 缺省值为 30 或更多,除非出现路由循环一般够用
- 考题: 防止路由循环, IP 数据报采取什么方式
-
协议 8 位
- 指出分组携带数据使用什么协议(即数据部分应该上交给哪个协议进行处理); 如 TCP(值为 6), UDP(值为 17)
-
首部校验和 16 位
- 只校验分组首部, 不校验数据部分
-
原地址字段 4B 32 位 : 发送方的 IP 地址 目的地址字段 4B 32 位 : 接收方的 IP 地址
IP 分片和重新组装¶
-
为什么进行分片: IP 数据报长度>帧 MTU
-
字段意义
-
Fragmentation Identifier-分片标识符
- 16bits,用于标识来自于同一个 IP 数据报的分片数据
- Fragmentation Flag-分片标志位
- 3bits,从左到右分别为:
- 预留,为 0
- DF,为 1 表示:禁止分片; 为 0 表示:允许分片
- MF,为 1 表示:之后还有更多分片; 为 0 表示:是最后一个分片的数据报
- 3bits,从左到右分别为:
- Fragmentation Offset-段偏移
- 19bits,标识一个分片在整个数据报中的位置
- 其值 ×8B 为实际的偏移值, 即偏移量以 8 个字节为偏移单位
- 19bits,标识一个分片在整个数据报中的位置
-
-
【例】 4000 字节数据报, MTU(最大传输单元)=1500 字节
- 每个分片含有数据部分 1480 字节
- 偏移:1480/8=185
- 标识符 ID 均=X
分组转发¶
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)
- 报告转发分组出错。
4.4.2 IPv4 编址¶
一. IP 编址:概述¶
- IP 地址: 对主机、路由器接口的 32-bit 标识符
- 接口: 在主机/路由器和物理链路之间的连接
- 路由器通常具有多个接口
- 主机可能具有多个接口
- 每个接口都需要进行 IP 编址,即对应一个 IP 地址
二. 子网¶
-
IP 地址:
- 子网部分(高阶比特)
- 主机部分(低阶比特)
-
什么是子网?
- IP 地址具有相同子网部分的设备接口
- 能够物理上互相到达 而没有中间路由器
-
子网判定方法
- 为了确定子网,从其主机或路由器分离每个接口,生成网络孤岛。 每个网络孤岛被称为一个子网
-
问: 有多少个子网?
- 6 个 从上到下 ①223.1.1.0 ②223.1.9.0 ③223.1.7.0 ④223.1.8.0 ⑤223.1.2.0 ⑥223.1.3.0
三. IP 编址:分类的 IP 地址¶
IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。 由互联网名字与号码指派公司 ICANN 进行分配。
-
什么是 IP 编址
- 采用两级的 IP 地址来描述互联网上的设备接口:
- 网络号(net-icl): 标志主机(或路由器)所在的特定网络
- 主机号(host-icl): 标志该主机(或路由器)的接口
- 主机号在网络号所指明的网络范围内必须是唯一的
-
所有的 IPv4 地址可分为以下 5 类
- 注意开头, 便于区分分类
- 五类 IP 地址的指派范围
- A 类 : 1B 网络地址 + 3B 主机地址
- 网络地址的最高位必须是
0
,可指派的网络数为==27-2== ,减 2 的原因是 0.0.0.0 对应“本网络”,另外一个是 127.0.0.1 是本地软件的回环地址,用于测试自己电脑 IP 地址是否可用。 - 可用地址范围
1.0.0.0~126.255.255.255
- 最大主机数为 224-2=16777214 台,减 2 的原因是全 0 的主机号字段代表该 IP 地址是”本主机“,全 1 表示”所有的“,表示该网络上的所有主机
- 网络地址的最高位必须是
- B 类 : 2B 网络地址 + 2B 主机地址
- 网络地址的最高位必须是
10
,可指派的网络数为==214-1== ,因为最高位为 10,所以不存在全 0 全 1 的情况,但是 B 类网络地址 128.0.0.0 是不指派的,可指派最小网络地址是 128.1.0.0 - 地址范围
128.0.0.0~191.255.255.255
- 最大主机数为 216-2=65534 台,减 2 同样是全 0 全 1 情况
- 网络地址的最高位必须是
-
C 类 : 3B 网络地址 + 1B 主机地址
- 网络地址的最高位必须是
110
,可指派的网络数为==221-1== ,192.0.0.0 不指派,最小可指派网络地址是 192.0.1.0 - 地址范围
192.0.0.0-223.255.255.255
- 最大主机数为 28-2=254 台,减 2 同样是全 0 全 1 情况。
- 网络地址的最高位必须是
-
特殊的 IP 地址
- 私有地址: (用于 NAT)
-
-
采用分级 IP 地址结构的优点:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。 方便对 IP 地址的管理。
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号)。
- 采用分级 IP 地址结构的缺点:
- IP 地址空间的利用率有时很低。
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
- 两级的 IP 地址不够灵活。
-
4.4.3 子网划分¶
-
从 1985 年起,从 IP 地址的主机号 host-id 借用若干个位作为子网号 subnet-id,增加了一个子网号字段,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫做划分子网(subnetting)
-
子网划分后的 传输流程
- 划分子网纯属一个单位内部的事务。单位对外仍然表现为没有划分子网的网络。
- 凡是从其他网络发送给此单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
- 最后将 IP 数据报直接交付目的主机。
子网掩码¶
-
意义: 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
-
子网掩码规则:
- 子网掩码左边部分的一连串 1,对应于网络号和子网号
- 子网掩码右边部分的一连串 0,对应于主机号
- A,B,C 三类地址默认的子网掩码
(IP地址) AND (子网掩码) = 网络地址
-
已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址
上例中,若子网掩码改为 255.255.224.0,试求网络地址,讨论所得结果
- 不同的子网掩码得出相同的网络地址。但不同的掩码的效果是不同的。
-
总结: 子网掩码是一个网络的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
子网划分¶
有 固定长度子网和变长子网两种子网划分方法
-
【例】 学院新建 4 个机房,每个房间有 25 台机器,给定一个网络地址块:192.168.10.0,现在需要将其划分为 4 个子网 【固定长度子网划分】
- \(2^n-2\geq 25(主机数)\ →\ 2^5-2 \geq 15\) 所以主机位数 n 为 5 位
- 192.168.10.0 → C 类 8 位主机号
- 子网 3 位 掩码:
255.255.255.224(1110 0000)
- 所以我们的子网地址和子网主机地址如下:
子网 1:
192.168.10.32
掩码:255.255.255.224
主机 IP:192.168.10.33~62
子网 2:192.168.10.64
掩码:255.255.255.224
主机 IP:192.168. 10.65~94
子网 3:192.168.10.96
掩码:255.255.255.224
主机 IP:192.168. 10. 97~126
子网 4:192.168.10.128
掩码:255.255.255.224
主机 IP:192.168.10. 129~158
子网 5:192.168.10 .160
掩码:255.255.255.224
主机 IP:192.168.10.161~190
子网 6:192.168.10.192 掩码:255.255.255.224
主机 IP:192.168.10.193~222
-
【例】 一家公司目前有 5 个部门 A 至 E,其中:A 部门有 50 台 PC,B 部门 20 台,C 部门 30 台,D 部门 15 台,E 部门 20 台,企业信息经理分配了一个总的网络地址 192. 168.2.0/24 给你,作为网络管理员,请问如何为每个部门划分单独的子网段? 【变长子网划分】
- 答:
192.168.2.0/24
该范围为:192.168.2.0~192.168.2.255
- A 部门(50 台) 分配多个子网段
- IP 范围:
192.168.2.0~192.168.2.63
子网掩码:255.255.255.192(1100 0000)
- 其中
192.168.2.0
为网络地址,192.168.2.63
为广播地址, 不可用
- IP 范围:
- B 部门
- IP 范围:
192.168.2.64~192.168.2.95
子网掩码:255.255.255.224(1110 0000)
- 其中
192.168.2.64
为网络地址,192.168.2.95
为广播地址
- IP 范围:
- C 部门
- IP 范围:
192.168.2.96(01110 0000)~192.168.2.127(0111 1111)
子网掩码:255.255.255.224
- 其中
192.168.2.96
为网络地址,192.168.2.127
为广播地址
- IP 范围:
- D 部门
- IP 范围:
192.168.2.128(1000 0000)~192.168.2.159(1001 1111)
子网掩码:255.255.255.224
- 其中
192.168.2.128
为网络地址,192.168.2.159
为广播地址
- IP 范围:
- E 部门
- IP 范围:
192.168.2.160~192.168.2.191
子网掩码:255.255.255.224
- 其中
192.168.2.160
为网络地址,192.168.2.191
为广播地址
- IP 范围:
- 冗余 IP 范围为
192.168.2.192-192.168.2.255/255.255.255.192
- 答:
子网划分的分组转发算法¶
-
分组转发流程
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。 若匹配,则将分组直接交付。 否则就是间接交付,执行(3)。
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器; (跳到指定主机) 否则,执行(4)。
- 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器; (跳到指定子网) 否则,执行(5)。
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器; 否则,执行(6)。
- 报告转发分组出错。
- 相与: 网络号+子网号部分的掩码是 1, 与运算后结果不变, 主机号部分掩码为 1, 与运算后变 0, 指向网络
-
【例】已知互联网和路由器 R 中的路由表。主机 H1 向 H,发送分组。试讨论 R 收到 H 向 H 发送的分组后查找路由表的过程。
- H1 先检查目的主机(
128.30.36.0
)是否在本网络(128.20.33.0/25
) 是, 直接交付; 否, 递交给路由器 R1, 由 R1 逐项查找路由表- \(225.225.225.128 \& 128.30.33.138 = 128.30.33.128\neq 128.30.33.0\) 不是本网络
- 递交给 R1, R1 对路由表逐个进行与
- \(225.225.225.128 \& 128.30.33.138 = 128.30.33.128\neq 128.30.33.0\) 不一致
- \(225.225.225.128 \& 128.30.33.138 = 128.30.33.128\neq 128.30.33.0\) 匹配一致
- H1 先检查目的主机(
4.4.4 CIDR 无类型域间路由¶
- 无类型域间路由(Classless InterDomain Routing,CIDR)
- 任意长度的 IP 地址子网部分
- 消除传统的有类地址划分(A、B、C、D、E、F)
- 地址格式:
a.b.c.d/x
,其中 x 是子网部分的比特长度
- CIDR 优点
- 提高 IPV4 地址空间分配效率
- 提高路由效率,使得路由信息通告更高效
- 构造超网(supernetting)/路由聚合
- 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能
CIDR 路由聚合¶
- 路由聚合:将几个相邻子网的连续网络地址进行汇总,以单个 CIDR 网络地址形式表示聚合之后的网络。
-
利用 CIDR 实现路由聚合至少要满足两个基本条件
- 待汇总地址的网络号拥有相同的高位
- 待汇总地址是连续的
- 待汇总网络地址的数目必须是 2 的整数幂次
-
例:某公司分配到 4 个 C 类网络: 192.168.1.0; 192.168.2.0;192.168.3.0; 192.168.4.0,如何把 4 个 C 类网络组合成一个超网?超网的网络 Ib 和子网掩码是多少?
- 首先将 4 个 C 类网络的网络 TID 转换为二进制数表示,其中 192.168 对应二进制形式为 11000000.10101000:
- 192.168.1.0: 192.168.0000 0001. 0000 0000
- 192.168.2.0: 192.168.0000 0010. 0000 0000
- 192.168.3.0: 192.168.0000 0011. 0000 0000
- 192.168.4.0: 192.168.0000 0100. 0000 0000
- 根据二进制的网络 I,选择具有相同高位的部分作为超网的网络 ID 11000000.10101000.0000 0xxx.xxxx xxxx
- 根据网络 ID 计算掩码为 11111111.11111111.111 11000.00000000,对应的点分十进制表达为:255.255.248.0
- 所以汇聚后的超网是
192.168.0.0/21
,其中网络 ID 为:192.168.0.0
,掩码为:255.255.248.0
- 首先将 4 个 C 类网络的网络 TID 转换为二进制数表示,其中 192.168 对应二进制形式为 11000000.10101000:
-
例:有两组连续的 C 类网络地址块如下,能否汇聚成一个超网? A: 201.66.32.0 - 201.66.47.0 B: 201.66.71.0 - 201.66.86.0
- 答:A 和 B 都是连续地址块,且网络地址数满足第二个条件
- 对于 A:
202.66.32.0 = 202.66.00100000.0
202.66.47.0 = 202.66.00101111.0
所以,可以聚合成超网
202.66.32.0/20
,掩码为255.255.240.0
- 对于 B:
202.66.71.0 = 202.66.01000111.0
202.66.86.0 = 202.66.01010110.0
取网络相同的高位部分作为网络 ID,如果聚合成超网,则表示为
202.66.64.0/19
:- 但是:这样的网络 ID 所表示的超网,包含了实际中并不存在的子网(路由黑洞),所以不能聚合。
-
ISP 与路由聚合
- 组织或机构向 ISP 申请, 从 ISP 的地址空间中分配得到
- 路由聚合允许有效的通告选路信息
- 地址匹配时会按照最长前缀匹配原则, ISPs-R-Us 具有到组织 1 的更具体的路由
- ISP 通过 因特网名字与号码分配团体(Internet Corporation for Assigned Names and Numbers, ICANN)
4.4.5 DHCP 动态主机配置协议<略>¶
问题:主机怎样获得 IP 地址?
- 由系统管理员在文件中硬编码(静态配置) Wintel:控制面板->网络->配置->TCP/IP->性质 UNIX:/etc/rc.config
- 动态主机配置协议(Dynamic Host Configuration Protocol, DHCP):动态地从服务器得到:IP 地址、子网掩码、默认网关地址、DNS 服务器名称与 IP 地址
- “即插即用”、地址续订、重用、支持移动 IP
- →
- DHCP 流程总结:
- 主机广播“DHCP 发现”报文
- DHCP 服务器以“DHCP 提供”报文向客户做出响应
- 主机发送“DHCP 请求”报文请求 IP 地址 DHCP 服务器用“DHCP ACK”报文进行相应,发送 IP 地址
- DHCP 除了分配主机 IP 地址,还能使主机获取更多其他信息:
- 客户机的第一跳路由器 IP 地址
- 本地 DNS 服务器主机名和 IP 地址
- 子网掩码(用于指示网络号与主机地址部分)
4.4.6 NAT 网络地址转换¶
- NAT 网络地址转换: 通过 NAT 路由器, 将本地网络与外部网络进行转换
-
动机:本地网络对外只使用一个 IP 地址,外部仅关注该地址
- 对 ISP 无需分配地址范围:对所有设备只用一个 IP 地址
- 能够改变本地网络中的设备地址,而不必通知外部
- 能够改变 ISP 而不需更改本地网络的设备地址
- 本地网络内部结构外部不可见,增强安全性
-
NAT 路由器实现方式
- 转发数据报: 每个外出的数据报用 (NAT IP 地址,新 port #) 代替 (源 IP 地址, port #)
- 远程的客户机/路由器的响应,将用(NATIP 地址,new port #)作为目的地址
- 记住: (在 NAT 转换表中)每个(源 IP 地址, port #)到(NAT IP 地址,新 port #)转换对
- 入数据报: 对每个入数据报的地址字段用存储在 NAT 表中的(源 IP 地址, port #)替代对应的(NAT IP 地址,新 port #)
- 转发数据报: 每个外出的数据报用 (NAT IP 地址,新 port #) 代替 (源 IP 地址, port #)
- 16bit 端口号字段: 用一个 LAN 侧地址, 同时支持 60000 并行连接
- NAT 存在的问题
- 应当用于进程编址而非主机编址
- 路由器的处理上升为第三层
- 违反了端到端通信原则
- NAT 妨碍了 P2P 应用程序
- 地址短缺应当由 IPv6 来解决, 而非 NAT
NAT 穿越问题¶
外部客户端如何连接内网服务器
互连网络服务器本地局域网 10.0.0.1, 外部仅可见 NAT 转换后的地址: 138.76.29.7
- 解决方案 1:在 NAT 路由器静态配置 NAT 转换表,将特定端口号传入的连接请求转发到服务器。
- 例如(
138.76.29.7, port 2500
)总是转发到(10.0.0.1, port 80
)
- 例如(
-
解决方案 2:通用即插即用(UPnP)因特网网关设备(IGD)协议。
- 允许内部网络 NAT 化的主机:
- 获取公共 IP 地址(138.76.29.7)
- 自动增加/移除(公共 IP 地址,公共端口号)和(私有 IP 地址,私有端口号)之间的映射
- 自动化静态 NAT 端口映射配置
- 使得外部主机能使用 TCP/UDP 向 NAT 化的主机发起通信会话
- 允许内部网络 NAT 化的主机:
-
解决方案 3:中继代理(例如 Skype)
- NAT 化的客户端建立到中继代理服务器的连接
- 外部网络的客户端也连接到中继代理服务器
- 中继代理服务器在两个连接之间转发数据报
4.5 互联网控制消息协议–ICMP¶
- 引入—为什么需要 ICMP
- Internet 可能发生的差错,导致数据报传输失败
- 通信线路、处理器、目的主机关机
- 数据报生命期变为 0
- Router 拥塞 等等
- 必须报告错误对于同一个网络
- 可以利用特殊硬件来报告错误
- 对于互联网络
- 发送方很难判断传送失败的原因,如错误发生在哪里
- IP 协议本身没有处理错误的机制
- Internet 可能发生的差错,导致数据报传输失败
- 为了提高 IP 数据报交付成功的机会,网际层使用ICMP 协议( Internet Control Message Protocol, 因特网控制消息协议)让主机或路由器向源端报告差错情况和提供有关异常情况的报告。
- 但 ICMP 协议并没有指定对错误所应采取的措施,而是把差错交给应用程序或其他协议处理
- 大部分由传输协议(TCP、UDP)处理
- 但 ICMP 协议并没有指定对错误所应采取的措施,而是把差错交给应用程序或其他协议处理
- 常用的 ICMP 报文类型
- ICMP 差错报告报文(划线表示不再使用)
-
目的不可达(Destination Unreachable-type3)
-源抑制(Source Quench-type4)-超时(Time Exceeded-1ype11)
-参数问题(Parameter Problem-Type12)
-重定向(Redirect-Type5)
- ICMP 询问报文(划线表示不再 使用)
-
回送请求和应答报文 (Echo Request/Reply-Type0/8)
-时间戳请求和应答报文(TimeStamp Request/Reply-Type13/14)
-掩码地址请求和应答报文(Address Mask Request/Relpy-1ype17/18)-路由器询问和通告报文(Router Advertisement/Solicitation-Type9/10) - 编码:
- ICMP 差错报告报文(划线表示不再使用)
-
- ICMP 报文的格式
- ICMP封装在IP数据报内部
4.5.1 ICMP 差错报告报文¶
- 不会发送 ICMP 报文的情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
- 对第一个分片的数据报片的所有后续数据报片, 都不发送 ICMP 差错报告报文
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文
- 对具有特殊地址 (如 127.0.0.0 或 0.0.0.0) 的数据报不发送 ICMIP 差错报告报文
- ICMP 差错报告报文的数据字段的内容
4.5.2 ICMP 询问报文¶
- Echo Request/Reply 查询消息
- 工作原理: 主机或路由器可以向指定目的主机或路由器发送一个 Echo Request 报文,收到请求的目的机器向发送端返回一个 Echo Reply 报文,应答报文包含了请求报文中的数据拷贝。
- 报文格式
- 可以用于检测目的站的可达性与状态 (Ping)
- Ping 允许用户向目标主机/路由器发送一个或多个 ICMPEcho Request 消息,计算从探测开始到收到 ICMP EchoReply 消息所花费的时间,来测试两个设备之间的网络连接是否正常。
- Ping 能正确获得响应的四点保证
- 源主机与目的主机之间的 Router 工作正常
- 源主机为 IP 数据报选路的软件工作正常
- 目的主机正在运行,IP 和 ICMP 正常工作
- 返回路径上 Router 有正确路由
- 目标主机没有设置防火墙过滤 ICMP Echo/Request 消息
- Time Exceeded(超时)错误消息
- Time-To-Live Exceeded in Transit (IP 数据报-生命周期字段)
- 当 TTL 为 0,而数据报还没有到达最终目的地 Router 只能抛弃该数据报,并发送这条 ICMP 消息
- Fragment Reassenbly Time Exceeded
- 没有在收到数据报第一个分片的 TTL 时间终止前收到所有的分片,则发送该消息(Unix,60 秒),该消息将导致源发送端重发整个数据报
- 报文格式
- Time-To-Live Exceeded in Transit (IP 数据报-生命周期字段)
- 使用 Traceroute 进行路径发现
- Time Exceeded(超时)错误消息还可以与 UDP 报文配合, 用户 Traceroute 路由发现
- 具体操作
- 发送端向目的主机发送 UDP 数据包==(TTL 为 1)== ,第一跳路由器对 TTL 进行减量运算后 TTL=0,数据报会被丢弃,第一跳路由器向发送端返回 ICMP Time Exceeded 错误消息->获得第一跳路由器地址
- 依此类推发送 TTL=2,TTL=3,....的 UDP 数据包,直到某个 UDP 数据包到达目的生机,目的主机返回
ICMP Port Unreachable消息
- 发送端主机记录下到达目的主机所用的往返时间
- 几点说明 (看看就好)
- 当 UDP 数据包到达目的主机后,即使 TTL=1,目的主机也不会丢弃该数据报,因而不会返回 ICMP Time Exceeded 错误消息
- 为了能通知源主机数据报已经到达目的主机,Traceroute 选择一个很大的(大于 30000)、目的主机上任何一个进程都不会使用的 UDP 目的端口号,设置为 UDP 数据包的端口号
- 这样,当数据报到达目的主机后,目的端将返回一条 ICMP
Port Unreachable错误消息
- 大部分 UNIX 缺省版本的 Traceroute 一次性发送 3 个 UDP 数据报,每个数据报的目的端口号都在增加
- 其他操作系统的 Traceroute 发送 TTL 增量为 1 的 ICMP
Echo Request查询消息
- 存在被防火墙阻断的可能
4.6 选路算法¶
4.6.0 图的概念&选路¶
- 选路协议: 目的: 决定从原到目的地通过网络的“好的路径”(路由器序列)
- 选路算法中的图论
- 结点–路由器; 边–物理链路; 边权–时延, 费用或拥塞等级
- 好的路径: 费用最小路径
4.6.1 选路算法分类¶
- 全局 or 分散的信息
- 全局的: 所有路由器具有完全的拓扑和链路费用信息
- “链路状态”算法
- 分散的: 路由器只知道物理相连的邻居的链路费用
- 通过迭代计算, 与邻居交换信息
- “距离矢量”算法
- 全局的: 所有路由器具有完全的拓扑和链路费用信息
- 静态 or 动态
- 静态: 路由随时间缓慢变化, 手工配置, 优先级高
- 动态: 路由更快地变化
- 周期的自动更新
- 适应链路费用变化
4.6.2 Dijkstra 链路状态路由算法¶
- Dijkstra 算法
- 所有结点知道网络拓扑、链路费用
- 信息传递经“链路状态广播”(洪泛)完成
- 所有结点具有相同信息
- 从一个结点(源)到所有其他结点计算最低费用路径
- 给出对这些结点的转发表
- 迭代: k 次迭代后,得知到 k 个目的地的最低费用路径
- 所有结点知道网络拓扑、链路费用
- 算法定义
- c(x,y):从结点 x 到 y 的链路费用;如果不是直接邻居=∞
- D(v):从源到目的地 v 路径费用的当前值
- p(v):从源到 v 沿路径的,v 的前序结点
- N':已知在最小费用路径中的结点集合
- 算法思路
- 例
- 算法复杂度 O(nlogn)
- 路径计算可能存在振荡问题
- 假设链路费用是该链路承担的流量
4.6.3 BellmanFord 距离矢量算法¶
-
算法思路
- 结点 x 需要维护下列信息:
- 对于每个直接相连的邻居 v,x 到 v 的费用 c(x,y)
- 结点 x 的距离向量,即\(D_x=\{D_x(y),for\ each\ node\ y \in N\}\),表示 x 到结点集合 N 中所有目的地为结点 v 的费用的估计值
- \(D_x(y)=min\{c(x,v)+D_v(y)|对x的所有邻居\}\)
- 结点 x 的每个邻居的距离向量\(D_v=\{D_v(y),for\ each\ node\ y \in N\}\)
- 算法思路
- 每个结点周期性的向邻居发送自己的距离向量 Dx
- 当结点 x 接收到任何一个邻居 v 新的距离向量,使用 B-F 方程更新自己的距离向量: \(D_x(y)\leftarrow min\{c(x,v)+D_v(y),for\ each\ node\ y \in N\}\)
- 如果有 Dv 导致 Dx 更新,则结点 x 向所有邻居发送更新后的 Dx
- 结点 x 需要维护下列信息:
-
- 迭代、异步: 每次本地的迭代由 ① 本地链路费用改变 ②Dv 从邻居更新报文
- 分布式: 每个节点仅当 Dv 改变时通知邻居
-
例:
距离矢量算法-链路费用改变¶
- 如果结点检测到链路费用改变:更新路由信息,重新计算距离向量如果距离向量改变,通告邻居
-
好消息传播得快
- 时刻 t0: y 检测到链路费用变化(4→1),更新其 DV,并将此变化通告它的邻居
- 时刻 t1: z 接收到来自 y 的更新报文,并据此更新了 z 自己的距离表; z 计算出到 x 的新的最低费用,向其邻居发送了它新的 DV
- 时刻 t2: y 接收到的更新消息,更新它的距离表,y 的最低费用没有改变,因此 y 不发送任何报文给 z,算法进入静止状态
-
坏消息传播得慢–计数到无穷
- 时刻 t0: y 检测到链路费用变化(4→60), 但是计算 y 到 x 的最短路径的开销值为\(D_y(x)=min\{60+0, 1\textcolor{orange}{(D_y(z))}+5\textcolor{orange}{(D_z(x))}\}=6\) , (这是错误的), 通知 z
- 时刻 t1: z 收到通知, 计算出到 x 的新的最小开销\(D_z(x)=min\{50+0, 1\textcolor{orange}{(D_z(y))}+6\textcolor{orange}{(D_y(x))}\}=7\) 通知 y
- 时刻 r2: y 收到通知, 计算得到 Dy(x)=8, 通知 z
- …
-
解决无穷计数问题
- 设置迭代次数限制(=16 次结束)
- 毒性逆转
- 如果 Z 路由通过 Y 得到 X: Z 通告 Y,自己到 X 的距离是 o,因此 Y 不能经 z 路由到 X
- 这只能解决上面的特殊问题, 3 个结点以上的环路不能被毒性逆转技术检测出来
4.7 互联网中的选路¶
4.7.1 等级选路¶
真实的互联网中 ① 路由表不能存储所有的目的地 ② 不能随意地进行路由信息交换和路由选择 ③ 网络管理员需要保护内部网络细节
→ 进行等级选路
- 自治系统 AS(Autonomous System): 一组处于相同管理控制下的路由器聚合
- 一个 AS 由全局唯一的 AS 号(ASN)标识, ASN 有 ICANN 区域管理注册局分配
- 同一个 AS 中的路由器运行相同的路由选择算法
- 网关路由器: 位于 AS 边缘, 通过链路连接其他 AS 的网关路由器
- 选路协议
- 内部路由选择协议(IGP)
- RIP
- OSPF
- 外部路由选择协议(EGP)
- BGP
- 内部路由选择协议(IGP)
4.7.2 内部网关路由选择协议¶
-
Internet 采用层次路由
-
AS 内部路由协议也称为内部网关协议 IGP
-
最常见的 AS 内部路由协议
- 路由信息协议 RIP(Routing Information Protocol)
- 开放最短路径优先 OSPF(Open Shortest Path First)
RIP¶
- 距离度量为跳的数量(最大=15 跳,16 表示不可达,仅适用于小型互联网);
-
距离矢量每 30 秒邻居之间经通告报文交换各自的路由表
- 结点检测到网络拓扑变化后,向邻居通告拓扑变化后的信息
- 在 180 sec 后,如果没有收到邻居通告-->该邻居/链路被标记为不可达路由,距离设置为 16
-
【例】已知路由器 R6 有表 4-9(a)所示的路由表。现在收到相邻路由器 R4 发来的路由更新信息,如表 4-9(b)所示。试更新路由器 R6 的路由表。
-
【例】路由表更新
- 下一跳不同,跳数相同,按照课本要求,不进行替换
- RIP 协议的优缺点:
- RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
- RIP 协议最大的优点就是实现简单,开销较小。
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
OSPF¶
- OSPF 开放最短路协议 : 为克服 RIP 的缺点而提出来的。
- “开放”:公共可用
- “最短路径优先”:使用了 Dijkstra 提出的最短路径算法 SPF
- OSPF 是基于链路状态(和哪些路由器相邻,以及相应的费用、距离、时延、带宽等)的,而不像 RIP 那样是基于距离向量的
- OSPF 采用 SPF 算法计算路由,从算法上保证了不会产生路由环路
- OSPF不限制网络规模,更新效率高,收敛速度快
- OSPF 有以下五种分组类型
- 问候(Hello)分组,用来发现和维护邻居路由器的可达性。
- 数据库描述(Database Description)分组,向邻居路由器给出自己的链路状态数据库中的所 有链路状态项目的摘要信息
- 链路状态请求(Link State Request)分组,向邻居路由器请求发送某些链路状态项目的详细 信息
- 链路状态更新(Link State Updata)分组,路由器使用这种分组将其链路状态进行洪泛发 送,即用洪泛法对全网更新链路状态。
- 链路状态确认(Link State State Acknowledgment)分组,对链路状态更新分组的确认分 组。
4.7.3 边界网关路由选择协议(BGP)¶
- 边界网关协议(BGP)
- 在不同的自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治 系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
- BGP 之能是力求寻找一条能够到达目的网络且比较好的路由,而非寻找一条最佳路由
- BGP-4 有以下四种报文
- OPEN(打开)报文:用来与相邻的另一个 BGP 发言人建立关系,使通信初始化
- UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由
- KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性
- NOTIFICATION(通知)报文:用来发送检测到的差错
第五章 数据链路层¶
链路层服务原则
- 差错检测,纠错
- 共享广播信道:多路访问
- 链路层编址
- 局域网:以太网,虚拟局域网 VLAN
5.1 概述与服务¶
- 链路层术语
- 节点: 主机和路由器
- 通信链路: 沿通信路径的相邻节点的连接
- 分为 有线链路; 无线链路; 局域网
- 数据链路层经一条链路, 从一个节点传输数据到相邻节点
- 链路层分组称为帧, 封装数据报
- 链路协议:
- 可能使用不同的链路协议, 经过不同的链路, 传输数据报
- 如第一段链路是以太网, 中间链路是帧中继, 最后链路是 802.11
- 每个链路协议提供不同的服务
- 如 能/不能经过链路提供可靠数据传输
- 可能使用不同的链路协议, 经过不同的链路, 传输数据报
- 链路层服务
- 封装成帧:
- 将数据报封装进帧,加上首部和尾部
- 用特殊比特流实现帧同步(涉及透明传输问题)
- 链路访问:
- 如果共享媒体:多路访问,协调多个节点的帧传输
- 位于帧首部的“MAC”地址标识源、目的地
- 相邻节点间的可靠交付
- 类似于运输层的确认和重传
- 在高差错率的无线链路较为常用 在比特差错低的链路很少使用 (光纤,某些双绞线)
- 同时使用链路级和端到端可靠性
- 流量控制:
- 发送节点和接收节点之间“步调”一致
- 差错检测:
- 差错由信号衰减、噪声所致
- 接收方检测差错的存在
- 信号发送方负责重传或丢弃帧
- 纠错:
- 接收方识别和纠正比特差错,而不采取重传
- 半双工和全双工通信控制:
- 使用半双工,链路的两端节点能够传输数据,但只能交替进行
- 使用全双工,链路的两端节点能够同时双向传输数据
- 封装成帧:
- 链路层的实现方式–网络适配器
- 链路层主体在每个节点(主机/路由器)的网络适配器(网络接口卡 NIC)中实现
- 网络适配器核心是链路层控制器, 实现链路层功能: 成帧, 链路接入, 差错检测等
- 网络适配器类型: 以太网卡, PCMCIA 卡, 802.11 卡
- 适配器与主机系统总线连接, 是软硬件的结合
- 适配器通信
- 链路层主体在每个节点(主机/路由器)的网络适配器(网络接口卡 NIC)中实现
5.2 差错检测和纠错¶
5.2.1 差错检测的基本原理¶
- EDC: 差错检测和纠错 bits(冗余码) D: 需要进行差错检测的数据 (可能包括首部字段)
- 差错检测并非 100%可靠
- 虽然发生的概率很低,但协议确实有可能漏掉某些差错
- 较大的 EDC 字段能产生更好的检测和纠正
5.2.2 奇偶校验¶
- 单比特奇偶校验: 检测单个比特差错
- 二维比特奇偶校验: 检测和纠正单个比特差错
5.2.3 校验和¶
-
回顾–传输层校验和
- 发送方
- 将待校验内容划分为 16 比特整数序列来处理
- 求和: 对 16 比特序列补码求和 (最高位进位 1 回卷至最低位相加)
- 校验和: 求和结果取反
- 发送方将校验和的值放入 UDP、TCP 的校验和字段
- 接收方
- 对接收到的数据计算校验和
- 检查计算的校验和是否等于校验和字段的值:
- 不等-检测到差错
- 相等-没有检测到差错.尽管如此,还可能有错。详情见后……
- 发送方
-
循环冗余码 CRC (Cyclic Redundancy Code)校验和
- 将数据比特 D看作一个二进制数, 选择 r+1 位比特模式(生成式)G (题目给定/协议确定)
- 发送方需要得到一个 r 位 CRC 比特R 使得
这个二进制数 能够被 G==模二整除== - 接收方知道生成式 G, 使用
除以 G 若余数全 0,则表示没有差错; 否则说明检测到一个小于 r+1 比特的突发差错;
-
例: 待发送的信息为 101001(D),生成多项式为\(G(x) = x^3+x^2+1\),计算冗余校验码(R)
- 校验码为
101001 001
- 校验码为
-
接收到的信息为 101101001,生成多项式为\(G(x) = x^3+ x^2+1\),判断传输是否误码
- 存在误码
5.3 多路访问协议¶
- 多路访问链路—两类链路
- 点对点链路 - 用于拨号接入的 PP - 在以太网交换机和主机之间的点对点链路
- 广播链路(共享线路/媒体) - 传统的以太网 - 向上游的 HFC - 802.11 无线 LAN
5.3.1 MAC 多路控制访问协议¶
-
引入—多路访问遇到的问题
- 节点之间的介质有多个并行传输
- 如果节点同时收到多个信号 发生 碰撞
- 碰撞会导致接受失败
- 节点之间的介质有多个并行传输
-
多路访问控制协议 (介质访问控制协议)
- 采用分布式算法决定节点如何共享信道,例如:决定节点何时能够开始传输信号
- 共享信道的通信必须通过信道本身传输!
- 不用带外信道来协调
-
一个理想的多路访问控制协议应该做到
-
给定一个速率为 R bps 的广播信道
- 当只有一个节点传输数据时,它能够以速率 R 发送
- 当 M 个节点要传输数据时,每个节点能以平均速率R/M发送
- 完全分散控制: - 无特殊节点来协调传输 - 无同步时钟、时隙
- 简单
-
-
MAC 协议分类: 信道划分; 随机访问; 轮询访问
5.3.2 信道划分¶
- 信道划分: 将信道划分为较小的“段”(时隙, 频率, 编码), 为节点分配一部分专用
- 时分多路访问(TMDA)
- 节点“周期性”访问信道
- 每个站点在每个周期中获得固定长度的时隙(长度=分组传输时间)
- 不使用的时隙进入空闲状态
- 例子: 6 个站点的 LAN, 时隙 1、3、4 有分组, 时隙 2、5、6 空闲
- 节点“周期性”访问信道
- 频分多路访问(FDMA)
- 信道频谱划分为若干带
- 每个站点分配一个固定的频带未有数据传输的频带为空闲状态
- 例子:6 个站点的 LAN, 频带 1、3、4 有分组, 频带 2、5、6 空闲
- 信道频谱划分为若干带
- 波分多路复用
- 在一根光线中, 使用多种不同频率的光信号
- 码分多路复用
- 使用不同的编码来区分各路原始信号
5.3.3 随机访问¶
- 引入当站点有分组要发送
- 以信道全部速率 R 传输
- 节点间无优先权协调
- 两个或更多节点传输数据 →“碰撞”, 需要重传
- 随机访问 MAC 协议定义了:
- 如何检测碰撞
- 如何从碰撞中恢复(例如,一段延迟后重新传输)
- 典型的随机访问 MAC 协议:
- 时隙 ALOHA
- 纯 ALOHA
- CSMA,CSMA/CD, CSMA/CA
ALOHA 协议¶
ALOHA 协议: Additive Link On-line HAwaii system, 分为 纯 ALOHA 协议 和 时隙 ALOHA 协议
简化计算, 假设每一个帧都是定长的, 发送时间为 T0
纯 ALOHA¶
- 基本思想:
- 当节点需要发送数据(帧)时, 可以不进行任何检测就直接发送
- 当发生碰撞(没有收到确认), 节点以概率 p 重传该帧, 否则等待一个帧的传输时间(T0); 之后, 节点继续以概率 p 重传, 否则以 1-p 的概率等待
- 【王道】假设网络负载(T0时间内所有站点发送成功的 和 未成功重传的帧数)为 G, 则纯 ALOHA 网络的吞吐量(T0时间内成功发送的平均帧数)为\(S=Ge^{-2G}\) G=0.5 是, S≈0.184 (这是吞吐量 S 能达到的极大值)
- 说明纯 ALOHA 的吞吐量较低
时隙 ALOHA¶
- 时隙 ALOHA 协议 基本思想
- 前提
- 将所有节点在时间上同步
- 将时间划分为等长时隙(Slot), 节点只能在时隙开始时传输帧
- 如果 ≥2 个节点在时隙中传输,所有节点将检测到碰撞
- 操作
- 当节点获得新帧,将在下一个时隙中传输
- 如果无碰撞,节点能够在下一个时隙继续发送新帧
- 如果碰撞,节点在每个后继时隙中以概率 p 重传帧,直到发送成功
- 前提
- 优缺点
- 优点
- 单个活跃节点能够连续以信道的最高速率全速传输
- 高速分散:仅节点中的时隙需要同步
- 简单
- 缺点
- 碰撞,浪费时隙存在空闲时隙
- 节点必须能够在小于分组传输时长的时间内检测到碰撞的发生
- 需要时钟同步
- 优点
- 效率
- 【王道】时隙 ALOHA 中\(S=Ge^{-G}\),当 G=1 时, S≈0.368 极大值
- 【自顶向下】 假定 N 个节点有很多帧要发送,每个节点在每个时隙以概率 p 发送数据
对于一个给定节点,在一个时隙中成功发送的概率\(=p(1-p)^{N-1}\)
任何节点成功发送的概率\(=Np(1-p)^{N-1}\)
- 效率最大化: 求得 P*使得\(Np(1-p)^{N-1}\) 最大
- 对许多节点,当 N 趋近无穷大,取\(Np(1-p)^{N-1}\)极限,得到 1/e = 0.37
- 最好情况:信道用于有效数据传输的时间是 37%
CSMA 协议¶
CSMA: Carrier Sense Multiple Access 载波监听多路访问
- CSMA 基本思想: 在传输前侦听
- 侦听: 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
- 侦听到信道空闲:传输整个帧
- 侦听到信道忙,推迟传输
- 侦听: 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞
- 碰撞还是会发生:
- 传播时延意味着两个节点可能无法在准备发送数据时 “听到”对方正在进行数据传输
- 碰撞发生后继续发送数据帧:浪费信道资源
CSMA/CD 协议¶
CSMA/CD: 载波侦听多路访问/带碰撞检测
-
CSMA/CD
- 在短时间内检测到碰撞发生
- 碰撞的数据传输被放弃,减少信道浪费
-
碰撞检测的条件
- 有线局域网容易实现:测量信号强度,比较传输的信号和接收的信号
- 在无线局域网中困难:由于信号衰减等因素,接收方接收到的信号强度不足
-
CSMA/CD 协议的争用期
-
假设网络带宽:R bps,数据帧最小长度 L(bits),信号在信道上的传播速度: V(m/s),通信双方距离为 D(m)
双方何时检测到冲突?
- 端到端往返时延\(2\tau\)称为争用期,或碰撞窗口
-
结论:
- 只有当 A 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会失败
- A 发送数据帧的最短长度 L 必须满足:\(\textcolor{#66ccff}{L/R≥(2D/V)→L≥(2D/V)*R}\)
-
5.3.4 轮询访问¶
- 信道划分 MAC 协议:
- 在高负载时高效、公平地共享信道
- 低负载时低效:信道访问延时,当仅有 1 个活跃节点传输数据时,也仅分配了 1N 带宽!
- 随机访问 MAC 协议
- 低负载时效率高:单个节点能够完全利用信道资源
- 高负载:碰撞开销
- “轮流”访问 MAC 协议
- 兼有这方面的优点!
- 轮询
- 主节点“邀请”从节点依次传输数据
- 通常使用“沉默的从设备
- 存在问题:
- 轮询开销
- 等待时延
- 单点故障 (主节点)
- 令牌传递
- 令牌:一种特殊的数据帧
- 控制令牌从一个节点顺序地传递到下一个
- 存在问题:
- 令牌开销
- 等待时延
- 单点故障(令牌)
MAC 协议小结
信道划分:通过时间、频率或编码
随机访问(动态的)
- ALOHA,S-ALOHA,CSMA,CSMA/CD
- CSMA/CD 用在以太网中
- CSMA/CA 用在 802.11 中
轮流
- 主节点轮询;令牌传递
- 典型应用:蓝牙、FDDI、令牌环
5.4 LAN 局域网¶
5.4.1 链路层寻址与 ARP¶
-
IP 地址与 MAC 地址
-
32-bit IP 地址:
- 网络层地址
- 用于使数据报到达目的 IP 子网,支持分组转发
-
MAC(或 LAN 或物理或以太网)地址:
- 数据链路层地址
- 用于使数据报从一个物理接口到达另一个物理连接的接口(同一个网络内)
- 48 bit MAC 地址(对多数 LAN)固化于适配器 ROM 中,有些可以软件设置
- 例如: b0-df-c1-20-49-b0
-
-
LAN 地址 / MAC 地址
- 在 LAN 中的每个适配器都具有独一无二的 LAN 地址
- MAC 地址分配由 IEEE 管理; 制造商购买部分 MAC 地址空间(前 24 比特,确保惟一性)
- 类比:
- MAC 地址:像居民身份证号 身份证号 ↔ 居民 MAC 地址 ↔ 适配器
- IP 地址:像邮政地址 邮政地址 ↔ 住址 IP 地址 ↔ 节点所在子网
- MAC 扁平地址 → 可移动性
- 能够将 LAN 卡从一个 LAN 移动到另一个 LAN
- IP 层次地址
- 取决于节点所在的子网
ARP 地址解析协议¶
引入问题: 在同一个局域网内, 已知节点 IP 地址, 如何获取节点的 MAC 地址
- LAN 上的每个 IP 节点(主机/路由器)都有ARP 表
-
ARP 表
- 结构:
- IP/MAC 地址映射 TTL(time to live 寿命): 地址映射过期时间(通常为 20min)
- 结构:
-
使用方式
主机 A 要向同一个局域网内的主机 B 发送数据报,并且 B 的 MAC 地址不在 A 的 ARP 表中
- A 广播 ARP 请求 分组, 请求包含 B 的 IP 地址
- 目的地 MAC 地址=
FF-FF-FF-FF-FF-FF
- 在 LAN 上的所有机器都会接收到 ARP 请求 - 全体目光向我看齐, 我宣布个事, 我要找 B - B 接收到 ARP 分组, 用它的 MAC 地址回应 A - 应答帧发送到 A 的 MAC 地址(单播 )
- A 在它的 ARP 表中缓存(保存)IP-MAC 地址对,直到信息超时 - 超时后被删除
- ARP 是“即插即用”: - 节点自动创建它们的 ARP 表, 无需网络管理员干预
- A 广播 ARP 请求 分组, 请求包含 B 的 IP 地址
- 目的地 MAC 地址=
-
选路到另一个 LAN
目的:主机 A 经路由器 R 向主机 B 发送数据报
- 假设 A 知道 B 的 IP 地址
- 假设 A 知道第一跳路由器 R 的 IP 地址和 MAC 地址
-
A 生成具有源 IP 地址 A、目的 IP 地址 B 的数据报
A 使用 ARP 解析得到 R 的左侧接口(111.111.111.110)的 MAC 地址 E6-E9-00-17-BB-4B,生成数据帧
-
A 发送数据帧到 R R 接收数据帧,解封装数据报,发送到网络层 上升到网络层
-
R 以源 IP 地址 A,目的地址 B 转发数据报 R 使用 B 的 MAC 地址为目的地址,创建数据帧封装 A-to-B IP 数据报, 发送数据帧给 B 降到数据链路层传输
-
B 接收数据帧,解封装数据报,上交到网络层
5.4.2 以太网¶
- 以太网: 使用范围最广的(“占统治地位的”)有线 LAN(局域网)技术
- 优点:
- 100Mbs 网卡百元以内
- 最先广泛使用的 LAN 技术
- 比令牌 LAN 和 ATM 更便宜、配置更简单
- 满足用户对网络速率的要求: 10 Mbps - 10 Gbps
- 优点:
- 以太网拓扑结构
- 逻辑拓扑: 总线拓扑, 广播式局域网, 所有节点都在同一个冲突域
- 逻辑拓扑: 星型拓扑/拓展星型结构, 以集线器/交换机为中心
- 基于集线器的星型结构以太网,本质上还是广播式局域网
- 基于交换机的星型结构以太网,每个交换机接口都是一个单独的冲突域
- 以太网提供的服务
- 以太网提供的服务是不可靠交付,即尽最大努力的交付。
- 无连接:在发送和接收适配器之间没有握手
- 不可靠:接收适配器不向发送适配器发送确认或否定确认
- 当接收方收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
- 如果高层发现丢失了一些数据而进行重传,但以太网不知道这是一个重传的帧,而是当作一个新的数据帧发送。
- 以太网提供的服务是不可靠交付,即尽最大努力的交付。
以太网 V2 的帧结构¶
- 发送适配器在以太网帧(或其他网络层协议分组)中封装 IP 数据报
- 前同步码 (8 字节):
- 模式为前 7 个字节是 10101010,第 8 个字节为 10101011
- 用于同步接收方,发送方时钟速率
- 源/目的地址(各 6 字节):
- 如果适配器接收具有匹配的目的地址或广播地址(如 ARP 分组)的帧,它将帧中的数据提交给网络层协议
- 否则,适配器丢弃帧
- 类型(2 字节)∶ 指示帧中封装的是哪个高层协议分组 (大多数为 IP, 但也可以支持其他类型如 Novell IPX 和 AppleTalk)
- 数据(46~1500 字节)∶ 指示上层协议载荷,有效的 MAC 帧长度 64 字节~1518 字节。
- CRC(4 字节)∶ 在接收方核对,如果检测到差错,该帧就被丢弃
以太网的 CSMA/CD¶
回顾
端到端往返时延\(2\tau\)称为争用期,或碰撞窗口
结论:
- 只有当 A 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会失败。
- A 发送数据帧的最短长度 L 必须满足:\(L/R≥(2D/V)→L>(2D/V)*R\)
10Mbps 以太网争用期定义为 51.2us
- 理想情况下,电磁波在电缆中的传输速率为\(2*10 ^5km/s\)
- 早期的 10Mbps 以太网最多只能有 5 个网段,4 个中继器器,而其中只允许 3 个网段有设备,其他两个只是传输距离的延长,因此 10Mbps 以太网连接的极限距离是 2500 米。
- 所以往返时延\(25μS+\)中继器的额外时延,预估时延取为 45μs,再加上 48bit 的人为干扰信号 (强化碰撞 ) 耗时 4.8μs,所以 IEEE 将 10Mbps 以太网的争用期定义为 51.2us。
- \(10Mb/s*51.2μS=512bit\),512/8=64 字节,即最小帧长度 64 字节
- 强化碰撞
- 发送数据的站点检测到冲突时:
- 立即停止发送数据;
- 再继续发送若干比特(32 或 48bit)的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生碰撞
- 发送数据的站点检测到冲突时:
- 最小帧间间隔
- 以太网还规定帧间最小间隔为 9.6 us(对于 10Mbps 以太网相当于 96 比特时间)。
- 站点在检测到总线开始空闲后,还要等待 9.6 us 才能再次发送数据。
- 目的:为了使刚刚接收到数据帧的接收方的缓存来得及清理,做好接收下一帧的准备。
- 以太网的 CSMA/CD 协议
- 总线拓扑和使用集线器的星型拓扑以太网,显然多个节点同时发送时会出现帧碰撞,因此对于这种广播式以太网,使用 CSMA/CD 协议
- 对于基于交换机的星型结构以太网,采用的是存储转发分组交换,且现代交换机是全双工,不会再有碰撞发生,无需使用 CSMA/CD 协议
- 截断二进制指数退避算法: 发生碰撞的站点在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。(不是每个时隙都以 p 概率发送)
- 确定基本退避时间,一般为争用期\(2\tau\)
- 从整数集合\(\{0,1,.... (2^k-1)\}\)中随机地取出一个数,记为r。 退避等待时间=r 倍的基本退避时间。
- 参数 k 的计算公式:\(k = Min\{重传次数,10\}\)
- 当重发达 16 次仍不能成功时丢弃该帧,并向高层报告。
- 例:
以太网信道利用率¶
- 以太网的信道被占用的情况:
- 争用期长度为 2r,即端到端传播时延的两倍。假设检测到碰撞后不发送干扰信号。
- 帧长为 L(bit),数据发送速率为 C (b/s),因而帧的发送时间为 L/C=T0(s)。
- 一个帧从开始发送,经过可能发生的碰撞后,重传多次,直到发送成功且信道转为空闲(即再经过时间\(\tau\)使得信道上无信号在传播)时为止,是发送一帧所需的平均时间
- 要提高以太网的信道利用率,就必须减小\(\tau\)与 T 之比。
在以太网中定义参数 a,它是以太网单程端到端时延\(\tau\)与帧的发送时间 T0之比: \(a=\frac{\tau}{T_0}\)
- a→0 表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
- a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低
- 极限信道利用率\(S_{max}\)
- 当数据率一定时,以太网的连线长度受到限制,否则\(\tau\)的数值会太大。
- 以太网的帧长不能太短,否则 T0的值会太小,使 a 值太大。
- 在理想情况下,以太网上的各站发送数据都不会产生碰撞,即总线一旦空闲就有某一个站立即发送数据。
- 发送一帧占用线路的时间是\(T_0+ \tau\),而帧本身的发送时间是 T0。 于是理想情况下极限信道利用率\(\textcolor{#66ccff}{S_{max}=\frac{T_0}{T_0+\tau}=\frac{1}{1+a}}\)
不同的以太网技术¶
- 许多不同的以太网技术
- 通用的 MAC 协议和帧格式
- 不同的速率: 2 Mbps,10 Mbps,100 Mbps, 1Gbps, 10Gbps
- 不同的物理介质: 光纤,电缆
- 以太网技术的发展
- 传统以太网最初使用粗同轴电缆,后来演进到使用较便宜细同轴电缆,最后发展为使用更便宜和灵活的双绞线。
- T 表示双绞线(Twisted Pair),如 10Base-T 和 100Base-T; 10BASE-T 的通信距离稍短,节点连接到一台集线器:“星型拓扑”; 每个站到集线器的距离不超过 100 m
- 10/100 Mbps 速率,后者被称为“快速以太网”
- 10BASE-T 无屏蔽双绞线星形以太网的出现,既降低成本,又提高可靠性, 为以太网在局域网中统治地位奠定牢固的基础。
5.4.3 链路层交换机¶
- 广播域与冲突域
- 广播域(Broadcast Domain)是一个逻辑上的计算机组,接收同样广播消息的节点集合。
- 如:在该集合中的任何一个节点传输一个广播帧,则所有其他能收到这个帧的节点都被认为是该广播域的一部分。
- 所以类似 Hub、二层交换机等节点都被认为都是同一个广播域。而路由器,第三层交换机则连接不同的广播域。
- 冲突域(Collision Domain)是一种物理分段,是指连接在同一物理介质上的所有站点的集合
- 同一冲突域中的设备互联时,同一时刻只允许一个设备发送的数据从共享的物理通道中通过,其他设备发送的数据则要等到这个通道处于"空闲"时才可以通过,否则会出现冲突。
- 连接同一冲突域的设备有集线器,中继器或者其他进行简单复制信号的设备。
- 广播域(Broadcast Domain)是一个逻辑上的计算机组,接收同样广播消息的节点集合。
- 集线器互联
- 主干集线器互联 LAN 网段
- 扩展局域网范围,但单独碰撞域会合并为一个大的碰撞域
- 不能互联使用不同以太网技术的局域网(如 10BaseT 和 100BaseT)
链路层交换机¶
- 链路层交换机
- 功能:
- 存储并转发以太网帧
- 检查帧首部并基于 MAC 目的地址选择性地转发帧
- 优点:
- 透明,主机不知道交换机的存在
- 即插即用,自学习,交换机不必配置
- 缺点:
- 主机和路由器 ARP 表较大,生成可观的 ARP 处理量和流量大
- 交换机组成的网络是一个广播域,无法防范广播风暴(转发广播帧)
- 功能:
- 连接方式
- 主机直接连接到交换机接口
- 交换机输出接口设有缓存
- 全双工通信
- 交换:A-to-A'和 B-to-B'可以同时发送,无碰撞(每一个交换机接口都是独立的冲突域),不再需要 MAC 协议
交换机连接 LAN¶
- 当交换机接口直接连接了集线器,而集线器又连接了多台主机时, 每个集线器连接的局域网需要使用 MAC 协议。
- 交换机将子网分割成 LAN,LAN 成为分离的碰撞域
- 交换机过滤分组: LAN 内的数据帧通常不在其他 LAN 上转发
交换机转发表¶
不就是 ARP 吗???不是啊
- 交换机的转发表
- 转发表结构:
[MAC地址, 接口, 生存期]
- 超过生存期的表项被删除
- 收到数据帧时,交换机“得知”发送方在哪个接口
- 交换机中记录了“发送方—接口”的映射关系
- 转发表结构:
-
例: 交换机与集线器互联
- 交换机从 C 接收帧 - 注意到交换机表中 c 位于接口 1(添加 C 的表项) - 因为 D 不在表中,交换机将向接口 2 和 3 转发帧(洪泛)
- D 接收帧
- 交换机从 D 接收帧 - 注意到在交换机表中 D 位于接口 2(添加表项 D)(自学习) - 因为 C 在表中,交换机仅向接口 1 转发帧
- C 接收帧
-
交换机与交换机互联—自学习与转发
- 当 A 向 G 发送数据帧时,S1 如何知道必须通过 S4 转发?而 S4 如何知道通过 S3 转发?
- 也是通过自学习生成交换表
- 当 A 向 G 发送数据帧时,S1 如何知道必须通过 S4 转发?而 S4 如何知道通过 S3 转发?
交换机 vs 路由器¶
- 两者都是存储转发设备
- 路由器:网络层设备(检查网络层首部)
- 交换机:链路层设备(检查链路层首部)
- 两者都有转发表:
- 路由器使用选路算法维护转发表,依靠 IP 地址
- 交换机使用洪泛、自学习维护转发表,依靠 MAC 地址
-
- 集线器和交换机适用于LAN(局域网)
5.4.4 VLAN 虚拟局域网¶
- 引入
左图网络拓扑存在的问题:
- 管理用户:CS 用户移动到 EE,但他可能希望继续连接 CS 的交换机?
- 可能造成交换机部署上的浪费(如机构内部存在多个小组,但每个小组组规模很小)
- 单个广播域缺乏流量隔离: - 所有的二层广播流量(例如携带 ARP 和 DHCP 的报文、或那些目的 MAC 地址还未被交换机学习到的帧) 仍然必须跨越整个机构网络 - 带来安全性、效率问题
- VLAN 虚拟局域网: 支持 VLAN 功能的交换机(ES)允许在一个单一的物理 LAN 上定义多个虚拟局域网
- 这样, 单个物理交换机就可以操作多个虚拟交换机
- 基于端口的 VLAN
- 交换机端口分组(通过交换机管理软件)
- 流量隔离:只能在属于相同 VLAN 的端口之间交付帧
- 也可以根据端点的 MAC 地址定义 VLAN,而不是交换端口
- 动态成员:端口可以动态的在 VLAN 之间分配
- VLAN 之间转发:通过路由器完成
- 跨越多个多交换机的 VLAN
- 干线端口:发送到任何 VLAN 的帧,经过干线端口和链路,转发到其他物理交换机
- 交换机内 VLAN 转发的帧不能是 802.1 帧 (必须携带 VLANID 信息)
- 定义了扩展的以太网 802.1Q 协议用于跨越 VLAN 干线的帧
- 干线端口:发送到任何 VLAN 的帧,经过干线端口和链路,转发到其他物理交换机
- 802.1QVLAN 帧格式
- 标准的以太网帧+4 字节的 VLAN 标签组成。
5.5 PPP 点对点协议¶
广域网使用的协议主要在网络层, 常见的两种广域网链路层协议是 PPP 协议和 HDLC 协议
-
点对点链路层控制
- 一个发送方、一个接收方、一段链路:比广播链路容易处理:
- 无需媒体访问控制
- 不需要明确的 MAC 寻址
- 如拨号链路、ISDN 链路
- 流行的点对点 DLC 协议:
- PPP (point-to-point 协议)
- HDLC:高级数据链路控制(数据链路过去被认为位于协议栈的“高层”!)
- 一个发送方、一个接收方、一段链路:比广播链路容易处理:
-
PPP 设计要求
- 分组成帧:在数据链路帧中封装网络层数据报
- 同时承载任何网络层协议分组(不止是 IP)
- 向上层实现多路分解
- 比特透明传输:在数据字段必须承载任何比特模式差错检测:不纠错,丢弃差错帧
- 连接活跃性:检测、向网络层通告链路故障
- 支持多种类型链路:如 PPPOE,允许多个连接在以太网的用户共享一条到 ISP 的宽带链路。
- 网络层地址协商:网络层实体能够协商或配置彼此的网络地址
- 分组成帧:在数据链路帧中封装网络层数据报
-
PPP 数据帧
- 标志:定界符(成帧)
- 地址:不起作用(仅是一个选项)
- 控制:不起作用﹔以后可能有多种控制字段
- 协议:该帧交付的高层协议(如 PPP-LCP, IP, IPCP 等)信息:上层协议的分组数据
- 校验:实现差错检测的冗余循环校验
PPP 数据传输 (帧定界)¶
考虑:发送方向接收方发送了若干数据帧,接收方如何从比特流中区分出数据帧?
- 解决方案:使用帧定界符,PPP 为 0x7E(01111110)
考虑:如果数据字段中出现了和帧定界符 01111110 一样的比特流,接收方会误判为上一个帧结束了,如何解决?
- 解决方案:采用透明传输,即按某种规则对数据进行“转义”
- PPP 异步传输的字符填充法
- 对于发送方的转义规则为:
- 信息字段中出现的每一个
0x7E
字节序列,转变成为 2 字节序列[0x7D,0x5E]
。 - 信息字段中出现的一个
0x7D
的字节序列,转变成为 2 字节序列[0x7D, 0x5D]
。 - 信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),转变为 2 字节序列(0x7D 字节,该字符与 0X20 异或值)
- 信息字段中出现的每一个
- 总结:
7E
开始/结束符;原7E
→7D 5E
;原7D
→7D 5D
- 对于发送方的转义规则为:
- PPP 同步传输的零比特填充
- PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。
- 这时 PPP 协议采用零比特填充方法来实现透明传输。
- 在发送端,只要发现有 5 个连续 1,则立即填入一个 0。
- 接收端对帧中的比特流进行扫描。每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除。
- PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。
PPP 数据控制协议¶
- 在交换网络层数据前,数据链路对等方必须:LCP\NCP
- LCP 链路控制协议: 配置 PPP 链路(如最大的帧长,身份鉴别协议等)
- NCP 网络控制协议: 学习/配置网络层信息
- 对 IP:使用 IP 控制协议(IPCP)分组,封装成 PPP 帧(协议字段:8021),完成 IP 地址等相关信息的配置
第六章 物理层¶
这一小节补充 PPT:物理层
6.1 物理层基础概念¶
- 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体
- 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。
- 用于物理层的协议也常称为物理层规程 (procedure)。
-
物理层特性:
- 机械特性:指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。
- 电气特性:指明在接口电缆的各条线上出现的电压的范围。
- 功能特性:指明某条线上出现的某一电平的电压的意义。
- 过程特性 :指明对于不同功能的各种可能事件的出现顺序。
6.2 数据通信基础知识¶
6.2.1 数据通信系统的模型¶
常用术语
- 数据(data):传递信息的实体,通常是有意义的符号序列。
- 信号(signal):数据的电气/电磁的表现,是数据在传输过程中的存在形式。
- 数字信号:代表消息的参数取值是离散的 (字符, 数字)
- 模拟信号:代表信号的参数取值是连续的 (声音)
- 码元 (code) —— 在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。
6.2.2 信道的基本概念¶
信道¶
- 信源:产生和发送数据的源头。
- 信宿:接收数据的终点
- 信道:信号的传输媒介。一般用来表示像某一个方向传输信号的介质,因此一条通信线路往往包含一条发送信道和一条接收信道。
三种通信方式¶
- 单工通信:只有一个方向的通信而没有反方向的交互,仅需一条信道。
- 半双工通信:通信的双方都可以发送或接受信息,但任何一方都不能同时发送和接收,需要两条信道。
- 全双工通信:通信双方可以同时发送和接收信息,也需要两条信道。
两种数据传输方式:
- 串行传输:速度慢,费用低,适合远距离
- 并行传输:速度快,费用高,适合近距离
常用编码方式¶
- 不归零制:正电平代表 1,负电平代表 0。
- 归零制:正脉冲代表 1,负脉冲代表 0。
- 曼彻斯特编码:位周期中心的向上跳 ↑ 变代表 0,位周期中心的向下跳变 ↓ 代表 1。但也可反过来定义。
- 差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表 0(跟上一个一样),而位开始边界没有跳变代表 1(跟上一个相反)
- 几种编码方式的特点
- 从信号波形中可以看出,曼彻斯特 (Manchester) 编码和差分曼彻斯特编码产生的信号频率比不归零制高。
- 从自同步能力来看,不归零制不能从信号波形本身中提取信号时钟频率(这叫做没有自同步能力),而曼彻斯特编码和差分曼彻斯特编码具有自同步能力。
调制¶
- 基带信号(即基本频带信号)—— 来自信源的信号。(像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号)。 基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制 (modulation)
-
调制的分类
- 基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码 (coding)。
- 带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道)
- 带通信号 :经过载波调制后的信号
-
基本的二元制调制方法
- 调幅(AM):载波的振幅随基带数字信号而变化。
- 调频(FM):载波的频率随基带数字信号而变化。
- 调相(PM) :载波的初始相位随基带数字信号而变化。
-
正交振幅调制 QAM (Quadrature Amplitude Modulation) : 为了达到更高的信息传输速率,采用技术上更为复杂的多元制的振幅相位混合调制方法。
- 12 种相位, 16 种组合 即 16 个码元; 一个码元传递 4bit 的信息, 数据传输率提高 4 倍
- 不是码元越多越好。若每一个码元可表示的比特数越多,则在接收端进行解调时要正确识别每一种状态就越困难,出错率增加
6.2.3 信道的极限容量¶
任何实际的信道都不是理想的,在传输信号时会产生各种失真以及带来多种干扰。
码元传输的速率越高,或信号传输的距离越远,或传输媒体质量越差,在信道的输出端的波形的失真就越严重。
- 从概念上讲,限制码元在信道上的传输速率的因素有以下两个:
- 信道能够通过的频率范围
- 信噪比
-
奈奎斯特定理 (奈氏准则)
- 【普通】在任何信道中,码元传输的速率是有上限的,否则就会出现码间串扰的问题,使接收端对码元的判决(即识别)成为不可能
- 在理想低通(无噪声, 带宽有限)的信道中, 为避免码间串扰, \(极限码元传输速率=2W(波特)=2Wlog_2 V(b/s)\) 【考研】
- \(W\): 理想低通信道的带宽
- \(V\): 每个码元离散电平的数目
-
信噪比
-
信噪比就是信号的平均功率和噪声的平均功率之比。常记为\(S/N\),并用分贝 (dB) 作为度量单位。
即:\(信噪比(dB) = 10 log10(S/N ) (dB); S/N=10^{信噪比/10}\)
- 例如,当 S/N=10 时,信噪比为 10dB,而当 S/N=1000 时,信噪比为 30dB
-
-
香农定理
- 带宽受限且有高斯白噪声的干扰的信道的极限数据传输速率, 用此速率传输不会产生误差
- \(信道的极限传输速率=W log_2(1+S/N)\ (b/s)\)
- W 为信道的带宽(以 Hz 为单位); S 为信道内所传信号的平均功率; N 为信道内部的高斯噪声功率。
对于频带宽度已确定的信道, 提高传输速率的方法
- 提高信噪比
- 提高码元传输速率
- 改进编码, 使得一个码元携带更多信息
6.3 物理层下的传输媒体¶
传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。
传输媒体可分为两大类,即导引型传输媒体和非导引型传输媒体。
- 在导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播。
- 非导引型传输媒体就是指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输。
6.3.1 导引型传输媒体¶
-
双绞线:
- 局域网中的主流传输媒体
- 模拟传输和数字传输都可以使用双绞线,其通信距离一般为几到十几公里
- 屏蔽双绞线 STP(Shielded Twisted Pair)
- 无屏蔽双绞线 UTP(Unshielded Twisted Pair)
-
同轴电缆:
- 同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据。
- 同轴电缆的带宽取决于电缆的质量。
- 细缆(适合短距离,安装容易,造价低)
- 粗缆(适合较大局域网,布线距离长,可靠性好)
-
光缆
- 光纤是光纤通信的传输媒体。
- 由于可见光的频率非常高,约为 108 MHz 的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽
-
- 只要从纤芯中射到纤芯表面的光线的入射角大于某个临界角度,就可产生全反射。
- 多模光纤: 可以存在多条不同角度入射的光线在一条光纤中传输。
- 单模光纤: 若光纤的直径减小到只有一个光的波长,则光纤就像一根波导那样,它可使光线一直向前传播,而不会产生多次反射。
- 光纤优点
- 通信容量非常大。
- 传输损耗小,中继距离长。
- 抗雷电和电磁干扰性能好。
- 无串音干扰,保密性好。
- 体积小,重量轻。
6.3.2 非导引型传输媒体¶
- 将自由空间称为“非导引型传输媒体”。
- 无线传输所使用的频段很广。
- 短波通信(即高频通信)主要是靠电离层的反射,但短波信道的通信质量较差,传输速率低。
- 微波在空间主要是直线传播。
- 传统微波通信有两种方式:
- 地面微波接力通信
- 卫星通信
6.4 信道复用技术¶
-
复用 (multiplexing) 是通信技术中的基本概念。它允许用户使用一个共享信道进行通信,降低成本,提高利用率。
- 频分复用 FDM (Frequency Division Multiplexing):所有用户在同样的时间占用不同的频率带宽资源。
-
时分复用 TDM(Time Division Multiplexing): 将时间划分为一段段等长的时分复用帧(TDM 帧)
- 时分复用的所有用户在不同的时间占用同样的频带宽度
- 使用时分复用系统传送计算机数据时,由于计算机数据的突发性质,用户对分配到的子信道的利用率不高,造成资源的浪费
- 统计时分复用 STDM(Statistic TDM)是改进的时分复用,明显地提高信道的利用率。
- 波分复用 WDM (Wavelength Division Multiplexing):光的频分复用
码分复用 CDM¶
- 码分复用 CDM (Code Division Multiplexing):常用的名词是码分多址 CDMA:有很强的抗干扰能力。 各用户使用经过特殊挑选的不同码型,彼此不会造成干扰。
-
每一个比特时间划分为 m 个短的间隔,称为码片 (chip)。
-
每个站被指派一个唯一的 m bit 码片序列。
- 如发送比特 1,则发送自己的 m bit 码片序列。
- 如发送比特 0,则发送该码片序列的二进制反码。
- 例如,S 站的 8 bit 码片序列是 00011011。
- 发送比特 1 时,就发送序列 00011011,
- 发送比特 0 时,就发送序列 11100100。
- S 站的码片序列:
(–1 –1 –1 +1 +1 –1 +1 +1)
-
- 假定 S 站要发送信息的数据率为 b bit/s。由于每一个比特要转换成 m 个比特的码片,因此 S 站实际上发送的数据率提高到 mb bit/s,同时 S 站所占用的频带宽度也提高到原来数值的 m 倍。这种通信方式是扩频(spread spectrum)通信中的一种。
- 扩频通信通常有两大类:
- 一种是直接序列扩频 DSSS (Direct Sequence Spread Spectrum),如上面讲的使用码片序列就是这一类。
- 另一种是跳频扩频 FHSS (Frequency Hopping Spread Spectrum)。
- 每个站分配的码片序列不仅必须各不相同,并且还必须互相正交 (orthogonal)。
- 正交:\(S\cdot T=\frac 1 m\sum^m_{i=1}S_iT_i\)
- 任何一个码片向量和该码片向量自己(
1
)的规格化内积都是 1 。\(S\cdot S=\frac 1 m\sum^m_{i=1}S_iS_i=\frac 1 m\sum^m_{i=1}S_i^2=\frac 1 m\sum^m_{i=1}(\pm 1)^2=1\) - 一个码片向量和该码片反码(
-1
)的向量的规格化内积值是 –1。
6.5 数字传输系统¶
- 同步光纤网 SONET
- 同步光纤网 SONET (Synchronous Optical Network) 的各级时钟都来自一个非常精确的主时钟。
- SONET 为光纤传输系统定义了同步传输的线路速率等级结构
- 对电信信号称为第 1 级同步传送信号 STS-1 (Synchronous Transport Signal),其传输速率是 51.84 Mbit/s。
- 对光信号则称为第 1 级光载波 OC-1 (OC 表示 Optical Carrier)。
- 现已定义了从 51.84 Mbit/s (即 OC-1) 一直到 9953.280 Mbit/s (即 OC-192/STS-192) 的标准。
- 同步数字系列 SDH
- ITU-T 以美国标准 SONET 为基础,制订出国际标准同步数字系列 SDH (Synchronous Digital Hierarchy)。
- 一般可认为 SDH 与 SONET 是==同义词== 。
- 其主要不同点是:SDH 的基本速率为 155.52 Mbit/s,称为第 1 级同步传递模块 (Synchronous Transfer Module),即 STM-1,相当于 SONET 体系中的 OC-3 速率。
- SONET / SDH 标准的意义
- 使不同的数字传输体制在 STM-1 等级上获得了统一。
- 第一次真正实现了数字传输体制上的世界性标准。
- 已成为公认的新一代理想的传输网体制。
- SDH 标准也适合于微波和卫星传输的技术体制。
6.6 宽带接入¶
用户要连接到互联网,必须先连接到某个 ISP。
从宽带接入的媒体来看,可以划分为两大类:① 有线宽带接入 ② 无线宽带接入
6.6.1 ADSL 技术¶
-
ADSL 技术
- 非对称数字用户线 ADSL (Asymmetric Digital Subscriber Line) 技术就是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。
- 标准模拟电话信号的频带被限制在 300~3400 Hz 的范围内,但用户线本身实际可通过的信号频率仍然超过 1 MHz。
- ADSL 技术就把 0~4 kHz 低端频谱留给传统电话使用,而把原来没有被利用的高端频谱留给用户上网使用。
-
DSL 的几种类型
- ADSL (Asymmetric Digital Subscriber Line):非对称数字用户线
- HDSL (High speed DSL):高速数字用户线
- SDSL (Single-line DSL):1 对线的数字用户线
- VDSL (Very high speed DSL):甚高速数字用户线
- DSL (Digital Subscriber Line) :数字用户线
- RADSL (Rate-Adaptive DSL):速率自适应 DSL,是 ADSL 的一个子集,可自动调节线路速率
-
ADSL 的传输距离
- ADSL 的传输距离取决于数据率和用户线的线径(用户线越细,信号传输时的衰减就越大)。
- ADSL 所能得到的最高数据传输速率与实际的用户线上的信噪比密切相关。
- 例如:0.5 毫米线径的用户线,传输速率为 1.5~2.0 Mbit/s 时可传送 5.5 公里,但当传输速率提高到 6.1 Mbit/s 时,传输距离就缩短为 3.7 公里。
- 如果把用户线的线径减小到 0.4 毫米,那么在 6.1 Mbit/s 的传输速率下就只能传送 2.7 公里。
- ADSL 的特点
- 上行和下行带宽做成不对称的。上行指从用户到 ISP,而下行指从 ISP 到用户。
- ADSL 在用户线(铜线)的两端各安装一个 ADSL 调制解调器 。
- 我国目前采用的方案是离散多音调 DMT (Discrete Multi-Tone)调制技术。
- 这里的“多音调”就是“多载波”或“多子信道”的意思。
- DMT 技术 离散多音频调制(DMT,Discrete Multi-Tone)
- DMT 调制技术采用FDM 频分复用的方法,把 40 kHz 以上一直到 1.1 MHz 的高端频谱划分为许多子信道,其中 25 个子信道用于上行信道,而 249 个子信道用于下行信道。
- 每个子信道占据 4 kHz 带宽(严格讲是 4.3125 kHz),并使用不同的载波(即不同的音调)进行数字调制。这种做法相当于在一对用户线上使用许多小的调制解调器==并行地== 传送数据。
- ADSL 的数据率
- 由于用户线的具体条件往往相差很大(距离、线径、受到相邻用户线的干扰程度等都不同),因此 ADSL 采用==自适应调制技术== 使用户线能够传送尽可能高的数据率。
- 当 ADSL 启动时,用户线两端的 ADSL 调制解调器就测试可用的频率、各子信道受到的干扰情况,以及在每一个频率上测试信号的传输质量。
- ADSL 不能保证固定的数据率 。对于质量很差的用户线甚至无法开通 ADSL。
- 通常下行数据率在 32 kbit/s 到 6.4 Mbit/s 之间,而上行数据率在 32 kbit/s 到 640 kbit/s 之间。
- ADSL 的组成
- 第二代 ADSL
- 包括 ADSL2(G.992.3 和 G.992.4)和 ADSL2+(G.992.5)。
- 通过提高调制效率得到了==更高的数据率== 。
- ADSL2 要求至少应支持下行 8 Mbit/s、上行 800 kbit/s 的速率。
- ADSL2+ 则将频谱范围从 1.1 MHz 扩展至 2.2 MHz,下行速率可达 16 Mbit/s(最大传输速率可达 25 Mbit/s),而上行速率可达 800 kbit/s。
- 采用了无缝速率自适应技术 SRA (Seamless Rate Adaptation),可在运营中不中断通信和不产生误码的情况下,自适应地调整数据率。
- 改善了线路质量评测和故障定位功能,这对提高网络的运行维护水平具有非常重要的意义。
6.6.2 光纤同轴混合网(HFC 网)¶
- HFC (Hybrid Fiber Coax) 网是在目前覆盖面很广的有线电视网 CATV 的基础上开发的一种居民宽带接入网。
- HFC 网除可传送 CATV 外,还提供电话、数据和其他宽带交互型业务。
- 现有的 CATV 网是树形拓扑结构的同轴电缆网络,它采用模拟技术的频分复用对电视节目进行单向传输。
- HFC 网对 CATV 网进行了改造。
- HFC 网的主干线路采用光纤
- HFC 网将原 CATV 网中的同轴电缆主干部分改换为光纤,并使用==模拟光纤技术== 。
- 在模拟光纤中采用光的振幅调制 AM,这比使用数字光纤更为经济。
- 模拟光纤从==头端== 连接到==光纤结点== (fiber node),即==光分配结点== ODN (Optical Distribution Node)。在光纤结点光信号被转换为电信号。在光纤结点以下就是同轴电缆。
- HFC 网采用结点体系结构
6.6.3 FTTx 技术¶
- FTTx 是一种实现宽带居民接入网的方案,代表多种宽带光纤接入方式。
-
FTTx 表示 Fiber To The…(光纤到…),例如:
-
光纤到户 FTTH (Fiber To The Home):光纤一直铺设到用户家庭,可能是居民接入网最后的解决方法。
-
光纤到大楼 FTTB (Fiber To The Building):光纤进入大楼后就转换为电信号,然后用电缆或双绞线分配到各用户。
-
光纤到路边 FTTC (Fiber To The Curb):光纤铺到路边,从路边到各用户可使用星形结构双绞线作为传输媒体。
-
第七章 网络安全¶
攻击分类¶
- 截获: 机密性
- 篡改: 完整性 / 端点鉴别
- 恶意攻击: 访问控制
加密算法¶
- DES
- 数据加密标准 DES 属于对称密钥密码体制,是一种分组密码。
- 在加密前,先对整个明文进行分组。每一个组长为 64 位。
- 然后对每一个 64 位 二进制数据进行加密处理,产生一组 64 位密文 数据。
- 最后将各组密文串接起来,即得出整个的密文。
- DES 的保密性仅取决于对密钥的保密
-
公钥密码体制(为公开密钥密码体制)
- 使用不同的加密密钥与解密密钥,是一种由已知加密密钥推导出解密密钥在计算上是不可行的”密码体
制。
- 在公钥密码体制中,加密密钥 PK 是向公众公开的,而解密密钥 SK 则是需要保密的。
- 加密算法和解密算法是公开的
- 如果某一信息用对方的公开密钥加密,则必须用私有密钥解密,这就是实现保密的方法
- 使用不同的加密密钥与解密密钥,是一种由已知加密密钥推导出解密密钥在计算上是不可行的”密码体
制。
-
数字签名
- 如果某一信息用自己的私有密钥加密,那么,它必须用公开密钥解密。这就是实现数字签名的方法
-
IPSEC
- 给网络层提供安全通信的协议族
- IP 安全数据报格式 两个协议 鉴别首部 AH 和 封装安全有效载荷 ESP (Encapsulation Security Protocol)
- SSL
- 给运输层,应用层提供安全传输的协议
- 改进型是 TSL
第八章 多媒体¶
- 实时流式协议 RSTP (Real-time Streaming Protocol)
- RTSP 协议以客户服务器方式工作,如:暂停/继续、后退、前进等。它是一个多媒体播放控制协议,用 来使用户在播放从因特网下载的实时数据时能够进行控制
- 发起/终结流媒体
- 实时运输协议 RTP (Real-time Transport Protocol)
- RTP 协议负责对流媒体数据进行封包并实现媒体流的实时传输
- 传输流媒体数据
- 会话发起协议 SIP (Session Initiation Protocol)
- 是两个用户终端之间基于 IP 网络的会话
- RSVP
- 资源预留协议,通过预留空间,来减缓延迟
第九章 无线网络¶
- IEEE 802.11
- 使用 CSMA/CA 进行碰撞检测
另附¶
熟知端口号¶
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
协议格式¶
① 以太网 v2 帧结构¶
- 前同步码 (8 字节):
- 模式为前 7 个字节是 10101010,第 8 个字节为 10101011
- 用于同步接收方,发送方时钟速率
- 源/目的地址(各 6 字节):
- 如果适配器接收具有匹配的目的地址或广播地址(如 ARP 分组)的帧,它将帧中的数据提交给网络层协议
- 否则,适配器丢弃帧
- 类型(2 字节)∶ 指示帧中封装的是哪个高层协议分组 (大多数为 IP, 但也可以支持其他类型如 Novell IPX 和 AppleTalk)
- 数据(46~1500 字节)∶ 指示上层协议载荷,有效的 MAC 帧长度 64 字节~1518 字节。
- CRC(4 字节)∶ 在接收方核对,如果检测到差错,该帧就被丢弃
② IP 数据报¶
一个 IP 数据报由首部(20 字节+可选字段)和数据两部分组成
-
总长度 16 位
- 指首部和数据部分长度之和(单位为字节)
- 216 - 1=65535B, 但是以太网帧的最大传输单元(MTU)为 1500B, 当一个 IP 数据报成帧时, 不能超过 MTU 的值, 只能进行分片
-
标识 16 位 Fragmentation Identifier-分片标识符
- 用于分片时标识片来自同一个 IP 数据报
-
标志 3 位
- 标志分片情况
- 3bits,从左到右分别为:
- 预留,为 0
- DF,为 1 表示:禁止分片; 为 0 表示:允许分片
- MF,为 1 表示:之后还有更多分片; 为 0 表示:是最后一个分片的数据报
-
段偏移 13 位
- 指出分片后在原分组中的相对位置
- 其值 ×8B 为实际的偏移值, 即偏移量以 8 个字节为偏移单位
-
生存时间(TTL-Time To Live) 8 位
- 数据报在网络中可以通过的路由器数的最大值, 标识分组在网络中的寿命。 路由器在转发分组前, 先将 TTL-1 若 TTL=0, 丢弃分组
- TTL 缺省值为 30 或更多,除非出现路由循环一般够用
- 考题: 防止路由循环, IP 数据报采取什么方式
-
协议 8 位
- 指出分组携带数据使用什么协议(即数据部分应该上交给哪个协议进行处理); 如 TCP(值为 6), UDP(值为 17)
-
首部校验和 16 位
- 只校验分组首部, 不校验数据部分
-
原地址字段 4B 32 位 : 发送方的 IP 地址 目的地址字段 4B 32 位 : 接收方的 IP 地址
③UDP¶
报文段结构如下图:
- 另附 UDP 校验和
- 校验和计算需要用到伪首部, UDP 首部, UDP 数据部分
④TCP¶
TCP 报文段结构如下图:
与 UDP 一样,首部包括源端口号(Source port)和目的端口号(Dest port),它被用于多路复用和多路分解来自或送到上层应用的数据,也包括检验和字段(Internet checksum),首部还包括以下字段:
- 32bit 的序号字段(Sequence number)和 32bit 的确认号字段(Acknowledgement number);
- 16bit 的接受窗字段(Receive window):用于控制流量;
- 4bit 的首部长度字段(Header length):指示了以 32bit 的字为单位的 TCP 首部长度;
- 可选和变长的选项字段(Options):用于发送方与接收方协商最大报文段长度(MSS)时,或在高速网络环境下用作窗口调节因子时使用;
- 6bit 的标志字段(flag field):
ACK
:确认字段中的值是否有效;RST
,SYN
,FIN
:用于连接建立和拆除;CWR
,ECE
:在明确拥塞通过中使用;PSH
:被置位时,指示接收方立即将数据交给上层;URG
:指示报文段中存放着被发送端上层实体置为“紧急”的数据;
- 16bit 的紧急数据指针字段(Urgent data point):指出紧急数据的最后一个字节;