本文包括计算机网络学期课程的全部内容。先以知识点切入进行总结,然后通过往年卷查漏补缺。
🗒️
这篇文章是笔者在复习南京大学计科
计算机网络 时整理的笔记。25 spring 计网课程改革,教材改为 Computer Networking: A Top-Down Approach,实验改为助教出题,难度很大(高程警告⚠️)。由此,本学期的计网教学略为混乱,相当一部分同学选择退课,下学期再上国际化计网(另一位老师开的课,使用英文授课)。然而,笔者一学期下来感觉还是蛮有收获
(全自己学的当然有收获了) ,做了九个实验,在连蒙带猜实验手册的意图中学完了计网。
本门课程考前由于不知道一学期学了什么,所以是突击的最狠的一门课,记的复习笔记也是最详细的。
鸣谢 十分感谢
郑烇 老师的开源课程:
中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程_哔哩哔哩_bilibili 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程_哔哩哔哩_bilibili
中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程共计69条视频,包括:课程目标、课程主要内容介绍(提示:第一次看不懂没关系,后面会循序渐进展开)、1.1 什么是Internet?等,UP主更多精彩视频,请关注UP账号。
,本学期的计网基本上是看郑老师的课学习的,老师授课深入浅出,十分精彩。
感谢
湖科大教书匠的个人空间-湖科大教书匠个人主页-哔哩哔哩视频 湖科大教书匠的个人空间-湖科大教书匠个人主页-哔哩哔哩视频
哔哩哔哩湖科大教书匠的个人空间,提供湖科大教书匠分享的视频、音频、文章、动态、收藏等内容,关注湖科大教书匠账号,第一时间了解UP主动态。
上传的关于计网的微课堂,以及考研计网的习题讲解。老师对计网的知识手到擒来,视频短小精悍,很适合考前突击😋。
1. 绪论 接入网(access network) :将端系统连接到其边缘路由器(edge router) 的物理链路,是端系统到任何其它远程端系统的路径上的第一台 路由器。包括有线接入、无线接入、以太网接入。
电路交换的几种分配方式:
时分复用(TDM, Time Division Multiplexing):将时间划分为周期性的帧(frame),每一帧再分成若干个时隙(time slot),每个用户占用固定的时隙发送数据。 频分复用(FDM, Frequency Division Multiplexing):将信道总带宽划分为多个子信道,每个用户占用一个固定频率范围进行通信。 波分复用(WDM, Wavelength Division Multiplexing):在光纤通信中,将不同波长的光信号组合在一起通过同一根光纤传输。 码分复用(CDM / CDMA, Code Division Multiplexing / Access):所有用户在同一时间和频率上传输数据,但使用不同的编码来区分彼此。 分组交换:多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission) 机制。在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。
电路交换:在通信开始前建立一条专用的物理通路,资源独占,传输延迟稳定,适合实时通信,但带宽利用率低。分组交换:数据被分割为包独立传输,资源共享,灵活高效,带宽利用率高,适合非实时及多种类型的数据通信。
虚电路:虚电路并不是一条真正的物理电路,而是在通信开始前,在发送端和接收端之间建立的一条逻辑通路 。所有数据分组沿着这条逻辑路径传输,每个分组都携带虚电路标识符 (如虚电路号)。
总时延 = 结点处理时延 + 排队时延 + 传输时延(Transmission 推到链路上) + 传播时延(Propagation 起点到终点) 处理时延:检查分组首部和决定将该分组导向何处、检查比特级别的差错等所需要的时间。处理结束后,路由器将该分组引向通往路由器B链路之前的队列。 排队时延:分组在链路上等待传输,取决于先期到达的正在排队等待向链路传输的分组数量。 传输时延:当该分组到达队首时,设L比特表示该分组的长度,用R bps表示从路由器A到路由器B的链路传输速率。传输时延是L/R。这是将所有分组的比特推向链路所需的时间。 传播时延:一个比特从链路的起点到路由器B传播所需的时间。等于两台路由器之间的距离除以传播速率,即d/s。 排队时延可以用流量强度(traffic intensity)刻画。设所有分组由L比特组成,a表示分组到达队列的平均速率,R表示传输速率即从队列中推出比特的速率。则流量强度为La/R。设计系统时流量强度不能大于1,否则队列无穷增加。
Internet 协议栈
因特网协议栈层次:物理层、链路层、网络层、运输层、应用层。 应用层 :网络应用程序及它们的应用层协议存留的地方。位于应用层的信息分组称为报文(message) 运输层 :在应用程序端点之间传送应用层报文。运输层分组称为报文段(segment) 网络层 :负责将称为数据报(datagram) 的网络层分组从一台主机移动到另一台主机链路层 :将分组从一个结点移动到下一个结点。在每个结点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一结点。下个结点,链路层将数据报上传给网络层。链路层分组称为帧(frame) 物理层 :将帧中的一个个比特从一个结点移动到下一个结点。OSI 模型:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。表示层:使通信的应用程序能够解释交换数据的含义。会话层:提供数据交换定界和同步功能,包括建立检查点和恢复方案的方法。 主机实现所有五个层次,链路层交换机实现第一层和第二层,路由器实现了一到三层。 2. 应用层 两种主流应用程序体系结构:客户-服务器体系(CS)结构和对等(P2P)体系结构 客户-服务器体系结构(client-server architecture) 服务器 :总是打开的主机,服务于来自许多其它称为客户的主机的请求。服务器具有固定的、周知的IP地址 P2P体系结构(P2P architecture) 对位于数据中心的专用服务器依赖最小或没有依赖。应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方 。 流量密集型的许多应用是P2P体系结构的,如文件共享(BitTorrent)、对等方协助下载加速器(迅雷)、因特网电话(Skype)、IPTV(迅雷看看、PPstream)。 对于许多即时讯息应用 而言,服务器被用于跟踪用户的IP地址 ,但用户到用户的报文在用户主机之间直接发送。 重要特征:自扩展性(self-scalability) ——在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作量,但每个对等方通过向其它对等方分发文件也为系统增加服务能力。 成本有效,通常不需要庞大的服务器基础设施和服务器带宽。 套接字(socket) :进程向网络发送报文和从网络接收报文的软件接口 。也被称为应用程序和网络之间的应用程序编程接口(API)运输服务 TCP服务:面向连接的服务、可靠的数据传送服务,具有拥塞控制机制 UDP服务:一种不提供不必要服务的轻量级运输协议,仅提供最小服务,没有拥塞控制机制 许多防火墙被配置成阻挡UDP流量,所以因特网电话应用通常设计成如果UDP通信失败则使用TCP作为备份。 3. 传输层 网络层提供了主机之间的逻辑通信,而运输层提供了运行在不同主机上的进程之间的逻辑通信。 UDP仅有的两种服务——进程到进程到数据交付和差错检查(两种最低限度的运输层服务) TCP的附加服务——提供可靠数据传输(通过使用流量控制、序号、确认和定时器)、拥塞控制。 多路复用:在发送端,将来自多个应用进程的数据合并,通过同一个网络连接发送出去。充分利用网络资源,提高通信效率。过程如下: 每个应用使用不同的端口号标识自己。 传输层收集这些数据,并加上各自的端口号作为标识。 所有数据被统一打包后交给下一层(网络层)进行传输。 多路分解:在接收端,将收到的数据根据端口号正确地分发给对应的应用程序。过程如下: 接收方的传输层检查数据段中的目的端口号。 根据端口号将数据交付给相应的应用进程。 UDP socket 二元组:目的 IP,目的端口 TCP socket 四元组:源 IP,源端口,目的 IP,目的端口 TCP 全双工服务(Full-duplex Service):指的是通信双方可以同时发送和接收数据的一种通信方式。它允许数据在两个方向上并行传输,从而提高通信效率。 半双工:双向,但只能轮流发送数据 单工:只能单向传输 TCP 报文段 TCP header 一般是 20 字节,主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号。 估计往返时间 Estimated RTT 的公式(指数加权移动平均 EWMA): . Sample RTT 与 EstimatedRTT 之间差值的 EWMA: . 大多数 TCP 实现采用超时间隔加倍:每次 TCP 重传时,会将下一次的超时间隔设为先前值的两倍. 冗余ACK:再次确认某个报文段的ACK,一旦收到3个冗余ACK,TCP就执行快速重传(fast retransmit) 流量控制 消除发送方使接收方缓存溢出的可能性 发送方维护接收窗口(rwnd) ——接收方还有多少可用的缓存空间。 LastByteRead 主机B上的应用进程从缓存读出的数据流的最后一个字节的编号 LastByteRcvd 从网络中到达的并且已放入主机B接收缓存中的数据流的最后一个字节编号 TCP不允许已分配的缓存溢出: 接收窗口即可用空间的数量: 主机A保证不使主机B的接收缓存溢出: 三次握手 客户端TCP向服务器TCP发送一个特殊的,不含应用层数据,首部SYN被置为1,序号字段中放置一个随机初始序号(client_isn)的报文段【SYN报文段】。 服务器从数据报中提取出TCP SYN报文段并为该TCP连接分配TCP缓存和变量,将SYN置为1,确认号字段置为client_isn + 1,选择初始序号为server_isn,向该客户TCP发送允许连接的报文段【SYNACK报文段】 收到SYNACK报文段后,客户端给TCP连接分配缓存和变量,向服务器发送一个序号为client_isn + 1,确认号为server_isn + 1,SYN置为0的报文段进行确认。 结束连接 (四次挥手)第一次挥手 客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态 。第二次挥手 服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态 。第三次挥手 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态 ,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态 ,等待客户端的确认。第四次挥手 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成拥塞控制 拥塞窗口(cwnd) ,它对一个 TCP 发送方能向网络中发送流量的速率进行了限制 .TCP Tahoe 的拥塞控制 慢启动:当cwnd的值小于ssthresh(ssthresh:slow start thresh,慢启动门限值)时,TCP则处于slow start阶段,每收到一个ACK,cwnd的值就会加1。经过一个RTT的时间,cwnd的值就会变成原来的两倍,实为指数增长。 拥塞避免:当 cwnd 的值超过 ssthresh 时 ,就会进入Congestion Avoidance 阶段,在该阶段下,cwnd 以线性方式增长,大约每经过一个RTT,cwnd 的值就会加1。 快重传:只要发送方收到了三个重复的ACK,就会立马重传,而不用等到RTO到达(如果没有3个重复的ACK而包丢失了,就只能超时重传);并且将ssthresh的值设置为当前cwnd的一半,而cwnd减为1,重回slow start阶段。 TCP Reno 的拥塞控制 除了包含Tahoe 的三个算法,Reno 多了一个Fast Recovery(快速恢复)算法。 当收到三个重复的ACK或是超过了RTO时间且尚未收到某个数据包的ACK,Reno就会认为丢包了,并认定网络中发生了拥塞。Reno会把当前的ssthresh的值设置为当前cwnd的一半,但是并不会回到slow start阶段,而是将cwnd设置为(更新后的)ssthresh+3MSS(Maximum Segment Size),之后cwnd呈线性增长。 4. 网络层 两种重要的网络层功能 转发(forwarding) :当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。路由选择(routing) :网络层决定从发送方流向接收方的分组所采用的路由或路径。虚电路(Virtual-Circuit, VC)网络:仅在网络层提供连接服务的计算机网络 数据报(datagram)网络:仅在网络层提供无连接服务的计算机网络 路由器 输入端口 使用转发表来查找输出端口,使得到达的分组能经过交换结构转发到该输出端口。 输入排队(HOL 阻塞):在一个输人队列中排队的分组必须等待通过交换结构发送(即使输出端口是空闲的),因为它被位于队列首部的另一个分组阻塞。 输出端口:取出存放在输出端口内存中的分组并将其发送到输出链路上,包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能。 随机早期检测(RED, Random Early Detection) IPv4 数据报头部格式 一个IPv4数据报首部总长为20字节(假设无选项),若承载一个TCP报文段,则每个(无分片)数据报共承载总长40字节的首部以及应用层报文。 IP 数据报分片 最大传送单元(Maximum Transmission Unit,MTU) :一个链路层帧能承载的最大数据量当某条链路接收到的一个IP数据报长度大于MTU时,需要将该数据报中的数据分片成多个较小的IP数据报,用单独的链路层帧封装它们,并向输出链路上发送这些帧。它们称为片(fragment) 。 IPv4 编址 接口(interface) :主机与物理链路之间的边界;也指路由器与其任意一条链路之间的边界。CIDR(Classless Inter-Domain Routing,无类别域间路由 。形如a.b.c.d/x的x最高比特构成了IP地址的网络部分,也经常被称为该地址的前缀。一个组织通常被分配一块连续的地址,前缀相同。剩余32-x比特用于区分该组织的内部设备。IP广播地址为255.255.255.255,当一台主机发出一个目标地址为广播地址的数据报时,该报文会交付给同一个网络中的所有主机。 动态主机配置协议(Dynamic Host Configuration,DHCP) 允许主机自动获取一个IP地址,还允许一台主机得到其他信息如子网掩码、第一跳路由器地址(默认网关)和它的本地DNS服务器的地址。 四个步骤 DHCP服务器发现 :客户在UDP分组中向端口67发送一个广播目的地址255.255.255.255、源地址为0.0.0.0的含有DHCP发现报文的IP数据报。客户将其传递给链路层后,链路层将该帧广播到所有与该子网连接的子网。DHCP服务器提供 :DHCP服务器收到一个DHCP发现报文时,用一个DHCP提供报文向客户作出响应,使用IP广播地址,报文中含收到的发现报文的事务ID、向客户推荐的IP地址、网络掩码以及IP地址租用期。DHCP请求 :客户从一个或多个服务器中选择一个,向选中的服务器提供一个DHCP请求报文进行响应,回显配置参数。DHCP ACK :响应请求报文,证实所要求的参数。网络地址转换(Network Address Translation,NAT) NAT使能路由器对外界的行为如同一个具有单一IP地址的单一设备,所有离开家庭路由器流向更大因特网的源IP地址与进入家庭的目的IP地址相同,如138.76.29.7。它对外界隐藏了家庭网络的细节。 NAT妨碍了P2P应用程序,因为若某对等方B在一个NAT后面,则它不能充当服务器并接收TCP连接。此时A可以通过一个不位于NAT后面且与B创建了一条进行中的TCP连接的对等方C来与B联系。【连接反转(connection reversal)被用于NAT穿越】 因特网控制报文协议(ICMP) 典型用途:差错报告(P326图4-23),但不仅用于通知差错情况 有一个类型字段和一个编码字段 ping程序发送一个ICMP类型8编码0的报文到指定主机,然后目的主机发回一个类型0编码0的ICMP回显回答。 Traceroute的原理 IPv6 的 header 格式 40 字节 header 不再有IPv4首部中包含的分片/重新组装、首部检验和与选项。 4→6的切换方法 双栈(dual-stack)方法 :IPv6结点还具有完整的IPv4实现。若结点名字是IPv6使能的,则返回一个IPv6地址,否则返回IPv4地址;若发送方或接收方中任意一个仅为IPv4使能,则必须使用IPv4数据报。在执行从IPv6到IPv4的转换中,IPv6数据报中的一些字段在IPv4数据报中无对应部分,会被丢失。隧道(tunneling) :将 IPv6 数据包作为载荷封装在一个 IPv4 数据包中进行传输,在接收端再将其解封装还原为 IPv6 包。路由选择算法 与主机直接相连的一台路由器称为默认路由器 或第一跳路由器(first-hop router) 。将源主机的默认路由器称为源路由器 ,目的主机的默认路由器称为目的路由器 。算法目的即为:找出源和目的地之间的最低费用路径。 算法的分类一 全局式路由选择算法(global routing algorithm):具有连通性和链路费用方面的完整信息。也称为链路状态(Link State,LS)算法。 分散式路由选择算法(decentralized routing algorithm):以迭代、分布式的方式进行计算,开始工作时每个结点仅有与其直接相连链路的费用信息。一个例子是距离向量(Distance-Vector,DV)算法,每个结点维护到网络中所有其他结点的费用估计的向量。 算法的分类二 静态:路由的状态随时间变化非常缓慢 动态:能够当网络流量负载或拓扑发生变化时改变路由选择路径,易受路由选择循环、路由振荡等问题的影响 算法的分类三 负载敏感算法(load-sensitive algorithm):链路费用会动态地变化以反映出底层链路的当前拥塞水平 负载迟钝算法(load-insensitive algorithm):链路费用不明显地反映出当前的拥塞水平 链路状态路由选择算法(Dijkstra算法) 距离向量路由选择算法(Bellman-Ford算法) 算法运行过程 Bellman-Ford方程: . 其中方程中的 是对于 x 的所有邻居的。 在该分布式、异步算法中,每个结点不时地向它的每个邻居发送它的距离向量副本。 无穷计数问题:指在网络拓扑发生变化(例如某个网络不可达)后,多个路由器之间不断互相更新错误的路径信息,导致到某个网络的距离(跳数)被不断递增,最终趋向于“无穷大”。
解决办法:毒性逆转(只能解决两个相邻节点的问题):如果一个路由器从某个邻居学到了某条路由,那么它在把这个路由信息发回给那个邻居时,会把这条路由的跳数设为 16(即不可达) 。 算法的比较 LSR(Link State Routing):全局拓扑,每个节点独立计算路由,无环路,收敛速度较快,算法复杂度高,适用于大型网络。代表协议为 OSPF。 DVR(Distance Vector Routing):仅知道邻居信息,每个节点独立计算路由,容易形成环路,收敛速度慢,算法复杂度低,适用于小型网络。代表协议为 RIP(Routing Information Protocol)路由信息协议。 层次路由选择 自洽系统(Autonomous System,AS):每个AS由一组通常处在相同管理控制下的路由器组成,在AS内部的路由器全部允许同样的路由选择算法,此时这个算法称为自洽系统内部路由选择协议(intra-autonomous system routing protocol)。一台或多台负责向在AS之外的目的地转发分组的路由器被称为网关路由器(gateway router)。 OSPF(开放最短路优先)算法 核心:使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法。 每当一条链路状态发生变化时,路由器就会广播链路状态信息。也会周期性地至少每隔30分钟一次广播链路状态。 自洽系统间的路由选择:边界网关协议(Border Gateway Protocol,BGP) 广播路由选择(broadcast routing):单个源结点到网络中所有其他结点交付分组;多播路由选择(multicast routing):单个源结点到网络中其他结点的一个子集发送分组副本。 广播 N次单播:效率低、增加额外的协议机制的开销、以多播算多播 无控制洪泛:有圈时会死循环、分组的副本复制过于大量,导致广播风暴 受控洪泛 序号控制洪泛 反向路径转发(Reverse Path Forwarding,RPF):当一台路由器接收到具有给定源地址的广播分组时,仅当该分组到达的链路正好是位于它自己的返回其源的最短单播路径上,它才向其所有出链路传输报文。 生成树广播:对网络结点构造一棵生成树。一种简单的算法是基于中心的方法,定义一个中心结点,结点向中心结点单播加入树报文。 5. 链路层 差错检测和纠正 奇偶校验 用单个奇偶校验位 :偶校验——发送方只需包含一个附加的比特,使得这d+1个比特中1的总数是偶数;奇校验则为奇数。此时在突发差错的情况下,一帧中未检测出差错的概率能够达到50%。二维奇偶校验 :d个比特被划分为i行j列,共有i+j+1个奇偶比特。单个比特的差错可检测可纠正。前向纠错(Forward Error Correction,FEC):接收方检测和纠正差错的能力。可以减少所需的发送方重发次数。 checksum 计算流程 将数据划分为 16 位的段(可能需要在末尾填充 0 凑出偶数字节) 每 16 位组成一个整数,相加(进位加回原数中,称为回卷) 取反码,填入校验和字段 验证流程:将所有数据(包括 checksum)加在一起,应为全 1,否则出错。 循环冗余校验(Cyclic Redundancy Check,CRC) 考虑 比特的数据 ,发送方和接收方需要先协商一个 位的 bit pattern,称为生成多项式 , 的最高位为 。CRC 的思想是给数据 附上 位的 称为 CRC bit,使得这个 位的二进制数使用模 2 算数恰好被 整除。 计算方法:用 除以 ,每一步使用异或,直到最后得出 位的余数 每个 CRC 标准可以检测 比特的差错,也能检测任何奇数比特的差错 多路访问协议的三种类型:信道划分协议(channel partitioning protocol)、随机接入协议(random access protocol)、轮流协议(taking-turns protocol) 随机接入协议 一个传输结点总是以信道的全部速率R bps进行发送,若经历一次碰撞,则涉及碰撞的每个结点独立选择随机时延,而后进行该帧的重发。 时隙 ALOHA 所有帧由L比特组成,时间被分为长度为L/R秒的时隙,结点只在时隙起点开始传播帧,结点是同步的。若在一个时隙中有两个或者更多帧碰撞,则所有结点在该时隙结束之前检测到该碰撞事件。 检测到碰撞之后,该节点以概率 p 在之后的每一个时隙重传它的帧 当有 N 个活跃结点时,时隙 ALOHA 的效率是 。当 N 趋于无穷时,最大效率为 纯 ALOHA 一个节点的效率是 。当 N 趋于无穷时,最大效率为 载波侦听多路访问(CSMA, Carrier Sense Multiple Access):一个结点在传输前先听信道,若来自另一个结点的帧正在信道上发送,结点则等待直到检测到一小段时间没有传输,然后开始传输。 具有碰撞检测的 CSMA(CSMA/CD) 当一个结点检测到另一个结点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间。 二进制指数退避算法:在该帧经历了一连串的n次碰撞后,结点随机地从 中选择一个K值。对于以太网,一个结点等待的实际时间量为 比特时间,n 能够取的最大值在10以内。 CSMA/CD 不适合无限网络的原因: CSMA/CD 依赖实时碰撞检测,但无线环境中的信号特性和隐藏终端问题使其难以实现高效检测,故不适用。 轮流协议(taking-turns protocol) 轮询协议(polling protocol) 要求结点之一为主结点,主结点以循环的方式轮询每个结点,它能够观察在信道上是否缺乏信号,来决定一个结点何时完成了帧的发送。 消除了困扰随机接入协议的碰撞和空时隙,使得轮询取得更高的效率 引入了轮询时延,且依赖于主结点 令牌传递协议(token-passing protocol) 一个称为令牌的小的特殊帧在结点之间以某种固定的次序进行交换。当一个结点收到令牌时,仅当它有一些帧要发送时,它才持有这个令牌,否则立即向下一个结点转发令牌。 结点故障可能使整个信道崩溃;令牌若被某个结点忘记释放,则需要使之恢复。 链路层交换机 过滤:决定一个帧应该转发到某个接口还是将其丢弃 转发:决定一个帧应该被导向哪个接口,并把该帧移动到那些接口 借助于交换机表(switch table)实现,它的每个表项包含了一个MAC地址、通向该MAC地址的交换机接口、表项放置在表中的时间 自学习 交换机表初始为空 对于在每个接口接收到的每个入帧,在表中存储该帧源地址地段中的MAC地址、该帧到达的接口、当前时间 若在老化期后,交换机没有接收到以该地址作为源地址的帧,则删除这个地址 交换机是即插即用设备,不需要网络管理员或用户的干预,也是双工的。 6. 无线网络和移动网络 8. 网络安全 对称密钥密码 凯撒密码(字母整体平移)→ 单码代替密码(一一映射)→ 多码代替密码(使用多个单码代替密码,不同位置出现的相同字母可能以不同方式编码) 块密码(block ciphers):将要加密的报文处理为 k 比特的块,为加密一个块采取一一映射,将k比特块的明文映射为k比特块的密文。通常使用函数模拟随机排列表。DES、3DES和AES采用了块密码。 RSA(背) 密钥生成 选择两个质数 选择一个数 , 且 和 互质 计算 使得 公钥 ,私钥 只能加密 个比特的数据 加密: 解密: 数字签名的原理 Bob 要向 Alice 发送报文 时,首先使用散列函数 对报文 计算摘要,得到 ;然后使用自己的私钥 对该摘要进行加密,生成数字签名 ;最后将报文 和签名 一起发送给 Alice。Alice 收到后,用 Bob 的公钥 解密签名得到摘要 ,再对报文 重新计算摘要 ,若两者一致,即 ,则验证签名成功,确认报文来自 Bob 且未被篡改。 公钥认证的原理 在公钥认证过程中,为了向 Alice 证明自己的公钥 确实属于 Bob,Bob 可以通过一个可信的证书颁发机构(CA)获取数字证书。CA 使用其私钥对 Bob 的公钥和身份信息元组 进行签名,生成数字证书 。当 Alice 收到该证书后,她可以使用 CA 的公钥 对证书进行解密,验证签名是否有效,并确认证书中包含的 和 Bob 的身份信息一致,从而完成对 Bob 公钥的认证。 往年卷 基本概念 因特网协议栈层次:应用层、运输层、网络层、链路层、物理层。 信息分组分别称为:报文(message)、报文段(segment)、数据报(datagram)、帧(frame)、比特(bit) 每层代表性设备:
L1 物理层:集线器(Hub)、中继器(Repeater)、网线、光纤、无线天线 L2 链路层:交换机(Switch)、网卡(NIC)、桥接器(Bridge)、无线接入点(AP) L3 网络层:路由器(Router)、三层交换机(L3 Switch)、防火墙(具备路由功能) L4 传输层:主机(Host)、服务器、负载均衡器(具备端口控制) L5 应用层:终端设备(PC、手机)、Web 服务器、邮件服务器、DNS 服务器、FTP 服务器等 每层的代表性协议:
L1 物理层:USB, HDMI L2 链路层:Ethernet, PPP, Wi-Fi (802.11), Token Ring L3 网络层:IPv4, IPv6, ICMP, ARP L4 传输层:TCP, UDP L5 应用层: HTTP, HTTPS, FTP, SMTP, DNS, SSH, DHCP Internet 分层的作用:
优点: 各层通过标准化接口通信,便于协作与兼容,支持多种网络环境和硬件平台。(跨平台) 每层相互独立,某一层的技术更新不会影响到其他层,易于故障排查和管理。(独立) 缺点 沙漏状的好处:灵活性和扩展性强,上下层网络可以独立发展。 简化网络互通,所有数据最终都通过 IP 协议进行路由。
差错检验:
L2 链路层:CRC 循环冗余校验。发送端使用一个生成多项式对数据帧进行数学运算,得到一个固定长度的校验码。接收端同样计算并比对,如果不一致则丢弃该帧。 L3 网络层(IP):IP 首部校验和(只检查 IP header)。对 IP 首部的每 16 位字段进行反码相加。接收方重新计算校验和并与字段值对比。 L4 传输层:TCP 有校验和。UDP 可选。TCP 的校验和包括数据 。 假阴阳性分析:
假阳性:没有出错却误报,导致正确的数据被丢弃,TCP 超时重传。可能是校验字段被破坏 假阴性:出错却没有报告。比如可能多个比特出错抵消了校验值的变化。 访问 Web 的应用层协议为 HTTP,HTTPS 是在 HTTP 的基础上加入了 SSL/TLS 来加密通信。
IPv4 和 IPv6 的首部差异:IPv4 固定 20 字节,IPv6 固定 40 字节。IPv4 地址长度为 32 位,IPv6 地址长度为 128 位。IPv4 有首部校验和,IPv6 没有。
IP-in-IP tunnel: 是一种将一个 IP 数据包封装在另一个 IP 数据包中进行传输的技术。主机 A(IPv6)想访问主机 B(IPv6),但中间网络只支持 IPv4。这时 A 将 IPv6 数据包封装在 IPv4 包中,发送给 IPv4 网络中的隧道路由器 R1;R1 将数据包转发到隧道终点 R2;R2 剥离 IPv4 头部,还原 IPv6 数据包并转发给 B。
TCP 和 UDP 的区别:TCP 是面向连接的、可靠的、基于字节流的协议,适用于对数据准确性要求高的场景。UDP 是无连接的、不可靠的、基于数据报的协议,适用于实时性要求高、允许少量丢包的场景。
电子邮件使用的应用层协议:SMTP(Simple Mail Transfer Protocol)发送电子邮件,POP3(Post Office Protocol version 3)接受电子邮件,IMAP(Internet Message Access Protocol)接受电子邮件。
CSMA/CD 协议与 CSMA/CA 协议的区别
CSMA/CD(载波侦听多路访问/冲突检测)用于有线局域网中,站点在发送数据的同时可以检测是否发生冲突,一旦发现冲突则停止发送并发出拥塞信号;而CSMA/CA(载波侦听多路访问/冲突避免)主要用于无线网络中,通过预约信道、ACK确认等方式来尽量避免冲突的发生,而不是等冲突发生后再处理。
网络时延的主要组成部分
网络时延主要由四个部分组成:传输时延(数据块从发送端发送所需的时间)、传播时延(信号在物理介质中传播所需的时间)、排队时延(数据包在网络设备中等待转发的时间)和处理时延(路由器或交换机处理数据包头部信息所需的时间)。
ICMP 协议的两种用途
ICMP(互联网控制报文协议)常用于网络层的差错报告和诊断功能。例如,当目标主机不可达时,ICMP会发送“目标不可达”消息;此外,ping 命令利用ICMP的回送请求和应答报文来测试主机之间的连通性。traceroute。
电路交换和分组交换
电路交换在通信开始前需要先建立一条专用的物理通路,通信过程中该路径被独占,直到连接释放,这种方式适合连续、稳定的通信需求,如传统电话网络;而分组交换将数据分割为小包进行传输,每个数据包包含目标地址和顺序信息,网络节点根据这些信息动态选择路由,资源利用率高,适合突发性、不规则的数据通信,如互联网。两者的主要差异在于是否建立专用连接、资源分配方式以及数据传输的灵活性。
2 层交换机的功能:基于 MAC 地址转发数据帧,确保数据在局域网(LAN)中高效传输,用于局域网内部通信。
2 层广播风暴:广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪。
路由器:基于 IP 地址进行路由选择,连接不同子网。
TCP 流量控制 流量控制的作用是:避免接收方缓冲区溢出,提升传输可靠性,优化资源利用
TCP 接收方 RecvBuffer,LasByteRead,LasByteRecv;发送方 LastByteSent,LastByteAck 满足的关系:
在缓冲区中的数据小于缓冲区大小:LasByteRecv - LasByteRead <= RecvBuffer LasByteRead <= LasByteRecv <= LastByteSent LasByteAck <= LasByteRecv 接收方计算 rwnd = RecvBuffer - (LasByteRecv - LasByteRead)
发送方通过接收方在每个 ACK 报文中携带的 window 字段,获取接收方的 rwnd 值
TCP 关于 zero window 的解决方案:
窗口更新报文(Window Update Message):当接收方在接受窗口变为非 0 时,主动发送一个 ACK。问题是 ACK 的传输不是可靠的。 持续定时器(Persistence Timer):发送方检测到零窗口时启动 Timer,定期(每 5 秒)发送 1 字节的探测报文,试探接收方是否恢复接收能力。若收到接收方回复的 ACK(携带新的 rwnd 值),则恢复正常发送。 TCP 拥塞控制 TCP Tahoe Slow Start(慢启动):cnwd < ssthresh。每收到一个ACK,cwnd的值就会加1。经过一个RTT,cwnd的值就变成原来的两倍,指数增长。 Congestion Avoidance(拥塞避免):cwnd >= ssthresh。cwnd 以线性方式增长,大约每经过一个RTT,cwnd 的值就会加1。 快重传:只要发送方收到了三个重复的ACK,就会立马重传,而不用等到RTO到达(如果没有3个重复的ACK而包丢失了,就只能超时重传);并且将ssthresh的值设置为当前cwnd的一半,而cwnd减为1,重回slow start阶段 。 TCP Reno img
除了包含Tahoe的三个算法,Reno多了一个Fast Recovery(快速恢复)算法。
当收到三个重复的ACK,立即重传缺失的数据段并进入快恢复阶段。在快恢复阶段,设置 ssthresh = cwnd / 2, cwnd = ssthresh+3MSS,然后线性增长。
TCP NewReno Reno 的缺点是仅考虑丢一个包的情况,收到新的 ACK就会结束恢复,进入拥塞避免阶段。若在一次拥塞中丢失多个报文
会多次将拥塞窗口(cwnd)和慢启动阈值(ssthresh)减半,造成TCP的发送速率呈指数降低系统吞吐量急剧下降,(当发送窗口小于3时)无足够的重复ACK可以触发快速恢复,只能等待超时重传。TCP Reno 终端会陷入仅通过传输超时来发现报文丢失的困境中。
因此在Neweno算法中,只有当所有丢失的包都重传并收到确认后才退出快速恢复。
路由 在 IPv4 的子网中,每个子网有两个保留地址 :
BGP 不依赖跳数来衡量路径好坏,并且通过 AS Path 防环机制 避免了路由环路,所以 BGP 不会出现“无穷计数”问题 。
IGP(Interior Gateway Protocol):内部网关协议 用途 :在同一个自治系统(AS)内部 进行路由。 功能 :发现和维护 AS 内部的路由信息,确保数据包能够在 AS 内部正确转发。 常见协议 : RIP(Routing Information Protocol) OSPF(Open Shortest Path First) IS-IS(Intermediate System to Intermediate System) EGP(Exterior Gateway Protocol):外部网关协议 用途 :在不同自治系统之间进行路由。 功能 :交换 AS 之间的可达性信息,决定如何将数据从一个 AS 转发到另一个 AS。 现代代表协议:BGP(Border Gateway Protocol) IGP 与 EGP 的配合方式:IGP 负责自治系统内部的路由优化和快速转发。EGP 负责自治系统之间的路由决策和策略控制。 BGP eBGP:运行在 不同自治系统之间的 BGP 路由器 使用的协议。 iBGP:运行在 同一个自治系统内部的 BGP 路由器 使用的协议。 eBGP 负责获取外部路由信息,iBGP 负责将这些信息分发到整个自治系统内部 BGP 通过以下机制避免环路: AS 路径检查 :每条路由携带完整的 AS 路径(即经过的 AS 序列)。当路由器收到路由时,若发现自身所属的 AS 已经存在于路径中,会直接丢弃该路由。 水平分割(Split Horizon) :同一 AS 内部传播路由时,不会将从某接口学到的路由再通过同一接口发送回去。 路由反射器(Route Reflector) :在大型 AS 中,路由反射器确保路由仅在一个方向传播,避免环路。 网络安全 Other 零碎知识点 DNS 运行在 UDP 协议上,端口号为 53
NAT 后面对应的分组,若随机对一台主机进行分配,但后续顺序分配。那么每个连续递增序列为一台主机。
比较RIP和OSPF采用的算法和实现上的不同:RIP 和 OSPF 在算法和实现上有显著差异:RIP 采用距离向量算法(Distance Vector) ,通过周期性广播整个路由表,以“跳数(Hop Count)”作为路径选择的度量值,适用于小型网络,但收敛速度慢、扩展性差;而 OSPF 基于链路状态算法(Link State) ,路由器通过泛洪链路状态通告(LSA)构建完整的网络拓扑图,并使用 Dijkstra 算法计算最短路径树,以“成本(Cost)”为度量值,支持大型网络、快速收敛和分层结构设计,更加高效和灵活。
当多个网桥连接形成环路时,广播帧会在网络中不断转发,导致广播风暴。为了避免这个问题,通常使用 生成树协议(Spanning Tree Protocol, STP) 来防止环路,确保网络中只存在一条无环的通信路径,从而避免广播风暴的发生。
局域网中存在环路会导致以下问题:
广播风暴 :广播报文在环路中无限循环,消耗带宽,导致网络瘫痪。MAC地址表混乱 :交换机可能学习到同一设备从不同端口接入,引发地址冲突。网络收敛时间增加:数据包在环路中重复传输,延长网络响应时间。 解决方法:使用生成树协议(STP) 自动阻断冗余链路,形成无环逻辑拓扑;或手动关闭冗余端口。
VPN 的原理:学生设备 → 连接到 Internet → 建立加密隧道 → 连接至学校 VPN 服务器 → 获得内网 IP → 访问校内学术资源(如同在校内)
自治域(AS)防环:自治域之间使用 BGP 协议进行路由,它通过 AS_PATH 属性来检测和防止环路,一旦发现某条路由中已经包含自己的 AS 号,就丢弃该路由,从而保证无环。
停止等待提高吞吐量的方法:使用滑动窗口协议、增大窗口大小、优化确认机制、降低延迟等
Min-Max Fairness:一个迭代的思想。每次均分剩余资源(或按权均分),将溢出需求的资源收集起来,重复这个过程。
802.11 使用 CSMA/CA(载波侦听多路访问/冲突避免) CS(载波侦听) :站点在发送数据前先监听信道是否空闲。 MA(多路访问) :多个设备共享同一信道。 CA(冲突避免) :通过以下方式尽量避免冲突: 退避机制(Backoff) :如果信道空闲时间达到 DIFS(分布式帧间间隔),站点随机选择一个退避时隙数,等待相应时间后发送。 ACK确认机制 :接收方收到数据后发送 ACK,否则发送方重传。 传统以太网使用 CSMA/CD(载波侦听多路访问/冲突检测) : CD(冲突检测) :发送过程中持续监听信号,若检测到冲突则停止发送,并发出拥塞信号(jam signal),然后进入退避重传流程。 隐藏终端问题 指两个或多个站点(终端)无法彼此“听到”对方,但都能与同一个接入点(AP)通信的情况。 解决办法:RTS/CTS 握手机制(Request to Send / Clear to Send) 网络层乱序到达,传输层怎么做到按序交付:序列号、接收缓冲区、确认和重传机制 ,可以实现数据的按序交付,从而为应用层提供可靠的通信服务。
TCP 拥塞期间的平均吞吐量:
EstimatedRTT 计算公式(这是一种指数加权移动平均(Exponentially Weighted Moving Average)):
勒索病毒从Windows的端口445进攻,可以自我复制和主动攻击,解决方法:立刻断网防止传染其他电脑,识别病毒类型并进行病毒查杀。进行数据恢复。重装系统。
对称加密 AES: 加密算法
NAT 转换:需要更新 IP 和 TCP 的 checksum!
DHCP 如何配置用户主机才能使其访问 Web 服务器:需要 IP 地址,子网掩码,默认网关,DNS 服务器 作用:自动为网络中的设备分配 IP 地址及相关网络配置信息 DHCP 是应用层协议,使用 UDP。服务器使用端口 67,客户端使用端口 68. TCP三次握手的必要性在于:确保双方都具备可靠的通信能力,防止无效连接请求占用资源,保障连接的可靠性与效率。