# 计算机网络
# 概述
# 概念
计算机网络:是一个将分散的、既有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。
计算机网络是互连的、自治的计算机集合。
互连 - 互联互通
自治 - 无主从关系
# 计算机网络的功能
数据通信(连通性)
资源共享
分布式处理
提高可靠性
负载均衡
...
# 计算机网路的组成
组成部分:硬件、软件、协议
工作方式:
- 边缘部分 用户直接使用:C/S 方式和 P2P 方式
- 核心部分 为边缘部分服务
功能组成:
- 通信子网 实现数据通信
- 资源子网 实现资源共享 / 数据处理
# 计算机网络的分类
按分布范围分:广域网 WAN、城域网 MAN、局域网 WAN、个人区域网 PAN
按使用者分:公用网、专用网
按交换技术分:电路交换、报文交换、分组交换
按拓扑结构分:总线型、星型、环型、网状型
按传输技术分:
- 广播式网络 共享公共通信信道
- 点对点网络 使用分组传输转发和路由选择机制
# 速率
速率即数据率或称数据传输率或比特率。
# 带宽
“带宽” 原本指某个信号具有的频带宽度,即最高频率与最低频率之差,单位是赫兹(Hz)。
在计算机网络中,带宽用来表示网络的通信线路传送数据的能力,通常是指单位时间内从网络中的某一点到另一点所能通过的 “最高数据率”。单位是比特每秒。
# 吞吐量
表示在单位时间内通过某个网络(或信道、接口)的数据量。
吞吐量受网络的带宽或网络的额定速率的限制。
# 时延
指数据(报文 / 分组 / 比特流)从网络(或链路)的一端传送到另一端所需的时间。也叫延迟或迟延,单位是 s。
分为发送时延、传播时延、排队时延(等待输出 / 入链路可用)、处理时延(检错、找出口)。
发送时延 = 数据长度 / 信道带宽(发送速率)
传播时延 = 信道长度 / 电磁波在信道上的传播速率
# 时延带宽积
时延带宽积 = 传播时延 × 带宽
时延带宽积又称为以比特为单位的链路长度。
# 往返时延 RTT
从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认),总共经历的时延。
RTT 越大,在收到确认之前,可以发送的数据越多。
RTT 包括往返传播时延和末端处理时间(指接收方的处理时间)。
# 利用率
信道利用率:有数据通过的时间 /(有 + 无)数据通过时间
网络利用率:信道利用率加权平均值
# ISO/OSI 参考模型
应用层:所有能和用户交互产生网络流量的程序。典型应用层服务:文件传输(FTP)、电子邮件(SMTP)、万维网(HTTP)。
表示层:用于处理在两个通信系统中交换信息的表示方式。功能:数据格式变换、数据加密解密、数据的压缩和恢复等。主要协议:JPEG、ASCII。
会话层:向表示层实体 / 用户进程提供建立连接并在连接上有序地传输数据。这是会话,也是建立同步(SYN)。功能:建立、管理、终止会话、使用校验点可使会话在通信失效时从校验点 / 同步点继续运行通信,实现数据同步。主要协议:ADSP、ASP。
传输层:负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。功能:可靠传输、不可靠传输、差错控制、流量控制、复用分用。主要协议:TCP、UDP。
网络层:主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。功能:路由选择、流量控制、差错控制、拥塞控制。主要协议:IP、IPX、ICMP、IGMP、ARP、RARP、OSPF。
数据链路层:主要任务是把网络层传下来的数据报组装成帧。数据链路层 / 链路层的传输单位是帧。功能:成帧(定义帧的开始和结束)、差错控制(帧错 + 位错)、流量控制、访问(接入)控制(控制对信道的访问)。主要协议:SDLC、HDLC、PPP、STP。
物理层:主要任务是在物理媒体上实现比特流的透明传输。物理层传输单位是比特。功能:定义接口特性、定义传输模式(单工、半双工、双工)、定义传输速率、比特同步、比特编码。主要协议:Rj45、802.3。
# 物理层
# 两种数据的传输方式
- 串行传输:速度慢、费用低、适合远距离
- 并行传输:速度快、费用高、适合近距离
# 奈氏准则(奈奎斯特定理)
奈氏准则:在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率为 2W Baud, W 是信道带宽,单位是 Hz。
# 香农定理
噪声存在于所有的电子设备和通信信道中。由于噪声随机产生,它的瞬时值有时会很大,因此噪声会使接收端对码元的判决产生错误。但是噪声的影响是相对的,若信号较强,那么噪声影响相对较小。因此,信噪比就很重要。信噪比 = 信号的平均功率 / 噪声的平均功率,常记为 S/N,并用分贝 (dB) 作为度量单位。
香农定理:在带宽受限且有噪声的信道中,为了不产生误差,信息的数据传输速率有上限值。
# 基带信号与宽带信号
# 数据链路层
# 数据链路层功能概述
数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
功能:
- 为网络层提供服务。无确认无连接服务,有确认面向连接服务
- 链路管理,即连接的建立、维持、释放(用于面向连接的服务)
- 组帧
- 流量控制(控制发送方)
- 差错控制(帧错 / 位错)
# 封装成帧
封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。
帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
# 透明传输
透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就 “看不见” 有什么妨碍数据传输的东西。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
组帧的四种方法:
- 字符计数法
- 字符 (节) 填充法
- 零比特填充法
- 违规编码法
# 检错编码
- 奇偶校验码
- CRC 循环冗余码
# 纠错编码
- 海明码
# 链路层的流量控制
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认。
传输层流量控制手段:接收端给发送端一个窗口公告。
# 流量控制的方法
- 停止等待协议
- 滑动窗口协议
- Go-Back-N protocol(GBN)
- Selective Repeat protocol(SR)
在链路层所讲的这几种流量控制的方法,它们的窗口大小在发送过程中永远都是固定的。
可靠传输:发送端发啥,接收端收啥。
流量控制:控制发送速率,使接收方有足够的缓冲空间来接受每一个帧。
滑动窗口解决的问题:
- 流量控制(收不下就不给确认,想发也发不了)
- 可靠传输(发送方自动重传)
信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
信道吞吐率 = 信道利用率 * 发送方的发送速率
GBN 协议性能分析:因连续发送数据帧而提高了信道利用率。但是在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低。
SR 协议重点总结:
对数据帧逐一确认,收一个确认一个
只重传出错帧
接收方有缓存
# 传输数据使用的两种链路
# 介质访问控制
# 令牌传递协议
# CSMA 协议
CS(Carrier Sense):载波侦听 / 监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。
MA(multiple Access):多点接入,表示许多计算机以多点接入的方式连接在一根总线上。
协议思想:发送帧之前,监听信道。
监听结果:
- 信道空闲:发送完整帧
- 信道忙:推迟发送
# CSMA/CD 协议
载波监听多点接入 / 碰撞检测 CSMA/CD (carrier sense multiple access with collision detection)
CS:载波侦听 / 监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络
CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。半双工网络
最小帧长问题:
# CSMA/CA 协议
载波监听多点接入 / 碰撞避免 CSMA/CA (carrier sense multiple access with collision avoidance)
用于无线局域网
# 局域网
局域网(Local Area Network):简称 LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
特点:
覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内。
使用专门铺设的传输介质 (双绞线、同轴电缆) 进行联网,数据传输速率高 (10Mb/s~10Gb/s) 。
通信延迟时间短,误码率低,可靠性较高。
各站为平等关系,共享传输信道。
多采用分布式控制和广播式通信,能进行广播和组播。
决定局域网的主要要素为:网络拓扑,传输介质与介质访问控制方法。
局域网传输介质:
- 有线局域网 常用介质:双绞线、同轴电缆、光纤
- 无线局域网 常用介质:电磁波
局域网介质访问控制方法:
CSMA/CD:常用于总线型局域网,也用于树型网络
令牌总线:常用于总线型局域网,也用于树型网络它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
令牌环用于环形局域网,如令牌环网
# IEEE 802 标准
IEEE 802 系列标准是 IEEE 802 LAN/MAN 标准委员会制定的局域网、城域网技术标准 (1980 年 2 月成立) 。其中最广泛使用的有以太网、令牌环网、无线局域网等。这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责。
# 以太网
以太网提供无连接、不可靠的服务
- 无连接:发送方和接收方之间无 “握手过程”。
- 不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。
以太网只实现无差错接受,不实现可靠传输。
使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是 CSMA/CD 协议。
以太网拓扑:逻辑上总线型,物理上星型。
# 10BASE-T 以太网
# 适配器与 MAC 地址
# 以太网 MAC 帧
# 高速以太网
# 广域网
广域网(WAN, Wide Area Network),通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网。
# PPP 协议
点对点协议 PPP (Point-to-Point Protocol) 是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用 PPP 协议。
只支持全双工链路
PPP 协议的三个组成部分
PPP 协议的状态图
PPP 协议的帧格式
# 链路层设备
网桥
- 透明网桥:“透明” 指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备 —— 自学习。
- 源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少 / 时间最短)放在帧的首部中。方法:通过源站以广播方式向欲通信的目的站发送一个发现帧。
多接口网桥 —— 以太网交换机
- 直通式交换机:查完目的地址(6B)就立刻转发。延迟小,可靠性低,无法支持具有不同速率的端口的交换。
- 存储转发式交换机:将帧放入高速缓存,并检查否正确,正确则转发,错误则丢弃。延迟大,可靠性高,可以支持具有不同速率的端口的交换。
# 冲突域和广播域
# 网络层
主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
功能:
路由选择与分组转发 最佳路径
异构网络互联
拥塞控制
# 数据交换方式
- 电路交换
- 报文交换
- 分组交换
- 数据报方式
- 虚电路方式
数据报方式为网络层提供无连接服务。
虚电路方式为网络层提供连接服务。
无连接服务:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
连接服务:首先为分组的传输确定传输路径(建立连接),然后沿该路径(连接)传输系列分组,系列分组传输路径相同,传输结束后拆除连接。
# 数据报
无连接:不事先为分组的传输确定传输路径,每个分组独立确定传输路径,不同分组传输路径可能不同。
每个分组携带源和目的地址
路由器根据分组的目的地址转发分组:基于路由协议 / 算法构建转发表;检索转发表;每个分组独立选路。
# TCP/IP 协议栈
# IP 数据报格式
# 最大传送单元 MTU
# 分类的 IP 地址
# 特定 IP 地址
# 私有 IP 地址
路由器对目的地址是私有 IP 地址的数据报一律不进行转发。
# 网络地址转换(NAT)
网络地址转换 NAT (Network Address Translation) :在专用网连接到因特网的路由器上安装 NAT 软件,安装了 NAT 软件的路由器叫 NAT 路由器,它至少有一个有效的外部全球 IP 地址。
# 子网划分
# 使用子网时分组的转发
# 无分类编址 CIDR (Classless Inter-Domain Routing)
构成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。方法:将网络前缀缩短。
最长前缀匹配:使用 CIDR 时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。
# ARP 协议
由于在实际网络的链路上传送数据帧时,最终必须使用 MAC 地址。
ARP 协议:完成主机或路由器 IP 地址到 MAC 地址的映射。 解决下一跳走哪的问题
ARP 协议使用过程:检查 ARP 高速缓存,有对应表项则写入 MAC 帧,没有则用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧封装并广播 ARP 请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个 ARP 响应分组,源主机收到后将此映射写入 ARP 缓存(10-20min 更新一次)。
ARP 协议 4 种典型情况:
- 主机 A 发给本网络上的主机 B:用 ARP 找到主机 B 的硬件地址;
- 主机 A 发给另一网络上的主机 B:用 ARP 找到本网络上一个路由器(网关)的硬件地址;
- 路由器发给本网络的主机 A:用 ARP 找到主机 A 的硬件地址;
- 路由器发给另一网络的主机 B:用 ARP 找到本网络上的一个路由器的硬件地址。
ARP 协议自动进行
# DHCP 协议
动态主机配置协议 DHCP 是应用层协议,使用客户 / 服务器方式,客户端和服务端通过广播方式进行交互,基于 UDP。DHCP 提供即插即用联网的机制,主机可以从服务器动态获取 IP 地址、子网掩码、默认网关、DNS 服务器名称与 IP 地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
- 主机广播 DHCP 发现报文 “有没有 DHCP 服务器呀?” 试图找到网络中的服务器,服务器获得一个 IP 地址。
- DHCP 服务器广播 DHCP 提供报文 “有!”"有!”" 有!” 服务器拟分配给主机一个 IP 地址及相关配置,先到先得。
- 主机广播 DHCP 请求报文 “我用你给我的 IP 地址啦?” 主机向服务器请求提供 IP 地址。
- DHCP 服务器广播 DHCP 确认报文 “用吧!” 正式将 IP 地址分配给主机。
# 网际控制报文协议 ICMP
ICMP 差错报告报文(5 种)
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。 无法交付
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。 拥塞丢数据 (不再使用)
- 时间超过:当路由器收到生存时间 TTL=0 的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。 TTL=0
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。 首部字段有问题
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。 值得更好的路由
不应发送 ICMP 差错报文的情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有组播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
ICMP 询问报文
- 回送请求和回答报文 主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。测试目的站是否可达以及了解其相关状态。
- 时间戳请求和回答报文 请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
- 掩码地址请求和回答报文 (不再使用)
- 路由器询问和通告报文 (不再使用)
ICMP 的应用
- PING:测试两个主机之间的连通性,使用了 ICMP 回送请求和回答报文。
- Traceroute:跟踪一个分组从源点到终点的路径,使用了 ICMP 时间超过差错报告报文。
# IPv6
IPv6 数据报格式
IPv6 和 IPv4
- IPv6 将地址从 32 位(4B)扩大到 128 位(16B),更大的地址空间。
- IPv6 将 IPv4 的校验和字段彻底移除,以减少每跳的处理时间。
- IPv6 将 IPv4 的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
- IPv6 支持即插即用(即自动配置),不需要 DHCP 协议。
- IPV6 首部长度必须是 8B 的整数倍,IPv4 首部是 4B 的整数倍。
- IPv6 只能在主机处分片,IPv4 可以在路由器和主机处分片。
- ICMPv6:附加报文类型 “分组过大”。
- IPv6 支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
- IPv6 取消了协议字段,改成下一个首部字段。
- IPv6 取消了总长度字段,改用有效载荷长度字段。
- IPv6 取消了服务类型字段。
IPv6 地址表示形式
IPv6 基本地址类型
- 单播:一对一通信 可做源地址 + 目的地址
- 多播:一对多通信 可做目的地址
- 任播:一对多中的一个通信 可做目的地址
IPv6 向 IPv4 过渡的策略
- 双栈协议:双协议栈技术就是指在一台设备上同时启用 IPv4 协议栈和 IPv6 协议栈。这样的话,这台设备既能和 IPv4 网络通信,又能和 IPv6 网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了 IPv4 地址和 IPv6 地址,并很可能分别连接了 IPv4 网络和 IPv6 网络。如果这台设备是一个计算机,那么它将同时拥有 IPv4 地址和 IPv6 地址,并具备同时处理这两个协议地址的功能。
- 隧道技术:通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。
# 路由算法
最佳路由:“最佳” 只能是相对于某一种特定要求下得出的较为合理的选择而已。
# 路由算法的分类
路由算法
静态路由算法(非自适应路由算法)
- 管理员手工配置路由信息。
- 简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。
- 路由更新慢,不适用大型网络。
动态路由算法(自适应路由算法)
- 路由器间彼此交换信息,按照路由算法优化出路由表项。
- 路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
- 算法复杂,增加网络负担。
动态路由算法
- 全局性 链路状态路由算法 OSPF
- 所有路由器掌握完整的网络拓扑和链路费用信息。
- 分散性 距离向量路由算法 RIP
- 路由器只掌握物理相连的邻居及链路费用。
# 分层次的路由选择协议
# RIP 协议(Routing Information Protocol)
RIP 是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。
RIP 协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。
距离:通常为 “跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数 + 1。特别的,从一路由器到直接连接的网络距离为 1。RIP 允许一条路由最多只能包含 15 个路由器,因此距离为 16 表示网络不可达。
RIP 协议只适用于小互联网。
特点:
- 仅和相邻路由器交换信息。
- 路由器交换的信息是自己的路由表。
- 每 30 秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过 180s 没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。路由器刚开始工作时,只知道直接连接的网络的距离(距离为 1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即 “收敛”。
距离向量算法
修改相邻路由器发来的 RIP 报文中所有表项对地址为 X 的相邻路由器发来的 RIP 报文,修改此报文中的所有项目:把 “下一跳” 字段中的地址改为 X,并把所有的 “距离” 字段 + 1。
对修改后的 RIP 报文中的每一个项目,进行以下步骤:
(1) R1 路由表中若没有 Net3,则把该项目填入 R1 路由表
(2) R1 路由表中若有 Net3,则查看下一跳路由器地址:
若下一跳是 X,则用收到的项目替换源路由表中的项目;
若下一跳不是 X, 原来距离比从 X 走的距离远则更新,否则不作处理。
若 180s 还没收到相邻路由器 X 的更新路由表,则把 X 记为不可达的路由器,即把距离设置为 16。
返回
# OSPF 协议(Open Shortest Path First)
开放最短路径优先 OSPF 协议:“开放” 标明 OSPF 协议不是受某一家厂商控制,而是公开发表的; “最短路径优先” 是因为使用了 Dijkstra 提出的最短路径算法 SPF。
OSPF 最主要的特征就是使用分布式的链路状态协议。
特点:
使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。 广播
最终整个区域内所有路由器都得到了这个信息的一个副本。
发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量 / 代价 -- 费用、距离、时延、带宽等)。
只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。
最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图。
链路状态路由算法
每个路由器发现它的邻居结点【HELLO 问候分组】,并了解邻居节点的网络地址。
设置到它的每个邻居的成本度量 metric。
构造【DD 数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
如果 DD 分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR 链路状态请求分组】请求自己没有的和比自己更新的信息。
收到邻站的 LSR 分组后,发送【LSU 链路状态更新分组】进行更新。
更新完毕后,邻站返回一个【LSAck 链路状态确认分组】进行确认。
只要一个路由器的链路状态发生变化:
泛洪发送【LSU 链路状态更新分组】进行更新。
更新完毕后,其他站返回一个【LSAck 链路状态确认分组】进行确认。
使用 Dijkstra 根据自己的链路状态数据库构造到其他节点间的最短路径。
OSPF 的区域
OSPF 分组
OSPF 其他特点
- 每隔 30min,要刷新一次数据库中的链路状态。
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
- OSPF 不存在坏消息传的慢的问题,它的收敛速度很快。
# BGP 协议(Border Gateway Protocol)
BSP 协议交换信息的过程:BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
BGP 协议报文格式
特点:
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4 的四种报文
- OPEN(打开)报文:用来与相邻的另一个 BGP 发言人建立关系,并认证发送方。
- UPDATE(更新)报文:通告新路径或撤销原路径。
- KEEPALIVE(保活)报文:在无 UPDATE 时,周期性证实邻站的连通性;也作为 OPEN 的确认。
- NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接。
# 三种路由协议比较
RIP 是一种分布式的基于距离向量的内部网关路由选择协议,通过广播 UDP 报文来交换路由信息。
OSPF 是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如 UDP 或 TCP),而是直接采用 IP。
BGP 是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用 TCP。
# IP 数据报的三种传输方式
单播:单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播 IP 地址作为目的地址。是一种点对点传输方式。
广播:广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。
组播(多播):当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。
# IP 组播地址
硬件组播
# 网际组管理协议 IGMP
# 组播路由选择协议
组播路由协议目的是找出以源主机为根节点的组播转发树。
构造树可以避免在路由器之间兜圈子。
对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
组播路由选择协议常使用的三种算法:
- 基于链路状态的路由选择
- 基于距离 - 向量的路由选择
- 协议无关的组播(稀疏 / 密集)
# 移动 IP
移动 IP 技术是移动结点(计算机 / 服务器等)以固定的网络 IP 地址,实现跨越不同网段的漫游功能,并保证了基于网络 IP 的网络权限在漫游过程中不发生任何改变。
移动结点:具有永久 IP 地址的移动设备。
归属代理(本地代理):一个移动结点拥有的就 “居所” 称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
永久地址(归属地址 / 主地址):移动站点在归属网络中的原始地址。
转交地址(辅地址):移动站点在外部网络使用的临时地址。
# 路由器
# 三层设备的区别
路由器:可以互联两个不同网络层协议的网段。
网桥:可以互联两个物理层和链路层不同的网段。
集线器:不能互联两个物理层不同的网段。
# 路由表与路由转发
# 传输层
传输层的功能:
- 传输层提供进程和进程之间的逻辑通信。
- 复用和分用
- 传输层对收到的报文进行差错检测。
- 传输层的两种协议。
面向连接的传输控制协议 TCP:传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于 TCP 要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。
可靠,面向连接,时延大,适用于大文件。
无连接的用户数据报协议 UDP:传送数据之前不需要建立连接,收到 UDP 报文后也不需要给出任何确认。
不可靠,无连接,时延小,适用于小文件。
在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字 Socket = (主机 IP 地址,端口号)
# 用户数据报协议 UDP
# UDP 首部格式
# UDP 校验
# TCP 协议
TCP 是面向连接(虚连接)的传输层协议。 打 call
每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的。
TCP 提供可靠交付的服务,无差错、不丢失、不重复、按序到达。 可靠有序,不丢不重
TCP 提供全双工通信。
发送缓存:准备发送的数据 & 已发送但尚未收到确认的数据
接收缓存:按序到达但尚未被接受应用程序读取的数据 & 不按序到达的数据
TCP 面向字节流:TCP 把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
流:流入到进程或从进程流出的字节序列。
TCP 报文段首部格式
# TCP 连接管理
TCP 连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
# TCP 的连接建立
假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户 TCP,他想建立一个与服务器上某个进程之间的连接,客户中的 TCP 会用以下步骤与服务器中的 TCP 建立一条 TCP 连接:
# SYN 洪泛攻击
SYN 洪泛攻击发生在 OSI 第四层,这种方式利用 TCP 协议的特性,就是三次握手。攻击者发送 TCP SYN,SYN 是 TCP 三次握手中的第一个数据包,而当服务器返回 ACK 后,该攻击者就不对其进行再确认,那这个 TCP 连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送 ACK 给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种 TCP 连接,由于每一个都没法完成三次握手,所以在服务器上,这些 TCP 连接会因为挂起状态而消耗 CPU 和内存,最后服务器可能死机,就无法为正常用户提供服务了。
# TCP 的连接释放
# TCP 的可靠传输
可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。
TCP 实现可靠传输的机制:
- 校验:与 UDP 校验一样,增加伪首部
- 序号
- 确认
- 重传
# TCP 流量控制
流量控制:让发送方慢点,要让接收方来得及接收。
TCP 利用滑动窗口机制实现流量控制。
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口 rwnd(接收方设置确认报文段的窗口字段来将 rwnd 通知给发送方),发送方的发送窗口取接收窗口 rwnd 和拥塞窗口 cwnd 的最小值。
# TCP 拥塞控制
出现拥塞的条件:
对资源需求的总和 > 可用资源
网络中有许多资源同时呈现供应不足➡️网络性能变坏➡️网络吞吐量将随输入负荷增大而下降
拥塞控制:防止过多的数据注入到网络中。 全局性
拥塞控制的四种算法
- 慢开始
- 拥塞避免
- 快重传
- 快恢复
假定:
- 数据单方向传送,而另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
发送窗口 = Min
接收窗口:接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量。
拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。
# 应用层
# 网络应用模型
- 客户 / 服务器模型(Client/Server)
服务器:提供计算服务的设备。
- 永久提供服务
- 永久性访问地址 / 域名
客户机:请求计算服务的主机。
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态 IP 地址
- 不与其他客户机直接通信
应用:Web,文件传输 FTP,远程登录,电子邮件
- P2P 模型(Peer-to-peer)
- 不存在永远在线的服务器
- 每个主机既可以提供服务,也可以请求服务
- 任意端系统 / 节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变 IP 地址
- 可扩展性好
- 网络健壮性强
# 域名解析系统 DNS
# 文件传输协议 FTP
- 文件传送协议 FTP(File Transfer Protocol):提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
- 简单文件传送协议 TFTP(Trivial File Transfer Protocol)
FTP 是基于客户 / 服务器 (C/S) 的协议。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP 服务器。
连接 FTP 服务器,遵循 FTP 协议与服务器传送文件的电脑就是 FTP 客户端。
# FTP 工作原理
FTP 传输模式:
- 文本模式:ASCII 模式,以文本序列传输数据;
- 二进制模式:Binary 模式,以二进制序列传输数据。