• 1 概述
    • 分层结构
      • ISO OSI 七层模型
        • 物理层 Physical Layer
          • 单位: 比特(bit)
          • 功能: 定义物理设备的电气、机械、功能和过程特性, 实现比特流的传输 #🕳 有坑
            • 物理层关注的是比特流的传输,而不涉及具体的传输媒介(如光纤、铜线、无线电波等)。
            • 传输媒介可以视作第 0 层,物理层在其之上工作。
        • 数据链路层 Data Link Layer
          • 单位: 帧(frame)
          • 功能: 物理寻址、组帧、差错控制、点对点流量控制、数据重发和传输管理等
        • 网络层 Network Layer
          • 单位: 数据报(datagram)
          • 功能: 对分组进行路由选择(支持无连接和面向连接 ),并实现整个网络的流量控制
        • 传输层 Transport Layer
          • 单位: 报文段(segment)
          • 功能: 提供端到端的可靠传输(仅支持面向连接),实现端到端的流量控制、差错控制和数据重发等
        • 会话层 Session Layer
          • 功能: 建立、管理和终止会话连接(主机各进程之间), 实现会话检查点和恢复等
        • 表示层 Presentation Layer
          • 功能: 数据格式转换、加密和解密、数据压缩等
        • 应用层 Application Layer
          • 功能: 提供用户应用程序与网络的接口, 实现各种网络服务和应用
        • 考点
          • Please Do Not Teach Stupid People Anything
          • L2/L3/L4 点对点/整个网络/端到端 流量控制
      • TCP/IP 四层模型
        • 物理层 Physics Layer
          • 负责实际的物理传输介质,如电缆、光纤等
        • 数据链路层 Network Interface Layer
          • 负责在物理网络上传输数据帧,主要协议有以太网、PPP 等
        • 网络层 Internet Layer
          • 负责数据包的路由和转发,主要协议是 IP
            • 无连接,不可靠的服务
        • 传输层 Transport Layer
          • 提供端到端的通信服务,主要协议是 TCP 和 UDP
        • 应用层 Application Layer
          • 提供网络服务的接口,如 HTTP、FTP 等
      • 协议数据单元 PDU
    • 网络设备
      • 冲突域
      • 广播域
      • 设备类型
        • 集线器 Hub / 中继器 Repeater
        • 交换机 Switch / 网桥 Bridge
        • 路由器 Router / 网关 Gateway
    • 各层协议总结
      • 网络协议要素
        • 语法 Syntax
          • 数据格式
          • 编码方式
        • 语义 Semantics
          • 控制信息
          • 需要完成的操作
        • 时序 Timing
          • 事件发生顺序
      • 应用层协议
        • HTTP/HTTPS
          • 端口号: 80/443
          • 依赖传输层协议: TCP
        • FTP
          • 端口号: 20/21
            • 20: 数据连接端口(仅主动模式使用)
            • 21: 控制连接端口
          • 依赖传输层协议: TCP
          • 文件传输协议
        • SMTP
          • 端口号: 25
          • 依赖传输层协议: TCP
          • 简单邮件传输协议(用于发送邮件)
        • POP3/IMAP
          • 端口号: 110/143
          • 依赖传输层协议: TCP
          • 邮局协议3/互联网消息访问协议(用于接收邮件)
        • DNS
          • 端口号: 53
          • 依赖传输层协议: UDP(部分TCP)
          • 域名系统协议(将域名解析为IP地址)
        • DHCP
          • 端口号: 67/68
            • 67: 服务器端口
            • 68: 客户端端口
          • 依赖传输层协议: UDP
          • 动态主机配置协议(为主机分配IP地址)
      • 传输层协议
        • TCP
          • 面向连接
          • 可靠传输
          • 流量控制
          • 拥塞控制
        • UDP
          • 无连接
          • 不可靠传输
          • 适用于实时应用
      • 网络层协议
        • IP
          • 无连接
          • 不可靠传输
          • 提供寻址和路由选择
        • ICMP
          • 网络控制协议
          • 用于传递控制信息和错误报告
        • RIP/OSPF/BGP
          • 路由选择协议
          • RIP: 距离矢量路由协议
            • 基于UDP
          • OSPF: 链路状态路由协议
            • 基于IP
          • BGP: 边界网关协议
            • 基于TCP
            • iBGP: 同一自治系统内
            • eBGP: 不同自治系统间
        • NAT
          • 网络地址转换
          • 实现私有网络与公共网络的通信
      • 数据链路层协议
        • ARP
          • 地址解析协议
          • 将IP地址解析为MAC地址
        • PPP
          • 点对点协议
          • 用于点对点链路的封装和传输
        • 以太网协议
          • IEEE 802.3标准
          • 使用CSMA/CD介质访问控制方法
  • 2 物理层
    • 通信基础
      • 通信基本概念
      • 奈奎斯特定理和香农定理
      • 编码和调制 #🤔 考前记
        • (D 边) 差分曼彻斯特编码:编码取决于周期开始时有无电平跳变,中间有电平跳变
        • (I 边) 反向非归零编码 (NRZI):编码取决于周期开始时有无电平跳变,中间无电平跳变
        • 曼彻斯特编码:编码取决于周期中间的电平跳变,从高到低或从低到高
          • 10BaseT 网卡采用曼彻斯特编码
        • 非归零编码(NRZ):编码取决于周期整个电平状态,位值 0 和 1 分别对应低电平和高电平
      • 电路交换 报文交换 分组交换
      • 数据报与虚电路
        • 虚电路网络
          • 在通信前建立连接, 传输数据时按顺序发送,传输结束后释放连接
          • 每个分使用虚电路号标识连接
          • 同一条虚电路上的分组按照同一路由转发, 保证顺序到达
          • 虚电路无须预分配带宽
    • 传输介质
      • 传输介质分类
      • 物理层接口特性
    • 物理层设备
      • 中继器
      • 集线器
  • 3 链路层
    • 链路层功能
    • 组帧
    • 差错控制
      • ARQ 自动重传请求
        • 设窗口序号字段为 比特,发送窗口大小为 ,接收窗口大小为 ,三种滑动窗口协议的参数配置如下:
        • 停等协议 (SW),采用逐帧确认机制
        • 后退 N 帧 (GBN),采用累积确认机制
        • 选择重传 (SR),采用选择确认机制
        • 注:通常
      • 检错和纠错协议 #🤔 考前记
        • 海明码
          • 校验位个数 与数据位个数 的关系:
          • 纠错 d 位,需要码距 2d+1 的编码
          • 检错 d 位,需要码距 d+1 的编码
        • 循环冗余校验 CRC
          • 生成多项式: 预先约定的二进制多项式
          • 发送端: 将数据多项式 左移 位后除以生成多项式 ,余数 作为 CRC 校验码附加在数据后面发送
          • 接收端: 将接收到的数据多项式 除以生成多项式 ,若余数为 0,则数据无误,否则数据有误
    • 流量控制与可靠传输机制
    • 介质访问控制
      • CDMA 码分多址
        • 的码片序列为
        • 接收
          • 若从链路上收到序列 , 则收到 发送的数据为
        • 发送
          • 要发送数据 , 则发送
          • 要发送数据 , 则发送
          • 所有信号源共同线性叠加
      • CSMA 监听算法
        • 非坚持型:信道忙则等待随机时间后重试
          • 延时大,但冲突少
        • 1-坚持型:一直坚持检测信道状态,直至检测到信道空闲后,立即发送该分组
          • 冲突不可避免,但发送延时小
        • p-坚持型:一直检测信道的状态,在检测到信道空闲后,以概率 p 发送该分组
      • 截断二进制指数退避算法
        • CSMA/CD
          • 每次从离散的整数集合 中随机选择一个整数 ,重转推迟的时间为 ,其中 是重传次数, 是争用期;
          • 达到 之后不再增加
        • CSMA/CA
          • 进行第 次退避时, 从整数集合 中随机选择一个整数 ,重传推迟的时间为
          • 达到 , 即 之后不再增加。
      • CSMA/CA
        • 预约信道
          • 发送方
            • 等待 DIFS 时间后,发送 RTS
            • 收到 CTS 帧后,等待 SIFS 时间,发送数据帧
            • 收到 ACK 帧后,等待 SIFS 时间,结束传输
          • 接收方
            • 收到 RTS 帧后,等待 SIFS 时间,发送 CTS 帧
            • 收到数据帧后,等待 SIFS 时间,发送 ACK 帧
        • CSMA/CA 协议中的 NAV 和 IFS 概念
          • NAV: 网络分配向量,是一种虚拟的载波感知机制,用于指示无线信道在未来一段时间内将被占用,避免冲突。
            • 收到 RTS 的站:从 RTS 结束直到 ACK 结束。
            • 收到 CTS 的站:从 CTS 结束直到 ACK 结束。
            • 收到 DATA 的站:从 DATA开始直到 ACK 结束。
          • IFS: 帧间隔时间,是指在发送数据帧之前,发送方需要等待的一段时间,以确保信道空闲,减少冲突的可能性。
            • SIFS: 短帧间隔时间,用于高优先级的控制帧和响应帧。
            • DIFS: 分布式帧间隔时间,用于普通数据帧的发送 (发RTS 帧之前)。
        • 3️⃣个地址
          • ,,
          • 地址 1: 接收方/目的地址 (RA)
          • 地址 2: 发送方/源地址 (TA)
          • 地址 3: 可能是源地址 (SA) 或目的地址 (DA),取决于 Frame Control 字段中的To DSFrom DS
            • 意味着不含中继 AP,帧原始的发往/来源的地址
          • 地址 4: 仅当帧在两个无线接入点之间传输时使用,表示原始的源地址 (SA) 或 目的地址 (DA)
    • 局域网
    • 广域网
    • PPP 协议
      • PPP 支持身份验证协议(如 PAP 和 CHAP),用于验证连接双方的身份。
      • PPP 支持多种封装格式,允许在不同类型的物理链路上传输数据。
      • PPP 不进行帧编号
      • PPP 没有确认机制(依赖应用层实现)。
    • 数据链路层设备
  • 4 网络层
    • 网络层功能
    • 路由算法
    • IPV4
    • IPV6
    • 路由协议
      • 不同自治系统的路由选择协议
        • 自治系统内部
          • OSPF(IP): 链路状态协议,基于 Dijkstra 算法,适用于大型网络,收敛速度快。
          • RIP(UDP): 距离矢量协议,基于 Bellman-Ford 算法,适用于小型网络,收敛速度较慢。
            • 坏消息传的慢: 收到两个来源关于同一个网络的汇报,一个可达一个不可达,可能需要多个周期才能收敛.
        • 自治系统之间
          • BGP(TCP): 路径矢量协议,基于路径向量算法,适用于大型网络,支持策略路由。
          • EGP(IP): 边界网关协议,早期的自治系统间路由协议,现已被 BGP 取代。
      • 路由表
        • 若路由器直连网络,则路由表中该网络的下一跳地址为/
        • 若路由器不直连网络,则路由表中该网络的下一跳地址为下一个路由器的接口地址
        • 路由表中目的网络地址网络号
          • 如有子网掩码,则分为网络号 + 掩码
          • 如无子网掩码,则为 CIDR 表示法 + 掩码
        • 路由聚合: 将多个连续的网络号合并为一个更大的网络号,减少路由表项数
          • 即便几个网络无法组成满的网络 (有空隙),也可以聚合
        • 最长前缀匹配原则: 路由器根据目的地址在路由表中查找时,选择与目的地址匹配最长的网络号对应的路由项进行转发。
      • NAT
        • 静态 NAT 配置 (静态端口映射)
          • 对于需要对外公开的主机,需要将其私有 IP 地址和端口映射到公共 IP 地址和端口
          • 一般是 Web 服务器之类的
        • 动态 NAT 转发
          • 对于内部主机发起的连接,NAT 设备会动态分配一个随机端口, 并将其映射到内部主机的私有 IP 地址和端口
    • IP组播
    • 移动IP
    • 网络层设备
  • 5 传输层
    • 传输层功能
    • UDP协议
      • 校验和 #🤔 考前记
        • 易错点
          • 校验和可以关闭以提高性能,关闭时校验和字段置为 0.
          • 若计算得出的校验和为 0,则在校验和字段中置为全 1.
          • 校验和不可能计算出全 1.
        • 校验和计算过程
          • 组成
            • 伪首部 (12B, 源 IP 4B, 目的 IP 4B, 保留位 1B, 协议字段 1B, UDP 长度 2B)
            • UDP 首部 (8B, 源端口 2B, 目的端口 2B, 长度 2B, 校验和 2B)
          • 计算时校验和字段置为 0, 以 16 位为单位,逐个相加,若有进位则加到低位,最后取反.
    • TCP协议
      • 连接断开各个阶段名称
        • 客户端:ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT 关闭
        • 服务端:ESTABLISHED CLOSE_WAIT LAST_ACK 关闭
      • 序号使用
        • 第一次握手以及第二次握手:各消耗 1 个序号
        • 第三次握手:不消耗序号
        • 数据传输阶段:每发送 1 字节数据,序号加 1
        • 连接终止阶段:每次发送 FIN 报文段,消耗 1 个序号
        • 注意:序号是字节流的编号, 不是报文段的编号
      • 拥塞窗口
        • 以字节为单位:每接收一个报文的 ACK 确认,拥塞窗口增加相应的字节数
        • 以报文段 (MSL) 为单位:每接收一个报文的 ACK 确认,拥塞窗口增加 1 个报文段大小
        • 发送窗口:拥塞窗口与接收窗口的最小值
  • 6 应用层
    • 网络应用模型
    • DNS协议
    • FTP协议
      • 控制连接:客户端主动连接服务器的 21 端口
        • 整个会话期间保持连接
      • 数据连接
        • 主动模式 (PORT): 客户端指定一个端口,服务器(通过 20 端口)主动连接客户端该端口进行数据传输
        • 被动模式 (PASV): 端口由服务器与客户端自行协商决定。
        • 数据连接在每次传输数据时建立和断开
    • 电子邮件
    • WWW与HTTP/HTTPS协议
      • HTTP 的连接方式对请求时间的影响
        • 假设本地主机到服务器的往返时间为 RTT, 需要下载一个 HTML 页面和 3 个内嵌对象 (非常小)
        • 非流水线/非持久连接: 每个对象都需要单独建立连接,建立并传输数据至少需要 2 个 RTT
          • 总时间 = (4 * 2) RTT
        • 非流水线/持久连接: 只需要建立一次连接,后续每次请求一个对象
          • 总时间 = (2 + 3 * 1) RTT
        • 流水线/持久连接: 建立一次连接后,可以同时发送多个请求
          • 总时间 = (2 + 1) RTT
        • 注意不用考虑 TCP 慢启动的影响,慢启动通常约束MSS 报文段个数或字节数, 如果文件非常小,可以不考虑。
  • 0 考前记
    • IP/UDP/TCP 首部格式
      • IP
        • 首部长度: 最少 20 字节, 扩展选项 最多 60 字节
      • UDP
        • 首部长度: 固定 8 字节
      • TCP
        • 首部长度: 最少 20 字节, 扩展选项 最多 60 字节