概述
知识点
协议:一个协议定义了在两个或多个通信实体之间交换的报文格式和次序, 以及报文发送
区域分类
- 网络边缘:终端用户设备、服务器
- 网络接入:物理媒介、无线路由器AP、光缆等
- 将端系统接入边缘路由器的网络
- 网络核心
- 由一系列高容量、高速度的网络设备和路由器组成,实现数据在不同网络之间的转发和路由功能,
- 交换、机路由器
&&计算机网络层次结构
- OSI:物理层、链路层、网络层、传输层、会话层、表示层和应用层。
- TCP/IP:物理层、链路层、网络层、传输层、应用层
- 多层协议的必要性:
- 分工合作:多层协议使得网络功能得以分层并分配到不同的层次,每个层次专注于特定的任务和功能。显式的结构允许对复杂系统中各个部分进行确定和理解,并了解它们之间的关系。这有助于理解不同组件如何相互配合和交互。
- 抽象和简化:每个协议层次可以隐藏底层细节,提供更高层次的抽象接口,使得上层应用或服务可以更简单地使用网络功能。
- 互操作性:多层协议提供了一种标准化的方式,使得不同厂商和组织开发的网络设备和应用程序能够互相配合和交互操作。
- 模块化和可扩展性:多层协议的存在使得网络能够逐步演化和升级。每个层或模块可以独立开发、测试和更新,而不会影响系统的其他部分。
- 问题:包头繁琐浪费、划分严格实际上高层可能需要一些低层次信息
- 层次功能
- 物理层:负责将比特流转换为物理信号,并在网络中进行传输。
- 链路层:将数据划分为帧并进行传输。处理物理地址(如MAC地址)的寻址和访问控制。(相邻节点传输)
- 网络层:负责将数据报从源主机传输到目标主机,实现数据的路由和转发。处理逻辑地址(如IP地址)的寻址和路由选择
- 传输层:提供端到端的数据传输服务。可靠传输、拥塞控制、流量控制等。报文段
- 应用层:提供各种应用程序使用的协议和服务。处理数据,与用户交互
- 漏斗形协议结构:
- 简化的协议栈:由于网络层只使用IP协议,整个协议栈变得更简洁。这降低了系统的复杂性,减少了实现和维护的工作量。
- 灵活性和可扩展性:通过将网络层与其他传输层协议(如TCP和UDP)分离,互联网实现了灵活性和可扩展性。新的传输层协议可以轻松地添加到现有的网络层上,而不需要对网络层进行修改。
- 跨平台兼容性:IP协议是一种通用的网络层协议,它可以在不同的操作系统和设备之间进行互联。这种跨平台兼容性使得不同厂商的设备能够在互联网上进行通信,促进了网络的互操作性。
- 路由灵活性:由于网络层只负责路由功能,它可以灵活地根据网络状况和路由策略选择最佳的路径。这使得互联网能够适应不断变化的网络拓扑和流量需求。
- 网络自治性:沙漏型协议体系结构支持网络自治性,即不同的网络自治系统(AS)可以根据自己的需求和政策来管理和控制自己的网络。每个自治系统可以独立地决定如何路由和传输数据,同时保持与其他自治系统的互联。
- 交换模式
- 电路交换
- 资源预留,通话期间独占资源,有保障
- 针对每个连接进行控制(如admisson control)
- 问题:线路复杂、资源浪费、建立连接增加时延
- 分组交换
- 按需传输,资源充分利用,每个数据包独立处理、传输
- 针对每个数据包进行控制,每个数据包的传输路径可能不同
- 问题:存在拥塞、丢包、顺序问题
- 虚电路
- 结合两种方法,建立逻辑连接(而不是物理连接),以分组的形式传输数据
- 建立时选择路径,数据包按照相同的路径进行传播
- 提供质量保证和资源预留,按序到达,又充分利用资源
- 在包上添加特殊标记告知路由器保留资源,建立vc
- 路由器会对具有特殊标识的包特殊转发
- 电路交换
- 性能指标
- 时延
- 处理
- 排队
- 平均排队数目L=平均到达速率A*平均等待时间W
- 传输:进入链路的时间
- 包大小/链路宽度(链路宽度也就是传输速率由整个链路中最慢的部分决定)
- 传播:在线路上传输需要的时间
- 线路长度/传输速度
- 丢包(乘法)
- 吞吐量(传输速率)
- 时延
例题
链路层
知识点
可靠传输与错误检查
- 弥补物理层的缺陷,不一定需要
- 停止等待:发送frame,等待ACK;收到后发送下一条
- 滑动窗口:
- ack附带下一个要收到的包的编号
- 错误处理:gobackn(从错误包开始的所有包都需要被重新传输);选择重传(重新传输错误的包)
- 在数据D后添加其校验码EDC用于进行检验
奇偶校验
- 一维:1位记录有奇数个还是偶数个
- 二维:n+m-1位
- 可以纠正单比特错误
&&CRC
- 只检验,不纠错
- 加法减法都不借位,相当于进行异或操作(在计算除法的过程中)
- 称r+1比特模式/生成多项式(能检测小于r+1比特的突发差错)
- 取余数的后r位作为CRC校验码R(D为元数据,G位模式串,r隐式给出)(G的长度为r+1位)
- 因特网检验和
- 将数据的字节作为16比特的整数对待并求和,这个和的反码形成了携带在报文段首部的因特网检验和
- ==注意==首项溢出时进位到最后一位
&&网络设备
网桥(类似于二层交换机)
- 连接多个局域网(lans),接收来自一个端口的数据帧,存储下(用于学习及决定转发)然后进行转发,不会对数据进行任何修改
- 具有学习功能,会构建转发表,根据目的MAC地址转发数据帧
- 具有透明性
- 无需配置:以太网设备(包括端)插入以太网中时,它可以立即开始使用,无需用户或网络操作人员进行额外的配置。
集线器(物理层)
- 当一个线路发送信息时,hub向所有其他线路进行简单重复消息
- 连接的所有设备处于同一个冲突域,速度就是单条线路的最大速率
- star连接,但本质是bus
网卡(二层)
二层交换机
- 和网桥类似,基于mac转发表进行工作
- 具有网桥的功能,但是接口很多,每个接口连接一个端设备(星型结构),因此是无冲突的
- 处于兼容性的考虑,也是用了CSMA/CD
- 具有自学习能力(与桥类似)
- 传输速率很快(多条不同线路之间可以同时通信)
三层交换机
- 网桥、二层交换机等二层网络设备一般没有ip
- 三层交换机本质上与路由器的功能没有区别,体现在性能及使用场景
- 三层交换机具有路由功能(链路层mac+网络层ip)
- 三层交换机实现对网络流量的隔离和控制,分隔子网,避免了单一广播域中的问题。
- 引入原因:日益增长的站点数量和复杂性的要求
- 广播负载过重
- 由二层交换机连接的一组站点和局域网构成了一个单一的物理网络,共享一个MAC广播地址。广播帧会被发送到所有连接到二层交换机的局域网上的所有站点
- 缺乏多路径支持
- 两个节点之间只有一条线路(因为是生成树),限制速度和可靠度
- 广播负载过重
路由机制
- 转发表与学习机制
- &&环路与生成树算法stp
- 避免出现环,防止广播风暴
- 选择MAC作为标识符,标识符最小的节点作为根节点
- 全部初始化为(根x,距离0,本节点x)
- 向周围的节点发送信息(第一回合或者 收到消息导致最短距离发生了变化(Y, d+1, X))如果信息中的根节点更小或者距离更短则更新数据(多个时选择编号较小的)同时舍去未被选择的边
- 根节点宕机判断:让根节点周期性发送消息,从而让其他节点确定根节点是否正常工作
- 生成树可以由网桥的阻塞机制来实现
- 泛洪(在生成树上)
- 向所有其他端口发送消息
- 是学习了解网络结构的过程(根据收到的信息建立端口到mac的映射)
- 因此泛洪不是对资源的浪费
- 转发:
- 如果数据库中记录目的地的端口,则进行转发
- 如果找不到则进行泛洪
- 如果端口和发送端口相同,则不转发,drop数据
802.3以太网
- bus需要进行MAC控制(如CSMA);star模式为点对点传输,不存在冲突
- 非连接、不可靠
- 帧格式
- 可变负载长度:最短46字节,最长1500字节
- 地址(MAC):6字节
- 分割帧:
- 使用哨兵:01111110表示开始,01111111表示结束
- 需要防止其它部分出现哨兵,通过在发送端如果发现出现连续5个1就插0,接收时自动删除0
- arp
- 沟通ip和mac
- 发送者先在本地数据库查找,找不到的话则发送查找广播,<自己ip,mac,目的地ip>,接收者收到并确认后进行回复
,发送者收到mac信息,存储信息建立映射,附加时间戳存储在转发表
- dhcp
- 过程:广播寻找DHCP服务器discover;服务器广播地址offer;向服务器发送请求request(refresh);服务器分配ip资源ack
- DHCP相当于向用户出租资源,当用户不再使用或到达时间限制后服务器会收回资源release
- Soft state:DHCP使用"Soft state"机制来管理IP地址的分配情况。"Soft state"表示DHCP服务器和客户端之间的交互是一种临时状态,并且需要周期性地进行维护和更新,当出现故障时保证资源释放等操作正常进行
- 理念:广播、缓存、软状态
802.11无线局域网
结构
- Station:接到网络的终端设备或主机(端系统)
- AP:用于提供无线网络连接,在有线网络和无线网络之间进行转化
- BSS:无线局域网中的基本服务集,由一个AP和与之关联的一组无线设备组成,它提供了在特定区域内的无线通信。
- ESS:扩展服务集,由多个BSS组成的无线网络集合。在一个ESS中,多个AP通过有线网络连接起来,形成一个统一的无线网络。用户可以在不同的BSS之间自由移动,而无需重新认证或断开连接。
- DS:无线局域网中的分布系统,用于连接不同的BSS和提供跨越多个BSS的无线漫游构成ESS。
评估
- SNR信噪比:信号能量/噪声能量
- BER:比特出错率
- 增大功率提升SNR
- 终端移动时,信号强度/干扰都会发生变化,需要对通讯进行动态调整,维持SNR和BER在可用的范围内(如当SNR减少时可以通过降低速率来减少BER)
特点:
- 无线信号在传播过程中会随着穿过物质而衰减
- 多路径传播:无线电信号反射离物体地面,到达广告目的地 时间略有不同,会产生自干扰问题
- 半双工,不同同时发送和接收(因为自干扰问题难以解决)
- 通常具有无线性以及移动性
- &&隐藏终端问题:
- 由于多设备连接造成
- 这意味着AC相互不知道对方的存在,因而可能同时向B发出信息,从而导致发生冲突干扰
- 解决办法
- 发送者先广播RTS告知周边设备他要发送
- 接收者再广播CTS告知他要发送
- 发送者发送信息
- 接收者广播ACK确认收到,并告知传输完成
搜索与连接
- 消极方式
- 客户端在每个信道上监听AP定期发送的信标,而不主动发送任何请求。(每个AP会周期性的发送信标帧,包含AP的SSID和MAC地址)
- 比较耗时
- 积极方式
- 客户端在每个信道上发送探测请求帧,并等待AP回复探测响应帧应答探测请求帧,主机在能够响应的AP中选择进行关联,再发出关联求帧等待关联响应帧(一共需要进行两次请求/响应握手)。
- 比较快速
- 消极方式
- 频段
- 802.11b: 2.4GHz-2.485GHz划分为不同信道
- 这个85MHz的频段定义了11个部分重叠的信道(1 6 11是唯一的三个非重叠信道的集合)
- 帧格式
- address1:下一跳(ap)
- address2:发送者
- address3:ap的上游路由器
- 为什么需要三个地址:
- AP是链路层设备,不知道ip
- 在网络层来看,端设备不知到AP的存在
- 如果没有地址3,AP不知道因该把来自无线局域网的数据发给谁
- 也就是说AP不能根据ip知道下一跳的位置,需要手动设定
MAC媒体接入控制理念:
- 控制多设备接入的网络,组织多个设备同时传输数据,决定让哪一个设备开始数据传输,从而避免因同时发送造成冲突
- 理想:所有节点平分、充分利用带宽、分布式
频道划分
- TDMA时间划分
- FDMA频率划分
- &&CDMA(扩频多址数字式通信技术)
- 每个节点使用不同模式字段code
- 将01信号转化为-1/1进行发送,发送时使用code乘以数据,并进行叠加
- 解码时再将数据与code相乘并除以code的长度
轮流发送
- 令牌环802.5
- 当令牌到达一个节点时,该节点检查是否有数据需要发送。如果节点有数据要发送,它就将数据封装在一个帧中,并将帧发送到网络上。
- 数据在环路中传输,传输完成后释放令牌到环路中,使得后面的节点可以根据需求捕获令牌发送数据
- 使用中心节点控制
- 问题:等待时间长、单点崩溃
随机接入
- ALOHA:当节点有消息要发送时就发出,如果发送失败就有p的概率重新发送,1-p的概率等待一会再重新发送,接收端收到后回复ACK
ALOHA slotted:同步时间和固定帧大小,数据要么传输成功、要么完全冲突损坏。如果冲突了,在之后每个区间重新发送的概率都是p
&&CSMA/CD
- 增加对线路的监听,如果线路空闲则发送帧,如果信道繁忙则等待一段时间之后再进行传输
- 由于传输延迟的存在(进入线路的过程中可能会发生冲突),仍然会发生冲突
- 分类
- nonpersistencent CSMA:如果繁忙则等待随机长度时间
- 1-persistent CSMA:空闲后立即发送(多个节点时易冲突)
- p-Persistent CSMA:如果空闲则有p概率立即发送,1-p概率等待一单元时间再发送(最优为p=1/N)
- 冲突检测
- 通过信号强度来判断是否发生了冲突(冲突的信号要强得多)
- 冲突一旦被察觉,并发送jam信号(加强冲突,便于其他设备检测)
- 当发送者收到别人发送而来的信号时会发现冲突
- 帧的最小长度
- 避免察觉到发生冲突时已经完成该数据的传输
- $$Size/B>=2(L/v)$$即传输时延大于等于2倍的传播时延
- 最大长度是由协议决定的,较大的帧长度会占用更多的带宽和资源,增加网络传输的延迟。如果允许无限制地增加帧长度,可能会导致网络拥堵和传输效率下降。
- 二进制指数退避(冲突后的等待)
- 对于前10次发生冲突后的等待时间的选择范围每次是上一次的二倍
- 第n次碰撞后随机从(0 1 2...2^n^-1)中随机选一个值作为k(等待时间)
- k=1表示512比特时间
- 换算:秒=比特时间除以传输速率
- 之后的6次时间保持不变
- 16次冲突(失败后)放弃发送信息
- 对于前10次发生冲突后的等待时间的选择范围每次是上一次的二倍
- 点协调PCF(无线局域网)
- 帧间距控制优先级(抢先发送)
- SIFS内容(控制信息):ACK、CTS、回应轮询
- PIFS(比普通的DIFS有更高的优先级):轮询、AP指令
- DIFS:普通异步流量
- 过程
- AP用PIFS轮询设备是否有高优先级的数据要发送,通知其它站点开始一个超级帧周期。
- 被询问的站点可以使用SIFS(短帧间隔)来回应。如果在预期的反转时间内没有收到回应,协调器就会发出另一个询问信号。当轮询列表为空或超级帧结束时,AP发送一个CF-END帧来终止PCF模式,并恢复DCF模式。)
- 此阶段由ap进行控制,不会发生冲突
- 超级帧
- 在超帧时间的前一部分,由点协调器轮询(PCF),在超帧时间的后一部分,允许异步通信量争用接入(DCF)。
- 帧间距控制优先级(抢先发送)
- 分布式协调DCF:
- 使用CSMA/CA(避免碰撞)机制,即在发送数据之前,站感知媒介是否空闲,避免与其他站点的传输发生碰撞。
- 取决于不同的优先级方案,在发送前会等待帧间隔(IFS)
- &&CSMA/CA(无线局域网)
- 由于无线信号的衰减和干扰,无线局域网中很难进行碰撞检测,因此DCF不使用碰撞检测机制。(使用ACK来确认是否成功发送信息)
- 发送站点在发送数据时很难接收到其他站点的信号
- 不能检测到所有可能发生的碰撞,例如隐藏终端问题
- 如果某站点最初监听到信道空闲,它将在DIFS的短时间段后发送该帧
- 否则,该站点选取一个随机回退值,并且在侦听信道空闲时递减值。 当侦听到信道忙时,计数值保持不变
- 当计数值减为 0 时并且空闲,该站点发送整个数据帧并等待确认
- 如果收到确认,发送站点知道它的帧已被 目的站正确接收了。 如果该站点要发送另一帧,它 将从第二步开始 CSMA/CA 协议。 如果未收到确认,发送站点将重新进入第二步中的回退阶段,并从一个更大的范围内选取随机值。
- 由于无线信号的衰减和干扰,无线局域网中很难进行碰撞检测,因此DCF不使用碰撞检测机制。(使用ACK来确认是否成功发送信息)
- CSMA/CD与CSMA/CA的比较
- CSMA/CA增加更多的随机等待,避免高代价的碰撞
- CSMA/CA不使用碰撞检测机制,使用ACK
- 在 CSMAI CD 协议中碰撞并非是一个严重的问题,因为两个站点检测到碰撞后都会放弃它们的发送, 从而避免了由于碰撞而造成的该帧剩余部分的无用发送。 而 802. 11 并不检测碰撞和放弃发送,遭受碰撞的帧仍将被完全传输。
&&利用率分析
公式
最大媒体利用率$$U=帧传输用时/帧总耗时$$
$$a=传播时间/传输时间$$
- 用$$1$$代表传输时间
- 注意分为帧较小和帧较大两种情况讨论
点到点:$$U=1/(1+a)$$
- &&令牌环:假设token发出后会被下一个紧挨着的节点捕获
- $$a/N$$是将令牌传播到下一个节点的时间
- 有两种情况是因为在发送令牌前数据要已经返回并且已经传输完成
- $$a/N$$是将令牌传播到下一个节点的时间
- alloha slotted
- 一个节点成功概率,存在节点成功的概率为
- 最大值为即
alloha
csma/cd(p)
- 假设一次冲突浪费$$2a$$时间
- 同理可得$$A$$表示存在节点完成传输
- 那么失败次数的期望为
例题
网络层
知识点
- 服务:
- 路由选择:决定数据包走怎样的路从出发点到目的地,使用forwarding表,比较耗时(几秒)
- 转发:数据从路由器的一个口进入,从哪个口出去
- 尽力而为
路由器
- 性能评估:交换容量=N端口数目*R每个口的速率
- 入端口
- 物理层->链路层->网络层
- 更新ip包头、寻找通往目的地址ip的出端口
- &&快速查表寻址:地址聚合,最长前缀匹配(压缩地址,合并相同方向的地址)
- 为了节约空间、提高速率,用范围划分决定路由方向
- 交换结构
- memory模式:把input的数据保存到memory再传输到output
- bus总线模式:不同端口竞争bus的使用
- Switching via a Mesh:使用算法决定通断,进行资源调度
- 纵横式网络能够并行转发多个分组,除非来自两个不同输入端口的两个分组其目的地为相同的输出端口
- 出端口
- 决定已怎样的顺序传输数据包,数据包分类与调度,何时丢包
- 分组调度
- fifo
- Scheduler优先级轮询
- 排队
- 若N个输入、输出端口的速率都是R~lilne~,如果R~switch~比它快N倍,则只会发生轻微的排队
- 输入排队,如果到达速率大于转发速率。先将数据缓存起来
- 输出排队,到达分组必须排队(等待)经输出链路传输,如果输出端口相同,会在输出端口处出现排队
&&ip协议
- 地址类型:单播地址、广播地址、多播地址、任意播地址(有多个实体使用该地址,即负载均衡)
- 包头
- 版本version
- 头部长度IHL:明头部由多少个32位字组成(不含可选长度时为20字节)
- 区分服务TOS:优先级、可靠性、延迟
- ttl:防止出了问题的报文一直在网络中浪费资源
- 全长total length:ip包的总长度
- 标识符 identification:唯一标识一个包的所有分片(一个包的所有分片具有相同的id)
- 标志flags:控制和识别分片的标志位如(禁止分片、更多分片)
- 分片偏移 fragment offset:记录分片在数据包中的位置(以8字节为单位)
- 协议protocol:传输层协议类型
- 头部校验和Header checksum:
- 它是由所有16位字(把头部切分为长度为16的片段)中的补码和计算得出的。在计算过程中,每个路由器都会重新验证并重新计算校验和,并将其设置为0。这样做是为了防止在计算过程中发生溢出。(每次都需要重新计算是因为头部会发生变化)
- 可选片段options:最多40字节(若不是32整数bits倍,用padding进行补齐)
- 数据包分解与合并
- MTU:设施支持的最大传输单元
- 分片:在host和router进行
- 合并:只在目的地进行(路由器上重新组装分片是不可行的,因为分片可能会采用不同的路由)
- 单元标识符确定属于的数据包
- 偏移量确定分片在原包中的位置
- 计算在源数据包data中的偏移时不包含包头的长度
- 标志moreflag,确定是不是最后一个分片
- 当一组数据包中第一个到达目的地时开始计时,如果到达时间限制后仍没有全部到达,则丢弃全部数据。
ipv6
-
- 长度固定,为40字节
- Traffic Class (8 bits):QoS(为了区分不同的数据流而设置的一种标识。)
- Flow Label (20 bits):流标签(标记一组流量,共享相同类型的服务)
&&ipv4与ipv6的异同
- 路由器不再负责分片,如果一个IPv6数据包太大,无法通过下一跳,则会发送ICMPv6告知
- ipv6不再有单独的broadcast地址,而是使用包含所有节点的组进行多拨来实现。(减少广播风暴、唤醒不必要的节点)
- 不使用ARP,使用Neighbor Discovery
- 取消首部校验和
- 128比特地址,解决了IPv4地址枯竭的问题。
- 更好的区分服务QoS的支持
- 更容易扩展选项
- 更加安全: 内置的、强大的IP层 加密和认证
- 更有效、更强大的移动性机制
- 缺点:
- 迁移成本高
- 网络基础设施不完善
- 兼容性问题
- 融合方式
- 双栈 - 一些具有双栈(IPv6、IPv4)的路由器 可以在不同格式之间进行转换
- 隧道--在IPv4数据报中以有效载荷形式传输IPv6
&&子网划分
- 地址划分
- 子网掩码指示哪些位是子网号,哪些是主机号
- 网络地址=子网掩码&ip地址,网络地址相同说明处于同一个子网
- 主机号=~子网掩码&ip地址
优点
- 每个局域网分配一个子网号,具有更大的灵活性
- 本地路由器在子网化网络内进行路由
- 子网对整个互联网来说就像一个单一的网络
- 使整个互联网与网络号的增长和路由复杂性隔离开来
传统类型划分(网络资源划分思想80)
A
- 子网掩码:255.0.0.0
- 1.x.x.x~126.x.x.x(不含0和127)
- 每个网段支持2^24^-2个主机(全0是网络号,全1是广播号)(这两个地址不一定必须是全0和全1,也可以是别的地址,但对于所有网段必须预留出来两个位置)
B
- 子网掩码:255.255.0.0
- 网段从128.0.x.x到191.255.x.x(八位一组)2^14^个
- 每个网段2^16^-2个主机
C
- 子网掩码:255.255.255.0
- 网段192.0.0.x到223.255.255.x共2^21^个网段
- 每个网段最多2^8^-2
D多播使用
E保留地址
CIDR
- 更有效地利用IP地址空间和改善路由表的管理,并不能增加
- 可以更方便的分层嵌套
- 从原来的主机号里面借了几位拿去做子网号了
- x.x.x.x/n(n表示网络ID的位数)(即自由划分网络号和主机号的位数分配)
- 二级地址->三级地址
- 更有效地利用IP地址空间和改善路由表的管理,并不能增加
NAT
- 给内部网络和外部网络分配不同的IP集(不同内部网络可以使用相同的ip),在出网关时内部地址会被替换为外部地址
- 来解决地址不够使用的问题;安全(隐藏内部ip地址);便于切换isp(只需要重新配置网关)
- 分类
- 静态NAT:一个内部ip绑定一个对应的外部地址,用于网络服务器
- 动态NAT:动态分配外部ip给内部设备(有一个ip池),谁用分配给谁
- 单地址模式NAPT:只有一个外部ip,所有内部ip对外通讯时都会被进行替换。路由器维护一个转发表,将外部端口与内部ip绑定,当外部ip向路由器发送信息时,会根据使用的端口向特定的内部设备转发消息
移动ip协议
- 解决设备从一个网络到另一个网络时TCP断开连接的问题
- 具有动态IP的特点
-
- 发现
- 路由器发送ICMP告知是否有这项服务
- 移动设备向路由请求服务
- 注册
- 节点向外部网络请求服务
- 外部网络向家庭网络发送请求
- 家庭网络进行答复
- 外部网络把结果返回给节点
- 隧道
- 注册之后就建立起了隧道
- 家庭代理将移动节点的IP地址绑定到家庭代理的MAC地址上
- 家庭代理接收到发送到移动节点的数据包,并通过IP隧道将数据包转发到外部代理
- 而移动节点直接回复信息
- 发现
控制信息
- ICMP、ARP、DHCP等信息的头部都是接在IP头部后面
- 其类型记录在IP包头的Protocol字段
ICMP
- 传递控制、错误消息、ping等
- 当buffer已经满了时丢弃掉新进入的数据,通过ICMP告知发送者
protocol=1
&&ping/traceroute的实现
- 重复三次计算RTT
- Ping:
- 发送端发送一个ICMP Echo Request(Ping)消息到目标主机。
- 目标主机接收到ICMP Echo Request消息后,会生成一个ICMP Echo Reply(Pong)消息,并将其发送回发送端。
- Traceroute:
- 发送TTL依次递增的UDP数据包(到不同路由器时TTL为0,路由器会返回信息),这样可以知道到每个路由器的时间,以及路由器的地址
- MTU计算:
- 发送具有一定大小的数据包,并禁止尽心分片,这样通过对包长度进行二分搜索来确定能通过最大的包大小
- 不能通过时路由器会返回信息
&&路由算法
- 目标:效率、鲁棒性、稳定性
- 评价因素:最少跳、最少路径代价、最小延迟(排队长度)
- 决策时间:普通包(路由器),vc(建立线路时)
- 决策地点:集中式、分布式
- 路由表更新:动态(周期更新、拓扑变化,容易出现路由震荡、循环选择)、静态(手动更新)
- 分类
- 集中式:当网络发生重大改变时中央重新计算并下发
- 分布式
- 泛洪:收到数据包后发送到除了发送端口以外的全部端口,最终会有一系列的(相同)数据包到达目的地
- 随机:
- 从除了发送端口以外的其他端口随机发送
- 适用于连通性很强的网络(邻居节点很多)
- 自适应路由:需要网络信息,致力于拥塞控制,网络发生变化时路由选择也会发生变化
&&算法示例
Dijkstra’s | Bellman-Ford | |
---|---|---|
类型 | Link State集中式算法 | Distance Vector分布式算法 |
特点 | 每个节点都需要知道整个网络拓扑来构建转发表 | 每个节点只需要维护到已知节点的距离向量,和相邻节点传递 |
过程 | 接待你之间相互发送向量表,根据其它节点上一阶段的表,更新自己本阶段的表(条目),别人的直接复制过来,当所有表不再发生变化时终止算法 | |
问题 | 震荡:当路由算法选择了某个路径后,该路径的负载会增加,导致该路径的成本增加。当其他可用路径的成本更低时,路由算法将会选择其他路径。 | 循环选择(无穷计数):当一个节点检测到本地链路成本的变化后,它会更新自己的距离向量,重新计算到其他节点的距离,并将更新的信息通知给它的邻居节点。 |
改进 | 让一些流量留在负载较重的链路上,以平衡流量;非同步运行路由器,增加随机性; | 毒性逆转:如果一个节点要通过它的邻居节点(如 z-w-y-x中y会告诉w无穷大,但不会告诉非直接相连的z)来到达某个目的地,那么该节点会将到达该目的地的距离设置为无穷大(来针对这个邻居节点防止被选择),但是当环上有3个以上节点时还是会出现无穷计数 |
节点故障的影响 | 错误范围受到限制 | 错误可能会通过网络传播,到达整个网络 |
- 发展
- 第一阶段:BF(DV),输出队列长度衡量代价,收敛太慢
- 第二阶段:DK(LS),延迟衡量代价,将链路信息传播到整个网络时效率低下的尤其是当网络的规模较大的时候
- 第三阶段:OSPF,采用更全面的链路信息。通过构建拓扑图和计算最短路径来选择路由。它考虑了延迟、带宽和拥塞等因素,能够更准确地选择最佳路径。
- 延迟=重新传输的时间-数据包到达的时间+传输时间+传播时间
- 代价计算
ρ = 2(Ts − T)/(Ts − 2T)
- T是当前测量的延迟
- Ts是平均数据包长度/链路的传输速率
- 平滑化(leveling)
Un = α×ρn+(1–α)×Un–1
- α – constant, now set 0.5
路由协议
- 目的:解决规模问题、自治倾向
- 层级管理:
- 根据自治域AS进行划分,同一个AS内的路由器使用相同的内部路由策略
- 网关路由:负责路由到AS外目的地的路由器。与其他网关路由器的自治系统间路由协议,并与AS内的路由器运行自治系统内路由协议
IGP(内部路由算法)
- 专注于性能
RIP
- 使用dv(最多15跳)
- 每隔30秒,路由器会向相邻的节点发送一条RIP更新消息(UDP),其中包含了距离向量信息。
- 如果在180秒内未能接收到更新消息,则说明与相邻节点的连接已经断开。
OSPF
代替了RIP,使用Link-State
每个节点都存储了一个有向图,用于描述该节点的相邻节点和它们之间的连接方式。每个路由器都会维护与相邻路由器之间的链路状态列表,并10s向整个自治系统广播(泛洪)状态信息,直接使用ip协议进行传输
优点
- 使用身份验证来防止恶意入侵
- 负载均衡
- 多播支持
- TOS区分服务的支持
- 分层结构
每个节点都使用DK算法确定以自己为根节点的最小生成树(因此在传输包时只用上了每个生成树的下一跳信息)
区域划分
- 将AS内部进一步划分,
- 每个区域由一个32位的区域ID进行标识,该区域内的路由器只知道该区域内的完整拓扑信息,从而限制了链路状态信息向其他区域的洪泛。
- 区域边界路由器负责与其他区域传输
- 每个区域都必须与骨干区域(0.0.0.0)相连以便在区域之间传播路由信息。
分类
- 内部路由IR
- 边界路由ABR:连接多个区域(如连接到骨干网)
- 骨干路由器BBR:运行在骨干网、骨干网与其他区域网之间的路由器
- ASB:发送到其他AS
广播
- 路由器链路广告:
EGP(外部、网关路由算法)
- 专注于策略
- DV和LS都不能胜任:
- AS通常希望知道链路经过的线路
- 使用 Path-Vector
- 路径矢量路由协议的关键思想是广告整个路径,根据路径来转发数据包
- 每个网关路由器向邻居广播到达目的地的完整路径。这样,网关路由器可以执行策略路由,避免经过特定的自治系统,同时考虑更多的其他参数。
- 期望:自主选择路由(传输过程)、自主性、隐私性(保密自身的信息,如拓扑结构)
BGP
AS中的边界路由使用BGP协议
AS间关系:商家与顾客(Pr-Cu)/合作(Peer-Peer)
- 合作的前提:前提:peer双方都能从中受益
由于AS的内部是隐藏的,因此网络拓扑图中只显示自治域间的路由信息。
- AS决定传输的路径,以及对外广播公布的内容
受到DV的启发,但有许多不同
- 选择最好而不是最短的路径,综合考虑
- 知道具体的路径,可以更加灵活的选择路径,并避免回路
- 即使物理上有链接,但可能不进行广告,拒绝某种传输
- 可以根据前缀转发,一次向多个路由器进行转发
BGP的组成
- eBGP:处于不同自治系统(AS)之间的边界路由器之间的BGP会话
- iBGP:处于同一个自治系统中的边界路由器和其他路由器之间的BGP会话,目的是在AS内部分发外部学习到的路由信息
- iBGP协议确保自治域内部所有路由器之间的路由信息同步,并且避免出现路由环路等问题。
- Tip:IGP目的是为自治域内部的所有路由器提供内部可达性
- 总结
- 自治域内的边界路由器会使用eBGP协议来学习到外部AS中的路由信息。然后,AS内部路由器之间使用iBGP协议来分发和同步学习到的外部路由信息,以确保自治域内的所有路由器都具有完整的路由信息。
- 最后,自治域内的所有路由器都使用IGP协议(如OSPF或RIP)来确定到达目的地的最短路径。这个过程会一步步地进行,直到数据包到达自治域的边界路由器,然后通过eBGP协议将数据包发送到目的地的外部AS中。
BGP中的属性(用于进行路径的决策)
- 本地属性是仅在本地AS中使用的属性,不包括在路由公告中。全局属性则会随着eBGP路由公告一起传播。用于帮助路由器进行路径的选择
- ASPATH:全局属性,反向顺序列出经过的AS(可以用于防止环路、黑名单)
- LOCAL PREF:本地属性,指定想要的路由路径(偏好)
MED:存在多个出口的情况下选择到达目的地的最优路径(转发的AS所宣布的),表示从一个AS到另一个AS的内部路径的距离
IGP cost:通过在自治系统内使用内部网关协议(IGP)来计算的,每个路由器根据内部域协议中的路径成本选择最近的出口点。
*多播
- 发一份(一个操作)到达不同目的地,效率高
- 建立一个生成树连接发送源和接收组成员
- 当一个主机加入一个组播组时,它会通知本地路由器,告诉路由器它要接收该组的数据包。路由器会记录哪些主机已经加入了哪些组播组,并在收到组播数据包时,将数据包转发给那些已经加入了该组的主机。
- ipv4 D类地址
- 组播MAC地址:组播mac地址的高24bit为0x01005e,mac 地址 的低23bit为组播ip地址的低23bit。
IGMP
- 主机可以通知多播路由器告知要加入某个组,多播路由器相互交互,构建多播树
- 路由器周期性的询问主机都是否还要在某个组里(不回答就是退出)
- 每个子网中只需要选出一个路由器来作为询问者
- 回复时,每个节点给与每个组一个随机的发送时延(0-10s)
- 第一个计时结束的节点代表整个组进行发送,其他节点发现有人回复了就不再回复
- 发送的TTL为了表示只在该子网内进行传输
- 两个特殊地址:
- 224.0.0.1: all multicast groups on subnet
- 224.0.0.2: all routers on subnet
- 版本
- v1:每次都广播询问所有组的订阅情况,主机只发送要加入的组,通过不回复来表示离开某个组
- v2:可以询问单个组的使用情况,允许主动发送消息主动离开组
- 问题:垃圾邮件、发送源的位置是未知的
- v3:允许接收主机设定一个源列表(只接受来自列表中的源的信息),其他的会在路由器丢弃
多播算法——多播树的构建
- 发送源构建一个树
- Shortest Path Trees
- 使用DK算法,OSPF
- &&Reverse path forwarding
- RIP,要求途中的路由器知道到达发送源的最短路径
- 基本思想是:当一个路由器收到一个多播数据包时,它将检查其路由表中是否存在最佳路径来到达数据包的源地址(即数据包从最短路径而来),如果是则泛洪,否则丢弃
- 如果路由器不含加入多播组的节点,路由器可以向上游发送“prune”消息告知不要再继续转发了
- 不适用于链路代价不对称、动态变化的情况
- Shortest Path Trees
- 每个接收节点选择到发送源的最短路径,构成生成树
- Center-based trees
- 将网络中的一个路由器标识为中心节点其他路由器可以通过向中心节点发送单播加入消息来加入该树形结构。
- Center-based trees
*多播协议
DVMRP
- 基于RIP的多播路由协议,使用dv
- 该协议是软状态的,DVMRP路由器会定期(1分钟)"忘记"剪枝的分支,多播数据会再次通过未剪枝的分支传输。下游路由器可以重新剪枝,否则将继续接收数据。
- 在规模化网络中不适用,因为所有路由器都需要全局了解所有多播组和其源的信息。
MOSPF
- 基于ospf
- 可以为每个多播数据报计算一棵相同的最短路径树
PIM
- 可以与任何单播路由协议一起使用
- 在稀疏模式下,PIM 协议使用中心点方法建立组播树,这个中心点可以是任意一个路由器,其他路由器通过向中心点发送加入消息来加入组播。组成员比较分散,带宽有限。
- 在密集模式下,PIM 协议使用源点树和反向路径转发建立组播树,与 DVMRP 协议类似。组成员比较密集,带宽相对较充足。
应用层多播
- 由于硬件的限制,ip多播并没有得到广泛的应用
- 应用层组播通过在应用层复制和缓存数据包而不是在路由器上复制数据包来避免IP组播的部署问题。应用层组播无须对路由器作任何修改,因此在 Internet 上非常容易部署
- 不解决多播的效率问题(相对ip多播较低),只实现多播的功能
- 通过分段单播连接实现的。终端主机而不是路由器负责复制和转发组播数据包
优缺点:
- 优点:
- 不需要底层网络支持IP多播功能,因此可以在任何网络环境中使用。
- 可以更容易地控制多播组成员,以便更好地保护网络安全。
- 可以更灵活地处理不同的应用需求,如实时视频和音频流等。
- 缺点:
- 由于没有底层支持,因此需要更多的计算和网络带宽资源。
- 需要专门的服务器来协调多播组成员,这可能会导致单点故障和瓶颈问题。
- 应用层多播不如IP多播标准化和普及,因此不如IP多播适用于大规模网络部署。
- 优点:
例题
- 毒性逆转
传输层
知识点
- 运行在端系统上,分为发送端和接收端
使用原因:
- 对数据进行合并、分发给不同应用程序,进程之间进行通信,为应用层提供端到端的服务
- 网络层是尽力而为的服务,缺少保障
套接字:应用程序进程与操作系统中的传输层之间交换网络消息的接口。
- 传输层地址
- UDP套接字<来源端口、目的端口>
- TCP套接字<来源端口、来源ip、目的端口、目的ip>
- 传输层地址
- mux与demux
- 传输层数据包格式,包含源端口和目的端口
- 对于UDP,对于来自不同ip/端口的数据,如果有相同的目标ip/端口则会被放入目标的同一个socket中。(仅依据目标信息进行合并)
- 对于TCP,要求四元组完全相同才会放入一个套接字(源IP地址,源端口号,目标IP地址和目标端口号。)
- 传输层数据包格式,包含源端口和目的端口
可靠传输设计理念
数据包损坏处理
- 校验和、回复ACK
- 由于ACK也可能出错,因此对于ACK还要附带序号
数据包丢失
- 使用计时判断超时
- 停止等待协议
- 发送<->确认收到的循环进行
- 效率极低,不能充分利用资源(空闲时间长)
&&流水线协议
- 一次发送多个数据包(滑动窗口)
带宽
MIN(n*DATA/RTT, Link Bandwidth)
确认方式
- Cumulative ACKs:返回下一个要收到的包的序列
- Selective ACKs:对收到的每一个包进行答复
丢失处理
- GBN
- 配合Cumulative ACKs,提前到达的数据包都会被丢弃
- 发送端只需要为一组数据包中的第一个设置定时器,如果这个包没有成功发送,那就重新发送所有的数据包
- SR
- 对每个数据包都设置定时器
- 当错误率很高时gbn甚至不能完成传输
- sr常用于无线网络
- GBN
UDP
- 尽力而为、无连接
- 为了加强校验能力,除了头部外还有一个伪首部参与校验码checksum的计算
- 对报文段中所有16比特字的和进行加和
- 将溢出位加在末尾
- 最后对结果取反码得到checksum
- 对报文段中所有16比特字的和进行加和
&&TCP
- 可靠、有序、字节流传输、选择重传、累计确认
- 32比特的序号字段和32比特的确认号字段。这些字段被TCP发送方和接收方用来实现可靠数据传输服务
- 16比特的接收窗口字段,该字段用于流量控制。该字段用于指示接收方愿意接受的字节数量。
- 6比特的标志字段,ACK比特用于指示确认字段中的值是有效的,即 该报文段包括一个对已被成功接收报文段的确认。RST、SYN和FIN比特用于连 接建立和拆除。
- 分片
- IP最大MTU(1500字节)
- TCP最大MSS(1460)(总长度减去ip和tcp头部)
- 假设一个数据包有B个字节,如果X之前的数据都收到了,那么接收者会发送X+B,即ACK sequence = 收到的数据包的sequence+length(data)
- 受到重复(3)ACK、或者计时器超时说明发生了丢包,要进行重传(从滑动窗口中第一个开始重传)
&&RTT估算
- 回归法
- SampleRTT:样本RTT,是指当前分组往返的时间;(不能使用从重传获取的SampleRTT)
- EstimatedRTT:估计的RTT,是指对SampleRTT进行平均计算得到的RTT值
- Jacobson/Karels algorithm
- SRTT(EstimatedRTT):平滑的往返时延,通常是通过对多次测量的SampleRTT进行加权平均得出的估计值。SRTT是用于计算RTO和DevRTT的重要参数。
- SERR (Smoothed Error):平滑误差,是估计的RTT和实际测量值之间的差异。SERR用于计算SDEV,以便更好地估计RTT的变异性。(SamplaeRTT-EstimatedRTT)即Deviation
- SDEV (Smoothed Deviation):平滑的偏差,是样本RTT与SRTT之间的差异的指数平均值。SDEV用于计算RTO,以便更好地调整重传超时时间,以适应网络中的变异性。即DevRTT
- 计算RTO:RTO是估计RTT加上4倍平均偏差的值,旨在提供足够的时间来等待确认信息的到达。
&&连接握手
- 连接建立(3次)
- 为了防止过时的数据包造成的干扰,对发送包序列号SN起点ISN进行随机初始化
- SN:序列号,用于标识TCP协议中每个数据包的唯一序列号。
- AN:确认号,用于标识收到的数据包的序列号。当接收方收到TCP数据包后,会向发送方发送一个ACK包,其中包含确认号,表明接收方已经成功接收了前面发送方发送的数据包。
- 双方会分别选择一个序号作为自己包序列序号的起点
- 为SYN也增加序列号和校验,避免干扰
- 拒绝错误的包
- 如果syn包发送失败,那么不会收到ack回复,并且发送者不知道接收者距离有多远,因此设置一个固定的超时时长(一般3s)
- 为了防止过时的数据包造成的干扰,对发送包序列号SN起点ISN进行随机初始化
- 连接关闭(3/4次)
- 单边关闭
- time_wait:回复ACK确认关闭后实际并不会立刻进行关闭,因为对方可能收不到ACK,这种情况就需要进行重发
- 同时(双边)关闭
- 强制关闭
- 发送rst后对方不会进行回复,但如果对方继续发送data(表示没收到rst)则会重新发送rst
- 单边关闭
传输控制
- 窗口的右边缘则是左边缘加上一个常数,这个常数只受传输层缓存大小的限制。
- 对于接收方数据接收到并取走才滑动(即离开缓冲区被应用程序获取)
- 通过控制发送窗口的大小来控制发送速率(正在传输的数据量一定不会大于窗口的容量)
- ~Window/RTT(使用MSS表示速率,即以MSS为单位而不是字节)
流量控制
- 防止发送速度大于接收端的硬件处理性能
- 接收端回复ack的同时附件参数RWND,告诉发送方自己有多少空间可以进行存储
- ACK正常回复(但ACK并不代表处理完成了),将确认和控制信号RWND分开
- 如果ACK/CREDIT消息丢失了,那么对协议的影响很小,因为未来的ACK消息会重新同步协议。
- 死锁问题:
- 接收方B首先向发送方A发送一个带有AN=i、W=0的数据段,表示关闭接收窗口。接着,B向A发送另一个数据段,其中AN=i,W=j,表示重新打开窗口,但这个数据段可能会丢失。此时,A认为窗口已经关闭,而B认为窗口已经打开,从而导致了死锁。
- 采用窗口定时器的方法,当窗口定时器到期时,如果没有收到任何数据,则发送方A可以发送一些数据,例如重传之前的数据段。这样,即使接收方B发送的第二个数据段丢失了,发送方A仍然可以通过定时器来重新激活数据传输,从而避免了死锁。
拥塞控制
让传输路径上的路由器发送速率大于接收速率,防止在传输过程中超出路由器缓存造成丢包(当繁忙时会产生大量丢包与重传,即做大量无用功,进一步加重拥塞)
增减窗口限制CWND
- Sender-side window = min {CWND, RWND}
TCP Reno流程
- 慢启动(指数增长)
- 初始时CWND=1,发送速率为MSS(数据包最大大小)/RTT(通过每收到一个ACK就把CWND+1),相当于每RTT翻一倍
- ssthresh最初会被初始化为一个很大的值
- 拥塞避免(加性增加和乘性减少)
- CWND > ssthresh达到阈值进入拥塞避免,CWND每RTT增加一个MSS
- 丢包拥塞
- 3个重复ACK:
ssthresh = CWND/2 CWND= ssthresh(收到3个重复ACK)
之后拥塞避免(快速恢复)(Tachoe不区分重复和超时,全部置为1) - 超时:
ssthresh = CWND/2, CWND = 1
之后重新慢启动
- 3个重复ACK:
- tip:
- 当出现ack冗余或者数据包丢失后,拥塞窗口长度会在下一轮回发生变化
- 如果在一轮回达到了sshresh,那么本轮回的长度就是sshresh,因为到达后会终止本回合开启下一回合!
- 慢启动(指数增长)
选择AIMD的原因
效率&公平:找到带宽上限、动态公平分配
A加性、D乘性
-
- 红线代表效率、绿线代表功能
AIAD
- 不公平
MIMD
- 不公平
AIMD
完美
快速恢复改进-TCP newReno(默认使用)
- 对重复ACK的情况进行改进:原先在等待重传包到达时窗口大小增长过于缓慢,造成窗口的阻塞
ssthresh = CWND/2 CWND= ssthresh+3
由于收到三个重复的ACK,可以认为这三个包都被正常收到了,因此对CWND正常进行增加- 在收到重传包的ACK之前收到一个ACK就CWND+1(保持乘性增)
- 收到之后退出快速回复,令CWND = ssthresh,进入拥塞避免
- 对比
- Reno
- New Reno
- 可以更快的推动窗口滑动
- xmit表示发包
&&拥塞控制分析
- 忽略慢启动指数增加阶段,因为这一阶段是很短的
- 速率在 W/(2xRTT) W/RTT 之间变化(拥塞抑制阶段,每次加一个MSS),故平均值为0.75W/RTT
- 用丢包率p来表示W(窗口大小)
- *TCP潜在问题
- 当RTT不一致时TCP不是公平的
- 目标速率较高时,要求几乎为0的丢包率
- 解决:当越过上界时加快传输增加速度(乘性增加)、建立多条连接
- 速率震荡(应用程序更喜欢稳定的传输)
- 避免震荡,直接计算出rate,发送数据
- 目的:速率与传统方式相同,但比较平稳,固定速率发送
- 移动网络丢包
- TCP在某些情况下可能会将数据包的丢失误认为是网络拥塞的结果而触发拥塞控制算法中的拥塞避免机制,导致流量的速率被削减。
- 短数据问题
- 如果数据流比较短,可能无法充分加速,没有离开慢启动就结束了
- 长数据支配短数据,tcp总是想将缓存占满,因此数据包到达路由器后可能会经历漫长的延时等待(即使包很小)
- 欺骗问题
- 由于TCP是端算法,如果在操作系统修改CWDN的长度,会造成公平性的问题
路由器拥塞控制思想
由路由器告知终端发生了拥塞、通知终端发送速率、并保证传输公平性
抑制分组:路由器发送ICMP告诉源发生了丢包(对路由器性能要求太大)
- 反压:逐层进行抑制分组,一层通知相邻的一层
- 精确拥塞通知ECN
- 警告位:在数据包的包头做一位标记,如果接收端发现head中有信号,则在返回的ACK中添加标志位(ECN)提醒发送端,由此接收端不丢包也可以知道拥塞状态
- 提前指示拥塞:ECN可以作为早期拥塞指示器,提供关于网络拥塞的信息。这可以帮助发送方避免等待传输超时来检测拥塞,从而减少传输的延迟。
- 易于增量部署
- 随机早期丢包:防止TCP出现同步速率波动
- RED策略:路由器缓冲区越满,丢包率越高
&&MAX-MIN
- 流平分带宽保证公平性,同时充分利用带宽兼顾效率
尽可能平分带宽,但如果有流比较小率先完成传输,则会被从平分名单去除,剩下的流进行平分
实现方式:公平队列
- 使用算法进行模拟:首先计算理想评分条件下每个数据包完成发送的时间,按照理论完成的先后依次进行发送(并不是时间上的完全符合,而是满足偏序关系)
- 为了减少计算,可以扩大流的范围(如一定特征的TCP归属为一个流)
- 优点:避免欺骗、避免RTT公平性问题
- 问题:复杂、不能拥塞避免、貌似公平实际做无用功浪费带宽
&&(路由器)质量控制Qos
- 不同类型数据流对服务的要求不同,因此需要差异化服务(对丢包率、传输速度、延迟的要求)
ISA
把一组数据包定义为一个流,具有相同的QoS参数
功能:
- 路由算法:全方位考虑更多因素
- 排队:多队列,对流分类
- 丢包:指定丢弃的包而不是新到来的
- 资源预留:为特定QoS的流预留资源(RSVP)
- Admission control:确定是否有足够的资源来满足请求的服务质量
- Traffic control database:流量控制数据库用于存储与流量控制相关的参数
- Management agent:管理代理通过修改流量控制数据库的内容来指导接纳控制模块设置策略。
- RSVP
- 应用程序或网络服务发送RSVP请求,指定其对服务质量的需求,如带宽、延迟、丢包率等。
- RSVP消息沿着网络路径传播,与途径上的每个路由器交换信息,以协商资源预留。
- 路由器根据收到的RSVP消息,检查是否有足够的可用资源来满足请求,并向上游和下游节点发送相应的确认消息。
- 如果路径上的所有路由器都能满足请求,并且资源预留成功,数据传输就可以开始。
- 缺点
- 设备要求高,复杂,成本高
- 不具有很好的弹性
- 不能很好的同时服务很多的流
DS
- 不区分流,而是将数据包的传输分为几类面对每一类的数据进行相同处理(减少类型,降低复杂度)
- 通常在ISP内独立执行(DS Domain),由内部路由和边缘路由组成
- 在域内一致解释DS代码:确保在特定网络域内对DS(差异化服务)代码点的一致解释。
- 内部路由
- 内部路由器:内部路由器根据边缘路由器的标记对数据包进行分类、缓冲和调度。它根据数据包的标记给予优先处理,更重视符合要求的数据包。
- 边缘路由
- 对每个流进行流量管理:边缘路由器可以对每个数据流进行个别的流量管理。它可以标记和监管数据包,将其划分为符合要求的流量和不符合要求的流量,标识分组。
流量调度算法(边缘路由分类)
控制指标:
- 平均速率:指的是数据以恒定速率离开漏桶的速率。它表示单位时间内允许发送的平均数据量。(较长时间的平均值)
- 峰值速率:表示漏桶允许的最大发送速率。峰值速率通常高于平均速率,并且可以在短时间内发送更多的数据。
- 突发长度:指的是漏桶能够容纳的最大突发数据长度。突发长度与峰值速率相关,它定义了在突发情况下漏桶可以容纳的最大数据量。
漏桶
- 以恒定速率将数据放入网路,用缓冲区进行稳定
&&令牌桶
- 在边缘有一个”桶“里面装在用于提供特殊服务的token,装入速率r表示允许的最大(平均)速率,大小b表示可以爆发传输的最大数据量,没有token的意味着普通服务(低优先级)
- t时间内最多$$rt+b$$
- WFQ加权公平队列
- 当$$bi$$个分组被一次性加入到WFQ等待区域时具有最大时延$$d{max}=\frac{b_i}{R*\frac{w_i}{\sum w_j}}$$
例题
网络安全
知识点
网络攻击
分类:
- 主动攻击:伪装、修改、阻断
- 容易发现但难以阻止
- 被动攻击:窃听
- 很难被发现
- 主动攻击:伪装、修改、阻断
期望:
- 可用性:针对阻断(通讯不能被阻断)
- 机密性:针对窃听(不能被听懂(可以听))
- 完整性:针对篡改(不能在无法察觉的前提下修改)
- 授权性:针对伪装(保证双方的身份正确)
- 手段:加密、校验、身份认证
- 不能对传输过程物理安全以及加密的算法做任何假设
攻击方式
- 只拥有密文:
- 穷举法:尝试使用所有可能的密钥对密文进行解密。
- 密码分析:利用加密算法的性质以及对明文和密文的一般特征的了解,试图推断出原始信息或加密密钥。
- 已知明文攻击:
- 拥有明文和相应的密文。能够分析二者之间的关系,有可能推断出加密密钥或解密其他密文。
- 已选择明文攻击:
- 可以选择特定的明文消息并获取相应的密文。能够分析加密过程,可能发现漏洞或推导出加密密钥。
- 只拥有密文:
为了更为通用的加密算法,可以将传输内容全部用数字来表示
- 如把字母序号转化为二进制再转化为数字
dog=>00100 01111 00111=>4583
- 如把字母序号转化为二进制再转化为数字
对称加密
- 关键:如何实现安全的密钥传递
传统加密
- &&凯撒密码
- 单表密码(随意对应的加强凯撒密码)
- 维吉尼亚密码
- 篱笆密码
- 按列书写,按行读取
- key是行数
- 行列密码
- 按行书写,打乱列后按列读取
*块加密
- 计算机可以实现暴力破解
- 数据加密标准:DES是一种对称密钥块密码,使用56位密钥对64位的明文块进行加密。然而,由于DES的密钥长度较短,已经被认为不够安全,因此在一些应用中已经不再广泛使用。
- 三重数据加密标准:TDES是对DES的改进和增强版本。它通过对数据应用DES算法三次来提高安全性。TDES可以使用不同的密钥长度(如168位)和操作模式,以提供更高的保护级别。(存在效率低的问题)
- 高级加密标准:AES是一种广泛采用的对称密钥块密码,被视为DES的替代方案。AES使用可变长度的密钥(如128位、192位或256位),以及不同的加密模式和操作方法,具有较高的安全性和效率。
公钥系统
&&非对称加密RSA
- 过程
- 选择两个很大的素数p、q(500-1024bits)
- 取$$ N = p × q$$ $$Φ = (p–1)×(q–1)$$(欧拉函数,计算小于N并与N互素 的整数个数)
- 选择一个e $$GCD(e, Φ) = 1$$
- 找到e的模反元素($$(d×e) mod Φ = 1$$)(因为幂存在周期Φ)
- Public Key: (e, N), and Private Key: (d, N)
- 发送:
- 使用e作为指数,N作为模数
- $$C = M^e(mod N)$$
- 发送$$C$$
- 接收:
- $$M=C^d(modN)$$
- 要求
- 素数 p 和 q 应该具有大致相同的长度,并且应该是应该是不相关的。
- 公钥指数 e 可以选择较小的值。公钥指数通常是一个较小的常数值,用于加密过程,因为它不会对加密过程增加太大的负担。
- 私钥指数 d 必须选择一个较大的值。私钥指数用于解密过程,需要足够大的值以确保解密的安全性。
- RSA加密和解密过程中需要进行大数的指数运算,这需要较长的计算时间和资源。比DES等块加密慢得多,因此可以先使用RSA传递对称密钥建立连接,再之后的通话中使用对称密钥KS进行加密
身份认证
- 可以反向使用RSA(私钥加密,公钥解密)
- 随机化R防止重放攻击
- ap4.0
- 使用随机数避免重放攻击,但要求有知道的共享对称密钥
- ap5.0
- 但是由于Bob可能不知道Alice的公钥,在这个过程中可能被欺骗
- 攻击者伪装alice与bob通信,并让bob误以为自己与alice通信(同时伪装与alice和bob进行通信)
MAC校验
- 确认信息的来源正确,并且没有被篡改
- 消息认证码(MAC)是一个固定长度的代码,它会附加在要传输的消息末尾。它用于验证消息的完整性和真实性。
- MAC不应该可逆,不需要解密
- 可以处理任何长度的消息而自身的长度固定
- 单项性:已知MAC为X的情况下,很难找到一个数据Y满足MAC(Y)=X。(即过程几乎不可逆)
- 弱碰撞抗性:给定一个消息X1,很难找到另一个消息X2,使得MAC(X1) = MAC(X2)。
- 强碰撞抗性:很难找到任意两个不同的消息X1和X2,使得MAC(X1) = MAC(X2)。
- 加密进行身份认证
- CBC:$$Ci = E_K(M_i+C{i–1})i = 1, 2, . . ., L$$
- 哈希身份认证
- MD5、SHA-1
- 数字签名
- 对称密钥法:根据消息和一个密钥生成MAC,添加密钥是为了防止消息被篡改(整个替换)
- 公私密钥法
- 对MAC进行加密/解密
密钥分发
Diffie-Hellman交换
- 通过公开的通信渠道协商出一个共享的秘密密钥,而不需要在传输过程中直接共享密钥。
- 过程
- 选择一个知名的大质数P,以及P的一个原根g(增加破解的复杂度)
- A从$$$Z_P^*$$$选择一个数$$x$$,把$$X=g^x(modP)$$发送给B
- B从$$$Z_P^*$$$选择一个数$$y$$,把$$Y = g^y(modP)$$发送给A
- A得到密钥$$Y^xmodP$$ 即($$g^{xy}modP$$)
- B得到密钥$$X^ymodP$$
- 选择一个知名的大质数P,以及P的一个原根g(增加破解的复杂度)
权威机构CA
- 会话密钥是一种在逻辑连接期间使用的密钥。它会在会话结束时销毁,并且不是永久性的密钥。
- 永久密钥主要作用是用于密钥分发。
- CA负责确定发送方和接收方的身份有效性,并为该连接提供一个会话密钥。
- 安全服务模块在整个通信链路中扮演重要角色。SSM负责执行端到端的加密操作,并获取用于主机的密钥。
公钥证书
- 由权威机构签名认证的公钥,保证是属于指定用户的真实密钥
整数包含:唯一序列号、所有者、颁发者等信息,并且CA会在末尾添加MAC并使用私钥进行加密(数字签名)
&&电子邮件系统设计PGP
- 提供保密性
- 使用非对称密钥传递对称密钥,并使用对称密钥对信息进行加密
- 提供消息完整性及身份验证
- 对MAC进行加密
- 提供消息完整性和保密性
- 嵌套使用
SSL传输层网络安全
- 传输层加密可以确保数据在传输过程中的保密性,保护应用数据安全传输,保护一个互动数据流(连接),但在网络中的其他节点上可能仍然可以观察到传输的元数据
- 在TCP与应用层之间添加SSL,使用SSL发送数据而不是tcp
- 理念
- 握手认证,双方通过公私密钥互相认证,得到一个统一的对称主密钥MS
- 使用共享主密钥生成一系列密钥,对分块数据进行加密
- 对数据进行分块(记录)
- 将数据流分解为一系列块。每个块都携带自己的MAC,使得接收方可以在每个记录到达时立即进行处理,而不需要等待整个数据流的接收完成。
- 并且为了防止攻击,添加序列号(防止重排,MAC = MAC(Mx, sequence || data)),添加一次性数字(防止重放攻击)
- 安全关闭连接(防止伪造关闭信息)
- 使用记录类型,并为连接关闭操作定义一个特殊的记录类型。即使用加密和MAC保护信息
*真实SSL
- 记录(块)协议(基础协议):它负责将数据分割成记录,并对每个记录进行加密、完整性校验和解密等操作。
- 高层协议:握手过程、证书交换、密钥协商和身份验证等
- 记录(数据单元PDU)
- 握手协议
- 服务器和客户端之间需要通过握手协议建立会话session,可以为多个TCP通信建立保护
- 大致过程
- 建立安全能力:通过握手协议,客户端和服务器之间建立了SSL连接,并确定了双方的安全能力。包括使用的加密算法、MAC算法和密钥长度等参数。
- 服务器鉴别与密钥交换:服务器在握手过程中对自身进行身份验证。它向客户端提供适用于共享密钥分发的公钥,以确保通信的安全性。
- 客户端验证服务器并开始密钥交换:客户端对服务器进行验证,并开始进行密钥交换。这确保了客户端与合法的服务器进行通信,并建立了共享密钥。
- 交换确认:在握手过程中,各个阶段都会进行确认,确保握手的每个步骤都得到了正确执行。
- 根据协商更改密码规范:一旦握手协议的各个阶段完成,通信双方根据协商的结果改变密码规范。这意味着双方根据握手协议中达成的协议更改加密算法、MAC算法和密钥等参数开始正式进行传输。
VPN(ipsec)
- 网络层加密提供了更高级别的安全性,保护整个通信链路中的数据和通信元数据。
- 应用:分支机构通过互联网连接:IPsec可以用于建立安全的分支机构与总部之间的通信连接,以保护数据的机密性和完整性;安全远程访问;服务器之间的流量加密;电子商务
- VPNs:虚拟私有网络
- 不需要专用设备及链路,成本低,并且可以实现私人网络的搭建
- VPN会在数据进入公共互联网之前进行加密,确保数据的安全性。
- VPN在逻辑上与其他流量隔离,实现了逻辑上的分离。
- 传输模式
- 终端设备实现IPsec协议。
- 仅对IP数据包的有效负载进行加密,而IP头部保持原样。
- 传输模式通常用于直接连接的通信
- 隧道模式
- 常用于防火墙之间的通信,并用于构建虚拟私人网络
- Psec会加密整个IP数据包,包括IP头部和有效负载。IP数据包的头部中的IP地址是IPSec网关的地址,而不是实际的源和目的地址。
- 安全关联
- 在发送数据之前,发送方和接收方之间会建立一个称为"安全关联"的SA,用于定义双方之间的单向关系。用于描述安全通信的参数和策略。(双向通信需要两个SA)
- IP是无连接的,而IPsec是面向连接的,因此需要建立和维护SA来确保安全通信。
- 本地有SA表,使用安全参数索引SPI标识和区分不同安全关联SA
- 认证协议AH:AH协议通过在IP数据包中添加认证头部来实现数据的完整性验证和源身份验证。
- 封装协议ESP:ESP协议负责对有效载荷进行加密,并添加校验码以验证数据的完整性。
- 分为头部和尾部,夹住数据
- 头部提供了协议参数和选项的定义
- 尾部则提供了完整性保护和数据验证的能力。
- 分为头部和尾部,夹住数据
- 密钥交换协议IKE:IKE协议用于在两个对等体之间协商安全功能和密钥。使用Diffie-Hellman密钥交换算法,允许节点在不直接交换密钥的情况下生成共享密钥。
- 帧结构
- ESP Header:用于封装加密和认证的数据。它包含ESP的各种参数和选项,如加密算法、认证算法、SPI等。
- ESP Trailer:ESP尾部,包含填充字段和填充长度等。
- Next Header:下一个头部字段,指示在ESP封装后的数据中紧随ESP头部之后的下一个头部类型。
- ESP auth校验码
- 使用共享的密钥创建的消息认证码(MAC),用于验证数据的完整性和防止数据被篡改。
WIFI
- WEP有线等效隐私(802.11)
- 使用共享密钥,由一个40位的主密钥和一个24位的初始化向量(IV)组成
- 主密钥需要手动进行设置
- 认证
- 移动设备向接入点发送认证请求。
- 接入点回复一个128位的随机数(用于防止重播攻击(录制))。
- 移动设备使用共享的主密钥(KS)对随机数进行加密。
- 接入点解密随机数并对移动设备进行认证。
- 加密
- 使用主密钥和初始化向量,生成一串密钥流。(种子)
- 加密器确保相同的64位密钥生成相同的密钥流。
- 密钥流与明文和校验和进行异或操作,生成密文。
- 安全漏洞
- 如果IV是随机分配的,预期在5000个数据帧中会出现一次重复使用的情况。如果IV是顺序分配的,那么在每次启动时都会重新使用IV。
- 并且IV明文传输,因此IV的重复是会被察觉的
- 如果攻击者(Trudy)引导Alice加密一个已知的明文P1,一旦IV重新出现,攻击者就能够知道对应的加密后的密文P2。
- 对相同的密钥C进行两次加密会使得加密失效
- 802.11i
- 通过使用独立的身份验证服务器,可以实现更强大的加密方式,并且提供更安全的密钥管理。身份验证服务器可以负责生成和分发密钥,确保只有授权的设备能够访问网络。
- 类似AC,服务器为AP和设备分配共享对称密钥
防火墙
- 理念:
- 将组织的内部网络与更大的互联网隔离开来。
- 允许某些数据包通过,阻止其他数据包。
- 确保内部网络和系统免受外部的黑客和恶意软件的攻击
- 应用:
- 防止拒绝服务攻击:通过阻止攻击者建立伪造的TCP连接或尝试ping攻击来防止SYN洪泛等类型的拒绝服务攻击。
- 仅允许授权的访问进入内部网络,防止对内部数据的非法访问/修改
- &&无状态数据包过滤
- 基于数据包的源地址、目标地址、端口等信息进行过滤
- 例子
- 丢弃发出的80端口号包:禁用web服务
- 阻止ACK位为0的入站TCP段(发起方发送SYN段,其中的ACK字段为0特殊标识!)防止建立TCP连接
- 丢失表示TTL超时的ICMP,防止被路由追踪
- 丢失目的以太网地址是广播地址的包,防止被用于Dos
- ACL控制表
- 操作,来源、目的ip,协议,端口,特殊标识
- 有状态数据包过滤(使用状态跟踪)
- 有状态跟踪功能,可以检测和控制数据包的状态和连接。
- 跟踪每个TCP连接的状态
- 在访问控制列表(ACL)中增加了一个指示,在允许数据包通过之前需要检查连接状态表。
- 应用程序网关:也称为代理服务器,它在应用层对网络流量进行过滤和代理,提供更高级的安全性和控制。
例题
应用层
知识点
| | 应用 | 特点 | 优点 | 缺点 | | ---- | ------------- | --------------------------- | -------------------------- | ---------- | | CS | Voice-over-IP | 集中化控制;客户端-服务器; | 高可靠性安全性高; | 单点故障 | | P2P | BitTorrent | 分布式控制;对等节点 | 去中心化,无依赖;自扩展性 | 不保证可用 |
&&DNS
- 从域名到ip的映射
- 分布式、自治性管理:可以更改自己的信息,不需要跟踪(记录)全世界的所有信息
- 域名层次结构
- 从根节点向下划分域名,使用树形结构
- 从右向左
*.nju.edu.cn
- 从右向左
- DNS数据库被分割成多个部分,并分布在不同的服务器上。每个服务器只存储与其具有管理权限的域相关的资源记录。
- 从根节点向下划分域名,使用树形结构
- 域名服务器
- 根域名服务器:保存了顶级域名的信息,如.com、.org、.net、.edu等。当本地名称服务器无法解析某个名称时,它会向根域名服务器发送请求,并且可以提供对其他DNS服务器的查询引导。
- 顶级域名服务器(TLD):这些服务器负责管理顶级域名
- 授权DNS服务器:这些服务器属于组织或机构,提供对特定的域名到IP地址的授权映射。授权DNS服务器负责存储其具有管理权限的域中所有DNS名称的资源记录。
- 本地名称服务器:不严格属于DNS层次结构,每个住宅ISP、公司、大学都维护着自己的本地名称服务器。当主机发起DNS查询时,查询被发送到本地名称服务器,它负责处理查询并尝试解析域名(本地缓存查找)。如果本地名称服务器无法解析域名,它会向更高级的DNS服务器发送查询请求。
- 查询过程
FTP
- 客户端/服务器模型,相互传递文件
- 建立两条信道:数据/控制
- 过程
- 进行客户端身份认证
- 客户端收到文件列表,查看
- 客户端选择文件进行处理,服务端收到指令后开始执行(传输)
电子邮件
- sc模型
- 用户代理+邮件服务器
- Alice的用户代理通过SMTP协议将邮件发送到她的邮件服务器,并将邮件放置在消息队列中。
- SMTP客户端在客户端与Bob的邮件服务器之间建立TCP连接。
- SMTP客户端通过TCP连接发送Alice的邮件。
- Bob的邮件服务器将邮件放置在Bob的邮箱中。
- Bob使用他的用户代理(UA),例如通过POP3协议,来读取邮件。
- SMTP:用于传递简单文本消息的协议。
- TCP
- MIME:用于传递各种类型的数据,例如声音、图像、视频剪辑等,扩展了SMTP协议的功能。
- MIME将邮件内容和附件中的所有数据都编码为7位ASCII字符集,以确保兼容性和可靠的传输。
- POP:用于从服务器中检索邮件的协议,包括授权和下载邮件。
- 用于用户代理(邮件客户端)与邮件服务器之间的授权验证和邮件下载过程。
- IMAP:用于在服务器上操作存储的邮件的协议。
- sc模型
WWW
- 由许多互连的文档(称为“页面”)组成的分布式数据库。
- cs
- url
- 每个页面都有一个唯一的地址,称为统一资源定位符(URL),可以通过浏览器访问
- 格式
<protocol>://<host>:<port>/<path>?<query_string>
- 协议;主机(域名/ip);端口;路径;查询字符串(url参数)
- 缓存
- 引用局部性指的是在一段时间内,访问的数据往往具有较高的相关性,即相邻的数据项更有可能被多次访问。
- 在本地浏览器保存网页,请求时提供上一次的请求时间,询问是否发生了变化
HTTP
- 无状态性
- 每个客户端请求和服务器的响应都被独立地处理,服务器不需要保留先前请求的状态
- 优点:故障处理更加容易;服务器能够处理更高速率的请求;请求的顺序对服务器来说不重要
- 缺点:某些应用程序需要保持持久状态
- 过程
- 先建立TCP连接然后发送请求
- cookie
- 状态存储在客户端
- 身份认证
- 问题:cookie可能会泄露信息,发送给网页服务器
- &&效率
- 网页上有很多object,图片等各种信息,早期http一次一个,效率很低
- 办法:同时发送多个请求;一个TCP传输更多信息
- 小文件延时(传输时间忽略)Tip一个RTT是一个来回
- 逐个获取 2nRTT
- 并发获取(m 个并发连接)2[n/m]RTT
- 持久连接(一个TCP一次获取一个)(n+1) RTT
- 流水线传输(一个连接,一次全部获取) 2RTT
- 流水线传输与持久连接:首次 2RTT,之后 RTT
- 大文件延时(忽略RTT)
- 逐个获取nF/B
- 并发获取[n/m]F/B(前提是多个TCP时总带宽增加)
- 流水线传输和/或持久连接nF/B
- 无状态性
CDN
- 转发代理
- 客户端发送请求时,请求首先发送到转发代理,然后由代理服务器转发请求到目标服务器。
- 转发代理还可以缓存响应以提高性能,减少对目标服务器的请求
- 代表客户端发送请求。
- 反向代理
- 使用反向代理进行缓存可以将文档缓存在靠近服务器的位置。代表目标服务器处理请求,并将响应返回给客户端。
- DNS转接到CDN的地址(重定向)
- 一个域名会映射到多个ip
- (路由)转接到最近的、负载最小的服务器
- CDN通过创建一个“地图”,标示出与末端ISP和CDN服务器之间的距离。当查询到达权威DNS服务器时,服务器确定查询起源的ISP,并使用“地图”来确定最佳的CDN服务器。CDN服务器创建一个应用层覆盖网络。
- 转发代理