Network - HsuJv/Note GitHub Wiki

概论

基本概念

  • 计算机网络
    • 通信技术与计算机技术相结合的产物
    • 定义: 具有独立功能的多个计算机通过通信设备和网络线路连接形成的网络
    • 目的: 资源共享
    • 组成: 通信子网, 终端系统
  • 终端系统
    • 计算机
    • 中断控制器
    • 计算机上共享的软件资源和数据源
  • 通信子网
    • 信息交换的网络节点
    • 通信线路

体系结构

  • 网络协议
    • 定义: 规则的集合
    • 组成: 语法, 语义, 同步
      • 语法: 数据和控制信息的结构和格式
      • 语义: 对协议元素含义的解释
      • 同步: 事件的执行顺序
    • 特点: 层次性, 可靠性, 有效性
    • 优点: 各层相互独立, 灵活性好, 结构上可分割, 易于实现和维护, 利于促进标准化
  • 协议层次模型
    • 同层协议: 对等层相互通信
    • 层间接口: 低层通过接口为上层提供服务, 屏蔽实现细节
  • OSI/RM体系结构
    • 物理层: 建立物理连接, 实现信号/比特的透明传输
    • 数据链路层: 使有差错的物理线路变为相对无差错的数据链路
    • 网络层: 为分组交换网上的不同主机提供通信服务
    • 传输层: 向用户提供端到端的数据传输服务
    • 会话层: 负责维护通信中两个节点的会话连接的建立, 维护, 断开
    • 表示出: 处理两个通信系统中交换信息的表示方式
    • 应用层: 为应用程序通过网络服务
    • 只在主机中才需要包含所有的七层功能, 在通信子网的节点机上一遍只需要第三层甚至两层功能
  • TCP/IP体系结构
    • 网络接入层
      • 对应OSI物理层以及数据链路层
      • Ethernet, HDLC, PPP
    • 网络互联层
      • 对应OSI网络层
      • ARP/RARP(处于网络层较低层), IP(网络层协议), ICMP/IGMP(处于网络层较高层)
    • 传输层
      • 对应OSI传输层
      • TCP, UDP
    • 应用层
      • 对应OSI会话层, 表示层, 应用层
      • SMTP, Telnet, FTP, HTTP等(应用TCP)
      • SNMP, RIP等(应用UDP)
  • OSI与TCP
    • 出发点不同
      • OSI: 强调标准化, 相对复杂
      • TCP: 为军用网指定, 考虑可用性, 残存性, 安全性等
    • 对层次间关系
      • OSI: 严格按层次关系处理
      • TCP: 允许越层
    • 对异构网互联
      • OSI: 后来才支持
      • TCP: 一开始就考虑
    • 提供服务
      • OSI: 最初只提供面向连接的服务
      • TCP: 面向连接和无连接并重

数据通信基础

基本概念

  • 数据: 预先约定的具有某种含义的数字, 符号和字母的组合
  • 信息: 对事物状态的一种描述和说明
  • 信号: 信道上传输的电磁波编码
  • 传输媒体
    • 双绞线
      • 100米以内
      • 易于安装, 成本低
      • 抗干扰差, 频率不能过高
    • 同轴电缆
      • 成本中等
      • 抗干扰性好, 频率范围小于光缆
    • 光缆
      • 成本高
      • 抗干扰性强
  • 传码率: 每秒钟传输信号码元的个数
  • 传信率: 每秒钟传输二进制码元的个数
  • 信道带宽: 一个信号的各种不同频率成分所占据的频率范围
    • 特别的, 人们习惯性将"带宽"当做数字信道的"传信率"的同义语
  • 误码率: 出错的比特数与总比特数之比
  • 误组率: 出错的组数与总的传输组数之比
  • 时延:
    • 发送时延/传输时延: 数据块的第一个比特开始发送算起, 到最后一个比特发送到传输媒介所需的时间
    • 传播时延: 电磁波在信道中传播一定距离而花费的时间
    • 转发时延: 交换结点为存储转发而进行一系列必要处理所花费的时间

传输方式

  • 并行/串行传输
  • 同步/异步传输
  • 单工, 半双工, 全双工传输
  • 模拟/数字传输

多路复用

  • 频分复用
  • 时分复用
    • 静态: 固定分配资源
    • 动态: 按需分配资源
  • 码分复用
  • 波分复用

数据交换技术

  • 数据交换是多节点网路中实现数据传输的有效手段
  • 电路交换
    • 实时交换
    • 物理连接
    • 无信息传送也占电路
    • 无差错控制
  • 报文交换
    • 交换结点才用存储转发方式
    • 具有差错控制
    • 存储转发时延大, 随机性大, 过负荷时会导致报文延迟
  • 分组交换
    • 把一个报文划分成多个长度固定的报文传输, 提高线路利用率, 减少平均时延
    • 可提供两种服务方式: 数据报, 虚电路

差错控制技术

  • 以降低实际的传输速率(加入冗余位)来提高数据传输的可靠性
  • 差错产生原因
    • 随机差错通常由随机的信道热噪声引起
    • 突发差错通常由瞬间的脉冲噪声引起
  • 差错控制方式
    • 奇偶校验
    • 汉明码
    • 循环冗余码

数据通信接口特性

  • 通信接口特性指DTE和DCE之间的物理特性
    • DTE: 数据终端设备
    • DCE: 数据电路终接设备
  • 机械特性
    • 规定了接插件的几何尺寸和引线排列
  • 电气特性
    • 描述了通信接口的发信器, 接收器的电气连接方法及其电气参数
  • 功能特性
    • 描述了接口执行的功能
    • 从DTE角度制定
  • 规程特性
    • 通信接口上传输时间与控制需要执行的事件顺序

数据链路层

基本概念

  • 数据电路
    • 点到点的, 由传输信道及其两端的DCE构成的物理电路
    • 又称物理链路, 或简称链路
  • 数据链路
    • 在数据电路的基础上加上传输控制
    • 又称逻辑链路
  • 链路的结构
    • 点到点: 依据两端的站的类型分为主-从结构或不平衡结构(主站 + 从站), 平衡结构(复合站)
    • 点到多点: 一般才用主从结构

流量控制

  • 防止接受方的处理速率小于发送信息的速率
  • 停止-等待方式
    • 开关式
      • 接收方有足够空间, 做好准备时发送"开"命令
      • 接收方来不及处理, 缓冲区即将或已经耗尽时, 发送"关"命令
    • 协议式
      • 发送时, 一次发送一个数据帧后主动停止发送, 等待接收端的应答
      • 接收到肯定应答, 发送下一帧
      • 接收到否定应答, 或者在规定时间内未接收到应答, 则重发该帧
      • 合理的超时重发时间值应该稍大于信号的往返传输时间加速接收端的处理时间之和
  • 滑动窗口
    • 发送方在没有得到任何确认信息时, 允许继续发送后续的帧, 但需要对允许连续发送帧的数目加以限制
    • 连续ARQ
      • 发送窗口大于1, 接收窗口等于1
      • 重发出错帧及其之后的所有帧
    • 选择ARQ
      • 发送窗口大于1, 接收窗口大于1
      • 接收方告知发送方需要重发的帧

数据链路层协议

  • HDLC
    • 面向比特
    • 长帧: 数据和控制信息
    • 短帧: 链路控制信息, 用作监控帧和链路管理
    • "0"比特插入删除法
      • HDLC中, 连续6个1被用作标志字段, 用来标识一个帧的开头和结尾
      • 发送时数据信息里每连续5个1出现, 则在后面添加一个0; 接收时每连续5个1出现, 则在后面删除一个0
    • HDLC的三种帧类型
    控制字段与帧类型
    帧类型 控制字段C
    b7 b6 b5 b4 b3 b2 b1 b0
    信息帧I N(R) P/F N(S) 0
    监控帧S N(R) P/F S S 0 1
    无编号帧U M M M P/F M M 1 1
    + 信息帧I: N(S)为发送序号, 表示当前正在发送的帧序号; N(R)为接收序号, 表示N(R)以前的各帧已正确接收, 期望接收第N(R)帧. + 监督帧S: 其控制字段b1b0表示监督帧. 监督帧只作应答使用, 所以只有N(R); 根据其b3b2的值, S帧共四种 * 接收准备好(RR): b3b2 = 00 * 接收未准备好(RNR): b3b2 = 01 * 拒绝(REJ, 用于连续ARQ): b3b2 = 10 * 选择拒绝(SREJ, 用于选择ARQ): b3b2 = 11 * RR, RNR都是应答帧; REJ要求重发N(R)及以后的帧, SREJ要求重发N(R)帧 + 无编号帧U: 用于主站发送除信息帧外的各种命令, 包括设置工作方式, 询问, 复位, 以及拆除连接等等, 它在传播中是优先的.
  • PPP
    • 面向字符
    • 同步通信时, 才用"0"比特插入删除法
    • 异步通信时, 每一个0x7E(0b01111110)被替换成0x7D5E, 原0x7D字符被替换成0x7D5D

多路访问

  • 主题: 在多个随机竞争的用户之间分配单个公共广播信道
  • ALOHA
    • 纯ALOHA
      • 如果一个站在发送过程中没有其他站发送数据, 便发送成功; 否则产生冲突, 冲突的帧奖被破坏
    • 时隙ALOHA
      • 每一帧只在时隙开始时传送
  • CSMA (载波监听多路访问)
    • 对随机发送进一步约束, 每个站在发送前监听信道上是否忙.
    • 非坚持型: 若信道闲, 则发送; 若忙, 则延迟一个随机时间后重新进入监听和发送过程
    • 1-坚持型: 若忙, 则监听持续直到空闲, 以概率1发送
    • P-坚持型: 若忙, 则监听持续直到空闲; 空闲时, 以概率P发送, 以概率1-P延迟一个时间单位, 再行监听(时间单位长度等于最大网络端到端传播延时τ)
  • CSMA/CD (载波监听多路访问/冲突检测)
    • 发送时边发边听, 如果检测到冲突, 则冲突各方停止发送
  • 令牌法
    • 环形网
    • 总线网
      • 物理上是总线型, 逻辑上是环形
      • 报文不必按环路传递
    • 优点
      • 信道利用率高
      • 与以太网有最短帧要求不同, 它可以传递很短的帧, 传送速率快
      • 各站点有公平访问权
      • 各站点获得令牌时间固定, 适用于实时过程控制
      • 可以实现多级优先服务
      • 重载下信道利用率高

局域网与广域网

基本概念

  • 局域网
    • 一个局部地理范围的多台计算机通过传输媒体连接起来的通信网络
    • 广泛应用双绞线
  • 相关IEEE标准
    • 802.1a: 综述和体系结构
    • 802.1b: 寻址, 网络管理和网络互联
    • 802.1d: 生成树协议
    • 802.1q: 虚拟局域网(VLAN)标记协议
    • 802.2: 逻辑链路控制协议(LLC)
    • 802.3: CSMA/CD访问控制方法和物理层规范
    • 802.3a: 快速以太网
    • 802.3z: 千兆以太网
    • 802.3ae: 万兆以太网
    • 802.4: 令牌总线访问控制方法和物理层规范
    • 802.5: 令牌环访问控制方法和物理层规范
    • 802.6: 城域网
    • 802.7: 宽带局域网
    • 802.8: 光纤局域网
    • 802.9: 等时以太网
    • 802.10: 网络安全
    • 802.11: 无线局域网
    • 802.12: 100VG-AnyLAN局域网
    • 802.14: 基于有线电视网的城域网
    • 802.15: 无线个人局域网
    • 802.16: 宽带无线局域网
    • 802.17: 弹性分组环网
    • 802.20: 移动宽带无线访问

以太网

  • 以太网是以CSMA/CD方式工作的一种总线式局域网
  • MAC地址
    • 局域网中每台主机具有的一个唯一标识其地址的标识符 (48 bits)
    • 静态地址: 永久性; 地址占用空间大, 影响通信效率
    • 动态地址: 地址占用空间小; 临时性, 获取地址需要消耗一定的网络资源
  • CSMA/CD二进制指数退避算法:
    • 假设重传次数为rtx_count, 允许的最大重传次数为rtx_count_max, 通常为16
    • 如果rtx_count <= rtx_count_manx, 则:
      • k = min(rtx_count, 10)
      • r = randint(2 ** k - 1)
      • 退避时间time_backoff = 2τ * r, 其中, 2τ为争用期(也成冲突窗口)

局域网的拓展

  • 物理层
    • 采用转发器或集线器
    • 扩大了范围, 导致了更大的冲突域, 最大吞吐量(throughout)并没有提高
  • 数据链路层
    • 采用网桥
    • 以太网交换机实质是一个多端口网桥, 每个端口都直接与一个单个主机或另一个集线器相连, 一般都工作在全双工方式
    • 每一对相互通信的主机都好像独占通信媒体

高速以太网

  • 100BASE-T以太网/快速以太网
    • 星型拓扑结构
    • 100Mbps
    • 只支持双绞线和光缆
    • 需要调整最短帧长或电缆长度以保证传播时延与发送时延比值恒定
  • 千兆以太网/吉比特以太网
    • 在半双工模式下使用CSMA/CD
  • 万兆以太网/10吉比特以太网
    • 只使用光纤
    • 只工作在全双工模式, 不存在争用期

虚拟局域网

  • 在现有的局域网上提供的划分逻辑组的一种服务
    • 特点: 与物理位置无关的逻辑组
    • 交换机只划分冲突域, 支持VLAN的交换机才能划分广播域
  • 工作原理
    • 静态VLAN: 基于端口
    • 动态VLAN: 基于MAC/IP/组播
  • 虚拟局域网限制了接受广播的工作站数, 使得网络不会因传播过多的广播信息而性能恶化

无线局域网

  • 基本概念
    • 分类:有固定基础设施的, 无固定基础设施的
    • 固定基础设施
      • 无线局域网的最小构件是基本服务集BSS
      • 一个基本服务集所覆盖的地理范围叫一个基本服务区
      • BSS里的基站叫接入点AP, 作用与网桥类似
    • 无固定基础设施/移动自组网
      • 没有AP
      • 由一些处于平等状态的移动站之间相互通信组成的临时网络
  • MAC层
    • 若采用CSMA/CD则存在隐蔽站问题和暴露站问题
      • 隐蔽站: A, C都想和B通信, 但是A, C相距较远彼此收不到对方发送的信号, 都以为B是空闲
      • 暴露站: B向A发送数据, C想与D通信, 但C检测到媒体上有信号, 就不会发送
    • 使用CSMA/CA
      • 与CSMA/CD不同的是, 第i次退避时在 2 ** (i+2)个时隙里选择
      • 仅在检测到信道空闲, 且要发送的数据帧是第一个数据帧时不执行退避
      • 在发送第一帧后检测到信道忙, 每一次重传后, 每一次成功发送后, 均执行退避算法

广域网

  • 基本概念
    • 实现长距离传输数据的网络, 由节点交换机和链路构成.
    • 当作为一个独立的网络看待时, 具有OSI低三层功能; 当用来支撑互联网( = 广域网 + 局域网)时, 被看作是为网络层提供服务的数据链路层
    • 提供的服务有两大类: 数据报服务和虚电路服务
    数据报服务和虚电路服务的比较
    特点 数据报服务 虚电路服务
    思路 可靠通信应由用户主机来保证 可靠通信应由网络来保证
    连接 不需要 必须
    目的站地址 每个分组都包含目的站地址 仅在建立连接阶段使用, 每个分组使用短的虚电路信号
    分组的转发 每个分组独立路由, 转发 属于同一虚电路的所有分组均按同一路由进行转发
    当节点故障时 出故障的节点可能丢失分组, 后续分组改变路由 所有通过故障节点的虚电路均不能工作
    分组的顺序 不一定按发送顺序到达目的站 总是按发送顺序到达目的站
    差错控制和流量控制 由用户主机负责 可以由网络负责, 也可以由用户主机负责
  • 分组交换
    • 主要包括编址和路由两个方面的问题
    • 广域网一般采用层次结构编制方案, 主机地址前一部分表示分组交换机的编号, 后一部分表示分组交换机的端口号或主机的编号
    • 所以交换机号相同的分组下一条地址必定是相同的
    • 使用优先级最低的默认路由来减少路由表的规模
  • X.25分组
    • X,25标准是公用分组交换网的网络接口标准
    • 制定了面向连接的虚电路服务的服务规范
    • 具有物理层, 数据链路层, 分组层(对应OSI网络层)三个层次
    • DTE与DCE之间可以建立多条逻辑信道, 使一个DTE同时与网上其他多个DTE建立虚电路并进行通信
    • 在网络链路带宽不高, 误码率较高的情况下, X.25网络具有很大优势
  • 帧中继
    • 边接受边转发
    • 帧中继网络纠错时间比X.25长
    • 在误码率极低的情况下, 帧中继具有很大优势
  • 异步传递方式(ATM)
    • 建立在电路交换和分组交换的基础上面向连接的快速分组交换技术
    • 采用定长的53字节信源, 5字节首部 + 48字节数据 (由ATM适配层将上层数据进行拆分并传递给ATM层)

网络层

网络互联

  • 基本概念:
    • 网络层为不同网络上的主机提供通信服务
    • IP层(网络层)的服务是一个尽最大努力传送的不可靠无连接的分组交换
    • 网际互联的作用是隐藏底层细节, 使互联网可以看成是单一的虚拟网络, 所有计算机都与它相连.
  • 分类的IP地址
    • IP地址是主机到网络的一个连接
    • 每个主机都分配到一个32位的唯一地址作为单播地址
    • 分类IP地址是自标识的:
      • A类: 第1-1位: 0; 第2-8位: 网络号; 第9-32位: 主机号;
      • B类: 第1-2位: 10; 第3-16位: 网络号; 第17-32位: 主机号;
      • C类: 第1-3位: 110; 第4-24位: 网络号; 第25-32位: 主机号;
      • D类: 第1-4位: 1110; 第5-32位: IP组播地址;
      • E类: 第1-5位: 11110; 第6-32位: 保留;
  • IP地址的分配与使用:
    每个IP地址的点分十进制值的范围
    类别
    最低地址 最高地址 备注
    A 1.0.0.0
    127.0.0.0 网络号127用于回送地址
    B 128.0.0.0 191.255.0.0 128.0.0.0不会被分配
    C
    192.0.0.0 223.255.255.0
    192.0.0.0不会被分配
    D
    224.0.0.0 239.255.255.255 组播地址
    特殊形式的IP地址
    net-id host-id 用作源地址 用作目的地址 说明
    0 0 可以 不可以 启动时源站地址
    全1 全1 不可以 可以 本地网受限广播地址
    net-id 全1 不可以 可以 定向广播地址
    127 任意(常为1) 可以 可以 回送地址
  • 因特网地址到物理地址的映射
    • 地址统一(使用IP地址)的代价是需要建立IP地址和物理地址之间的映射.
    • TCP/IP采用两种地址解析技术:
      • 直接映射: 适用于短地址
      • 动态绑定: 用于固定长度的长地址, 采用ARP协议
    • ARP协议:
      • 当A主机需要解析本网络内B主机的物理地址时, 先广播一个特殊的报文(内含自己的物理地址), 请求IP地址为IB的B主机将其物理地址告诉它. 网内所有主机都接收到这个请求, 但只有主机B发现是在问自己, 所以向A单播一个含有自己物理地址的报文作为响应.
      • 使用ARP的计算机各自维护着一张ARP表, ARP表在高速缓存中
  • 逆地址解析协议
    • RARP用于将物理地址映射为IP地址
    • 曾是无盘工作站自引导系统所使用的重要协议
  • IP数据报
    • IPv4数据报格式
    • 版本: 4bits, IPv4的版本号是4 (0100)
    • 首部长度: 4bits, 单位4Bytes, 最大长度为15x4字节, 常见值为5(即首部长20字节)
    • 服务类型TOS: 8bits, 指明应当如何处理数据报, 前3位指明优先级, 第4位指为短延迟位(D), 第5位是高吞吐量位(T), 第6位是高可靠位(R), 后两位保留. 目前大多数情况下不对TOS进行处理.
    • 总长度: 16bits, 单位1Byte, 指明整个数据报的长度. IP数据报理论总长度可达65535字节, 即2 ** 16 - 1, 但实际长度受MTU限制. 数据报在源站网络上进行最大长度的封装, 在经过MTU小于数据报长度的网络时, 把数据报分片, TCP/IP规定所有的分片重装在目的站进行.
    • 标识: 16bits, 是源主机赋予数据报的唯一标识符, 数据报分片不改变标识字段
    • 标识: 3bits, 只有低两位有效, 中间一位为DF位(Don't Fragment), 置位时表示不允许分片; 最低位为MF位(More Fragments), 置位时表示不是最后一个分片
    • 片偏移量: 13bits, 单位8Bytes, 指出本数据报相对于初始数据报中数据的偏移量, 供重装使用
    • 生存时间TTL: 8bits, 现用来指示数据报在网络中运行的"最大跳数"
    • 协议: 8bits, 指名数据报数据区的格式, 即该数据报封装了哪个协议的PDU
      • 指定的网际协议编号
        协议字段值(Decimal) 1 2 3 4 6 8 17 88 89
        协议名 ICMP IGMP GGP IP TCP EGP UDP IGRP OSPF
      • 首部校验和: 16bits, 用于首部的校验
        • 计算: 设校验和为0, 把首部看做是由多个16位整数序列, 将这些整数进行反码求和(即最高位的进位加到最低位上), 所得值即为数据报的校验和字段
        • 校验: 途经路由器和源站都要进行校验和验算, 同样将首部看错多个16位整数进行反码求和, 最后得到的正确值应为0
      • 源站IP地址和目的站IP地址: 各32bits, 指示源站和目的站的IPv4地址
      • IP选项: 不常用
    • 无连接的数据报传送
      • IP提供无连接的数据报交付服务

    传输层

    应用层

⚠️ **GitHub.com Fallback** ⚠️