计算机网络复习全书(详细整理)

前言:为什么你需要这份指南?

计算机网络是IT世界的基石,也是每一位计算机、软件工程及相关专业学生必须掌握的核心课程。面对教材的厚重、概念的繁多和计算题的烧脑,期末复习往往令人望而却步。

这份《计算机网络复习全书》正是基于高校经典的 56学时教学大纲 梳理而成,旨在提供一个结构清晰、重点突出、易于理解的复习框架。我们将以 CSDN 的博客形式,用简洁明了的方式,带你从物理底层到应用上层,系统性地攻克所有核心知识点和高频考点。

目标:不仅让你顺利通过期末考试,更助你搭建扎实的网络知识体系,为未来的学习和面试打下坚实基础!

适合人群

备战期末考试的学生:快速锁定考点,精准复习,掌握高频计算题和简答题的答题技巧。

学习计算机网络的初学者:需要一份结构化、逻辑清晰的知识地图,辅助理解教材内容。

准备技术面试的求职者:系统回顾网络分层、TCP/IP 核心机制等面试高频问题。

需要快速回顾知识点的开发者:用最少的时间,重温网络原理,温故知新。

第一章:计算机网络概述 (Introduction)

复习重点指南: 第一章是全书的基础,期末考试中通常以选择题、填空题和简答题为主。 核心考点:

  1. 分组交换的原理(对比电路交换)。
  2. 计算机网络的性能指标(特别是时延的计算,必考!)。
  3. 计算机网络体系结构(OSI 7层 vs TCP/IP 4层 vs 5层原理体系结构),各层的功能和数据单元名称。

1.1 计算机网络的基本概念

1.1.1 概念

计算机网络是将地理位置不同的、具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享信息传递的计算机系统。

  • 简而言之:网络 = 节点 (Nodes) + 链路 (Links)。
  • 核心功能:连通性 (Connectivity) + 共享 (Sharing)。

1.1.2 互联网 (Internet) 的组成

从工作方式上看,互联网可以划分为两大块:

  1. 边缘部分 (Edge)
    • 由所有连接在互联网上的主机 (End Systems) 组成。
    • 这部分是用户直接使用的(C/S模式或P2P模式)。
  2. 核心部分 (Core)
    • 由大量网络 和连接这些网络的路由器 (Router) 组成。
    • 这部分是为边缘部分提供服务的(提供连通性和交换)。

1.2 三种交换方式 (核心考点)

这是核心部分数据传输的关键技术,期末常考对比。

特性 电路交换 (Circuit Switching) 报文交换 (Message Switching) 分组交换 (Packet Switching)
原理 建立连接 -> 通话 -> 释放连接 存储转发(整个报文) 存储转发(切分成小包)
特点 资源独占,一旦建立连接,线路一直被占用 无需建立连接,数据整体转发 将数据切分为分组 (Packet),独立路由
优点 实时性好,传输质量稳定 线路利用率高(动态分配) 高效、灵活、迅速、可靠
缺点 线路利用率低,建立连接时间长 对中间设备存储要求高,时延大 存在排队时延,首部开销 (Header)
典型应用 传统电话网络 电报 现代计算机网络 (Internet)

考试Tip:互联网的核心采取的是分组交换技术。

1.3 计算机网络的性能指标 (计算题高发区)

1.3.1 速率 (Speed/Data Rate)

数据的传送速率,也称为数据率或比特率。

单位:

1.3.2 带宽 (Bandwidth)

在计算机网络中,表示网络的最高数据率

单位同速率,即"这条链路每秒最多能发送多少比特"。

1.3.3 吞吐量 (Throughput)

单位时间内通过某个网络(或信道、接口)的实际数据量。

受限于带宽,且受网络负载影响。

1.3.4 时延 (Delay/Latency) ------ 必考公式

(当然这部分显得过于枯燥,可直接看题,不懂再看看公式)

看清楚这里问的是往返时时延 =2**传播时延 + 处理时延 + 排队时延 =2**15+2+3=35ms

总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

  1. 发送时延 (Transmission Delay)

    主机或路由器发送数据帧所需要的时间(从推第一个bit入线,到最后一个bit入线)。

  2. 传播时延 (Propagation Delay)

    电磁波在信道中传播一定的距离需要花费的时间。

  3. 处理时延:路由器分析首部、提取数据、差错检验的时间(通常忽略或题目给定)。

  4. 排队时延:分组在路由器缓存中等待转发的时间(取决于网络拥塞程度)。

高频坑点:

(1)提高链路带宽(如10M升到100M)减小的是发送时延 ,而传播时延(取决于距离)是不变的!

(2)卫星通信的传播时延很大(约270ms),不可忽略。

1.3.5 时延带宽积 (Bandwidth-Delay Product)

物理意义:以比特为单位的链路长度(链路中充满了多少比特)。

1.3.6 往返时间 (RTT)

从发送方发送数据开始,到发送方收到接收方的确认(ACK)总共经历的时间。

1.4 计算机网络体系结构 (重中之重)

这是整个课程的骨架,必须背诵。

1.4.1 协议 (Protocol) 三要素

  1. 语法 (Syntax):数据与控制信息的结构或格式(怎么写)。
  2. 语义 (Semantics):需要发出何种控制信息,完成何种动作以及做出何种响应(做什么)。
  3. 同步/时序 (Timing):事件实现顺序的详细说明(先做啥后做啥)。

1.4.2 三种参考模型对比

(1)=UDP (2)=TCP (3)=IP

层次 OSI 七层模型 (理论标准) TCP/IP 四层模型 (事实标准) 五层协议体系结构 (学习专用) 主要功能/协议 数据单元 (PDU)
7 应用层 (Application) 应用层 应用层 HTTP, DNS, SMTP, FTP 报文 (Message)
6 表示层 (Presentation) - - 格式转换、加密 -
5 会话层 (Session) - - 会话管理 -
4 运输层 (Transport) 运输层 运输层 TCP, UDP (端到端通信) 报文段 (Segment) / 用户数据报
3 网络层 (Network) 网际层 (IP) 网络层 IP, ICMP, OSPF, 路由选择 分组/包 (Packet)
2 数据链路层 (Data Link) 网络接口层 数据链路层 MAC, VLAN, 差错检测 帧 (Frame)
1 物理层 (Physical) - 物理层 比特流传输, 光纤, 双绞线 比特 (Bit)

1.4.3 体系结构核心概念

实体 (Entity):任何可发送或接收信息的硬件或软件进程。

对等层 (Peer):不同机器上的同一层。

协议 (Protocol) :控制两个对等实体(水平方向)进行通信的规则。

服务 (Service) :下层通过服务访问点 (SAP) 向紧邻的上层提供功能调用(垂直方向)。

口诀:下层为上层服务,上层使用下层的服务。

封装与解封装

发送方:从上往下,层层加头(数据链路层还要加尾)。

接收方:从下往上,层层去头。

1.5 第一章 常见面试/考试题

  1. OSI模型和TCP/IP模型的区别?

    OSI是7层,学术完善但未流行;TCP/IP是4层,实际应用的工业标准。

    OSI网络层支持无连接+面向连接,运输层仅面向连接;TCP/IP网络层仅无连接(IP),运输层支持无连接(UDP)+面向连接(TCP)。

  2. 为什么需要分层?

    各层独立,解耦,灵活性好,易于实现和维护,标准化。

第二章:物理层 (Physical Layer)

复习重点指南: 物理层主要解决如何在连接各种计算机的传输媒体上传输数据比特流。 核心考点:

  1. 两大公式:奈氏准则和香农公式(期末考试忽略这两)。
  2. 信道复用技术:特别是CDMA(码分多址)的计算。
  3. 编码方式:曼彻斯特编码与差分曼彻斯特编码的波形判断(期末考试忽略)。
  4. 传输媒体:光纤(单模/多模)的特性。

2.1 物理层的基本概念

2.1.1 四大特性

物理层协议的主要任务是确定与传输媒体接口有关的一些特性:

  1. 机械特性:接口形状、尺寸、引脚数目等(如RJ45水晶头的形状)。
  2. 电气特性:电压范围(如-5V到+5V表示0/1)。
  3. 功能特性:某电平的电压表示何种意义。
  4. 过程特性:不同功能的各种可能事件的出现顺序。

2.1.2 数据通信基础

数据 (Data):运送消息的实体。

信号 (Signal):数据的电气的或电磁的表现。

模拟信号:连续的(如打电话的声音)。

数字信号:离散的(如计算机用的 0 和 1)。

复制代码
  码元 (Symbol):在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形。

2.1.3 三种通信交互方式

  1. 单工通信 (Simplex):只能有一个方向的通信(如无线电广播、电视)。
  2. 半双工通信 (Half-duplex) :双方都可以发送和接收,但不能同时进行(如对讲机)。
  3. 全双工通信 (Full-duplex) :双方可以同时发送和接收(如现代电话、手机)。

2.2 两个重要公式 (计算题核心)

这是本章最容易拿分也最容易丢分的地方。

2.2.1 奈氏准则 (Nyquist Theorem) ------ 理想无噪声信道

在理想低通(无噪声)信道中,为了避免码间串扰 ,极限码元传输速率是有限的。

2.2.2 香农公式 (Shannon Theorem) ------ 有高斯白噪声信道

2.3 编码与调制

2.3.1 常见编码方式 (基带传输)

即将数字信号转换为另一种形式的数字信号。

  1. 不归零制 (NRZ):正电平代表1,负电平代表0。缺点:无法判断位开始和结束,无法同步。

  2. 归零制 (RZ):正脉冲代表1,负脉冲代表0,每次传输完都要回到零电平。自同步,但效率低。

  3. 曼彻斯特编码 (Manchester Encoding)考点

    特点:位周期中心的向上跳变代表0,向下跳变代表1(或者反过来,视标准而定)。

    优点 :自带时钟信号(自同步)。

    缺点:所占频带宽度是基带信号的2倍。

  4. 差分曼彻斯特编码

    特点:每一位的中心处始终有跳变。位开始边界有跳变代表0,无跳变代表1。

    优点:抗干扰能力更强。

2.3.2 调制 (带通传输)

将数字信号转换为模拟信号(为了在模拟信道如电话线上传输)。

调幅 (AM)、调频 (FM)、调相 (PM)。

  • QAM (正交振幅调制):结合振幅和相位,效率更高。

2.4 信道复用技术

2.4.1 基本复用

  1. 频分复用 (FDM) :所有用户在同样的时间占用不同的频率(如收音机)。
  2. 时分复用 (TDM) :所有用户在不同的时间占用同样的频带宽度。
  3. 波分复用 (WDM):光的频分复用。

2.4.2 码分复用 (CDM/CDMA) ------ 必考计算题

对应位相乘再相加,最后除以8。

2.5 传输媒体

  1. 双绞线 (Twisted Pair)

    把两根绝缘铜导线绞合在一起,为了减少电磁干扰

    STP (屏蔽双绞线) vs UTP (无屏蔽双绞线)。

  2. 光纤 (Fiber)

    利用全反射原理。

    多模光纤:传输多条光线,适合近距离,光源便宜(LED)。

    单模光纤:直径小,只传一条光线,适合远距离,光源贵(激光),损耗最小。

2.6 第二章 常见面试/考试题

  1. 为什么在光纤中是全反射?

    光从高折射率介质射向低折射率介质,且入射角大于临界角。纤芯折射率 > 包层折射率。

  2. 双绞线为什么要绞在一起?

    抵消相邻导线的电磁干扰,减少对外辐射。

  3. 计算题:信噪比30dB,带宽3kHz,求极限速率?

复习重点指南: 数据链路层主要解决如何在相邻节点之间可靠地传输数据帧。 核心考点:

  1. 三个基本问题:封装成帧、透明传输、差错检测(CRC计算)。
  2. CSMA/CD协议:争用期、二进制指数退避算法(期末不考)、最短帧长(必考计算!)。
  3. 以太网交换机:自学习算法、与集线器的区别、广播域与冲突域。
  4. VLAN:虚拟局域网的概念。

3.1 数据链路层的三个基本问题

无论使用什么协议(PPP或以太网),都必须解决这三个问题。

3.1.1 封装成帧 (Framing)

复制代码
   在一段数据的前后分别添加首部和尾部,构成一个帧。

   帧定界符:用于接收端识别帧的开始(SOH, 0x01)和结束(EOT, 0x04)。

MTU (最大传送单元) :帧的数据部分(Payload)的最大长度,以太网默认为 1500 字节

3.1.2 透明传输 (Transparent Transmission)

问题:如果数据中恰好出现了与"帧定界符"一样的比特组合,接收端会误以为帧结束了。

解决方法

字节填充 (Byte Stuffing):在数据中出现的控制字符前插入转义字符(ESC)。

零比特填充 (Bit Stuffing):在二进制数据流中,每出现 5 个连续的 1,就强行插入一个 0(保证不会出现 6 个连续的 1 作为标志位)。

3.1.3 差错检测 (Error Detection) ------ CRC必考

传输过程中可能会出现比特差错(0变1,1变0)。

循环冗余检验 (CRC)

校验码(冗余码):取最高位的,16

3.2 点对点协议 (PPP)

用户接入互联网最常用的协议(如拨号上网)。

特点:简单、支持多种网络层协议、支持动态IP分配。

组成

  1. 封装IP数据报的方法。
  2. LCP (链路控制协议):建立、配置和测试数据链路连接。
  3. NCP (网络控制协议):支持不同的网络层协议。

注意 :PPP协议不使用CSMA/CD,它是全双工的。

3.3 广播信道与以太网 (Ethernet) ------ 核心

3.3.1 CSMA/CD 协议

载波监听多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection)

多点接入 (MA):总线型网络,许多计算机连在一根线上。

载波监听 (CS):发送前先监听,"有线忙则不等,空闲则发送"。

碰撞检测 (CD):边发送边监听,"如果发生冲突,立即停止发送"。

3.3.2 争用期与最短帧长 (计算题必考)

电磁波在1km电缆的传播时延约为 5μs。

争用期

发送端发出数据,最坏情况下需要 2倍的传播时延 才能知道是否发生了碰撞(一来一回)。

以太网规定争用期为 51.2μs。

最短帧长

为了确保发送方在发送完毕之前能检测到碰撞,帧必须足够长。

考点结论 :凡是长度小于 64字节 的帧,都是由于冲突而异常中止的无效帧

3.3.3 二进制指数类型退避算法

发生碰撞后,为了降低再次碰撞的概率,采用该算法等待一段时间。

3.3.4 MAC 地址

硬件地址/物理地址,48位 (6字节),全球唯一。

格式:00-AA-22-BB-CC-DD

广播地址FF-FF-FF-FF-FF-FF(全1)。

3.4 扩展以太网 (集线器 vs 交换机)

这是面试和考试中最喜欢问的设备对比。

特性 集线器 (Hub) 交换机 (Switch)
工作层次 物理层 (1层) 数据链路层 (2层)
原理 纯粹的信号放大和转发(再生整形) 存储转发,根据MAC地址表转发
带宽 所有端口共享带宽(10M Hub,10口,每口1M) 每个端口独占带宽
冲突域 所有端口在一个冲突域(Collision Domain) 每个端口是一个独立的冲突域
广播域 所有端口在一个广播域 所有端口在一个广播域(VLAN除外)
传输模式 半双工 全双工

3.4.1 交换机的自学习算法 (Self-Learning)

  1. 交换机收到一帧,记录 {源MAC, 进入端口} 到交换表。

  2. 检查交换表是否有 目的MAC

    :直接从对应端口转发(明确转发)。

    :向除来源端口外的所有端口转发(泛洪 Flooding)。

  3. 表项有老化时间(TTL),过期删除。

3.5 虚拟局域网 (VLAN)

定义:将局域网内的设备逻辑地划分成一个个网段,不考虑物理位置。

核心作用隔离广播域,抑制广播风暴,提高安全性。

802.1Q 帧 :在以太网帧的源地址和类型之间插入 4字节 的VLAN标签 (Tag)。

3.6 第三章 常见面试/考试题

  1. 简述CSMA/CD的工作流程?

    复制代码
         先听后发,边听边发,冲突停止,随机延迟后重发。
  2. 为什么以太网要有最短帧长?

    复制代码
         只要发送方在发送完这个最短帧之前没有检测到碰撞,那么后续的传输就不会发生碰撞。如果帧太短,发送方可能发完了还没检测到早该到达的碰撞信号,误以为发送成功。
  3. 交换机和路由器的区别?

    复制代码
          交换机在L2(基于MAC转发),隔离冲突域,不隔离广播域。
    
          路由器在L3(基于IP转发),隔离广播域。

第四章:网络层 (Network Layer)

复习重点指南: 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 核心考点 (重灾区):

  1. IP地址与子网划分 :这是必考计算题!包括子网掩码、网络号、广播地址、有效主机范围的计算。
  2. CIDR (无分类编址):路由聚合(构造超网)。
  3. ARP协议:IP地址到MAC地址的解析过程。
  4. 路由选择协议:RIP (距离向量) vs OSPF (链路状态) 的对比。
  5. IP数据报格式:TTL、片偏移(分片)的计算。

4.1 网际协议 IP (Internet Protocol)

4.1.1 虚拟互连网络

将各种物理网络(如以太网、WiFi)互连起来,在网络层看起来像是一个统一的网络。

中间设备

  • 物理层:转发器 (Repeater) / 集线器 (Hub)
  • 数据链路层:网桥 (Bridge) / 交换机 (Switch)
  • 网络层:路由器 (Router) ------ 本章主角
  • 网络层以上:网关 (Gateway)

4.1.2 IP 数据报格式 (关键字段)

  • 总长度:首部 + 数据。
  • 标识 (Identification):计数器,用于分片重组。
  • 标志 (Flags):MF=1 (还有分片), DF=1 (不能分片)。
  • 片偏移 (Fragment Offset) :分片在原分组中的相对位置,以 8字节 为单位。
  • 生存时间 (TTL):防止数据报在网络中兜圈子。每经过一个路由器减 1,为 0 时丢弃。
  • 协议 (Protocol):指出数据部分是 TCP (6) 还是 UDP (17) 还是 ICMP (1)。
  • 首部校验和只检验首部,不检验数据部分。

4.2 IP 地址与子网划分 (计算题核心)

4.2.1 分类的 IP 地址 (传统)

IP地址 = <网络号 net-id, 主机号 host-id> (共32位)

类别 开头位 网络号范围 默认子网掩码 最大网络数 最大主机数
A类 0... 1 ~ 126 255.0.0.0 (/8) 2^7-2 2^{24}-2
B类 10... 128.0 ~ 191.255 255.255.0.0 (/16) 2^{14} 2^{16}-2
C类 110... 192.0.0 ~ 223.255.255 255.255.255.0 (/24) 2^{21} 2^8-2

注意:

全0 表示本网络;全1 表示广播。

127.x.x.x 是环回测试地址(Loopback),不指派。

计算主机数时要 减2(减去全0的网络地址和全1的广播地址)。

4.2.2 子网划分 (Subnetting)

原理:从主机号借用 n 位作为子网号。

IP地址 = <网络号, 子网号, 主机号>

子网掩码 (Subnet Mask)

  • 网络号+子网号部分全为 1,主机号部分全为 0。
  • (IP 地址) AND (子网掩码) = 网络地址

经典例题: 已知 IP 地址 141.14.72.24,子网掩码 255.255.192.0。求网络地址。 解:

  1. IP: 141.14.01001000.00011000
  2. Mask: 255.255.11000000.00000000 (/18)
  3. AND运算: 141.14.01000000.00000000 -> 141.14.64.0

答案 :网络地址是 141.14.64.0

4.2.3 无分类编址 CIDR (构造超网)

消除了 A/B/C 类的概念,使用 斜线记法IP地址/网络前缀位数

路由聚合 (Route Aggregation)

  • 将多个子网合并成一个更大的网络,减少路由表条目。
  • 方法 :找最长前缀匹配 (Longest Prefix Match)

聚合计算例题: 有以下四个地址: 192.168.0.0/24192.168.1.0/24192.168.2.0/24192.168.3.0/24解: 转换为二进制看第三字节: 0: 00000000 1: 00000001 2: 00000010 3: 00000011 前 6 位都是 0 (000000xx),加上前两字节的 16 位,共 22 位相同。 聚合后地址:192.168.0.0/22。

4.3 地址解析协议 ARP

作用 :解决 已知 IP 地址,求 MAC 地址 的问题。

工作流程

  1. 主机 A 查本地 ARP 缓存,若无,则广播发送 ARP 请求分组:"我的 IP 是 A,MAC 是 MA,我想找 IP 为 B 的 MAC 地址"。
  2. 局域网内所有主机收到,但只有主机 B 单播响应:"我是 B,我的 MAC 是 MB"。
  3. 主机 A 收到后,写入 ARP 缓存。

注意 :ARP 是解决同一个局域网 上的主机或路由器的映射。如果要发往外网,ARP 请求的是默认网关 (路由器) 的 MAC 地址。

4.4 网际控制报文协议 ICMP

为了更有效地转发 IP 数据报和提高交付成功的机会。

两种类型

  1. ICMP 差错报告报文:终点不可达、时间超过 (TTL=0)、参数问题、改变路由 (Redirect)。
  2. ICMP 询问报文:回送请求和回答 (Ping)。

应用

PING:使用 ICMP 回送请求与回答。

Traceroute (Linux) / tracert (Windows):利用 TTL 字段和 ICMP 时间超过报文。

4.5 路由选择协议 (Routing Protocols)

4.5.1 自治系统 AS (Autonomous System)

IGP (内部网关协议):AS 内部使用 (RIP, OSPF)。

EGP (外部网关协议):AS 之间使用 (BGP)。

4.5.2 常见协议对比 (必考简答/选择)

协议 RIP (Routing Information Protocol) OSPF (Open Shortest Path First) BGP (Border Gateway Protocol)
类型 内部 (IGP) 内部 (IGP) 外部 (EGP)
算法 距离向量 (Distance Vector) 链路状态 (Link State) 路径向量
度量值 跳数 (Hop Count),最大15 带宽、延迟等代价 路径属性
交换对象 仅和相邻路由器交换 向本自治系统所有路由器广播 (洪泛) 与其他 AS 的邻站交换
交换内容 自己的整个路由表 与自己相邻链路的状态 路径向量信息
收敛速度 慢 (坏消息传得慢) -
协议层 基于 UDP (端口520) 直接封装在 IP 数据报 (协议号89) 基于 TCP (端口179)

RIP 特点:"好消息传得快,坏消息传得慢"(存在路由环路问题)。

OSPF 特点:使用 Dijkstra 最短路径算法 (SPF),收敛快,无环路,适合大网络。

4.6 IPV6 与其他

IPv6:128 位地址,冒号十六进制记法。

  • 解决了 IPv4 地址耗尽问题。
  • 首部固定 40 字节,取消了校验和字段(加快路由器处理)。

VPN (虚拟专用网):利用公网隧道传输私有数据。

NAT (网络地址转换)

  • 解决内网主机访问外网的问题。
  • 将内网私有 IP 转换为公网全局 IP。
  • 私有 IP 范围
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16

4.7 第四章 常见面试/考试题

  1. IP地址和MAC地址的区别?

    IP是逻辑地址,用于网络层寻址(跨网段);MAC是物理地址,用于链路层寻址(局域网内)。

  2. 路由器分组转发流程?

    提取目的IP → (IP AND 掩码) ?= 直连网络 →査路由表(最长前缀匹配) → 转发下一跳 → ARP解析下一跳MAC → 封装帧发送。

  3. 什么是"坏消息传得慢"?

    在RIP协议中,当网络出现故障时,路由器之间可能需要经过多次交换才能知道某个目标不可达,甚至形成路由环路。

  4. 计算题:某单位分配到一个B类地址 129.250.0.0,需要划分出 4000 台主机的子网,子网掩码是多少?

第五章:运输层 (Transport Layer)

复习重点指南: 运输层为应用进程之间提供端到端的逻辑通信。 核心考点 (背诵级别):

  1. TCP与UDP的区别:必考简答题/面试题。
  2. TCP三次握手与四次挥手:每一个状态、每一个标志位(SYN/ACK/FIN)都要清楚,包括"为什么要三次握手"。
  3. 可靠传输原理:滑动窗口机制、超时重传。
  4. TCP拥塞控制:慢开始、拥塞避免、快重传、快恢复四种算法(看图填空或绘图题)。

5.1 运输层概述

5.1.1 进程之间的通信

网络层负责主机到主机的通信(IP地址)。

运输层负责主机中应用进程到应用进程的通信(端口号)。

复用 (Multiplexing):多个进程同时使用一个运输层协议传输数据。

分用 (Demultiplexing):运输层收到数据后,根据端口号交付给不同的进程。

5.1.2 两个主要协议

  1. 用户数据报协议 UDP (User Datagram Protocol)

    无连接、不可靠、面向报文。

  2. 传输控制协议 TCP (Transmission Control Protocol)

    面向连接、可靠、面向字节流。

5.1.3 端口号 (Port)

16位,范围 0~65535。

熟知端口 (0~1023)

  • FTP: 21
  • SSH: 22
  • Telnet: 23
  • SMTP: 25
  • DNS: 53 (同时用UDP和TCP)
  • HTTP: 80
  • HTTPS: 443

5.2 用户数据报协议 UDP

特点

  1. 无连接:发送数据前不需要建立连接。
  2. 尽最大努力交付:不保证可靠交付。
  3. 面向报文:应用层给多长,UDP就发多长(不拆分也不合并)。
  4. 没有拥塞控制:网络拥塞不会降低发送速率(适合实时视频、IP电话)。
  5. 首部开销小 :只有 8 字节
  • 首部格式
    • 源端口 (2B) | 目的端口 (2B) | 长度 (2B) | 检验和 (2B)

5.3 传输控制协议 TCP (核心)

5.3.1 TCP 主要特点

  1. 面向连接:点对点 (1对1)。
  2. 可靠交付:无差错、不丢失、不重复、按序到达。
  3. 全双工通信:双方设有发送缓存和接收缓存。
  4. 面向字节流:将数据看作一连串无结构的字节流。

5.3.2 TCP 报文段首部 (20字节固定)

序号 (Seq):本报文段数据的第一个字节的序号。

确认号 (Ack)期望收到对方下一个报文段的第一个字节的序号。

口诀:若 Ack = N,则说明 N-1 为止的数据都收到了。

数据偏移:首部长度。

控制位 (Flags)

  • URG:紧急指针有效。
  • ACK:确认号有效(建立连接后所有报文段都必须把 ACK 置 1)。
  • PSH:尽快交付应用进程。
  • RST:复位,连接出错,需重新建立。
  • SYN :同步,用于建立连接
  • FIN :终止,用于释放连接

窗口 :也就是接收窗口 (rwnd),告诉对方:"我现在还能接收多少数据",用于流量控制

5.4 TCP 可靠传输的实现

5.4.1 滑动窗口 (Sliding Window)

发送窗口:在没有收到确认的情况下,可以连续把窗口内的数据发送出去。

窗口前沿:向前移动(收到确认);窗口后沿:不动或前移(不可后退)。

超时重传时间 (RTO):必须略大于加权平均往返时间 (RTTs)。

5.5 TCP 流量控制 (Flow Control)

目的:让发送方发慢点,让接收方来得及接收。

手段 :利用 TCP 首部中的 窗口 (rwnd) 字段。

零窗口问题 :若 rwnd=0,发送方暂停发送。为防止死锁,发送方会启动持续计时器,定期发送零窗口探测报文。

5.6 TCP 拥塞控制 (Congestion Control) ------ 必考图解

目的:防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。

拥塞窗口 (cwnd):发送方维护的一个状态变量。

发送窗口上限 = min [ rwnd, cwnd ]。

四大算法

  1. 慢开始 (Slow Start)

    cwnd 初始为 1,每收到一个轮次的确认,cwnd 加倍 (1, 2, 4, 8...)。

    指数增长,直到达到慢开始门限 (ssthresh)

  2. 拥塞避免 (Congestion Avoidance)

    达到 ssthresh 后,cwnd 变为加法增大 (每轮次 +1)。

    线性增长。

  3. 快重传 (Fast Retransmit)

    接收方每收到一个失序报文,就立即重复确认(发送重复ACK)。

    发送方只要连续收到 3个重复确认,就立即重传丢失的报文,不必等待计时器到期。

  4. 快恢复 (Fast Recovery)

    当发生快重传时,把 ssthresh 减半,然后 cwnd 设置为新的 ssthresh,执行拥塞避免(有的版本是 ssthresh + 3)。

    区别:不重新执行慢开始(不降为1)。

5.7 TCP 连接管理 (必背!必背!必背!)

5.7.1 三次握手 (Connection Establishment)

A (Client) -> B (Server)

  1. SYN_SENT : A 发送 SYN=1, seq=x。 (A: 我想连你)
  2. SYN_RCVD : B 回复 SYN=1, ACK=1, seq=y, ack=x+1。 (B: 好的,我也想连你,收到你的x了)
  3. ESTABLISHED : A 回复 ACK=1, seq=x+1, ack=y+1。 (A: 好的,收到你的y了,连接建立!)

为什么是三次? 防止已失效的连接请求报文段又传到了服务端,产生错误。如果只有两次,Server 回复了旧请求就傻傻等待,浪费资源。

5.7.2 四次挥手 (Connection Release)

A (Client) -> B (Server) (假设A先关闭)

  1. FIN_WAIT_1 : A 发送 FIN=1, seq=u。 (A: 我没数据发了,想断开)

  2. CLOSE_WAIT : B 回复 ACK=1, seq=v, ack=u+1。 (B: 知道了,但我的数据还没发完,你先等着)

    此时 A 不能发数据,但能收数据(半关闭状态)。

  3. LAST_ACK : B 发完数据后,发送 FIN=1, ACK=1, seq=w, ack=u+1。 (B: 我也发完了,可以断了)

  4. TIME_WAIT : A 回复 ACK=1, seq=u+1, ack=w+1。 (A: 好的,再见)

    注意 :A 发完最后一条后,必须等待 2MSL (最长报文段寿命) 的时间,才真正关闭 (CLOSED)。

为什么要等待 2MSL?

  1. 保证 A 发送的最后一个 ACK 报文段能够到达 B(防止 B 没收到重发 FIN)。
  2. 防止"已失效的连接请求"出现在下一次连接中。

5.8 第五章 常见面试/考试题

  1. TCP 和 UDP 的区别?

    TCP 面向连接、可靠、慢、开销大、字节流(适合文件传输、邮件)。

    UDP 无连接、不可靠、快、开销小、报文(适合视频会议、直播)。

  2. TCP 为什么要流量控制?为什么要拥塞控制?区别是什么?

    流量控制是点对点,为了照顾接收方的接收能力(rwnd)。

    拥塞控制是全局性,为了照顾整个网络的负载能力(cwnd)。

  3. 在浏览器输入 URL 到显示页面,用到了哪些层?

    应用层 (HTTP, DNS), 运输层 (TCP/UDP), 网络层 (IP, ARP), 链路层, 物理层。

  4. 若 ssthresh=16, cwnd=24, 发生超时,cwnd 变为多少?

    发生超时(严重拥塞):ssthresh 变为当前 cwnd 的一半 (12),cwnd 重置为 1,重新慢开始。

第六章:应用层 (Application Layer)

复习重点指南: 应用层直接为用户的应用进程提供服务。 核心考点:

  1. DNS域名系统:递归查询与迭代查询的区别。
  2. HTTP协议:URL格式、持续连接与非持续连接、常见状态码。
  3. 电子邮件协议:SMTP(推)与 POP3/IMAP(拉)的区别。
  4. DHCP协议:即插即用联网机制。

6.1 域名系统 DNS (Domain Name System)

6.1.1 概述

  • 作用 :将人类易于记忆的主机名 (如 www.baidu.com) 转换为机器易于处理的 IP 地址 (如 14.215.177.39)。
  • 特点 :分布式数据库系统,运行在 UDP 上,端口 53

6.1.2 域名结构

  • 采用层次树状结构。
  • host.sub.company.top (主机名.三级域名.二级域名.顶级域名)
  • 顶级域名 (TLD)
    • 国家顶级域名:.cn, .us, .uk
    • 通用顶级域名:.com, .net, .org, .edu

6.1.3 域名服务器

  1. 根域名服务器:最高层次,知道所有顶级域名服务器的地址。
  2. 顶级域名服务器 (TLD Server):管理注册在该顶级域名下的所有二级域名。
  3. 权限域名服务器:负责一个区的域名解析。
  4. 本地域名服务器:当主机发出 DNS 查询请求时,首先发给本地域名服务器(ISP提供)。

6.1.4 域名解析过程 (必考流程)

  1. 递归查询 (Recursive)

    主机 -> 本地DNS:如果本地DNS不知道,它负责去问根DNS,最后把结果告诉主机。(主机只发一次请求)

  2. 迭代查询 (Iterative)

    本地DNS -> 根DNS:根DNS说"我不知道,但你可以去问 .com 服务器"。

    本地DNS -> .com DNS:.com 说"我不知道,但你可以去问 baidu.com 服务器"。

    本地DNS -> baidu.com DNS:找到了!

    即:本地DNS服务器跑腿,根DNS只指路。

6.2 文件传输协议 FTP (File Transfer Protocol)

特点 :基于 TCP,可靠传输。

双连接模式 (防火墙配置常考点):

  1. 控制连接 (端口 21) :用于传输控制信息(用户名、密码、命令),全程保持打开
  2. 数据连接 (端口 20) :用于实际传输文件,每次传输文件时建立,传完关闭

6.3 万维网 WWW 与 HTTP 协议

6.3.1 统一资源定位符 URL

格式:<协议>://<主机>:<端口>/<路径>

例:http://www.example.com:80/index.html

6.3.2 超文本传输协议 HTTP (HyperText Transfer Protocol)

特点

面向事务,无状态 (Stateless)。

使用 TCP 连接,端口 80

连接方式 (HTTP/1.0 vs HTTP/1.1)

  1. 非持续连接 (Non-persistent):每个请求/响应都要建立一次 TCP 连接 (3次握手+数据+4次挥手),效率低。

  2. 持续连接 (Persistent / Keep-alive):建立一次 TCP 连接后,后续请求复用该连接 (HTTP/1.1 默认)。

    流水线方式:不必等收到响应就发送下一个请求。

常见 HTTP 方法

  • GET:请求读取资源。
  • POST:提交数据(如表单)。
  • HEAD:只请求首部,不返回实体主体。

HTTP 状态码 (Status Codes) ------ 背下来!

  • 2xx (成功)200 OK (请求成功)。
  • 3xx (重定向)301 Moved Permanently (永久移动)。
  • 4xx (客户端错误)404 Not Found (资源没找到), 403 Forbidden (禁止访问)。
  • 5xx (服务器错误)500 Internal Server Error (服务器内部错误), 502 Bad Gateway (网关错误)。

6.4 电子邮件 (E-mail)

6.4.1 组成构件

用户代理 (User Agent):如 Outlook, Foxmail。

邮件服务器 (Mail Server):发送和接收邮件。

协议:SMTP, POP3, IMAP。

6.4.2 邮件传输协议

  1. SMTP (Simple Mail Transfer Protocol)

    发送邮件协议(推 Push)。

    用户 -> 发送方邮件服务器 -> 接收方邮件服务器。

    只能传 ASCII 码(传输非文本需用 MIME 扩展)。

  2. POP3 (Post Office Protocol v3)

    读取邮件协议(拉 Pull)。

    特点:下载并删除(默认),或者下载保留。

  3. IMAP (Internet Message Access Protocol)

    读取邮件协议。

    特点:邮件保留在服务器上,支持在服务器上创建文件夹,多端同步。

Web邮箱 (如 Gmail, QQ邮箱):

浏览器 <-> 服务器:使用 HTTP

服务器 <-> 服务器:依然使用 SMTP

6.5 动态主机配置协议 DHCP

作用:自动给局域网内的主机分配 IP 地址、子网掩码、默认网关等信息。

特点

应用层协议,基于 UDP

即插即用 (Plug-and-Play)

  • 工作流程 (四步)
    1. DHCP DISCOVER:客户机广播"有没有DHCP服务器?"(源0.0.0.0,目255.255.255.255)。
    2. DHCP OFFER:服务器单播/广播"我有,我给你个IP 192.168.1.100"。
    3. DHCP REQUEST:客户机广播"好的,我选你了"(因为可能有多个服务器给Offer)。
    4. DHCP ACK:服务器确认。

6.6 第六章 常见面试/考试题

  1. 浏览器输入URL到显示页面的全过程? (终极综合题)

    1. DNS解析:将域名转为IP。
    2. TCP连接:与服务器建立3次握手。
    3. 发送HTTP请求:GET /index.html。
    4. 服务器处理请求:返回HTML响应。
    5. 浏览器渲染页面
    6. 断开连接:TCP 4次挥手。
  2. HTTP和HTTPS的区别?

    HTTP 明文传输,端口80,不安全。

    HTTPS = HTTP + SSL/TLS,加密传输,端口443,安全,需要CA证书。

  3. Cookie 和 Session 的区别?

    Cookie 存放在客户端(浏览器),用于识别用户身份。

    Session 存放在服务器端,记录用户状态。

  4. GET 和 POST 的区别?

    GET 参数在 URL 中,不安全,有长度限制,用于获取数据。

    POST 参数在 Request Body 中,相对安全,无长度限制,用于提交数据。

相关推荐
黑岚樱梦6 小时前
Linux系统编程
java·开发语言·前端
Kristen_YXQDN6 小时前
PyCharm 中 pytest 运行 python 测试文件报错:D:\Python_file\.venv\Scripts\python.exe: No module named pytest
运维·开发语言·python·pycharm·pytest
IMPYLH6 小时前
Lua 的 Debug(调试) 模块
开发语言·笔记·python·单元测试·lua·fastapi
九死九歌6 小时前
【Sympydantic】使用sympydantic,利用pydantic告别numpy与pytorch编程中,tensor形状带来的烦人痛点!
开发语言·pytorch·python·机器学习·numpy·pydantic
Kiri霧6 小时前
Go切片详解
开发语言·后端·golang
二进制coder6 小时前
C++ 中的 Interface:概念、实现与应用详解
开发语言·c++
古城小栈6 小时前
Go 与 Rust:系统编程语言的竞争与融合
开发语言·golang·rust
随风一样自由6 小时前
React编码时,什么时候用js文件,什么时候用jsx文件?
开发语言·javascript·react.js
bing.shao6 小时前
Golang select多路复用踩坑
数据库·golang·php