Computer Network : A up-down Approach
Chapter 1 计算机网络和因特网
1.1 什么是因特网
1.1.1 具体构成描述
因特网是一个世界范围的计算机网络,即它是一个互联了遍及全世界的数以亿计的计算设备的网络
所有的因特网端系统,都称为 主机 或 端系统
端系统通过 通信链路 和 分组交换机 连接在一起
当一台端系统有数据要向另一台端系统发送时, 发送端系统将数据分段, 并为每段加上首部字节, 由此形成的信息包称为 分组
分组交换机从它的一条入通信链路接收到达的分组, 并从它的一条出通信链路转发该分组. 分组交换机最著名的类型是 路由器 和 链路层交换机
从发送端系统到接收端系统, 一个分组所经历的一系列通信链路和分组交换机称为通过该网络的 路径
分组可以类似于卡车, 通信链路类似于公路和铁路, 分组交换机类似于立交桥, 而端系统类似于建筑物. 就像卡车选取运输网络的一条路径前行一样,分组选取计算机网络的一条路径前行
端系统通过 因特网服务提供商(ISP) 接入因特网
端系统, 分组交换机和其他互联网部件, 都要运行控制因特网中信息接收和发生的一系列 协议 , 这些协议控制因特网中信息的传递和发送. TCP 和 IP 是因特网中两个最重要的协议, 统称为 TCP/IP
涉及多个互相交换数据的端系统, 这类应用称为 分布式应用
1.1.2 服务描述
与因特网相连的端系统提供了一个 套接字接口 , 该接口规定了运行在端系统上的程序请求因特网基础设施向运行在另一个端系统的特地目的程序交付数据的方式
因特网的两种描述方法: 1. 根据它的硬件和软件 2.根据基础设施向分布式应用提供的服务
1.1.3 协议
网络协议类似于人类协议, 只是交换报文和采取操作的实体是某些设备的硬件或软件. 在因特网中, 涉及两个或多个远程通信实体的所有活动都受协议的制约
协议 定义了在两个或多个通信实体之间交换的报文的格式和顺序, 以及报文发送/接受或其它事件采取的操作
1.2 网络边缘
把与因特网相连的计算机和其他设备称为端系统
因为它们位于因特网的边缘, 所以叫做端系统
端系统也称为 主机 , 主机有时候又被进一步划分为两类: 客户 和 服务器
1.2.1 接入网
接入网 : 将端系统物理连接到其边缘服务器的网络
- 家庭接入: DSL 电缆 FTTH 5G固定式天线
接入途径: 数字客户线 和 电缆
因为这些上行速率和下行速率是不同的, 所以这种接入被称为不对称的
- 企业接入: 以太网和WiFi
在公司和大学校园以及越来越多的家庭环境中, 都使用局域网(LAN)将端系统接入到边缘路由器
以太网是目前为止是公司, 大学, 家庭网络最为流行的接入技术
在无线LAN环境中, 无线用户从/到一个接入点发送/接受分组, 该接入点与企业网连接, 企业网再与有线因特网连接
1.2.2 物理媒介
比特从源到目的地传输时, 通过一系列传输器-接收器对进行传递. 对于每个传输器-接收器对, 该比特通过传播电磁波或光脉冲的方式跨越某种 物理媒介 进行发送. 该物理媒介可具有多种形状和形式, 并且对沿途的每个传输器-接收器对而言不必具有相同的类型.
物理媒介分成两种类型: 导引型媒介 和 非导引型媒介 . 对于导引型媒介, 电波沿着固体媒介前行, 如光缆, 双绞铜线或同轴电缆, 对于非导引型媒介, 电波在空气或外层空间中传播, 例如在无线局域网或数字卫星频道中传播
- 双绞铜线
最便宜且最常用的媒介是双绞铜线, 双绞线由两根绝缘的铜线组成, 每根大约1mm粗, 以规则的螺旋状排列着, 这两根线绞合起来, 以减少邻近双绞线的电气干扰
- 同轴电缆
同轴电缆由两根铜导体组成, 但是这两根导体是同心的而不是并行的. 借助于这种结构及特殊的绝缘体和保护层, 同轴电缆能够达到较高的数据传输速率
- 光纤
光纤是一种细而柔软的, 能够引导光脉冲的媒介, 其中每个脉冲表示一个比特, 它们不受电磁干扰, 对长达100km的光缆信号衰减极低, 并且很难窃听. 这些特征使得光纤成为长途导引型传输媒介, 特别是跨海链路
- 陆地无线电信道
无线电信道用电磁频谱承载信号, 它不需要安装物理线路, 并且具有穿透墙壁, 提供与移动用户的连接以及长距离承载信号的能力
- 卫星无线电信道
分为同步卫星和近地轨道卫星
1.3 网络核心
1.3.1 分组交换
源将长报文划分为较小的数据块, 称为 分组 , 在源和目的地之间, 每个分组都通过通信链路和 分组交换机 传送, 交换机主要有 路由器 和 链路层交换机 , 分组以等于该链路最大传输速率的速度通过通信链路
- 存储转发传输
多数分组交换机是在链路的输入端使用 存储转发传输 机制.
存储转发传输是指在交换机开始向输出链路传输该分组的第一个比特之前, 必须接收到整个分组
通过由 N N N 条速率均为 R R R 的链路组成的路径 (所以在源和目的地之间由 N − 1 N - 1 N−1 台路由器), 从源到目的地发送一个分组. 应用与上面相同的逻辑, 则端到端时延为 : d e n d − e n d = N L R d_{end-end} = N\frac{L}{R} dend−end=NRL
- 排队时延和分组丢失
对于每条相连的链路, 该分组交换机具有一个 输出缓存
如果到达的分组需要传输到某条链路, 但发现该链路正忙于传输其他分组, 该到达分组必须在输出缓存中等待
除了存储转发时延之外, 分组需要承受输出缓存的 排队时延
因为缓存空间的大小是有限的, 一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了, 在此情况下, 将出现 分组丢失(丢包) 到达的分组或已经排队的分组之一将被丢弃
- 转发表和路由选择协议
当源主机要向目的端系统发送一个分组时, 源在该分组的首部中包含了目的地的IP地址. 如同邮政地址那样, 该地址具有一种等级结构, 当一个分组到达网络中的路由器时, 路由器检查该分组的目的地址的一部分, 并向一台相邻的路由器发送该分组
当某分组抵达一台路由器时, 路由器检查该地址, 并用这个目的地址搜索其转发表, 以发现适当的出链路. 路由器再将该分组导向该出链路
1.3.2 电路交换
通过网络链路和交换机移动数据有两种基本方法 : 电路交换 和 分组交换
在电路交换网络中, 在端系统间通信会话期间, 预留了端系统间沿路径通信所需要的资源. 在分组交换网络中, 这些资源则不是必须的
当两台主机要通信时, 该网络在两台主机之间创建一条专用的端到端连接
- 电路交换网络中的复用
链路中的电路是通过 频分复用(FDM) 或 时分复用(TDM) 来实现的. 对于FDM, 链路中的频谱由跨越链路创建的所有连接共享
对于一条TDM链路, 时间被划分为固定时段的帧, 并且每个帧又被划分为固定数量的时隙. 时隙专门由该连接单独使用, 一个时隙可用于传输该连接的数据
对于TDM, 一条电路的传输速率等于帧速率乘以一个时隙的比特数量
电路交换不考虑需求, 而预先分配了传输链路, 这使得已分配而并不需要的链路时间未被利用. 另一方面, 分组交换按需分配链路, 链路传输能力将在所有需要在链路上传输分组的用户之间逐分组地被共享(统计多路复用)
1.3.3 网络的网络
单一的 全球传输ISP 互联所有接入ISP
接入ISP向全球传输ISP付费, 故接入ISP被认为是 客户 , 而全球传输ISP被认为是 提供商
每个区域ISP则与第一层ISP相连接
一个PoP知识提供商网络中的一台或多台路由器群组, 其中客户ISP能够与提供商ISP连接
位于相同等级结构层次的邻近的的一对ISP能够 对等 , 也就是说, 能够直接将它们的网络连到一起, 使它们之间的所有流量经直接连接而不是通过上游的中间ISP传输, 当两个ISP对等时, 通常不进行结算, 即任何一个ISP都不向对等付费
1.4 分组交换网中的时延, 丢包和吞吐量
1.4.1 分组交换网中的时延
节点处理时延 , 排队时延 , 传输时延 , 传播时延
累加起来就是 节点总时延
(1) 处理时延
检查分组首部和决定将该分组导向何处所需要的时间是 处理时延 的一部分
在这种节点处理之后, 路由器将该分组引向通往路由器B的链路之前的队列
(2) 排队时延
在队列中, 当分组砸死链路上等待传输时, 将经受排队时延
如果该队列是空的, 并且当前没有其他分组正在传输, 则该分组的排队时延为0, 另一方面, 如果流量很大, 并且很多其他分组也在等待传输, 该排队时延将很长
(3) 传输时延
用 L L L 表示该分组的长度, 用 R R R 表示从路由器A到路由器B的链路传输速率, 那么 传输时延 是 L / R L / R L/R , 这是将所有分组的比特推向链路所需要的时间, 实际的传输时延通常在毫秒到微妙量级
(4) 传播时延
一旦一个比特被推向链路, 该比特需要向路由器B传输, 从该链路的起点到路由器B传输所需要的时间是 传播时延 , 该传播时延等于两台路由器之间的距离除以传播速率, 即传播时延是 d / s d/ s d/s , d d d 是路由器A到路由器B的距离, s s s 是链路的传播速率
(5) 传输时延和传播时延的比较
传输时延是路由器推出分组的时间, 它是分组长度和链路传输速率的函数, 与两台路由器之间的距离无关, 传播时延是一个比特从一台路由器传播到另一台路由器所需要的时间, 它是两台路由器之间距离的函数, 与分组长度和链路传输速率无关
令 d p r o c , d q u e u e , d t r a n s , d p r o p d_{proc}, d_{queue}, d_{trans}, d_{prop} dproc,dqueue,dtrans,dprop 分别表示处理时延, 排队时延, 传输时延, 传播时延, 则节点的总时延 d m o d a l = d p r o c + d q u e u e + d t r a n s + d p r o p d_{modal} = d_{proc} + d_{queue} + d_{trans} + d_{prop} dmodal=dproc+dqueue+dtrans+dprop
1.4.2 排队时延和丢包
与其他三项时延有所不同的是, 排队时延对不同的分组可能是不同的
令 a a a 表示分组到达队列的平均速率, 比率 L a / R La/R La/R 被称为 流量强度
如果 L a / R > 1 La/R >1 La/R>1 , 则比特到达队列的平均速率超过从该队列传输出去的速率
设计系统时流量强度不能超过1
当 L a / R ≤ 1 La/R \le 1 La/R≤1 时, 传输第 n n n 个分组具有 ( n − 1 ) L / R (n - 1)L/R (n−1)L/R 秒的排队时延
如果流量强度接近0, 则几乎没有其他分组到达并且到达间隔很大, 那到达的分组就不可能在队列中发现别的分组, 因此平均排队时延接近0
当流量强度接近1时, 当到达速率超过传输能力时将存在时间间隔, 在这些时段中将形成队列, 到达速率小于传输能力时, 队列的长度将缩短, 无论如何, 随着流量强度接近1, 平均排队长度将越来越长
到达分组发现一个满的队列, 由于没有地方储存这个分组, 路由器将 丢弃 这个分组, 即该分组会 丢失
分组丢失的比例随着流量强度的增加而增加
1.4.4 计算机网络中的吞吐量
考虑从主机A发送一个大文件到主机B, 在任何时间, 瞬时吞吐量 是主机B接受文件的速率
如果该文件由 F F F 个bit组成, 主机B接收到所有 F F F bit用去 T T T 秒, 则文件传输的平均吞吐量是 F / T F/T F/T bps
令 R s R_s Rs 表示服务器与路由器之间的链路速率, R c R_c Rc 表示路由器与客户机之间的链路速率. 对于这种简单的双链路网络, 吞吐量是 min R c , R s \min{R_c, R_s} minRc,Rs , 也就是 瓶颈链路 的传输速率
在服务器和客户之间有 N N N 条链路的网络. 这 N N N 条链路的传输速率为 R 1 , R 2 , R 3 , ⋯ , R N R_1, R_2,R_3,\cdots, R_N R1,R2,R3,⋯,RN .
从服务器到客户之间的文件传输吞吐量为 min R 1 , R 2 , R 3 , ⋯ , R N \min{R_1, R_2, R_3,\cdots, R_N} minR1,R2,R3,⋯,RN
1.5 协议层次及其服务模型
1.5.1 分层的体系结构
网络设计者以 分层 的方式组织协议并实现这些协议的网络硬件和软件, 每个协议属于这些层次之一
某层向它的上一层提供的 服务 , 即所谓的 服务模型
一个协议层能够用软件, 硬件或两者的结合来实现
协议分层具有概念化和结构化的优点
分层的两个潜在缺点: 1. 一层可能冗余较低层的功能 2. 某层的功能可能需要仅在其他某层才出现的信息, 这违反了层次分离的目标
各层的所有协议被称为 协议栈 , 由5个层次组成: 物理层, 链路层, 网络层, 运输层, 应用层(面试常问)
(1) 应用层
应用层是网络应用程序和它们的应用层协议存留的地方, 应用层包括许多协议, 例如HTTP, SMTP和FTP
位于应用层的信息分组称为 报文
(2) 运输层
因特网的运输层在应用程序端点之间传送应用层报文, TCP向它的应用程序提供面向连接的服务, 这种服务包括确保应用层报文向目的地的传递和流量控制. TCP也将长报文划分为短报文, 并提供拥塞控制机制, 因此当网络拥塞时, 源抑制传输速率. UDP协议向它的应用程序提供无连接服务, 这是一种不提供不必要服务的服务, 没有可靠性, 没有流量控制, 也没有拥塞控制
运输层的分组称为 报文段
(3) 网络层
网络层负责将称为 数据报 的网络层分组从一台主机移动到另一台主机.
因特网运输层协议TCP/UDP向网络层递交运输层报文段和目的地址
因特网的网络层包括网际协议(IP), 该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段
(4) 链路层
因特网的网络层通过园和目的地之间的一系列路由器路由数据报, 为了将分组从一个节点移动到路径的下一个节点, 网络层必须依赖该链路层的服务, 特别是在每个节点, 网络层将数据报下传到链路层, 链路层沿着路径将数据报传递给下一个节点
由链路层提供的服务取决于应用于该链路的特定链路层协议
例子: 以太网, WiFi, 电缆接入网的DOCIS协议
链路层分组常被称为 帧
(5) 物理层
链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素, 而物理层的任务是将该帧中的一个个比特从一个节点移动到下一个节点. 在这层中的协议仍然是链路相关的, 并且进一步与该链路的实际传输媒介有关
OSI七层模型(面试常问)
应用层, 表示层, 会话层, 运输层, 网络层, 链路层, 物理层
表示层: 通信的应用程序能够解释并交换数据
会话层: 数据交换的定界与同步
1.5.2 封装
在发送主机端, 一个 应用层报文 被传输到运输层, 在最简单的情况下, 运输层收取报文并附上附加信息, 该首部将被接收端的运输层使用
应用层报文和运输层首部信息一同构成了 运输层报文段 . 运输层报文段因此封装了应用层报文. 附加的信息也许包括以下信息: 允许接收端运输层向上向适当的应用程序交付报文的信息; 差错检测位信息, 该信息让接收方能够判断报文中的比特是否在途中已被改变, 运输层则向网络层传递该报文段, 网络层增加了如源和目的端系统地址等网络层首部信息, 生成 网络层数据报 . 该数据报接下来被传递到链路层; 链路层增加它自己的链路层首部信息并生成链路层帧