一、OSI七层模型

  • 应用层:为最终用户提供网络服务接口,包含各种应用程序协议,如HTTP、FTP、SMTP、DNS等。
  • 表示层:处理数据的表示、安全和压缩,负责数据格式转换、加密解密等。
  • 会话层:管理用户间的会话,负责建立、维护和终止会话
  • 传输层:定义端口号,负责数据的分割、流控和差错校验,主要协议有TCP和UDP。
  • 网络层:负责逻辑地址寻址和路径选择,主要协议包括IP、ICMP等。
  • 数据链路层:建立逻辑连接,进行硬件地址寻址和差错校验,主要协议有ARP。
  • 物理层:负责建立、维护和断开物理连接,处理通信信道上的原始比特流传输。

二、TCP/IP模型

TCP/IP模型分为四层,自下而上分别为

  1. 网络接口层
  2. 网络层
  3. 传输层(Transport)
  4. 应用层(Application)

但为了方便学习,教学中将网络接口层拆成数据链路层和物理层进行学习,以下是按这5层的学习重点描述:

(1)应用层

应用层是TCP/IP模型中的最高层,直接面向用户,为应用程序提供网络服务。常见的应用层协议如下所示:

DNS(域名系统–D**omain Name **System)

1. 基本概念

  • 作用将域名解析为IP地址,实现主机名到IP地址的映射。
  • 传输层协议:使用UDP协议,DNS服务器在53端口(无论服务端还是本地都是,因为本地有个本地域名服务器)进行监听。
  • 分层结构根域名服务器 → 顶级域名服务器 → 权威域名服务器 → 本地域名服务器

2.域名结构:

www.ldy.com域名为例,是自下而上进行级别递增标记的

  • www:三级域名
  • ldy:二级域名
  • com:顶级域名

域名结构图如下所示:

image-20260112163938988

3.域名解析过程

域名解析方式分为两类,一类是递归查询、一类是迭代加递归查询

image-20260112232313462

1
2
3
4
5
6
7
8
9
10
以迭代加递归为例:
用户请求 www.example.com
1. 查询本地hosts文件 → 若无则向本地DNS服务器查询
2. 本地域名服务器缓存中查找 → 若无则向根域名服务器查询
3. 根域名服务器返回 .com 顶级域名服务器地址
4. 本地域名服务器向 .com 服务器查询
5. .com 服务器返回 example.com 权威服务器地址
6. 本地域名服务器向权威服务器查询
7. 权威服务器返回 www.example.com 的IP地址
8. 本地域名服务器缓存该记录并返回给用户

FTP(文件传输协议)

1. 基本结构

  • 传输层协议:TCP

  • 控制连接:专门负责传输命令和响应信息。服务端使用21端口,客户端使用任意端口(>1024)

  • 数据连接:用于实际传输文件。

    • 主动模式(PORT)数据连接由服务器主动发起,前提是客户端告知服务端它的的数据连接端口号

      连接方向 源地址 源端口 目标地址 目标端口
      数据连接 服务器 20 客户端 随机端口(>1024)

      工作流程:

      1. 客户端用随机端口N连接服务器的21端口(控制连接)
      2. 客户端通过PORT命令告诉服务器”请连接我的N+1端口”
      3. 服务器从20端口主动连接客户端指定的端口
      4. 通过这条连接传输文件数据
    • 被动模式(PASV)数据连接由客户端主动发起,前提是服务端告知客户端它的数据连接端口

      连接方向 源地址 源端口 目标地址 目标端口
      数据连接 客户端 随机端口(>1024) 服务器 随机端口(>1024)

      工作流程:

      1. 客户端用随机端口连接服务器的21端口(控制连接)
      2. 客户端发送PASV命令请求被动模式
      3. 服务器开启一个随机高位端口(如50000),并告诉客户端
      4. 客户端用新的随机端口连接服务器指定的高位端口
      5. 通过这条连接传输文件数据

    image-20260112165802169

电子邮件

1. 基本概念

电子邮件系统由三个主要部分组成:

  • 用户代理:用户使用的邮件客户端(如 Outlook、Gmail 客户端等)。
  • 邮件服务器:负责邮件的存储和转发。
  • 协议:用于发送和接收邮件的标准协议,如 SMTP(发)、POP3(收)、IMAP(收) 等。

image-20260112170226828

2.SMTP(简单邮件传输协议–Simple Mail Transfer Protocol):

  • 作用:用于发送邮件(从客户端到服务器,或服务器之间)。
  • 传输层协议TCP,使用端口 25
  • 特点
    • 只能传输 7 位 ASCII 文本(即正文里每个字节的最高位必须为0),无法直接传输二进制文件。
    • 使用 命令/响应 交互模式。
    • 邮件正文以 “.” 单独一行结束。

3.MIME(通用因特网邮件扩充协议–Multipurpose Internet Mail Extensions):

  • 作用:扩展 SMTP,使其能传输非 ASCII 文本(如图片、音频、视频等)。
  • 实现方式:在邮件头部添加 Content-Type 字段,定义数据类型和编码方式。
  • 常见类型text/plainimage/jpegapplication/pdf 等。

4.POP3(邮局协议–Post Office Protocol -Version 3):

  • 作用:用于从邮件服务器下载邮件到本地
  • 传输层协议TCP,使用端口 110(默认)或 995(SSL加密)。
  • 工作模式
    • 下载并删除:邮件下载后从服务器删除。
    • 下载保留:邮件保留在服务器上。
  • 特点:简单、轻量,但功能有限(如无法同步文件夹)。

5.IMAP(网际报文存取协议–Internet Mail Access Protocol):

  • 作用:IMAP协议比POP3协议更加复杂,允许用户在服务器上直接管理邮件,支持同步和多文件夹操作。
  • 传输层协议TCP,使用端口 143(默认)或 993(SSL加密)。
  • 特点
    • 邮件始终保存在服务器。
    • 支持多设备同步。
    • 可创建和管理远程文件夹。

6.基于万维网的电子邮件

  • 特点:用户通过 Web 浏览器(如 Gmail、Outlook Web)发送和访问邮件。发送和接收邮件均是使用HTTP协议只有在邮件服务器之间传递邮件才会使用SMTP协议
  • 优点:无需安装客户端,跨平台使用方便。

image-20260112235833888

HTTP(超文本传输协议)

1. 基本概念

  • 作用:用于客户端(如浏览器)与服务器之间请求和传输超文本(如网页、图片等)的应用层协议
  • 传输层协议TCP,默认端口 80(HTTP)或 443(HTTPS)。
  • 特点
    • 无状态协议:服务器不保存客户端状态信息。
    • 无连接协议每次请求响应后连接关闭(HTTP/1.0),但 HTTP/1.1 引入了持久连接(Keep-Alive)
    • 请求/响应模型:客户端发起请求,服务器返回响应。

2. HTTP 报文结构

请求报文:

1
2
3
4
5
方法(如GET、POST) URL 协议版本
头部字段1: 值1
头部字段2: 值2

请求正文(可选)

image-20260113000651366

响应报文:

1
2
3
4
5
协议版本 状态码 状态短语
头部字段1: 值1
头部字段2: 值2

响应正文(可选)

image-20260113000753490

3. HTTP 方法(请求方法)

方法 说明
GET 请求指定资源,无请求体
POST 提交数据,有请求体
PUT 上传/替换指定资源
DELETE 删除指定资源
HEAD 同GET,但只返回响应头
OPTIONS 获取服务器支持的HTTP方法

4. 常见状态码

状态码 类别 说明
1xx 信息类 请求已接收,继续处理
2xx 成功类 请求成功处理
200 OK 请求成功
201 Created 资源创建成功
3xx 重定向类 需要进一步操作
301 Moved Permanently 永久重定向
302 Found 临时重定向
4xx 客户端错误 客户端请求有误
400 Bad Request 请求语法错误
401 Unauthorized 未授权
403 Forbidden 服务器拒绝请求
404 Not Found 资源未找到
5xx 服务器错误 服务器处理出错
500 Internal Server Error 服务器内部错误
502 Bad Gateway 网关错误
503 Service Unavailable 服务不可用

5. HTTP 版本演进

HTTP/1.0

  • 每个请求/响应建立一个TCP连接,用完即关。
  • 效率低,延迟高。

HTTP/1.1(主流版本)

  • 持久连接:可在同一个连接上发送多个请求。
  • 管道化:允许连续发送多个请求,但响应必须按顺序返回。
  • 发送方式
    • 流水线:客户端必须先收到上一个请求的响应,才能发下一个请求;一条 TCP 连接上同一时间只有一趟「请求→响应」在跑。
    • 非流水线:客户端不必等前一个响应回来,就可以把多个请求连续发出;服务器必须按请求顺序依次返回响应,从而把多条往返的等待时间重叠起来,提高吞吐量

HTTP/2

  • 二进制分帧:不再用文本头,全部切成帧,解析更快、体积更小。
  • 多路复用:一条 TCP 连接上可同时跑任意数量请求/响应,真正并行,消除“队头阻塞”。
  • 头部压缩(HPACK):重复头字段只传索引,节省 50%+ 流量。
  • 服务器推送:服务端可主动把“即将用到的”资源推给客户端,减少往返。
  • 兼容 1.1 语义:方法、状态码、URI 不变,只是“换引擎不换壳”。

HTTP/3(基于 QUIC)

  • 传输层换血:放弃 TCP,改用基于 UDP 的 QUIC 协议;内置 TLS 1.3,默认加密。
  • 连接迁移:网络切换(4G → Wi-Fi)时,连接 ID 不变,瞬间迁移,不掉线。
  • 0-RTT 恢复:首次握手后,再次访问服务器可 0 往返发请求,延迟极低。
  • 消除 TCP 队头阻塞:单个丢包只影响对应流,其他流继续传输。
  • 版本号放帧头:未来升级只需更新 QUIC 层,应用层无需改动。

image-20260112172433726

(2)传输层

传输层是计算机网络体系结构中的关键一层,负责为运行在不同主机上的应用进程之间提供逻辑通信。它并不关心数据在物理链路上的具体传输方式,而是专注于端到端的通信服务。

传输层的通用功能

  1. 复用与分用

  • 复用:发送方的多个应用进程可使用同一个传输层协议发送数据。
  • 分用:接收方根据端口号将数据正确交付给对应的应用进程。
  1. 端到端通信

  • 传输层提供的是进程到进程的通信,而非主机到主机。
  • 通过端口号标识不同应用进程。
  1. 差错检测

  • 传输层会对数据进行检查,确保数据的完整性(TCP和UDP有校验和)。
  • 是否重传取决于协议(TCP会重传,UDP不会)。

TCP(传输控制协议)

1. 核心特点

  • 面向连接:通信前需建立连接,通信后释放连接。
  • 可靠传输:通过一系列机制确保数据正确、有序、不丢失。
  • 面向字节流:将数据视为无结构的字节流(UDP是面向报文的),无论传输多少个报文,在TCP看来都是一连串字节流。

tip:MSS(最大段长–Maximun Segment Size):一个TCP数据报最多可以携带多少的有效数据(不包括TCP首部),用于告知接收方,以便让接收方准备足够大的数据缓冲区。

2. TCP特有机制

  • 确认与重传机制:接收方发送ACK确认,发送方超时未收到ACK则重传。
  • 流量控制:通过滑动窗口防止发送方发送过快导致接收方缓冲区溢出。
  • 拥塞控制:防止网络过载,包括慢启动、拥塞避免、快速重传、快速恢复
  • 连接管理三次握手建立连接,四次挥手释放连接

3. TCP报文段结构

TCP报文 = TCP首部 + 数据

TCP首部:20B的固定首部 + 0-40B的可变大小

1
2
3
4
5
6
7
| 源端口 | 目的端口 |
| 序 号 |
| 确认号 |
| 数据偏移 | 保留 | 控制位(URG/ACK/PSH/RST/SYN/FIN) | 窗口大小 |
| 校验和 | 紧急指针 |
| 选项(可选) | 填充 |
| 数据 |

字段解释:

  • 序号(seq):标记数据部分的第一个字节在原始字节流中的位置。

  • 确认号(ack 或 ack_seq):用于反馈,表示序号在该确认号之前的所有字节都已经正确收到

  • 数据偏移4bit,表示TCP首部的长度,以4B为单位。因为15 x 4B = 60B,所以TCP首部最大60B

  • 控制位URG:1bit,紧急指针有效标志。=1时,表示该报文段中包含紧急数据,此时紧急指针字段有效

  • 控制位ACK:1bit,=0时,ack_seq无效;=1时,ack_seq有效。

  • 控制位PSH:1bit,推送标志。=1时,表示接收方应尽快将数据交付给上层应用进程,而不是等待缓冲区填满再交付。

  • 控制位RST:1bit,复位标志。=1时,表示连接出现严重错误,必须释放连接并重新建立。也可用于拒绝非法报文段或拒绝建立连接。

  • 控制位SYN:1bit,同步标志。=1表示这是一个连接请求或连接接受报文。只有握手1和握手2的SYN=1,其他所有TCP报文端都是SYN=0

  • 控制位FIN:1bit,结束标志。=1表示此报文段的发送方的数据已经全部发送完毕,要求释放传输连接。只有挥手1和挥手3的FIN=1

  • 窗口(rwnd)16bit,表示接收窗口的大小,表示接收方还能接收多少数据(以字节为单位)。是流量控制的关键

  • 校验和:原理和下面的UDP雷同,不在赘述。区别:TCP伪首部的协议字段是6。

  • 紧急指针紧急数据专用序号,原理和序号字段相同

  • 选项:可空。在握手1和握手2阶段,会在选项中协商双方的MSS(双方的MSS可以不同),

image-20260114015246687

4.建立连接

注意图中的重点部分

连接过程

image-20260114022451631

连接状态

image-20260114022650857

小问题:

从发出握手①,到客户端进程可以发送数据,至少需要多久?——1 RTT

从发出握手①,到服务器进程可以发送数据,至少需要多久?——1.5 RTT

5.释放连接

连接过程

image-20260114022942897

连接状态

image-20260114023111194

收到挥手3报文并发送挥手4之后,之所以要等待2MSL,是为了防止挥手4数据报丢失,在等待期间如果重复收到了挥手3,则重置等待时间,如果没有再次收到挥手3,则连接关闭。

MSL(最长报文段寿命):是TCP协议规定的一个人为固定的时间长度

6.可靠传输

一、序号机制

  • 连接建立时双方各自生成初始序号(ISN)。
  • 后续每个字节对应一个序号,段首部的 seq = 该段第一个字节的序号。

二、确认机制——“累积确认”

  • 收到 ACK=n 表示序号 < n 的所有字节已正确接收。
  • 返回 ACK 的时机(RFC 规定):
    1. 推迟确认:最多等 0.5 s,若期间有数据要发则“捎带”ACK;
    2. 连续收到两个满 MSS 段,立即 ACK;
    3. 收到失序段,立即重复 ACK(冗余 ACK)。

三、两种 ACK 段

  1. 专门确认:纯 ACK,无数据;
  2. 捎带确认:ACK 与数据同发,减少报文数量。

四、重传机制

  1. 超时重传
    每发一个段启动重传计时器(RTO),到期未确认则重传并重置计时器。
  2. 快速重传
    若连续收到 3 个相同的冗余 ACK,说明该 ACK 对应的段已丢失,立即重传此段,无需等超时。

image-20260114024138676

7.流量控制

定义:控制端到端的数据发送量,即依赖于通信对方的接收窗口大小动态调整发送窗口的大小,是局部的。

8.拥塞控制

定义:控制整个网络中每台主机的数据发送量,降低路由负载,是全局的。

术语

  • 拥塞窗口(cwnd) :单 TCP 连接允许注入网络的最大字节数(单位 MSS)。
  • 慢启动阈值(ssthresh)cwnd 增长方式的分界线;cwnd<ssthresh 用指数增长,≥ssthresh 用线性增长。

慢开始

  • 每收到 1 个 ACK,cwnd += 1 MSS(指数级翻倍);
  • 到达「慢启动阈值」ssthresh 后进入下一阶段。

拥塞避免

  • 每 RTT 只把 cwnd += 1 MSS(线性增);
  • 直到「出现丢包」。

如何判断网络拥塞:

  • 发出的每个报文段,都能顺利收到ACK – 不拥塞
  • 发出的报文段未能按时收到ACK,引发超时重传 – 严重拥塞,拥塞窗口置1
  • 收到冗余ACK,引发快速重传 – 有点拥塞,拥塞窗口大小减半

特别注意:发送方窗口的大小是拥塞控制和流量控制共同作用的结果:发送窗口 = min(cwnd拥塞窗口, rwnd接收方窗口)

UDP(用户数据报协议)

1. 核心特点

  • 无连接:无需建立连接,直接发送数据。
  • 不可靠传输:不保证数据到达、不保证顺序、不重传。
  • 面向报文:保留应用层报文边界,一次发送一个完整报文(不支持报文自动拆分和重装)

2. UDP适用场景

  • 实时应用(视频会议、直播)
  • DNS查询
  • 广播/多播通信
  • 简单请求/响应服务(如DHCP

3. UDP报文段结构

UDP数据报 = UDP首部 + 报文

UDP首部只占8B

UDP数据报理论最大长度=65535B,实际最大长度=65515B,因为IP数据报首部也有IP数据报长度记录,而IPv4首部要占用20B,IPv6首部要40B

1
2
3
16位源端口  16位目的端口 
16位长度(字节为单位,max=65515) 16位校验和(全0表示无需校验)
数据

image-20260114011718072

4.UDP差错检验方法

发送方生成校验和

UDP的检验和是发送方通过在UDP数据报首部添加12B的伪首部(不发送)后,将伪首部、UDP首部和数据部分以16bit进行分组并进行二进制相加(最高位需回卷),最终结果进行逐位取反得到的。

详细描述:

  1. 添加伪首部:在计算检验和之前,先添加12B伪首部,伪首部包含源IP地址、目的IP地址、0、协议号(17)和UDP长度(和UDP首部的UDP长度的值是一样的)。
  2. 计算检验和:将伪首部、UDP首部和数据部分以16bit为一组进行二进制加法,最高位进位需回卷
  3. 取反填入:将最终加法结果逐位取反,得到16位检验和,填入UDP首部的校验和字段。
  4. 移除伪首部:计算完成后去掉伪首部,将UDP数据报交给网络层封装成IP数据报。

image-20260114012819396

接收方通过校验和检验

① 网络层向传输层递交 UDP 数据报

② 传输层在 UDP 数据报之前,添加伪首部(和发送方构造的伪首部一致)

③ 把伪首部、UDP 首部、数据部分以 16 bit 为一组,进行二进制加法(最高位产生的进位需要回卷)

如果加法结果为全 1,说明没有比特错误,于是接收该 UDP 数据报,并根据目的端口号,向应用层递交报文。如果加法结果不是全 1,说明有差错,于是丢弃该 UDP 数据报

image-20260114013559206

tip:UDP差错校验法和网络层的IP分组的校验法类似,但是IP数据报的校验和计算是仅对IP首部进行16bit一组的二进制加法运算得到的,且没有伪首部。

image-20260114010919509

(3)网络层

定义:网络层为传输层提供服务,将传输层的数据封装成“IP数据报”。网络中的路由器根据IP数据报首部的源IP和目的IP地址进行“分组转发”。因此,网络层实现了“主机到主机”的传输。

image-20260114142729545

1. 主要功能

  • 路由选择:选择从源主机到目标主机的最佳路径。
  • 逻辑寻址:使用IP地址标识网络中的主机。
  • 分组转发:根据路由表将数据包转发到下一跳路由器。
  • 分片与重组:当数据包大小超过网络MTU时,将其分片并在目的地重组。
  • 拥塞控制(部分协议支持):避免网络过载。

tip:MTU(最大传送单元):一个链路层帧的数据部分能承载的最大数据量。如以太网的MTU=1500B,如果一个IP数据报的总长度超出了下一段链路的MTU,就需要分片。

2. IPv4(网际协议版本4)

2.1 IPv4地址结构

  • 32位二进制数,通常表示为点分十进制(如192.168.1.1)。
  • 分为网络号主机号,通过子网掩码划分。

2.2 IPv4数据报格式

IP首部大小 = 20B固定字节 + 0-40B可变长度 (和TCP一样);

1
2
3
4
5
6
7
| 版本 | 首部长度 | 服务类型 | 总长度 |
| 标识 | 标志 | 片偏移 |
| 生存时间(TTL) | 协议 | 首部校验和 |
| 源IP地址 |
| 目的IP地址 |
| 可选字段(0~40字节) | 填充 |
| 数据(上层协议数据) |

image-20260114144109281

字段说明

  • 版本:4bit, IP 协议版本号(IPv4=4,IPv6=6

  • 首部长度:4bit,以 4B 为单位,指出 IP 首部的实际长度(含选项),最小值 5(即 20 B),最大值 15(即 60 B)。

  • 区分服务:8bit,一般用不到,用于 QoS 区分服务(DSCP/ECN),日常场景通常置 0。

  • 总长度:16bit,整个 IP 数据报的长度(首部+数据),以1B为单位,最大65535B

  • 标识:16bit,由IP数据报的“源主机”生成,同一个IP数据报的所有分片的标识相同。

  • 标志位次低位DF(Dont’t Fragment):=1,不允许分片;=0,允许分片。

  • 标志位最低为MF(More Fragment):=1,分片后面还有分片;=0,这是最后一个分片。

  • 片偏移:13bit,表示数据部分在分片之前的位置,以8B为单位。

  • 生存时间TTL:每经过一个路由器减1,防止数据包无限循环。

  • 协议:标识上层协议(如6=TCP,17=UDP)。注意和版本字段进行区分。

  • 首部校验和:只校验IP首部,不包含数据部分。校验和计算方法和UDP相同。

2.3 IP数据报分片的详细说明

网络层的IP数据报在传输过程中,如果其总长度(包括IP首部和数据部分)超过了数据链路层的 MTU(最大传输单元),则必须进行分片处理(一个IP数据报拆分成多个片段,分别在数据链路层封装成帧)。分片在路由器中完成,重组则在目的主机的网络层进行。

分片规则与过程

判断是否需要分片
IP数据报总长度 > MTU,则需分片;否则直接发送。

分片方式

  • 将IP数据报的数据部分(MTU - IP首部长度) 的大小进行切割。
  • 每个分片加上新的IP首部(部分字段与原IP首部相同,部分字段更新)。
  • 所有分片独立传输,可能经过不同路径到达目的地。

分片相关字段更新

  • 标识:所有分片使用与原数据报相同的标识。
  • 标志
    • DF位:若原数据报DF=1,则不允许分片,直接丢弃并返回ICMP错误报文。
    • MF位:除最后一个分片MF=0外,其余分片MF=1。
  • 片偏移:表示该分片数据在原数据报数据部分中的起始位置,以 8字节 为单位。
  • 总长度:更新为当前分片的总长度(IP首部 + 分片数据长度)。

示例
假设一个IP数据报总长度为4000字节(首部20字节,数据3980字节),MTU=1500字节。

  • 第一片:数据长度1480字节,MF=1,片偏移=0
  • 第二片:数据长度1480字节,MF=1,片偏移=185(1480÷8)
  • 第三片:数据长度1020字节,MF=0,片偏移=370(2960÷8)

image-20260114145322273

  1. 特别注意
  • IP数据报的“分片”可能在源主机、或任何一个路由器中发生
  • 只有目的主机才会对分片进行“重组”
  • 各分片有可能乱序到达目的主机
  • 由于首部的“片偏移”字段是以 8B 为单位,因此,除了最后一个分片外,其他每个分片的数据部分必须是 8B 的整数倍

2.4 IP地址分类与子网划分

  • A类:1.0.0.0 – 126.255.255.255。以0开头,首字节范围(1-126)。默认子网掩码:255.0.0.0 /8
  • B类:128.0.0.0 ~ 191.255.255.255。以10开头,首字节范围(128-191)。默认子网掩码:255.255.0.0 /16
  • C类:192.0.0.0 ~ 223.255.255.255。以110开头,首字节范围(192-239)。默认子网掩码:255.255.255.0 /24
  • D类:组播地址。以1110开头,首字节范围(224-239)。
  • E类:保留地址。以1111开头,首字节范围(240-255)。

A、B、C是单播地址,可以直接分配给单个主机,而D是多播地址可以被多个主机共享(类似QQ号和QQ群)

image-20260114150310834

子网掩码:用于划分网络与主机部分,如255.255.255.0表示前24位为网络号。

image-20260114152222844

2.5 特殊IP地址

image-20260114151700674

重要结论:如果一个网络中,主机号占N位bit,那么最多支持2^N - 2 台主机和路由器。

2.6 Ipv6地址

IPv6是IPv4的下一代协议,主要解决IPv4地址耗尽问题。

主要特点

  • 地址空间巨大:128位地址,约3.4×10³⁸个地址
  • 简化头部结构固定40B头部,提高路由器处理效率
  • 更好的安全性:IPSec成为IPv6的组成部分
  • 自动配置:支持无状态地址自动配置(SLAAC)
  • 更好的QoS支持:流量类别和流标签字段

写法:分8段,每段16bit,用十六进制表示。例如2001:0db8:85a3:0000:0000:8a2e:0370:7334

压缩表示法

  • 前导零可以省略(全为0就用一个0表示)2001:db8:85a3:0:0:8a2e:370:7334
  • 连续的零字段可以用双冒号::代替一次(每个地址只能出现一个双冒号)
    2001:db8:85a3::8a2e:370:7334

3. 无分类编址CIDR

定义:不再使用传统的A、B、C类地址划分,而是灵活划分网络前缀和主机号

例子:

image-20260114152830181

CIDR地址块的子网划分技巧

  • 原始CIDR地址块作为根节点(假设可以自由分配的主机号占h bit)
  • 每个分支节点必须同时拥有左右孩子,左0,右1(反过来也行)
  • 每个叶子结点对应一个子网,根据根节点到达叶子结点的路径来分析子网对应的IP地址块范围
  • 整棵树的高度不能超过h-1,因为即便最小的子网也至少要保留2 bit主机号。

4.路由聚合

定义:将多个连续的小网络前缀合并为一个更大的网络前缀,减少路由表条目。

示例:192.168.0.0/24192.168.1.0/24 可聚合为:192.168.0.0/23

5.NAT(网络地址转换)

定义:NAT 是路由器功能,用于将私有IP地址转换为公有IP地址,实现多个内网设备共享一个公网IP。

NAT路由器内部维护了一个NAT表,记录了 内网IP:端口号外网IP:端口号 的映射。

一个IP数据报,在经过NAT路由器转发时:

  • 从内网到外网,会更改源IP地址、源端口号
  • 从外网到内网,会更改目的IP地址、目的端口号

此外,NAT路由器包含了传输层的功能,因为端口号是传输层的概念。并且普通路由器转发IP数据报时不会更改 源IP地址和源端口号 以及 目的IP地址和目的端口号。

类型

  • 静态NAT:一对一映射。
  • 动态NAT:从地址池中动态分配公网IP。
  • PAT(端口地址转换)/NAT Overload:多个私有IP映射到一个公网IP的不同端口(最常用)。

6.ARP(地址解析协议–Address Resolution Protocol)

定义

ARP协议用于查询同一网络中的 IP地址,MAC地址 之间的映射关系。每台主机和路由器都有自己的ARP表。

ARP表的建立

当一台主机在请求同一网络中的其他主机时,如果目的主机的ip和mac地址没有记录在源主机的ARP表里,就会广播发送ARP请求分组,携带自己的mac地址,当目的主机收到该请求时,就会根据收到的mac地址,单播的方式返回ARP响应分组告诉源主机目的主机的mac地址是多少。

网络节点间的发送过程

假设主机A和主机B位于不同的子网,由R1路由器相连。则主机A的数据报中源mac地址是主机A的mac地址,目的mac地址是R1的mac地址,R1收到该数据报后,将源mac地址改为自己的mac地址,目的mac地址改为主机B的mac地址

image-20260114154921291

7.DHCP(动态主机配置协议–Dynamic Host Configuration Protocol)

定义

给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码

DHCP是应用层协议!!!使用UDP协议进行传输。DHCP服务端使用端口67,客户端使用端口68

详细理解下面DHCP的4个步骤(discover;、offer、request、acknowledge)即可。特别注意DHCP的Request报文的目的IP和目的MAC全1,是因为在一个大型网络内可以有多个DHCP服务器,为了防止多个DHCP服务器都认为客户端使用自己分配的IP,就需要通过广播的方式告知所有DHCP服务器自己到底是使用哪个IP。

image-20260114155707209

8.ICMP(网际控制报文协议 – Internet Control Message Protocol)

特别注意:ICMP是网络层协议,但它需要利用同为网络层协议的IP协议,因为ICMP的报文封装在IP数据报中。

ICMP可以让主机和 路由器互相报告网络中发生的差错和异常情况。

image-20260114161151839

9.RIP(路由信息协议 – Routing Information Protocol)

RIP属于内部网关协议(IGP),是基于路由向量的路由协议。

如何定义路径长度:

  • 使用跳数来衡量到达目的网络的距离。规定每经过一个路由器,距离就加一,路由器到直连网络的距离为1。
  • RIP认为好的路由就是跳数最少的。
  • RIP允许一条合法路径距离不能超过15,等于16表示网络不可达。

10.OSPF(开放路径最短优先协议 – Open Shortest Path First)

OSPF属于内部网关协议,是基于链路状态路由算法计算最佳转发路径的路由协议。

主要特点

  • OSPF属于网络层
  • 使用IP协议提供的服务,IP首部的协议字段=89
  • OSPF的PDU常译为OSPF分组或者OSPF数据报

image-20260114170557026

11.BGP(边界网关协议)

BGP属于外部网关协议(EGP)。是应用层协议基于TCP,端口号为179。

image-20260114170751315

(4)数据链路层

帧结构

以太网

IP分组前后新增共18B的内容。前导码和帧起始定界符属于物理层封装的内容。

mac地址:48bit

以太网的最小帧长64B,最大1518B

image-20260114224549659
image-20260114224921384

字段 长度 作用
前导码(Preamble) 7字节 - 同步接收方时钟:通过交替的 10101010… 信号实现。 - 用于时钟同步。
帧起始符(SOF) 1字节 固定为 10101100,明确帧边界(前导码与数据的分隔符)。
目标MAC地址 6字节 - 接收方的物理地址(如 00:1A:2B:3C:4D:5E)。
源MAC地址 6字节 - 发送方的物理地址。
EtherType/帧类型 2字节 - 标识上层协议类型(如 0x0800 表示IPv4,0x86DD 表示IPv6)。
数据载荷(Payload) 46~1500字节 - 实际传输的数据(如TCP/IP报文、HTTP请求等)。 - 最小46字节:填充(PAD)保证冲突检测可靠性。
帧校验序列(FCS) 4字节 - 基于CRC(循环冗余校验)的错误检测码,确保数据完整性。

PPP协议

定义:PPP(Point-to-Point Protocol)是为点对点链路设计的数据链路层协议,用于在只有两端设备的线路上传输网络层数据报。

核心特点:

  • 一对一链路,无需寻址帧格式中不含源/目的 MAC 地址
  • 帧结构:Flag(1) | Address(1, 固定 0xFF) | Control(1) | Protocol(2) | Information(变长) | FCS(2) | Flag(1)。
  • 链路建立阶段通过 LCP 协商参数,身份验证可选;网络层协议阶段用 NCP 为不同协议(如 IP、IPv6)分配配置。
字段顺序 字段名 长度 常用值/说明
1 Flag 1 B 0x7E(帧开始/结束标志)
2 Address 1 B 0xFF(形式广播,点对点无用)
3 Control 1 B 0x03(无编号帧)
4 Protocol 2 B 0x0021=IPv4,0x0057=IPv6,0xC021=LCP…
5 Information 0–1500 B 上层数据(IP 包或控制报文)
6 FCS 2 B CRC-16 校验码
7 Flag 1 B 0x7E(帧结束标志,可兼下一帧起始)

image-20260114225246948

流量控制与可靠传输

image-20260114173457665

停止-等待协议

image-20260114173741017

后退N帧协议(GBN)

image-20260114173813200

选择重传协议(SR)

特别注意,SR里,接收窗口 <= 发送窗口

image-20260114174226924

CSMA(载波监听多路访问协议)

1-坚持CSMA协议

image-20260114175221601

非坚持CSMA协议

image-20260114175054829

p-坚持CSMA协议

image-20260114175137632

CSMA/CD(冲突检测 – Collision Detection

应用场景:主要用于有线以太网(如传统10BASE-T)

  • 基于 1-坚持CSMA 的改进
  • 发送前监听(Carrier Sense)信道是否空闲:
    • 若空闲:开始发送。
    • 若忙碌:等待空闲。
  • 发送中继续监听信道
    • 若检测到冲突(Collision Detected),立即停止发送,并发送干扰信号(Jam)通知其他设备。
    • 然后等待一个随机退避时间(通常使用指数退避算法)后重试发送。

指数退避算法用于处理数据冲突后的重传策略:当设备检测到冲突后,它不会立即重发数据,而是等待一个随机时间再尝试。每次连续冲突后,等待时间的上限会按2的指数级增长(如第n次冲突,从0到2ⁿ−1个时隙中随机选择),最多增加到一个预设上限,以避免多台设备频繁同时重传,减小冲突概率。

特点:

  • 实时冲突检测,提高可靠性;
  • 仅适用于半双工通信(不能边收边发);
  • 在高负载时冲突较多,但轻载下效率较高。

image-20260114175911648

最小帧长

最小帧长 = 争用期 x 信道带宽。

最小帧长是为了保证数据帧发送的时间内可以检测到冲突信号。而冲突信号检测到的信号的最高时间 = 2 x 最远单向传播时延。这个最高时间是怎么考虑的:假设数据发送方位于信道边界,它最开始发送的数据到达最远端时,最远端节点恰好也发送了数据,那么发送端必须要可以在发送期间拿到这个最远端发送的数据。

以太网(有线网络)中,最小帧长=64B,最长帧长=1518B

CSMA/CA(冲突避免 – Collision Avoidance)

工作机制:

  1. 监听信道是否空闲;
  2. 若空闲,等待一个随机退避时间后才发送,避免“大家同时看到空闲后一起发”的冲突;
  3. 通常还结合 RTS/CTS(请求发送/允许发送)机制来预告数据传输,进一步避免冲突;
  4. 若信道忙碌,继续等待。

特点:

  • 适合无线网络中的广播环境;
  • 不能检测冲突,只能尽量避免;
  • 加入随机等待机制提高成功率;
  • RTS/CTS (信号预约机制)有助于避免“隐藏节点”问题。

image-20260114181418112

PPP协议(点对点协议)

image-20260114182457599

数据链路层设备

image-20260114182756997

(5)物理层

其他内容补充

计算机网络的交换方式

分为电路交换报文交换分组交换

电路交换

电路交换的一般过程:在使用电路交换通话之前,必须先拨号请求建立连接。当被叫用户听到交换机送来的振铃并摘机后,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路,这条链接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用,此后主机和被叫双方就能互相通话。通话完毕后,交换机释放刚才使用过的这条专用的物理通路(即把刚才占用的所有通信资源归还给电信网)。

主要特点

  1. 电路交换必须是面向对象
  2. 交换就是按照某种方式动态的分配传输线路的资源。(含义:连接)
  3. 建立连接(占用通信资源)——通话(一直占用通信资源)——释放连接(归还通信资源),三个步骤的交换方式称为电路交换
  4. 在通话的全部时间内,通话的两个用户始终占用端到端的通信资源

优点

  • 由于通信线路为通信双方用户专用,数据直达,所以传输数据的时延非常小。
  • 通信双方之间的物理通路一旦建立,双方可以随时通信,实时性强。
  • 双方通信时按发送顺序传送数据,不存在失序问题。
  • 电路交换既适用于传输模拟信号,也适用于传输数字信号
  • 电路交换的交换设备(交换机等)及控制均较简单。

缺点

  • 电路交换时,数据直达,不同类型、不同规格、不同速率的终端很难相互进行通信,也难以在通信过程中进行差错控制。
  • 电路交换的平均连接建立时间对计算机通信来说嫌长。
  • 电路交换连接建立后,物理通路被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用低。
  • 交换数据时,其线路的传输效率往往很低。这是因为计算机数据是突发式地出现在传输线路上的,传输数据的时间往往不到10%甚至1%

报文交换

报文交换介于电路交换和分组交换之间

相当于寄一封信出去,填好地址后,把内容全部放到信封里,一站一站的发送到目的地址。

报文交换的优缺点

优点

报文交换不需要为通信双方预先建立一条专用的通信线路,不存在连接建立时延,用户可随时发送报文。

由于采用存储转发的传输方式,使之具有下列优点:

  • a.在报文交换中便于设置代码检验和数据重发设施,加之交换结点还具有路径选择,就可以做到某条传输路径发生故障时,重新选择另一条路径传输数据,提高了传输的可靠性;
  • b.在存储转发中容易实现代码转换和速率匹配,甚至收发双方可以不同时处于可用状态。这样就便于类型、规格和速度不同的计算机之间进行通信;
  • c.提供多目标服务,即一个报文可以同时发送到多个目的地址,这在电路交换中是很难实现的;
  • d.允许建立数据传输的优先级,使优先级高的报文优先转换。通信双方不是固定占有一条通信线路,而是在不同的时间一段一段地部分占有这条物理通路,因而大大提高了通信线路的利用率。

缺点

  • 由于数据进入交换结点后要经历存储、转发这一过程,从而引起转发时延(包括接收报文、检验正确性、排队、发送时间等),而且网络的通信量愈大,造成的时延就愈大,因此报文交换的实时性差,不适合传送实时或交互式业务的数据。

  • 报文交换只适用于数字信号。

  • 由于报文长度没有限制,而每个中间结点都要完整地接收传来的整个报文,当输出线路不空闲时,还可能要存储几个完整报文等待转发,要求网络中每个结点有较大的缓冲区。为了降低成本,减少结点的缓冲存储器的容量,有时要把等待转发的报文存在磁盘上,进一步增加了传送时延。

分组交换

分组交换采用的是存储转发技术

在发送报文之前,先把较长的报文划分成一个个更小的等长的数据段;然后在数据段的前面加上一些由必要的控制信息组成的首部后,就构成了一个分组

分组又称为“包”,而分组的首部又称为“包头”

首部包含了:目的地址,源地址等重要控制信息

主机是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。

路由器则是用来转发分组的,即进行分组交换的。路由器收到一个分组,先暂时存储一下,检查其首部查找转发表,按照首部中的目的地址,找到合适的接口转发出去,把分组交给下一个路由器。这样一步步地以存储转发的方式把分组交付最终的目的主机。
分组传输数据图示:

从多条路传输数据到h4,路由器设备是共享的
img

优点:

  • 高效。在分组传输的过程中动态分配传输宽带,对通信链路是逐段占用。
    灵活。为每一个分组独立的选择最合适的转发路由。
  • 迅速。以分组作为传送单位,可以不先建立连接,就能像其他主机发送分组。
  • 可靠。保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性

缺点:

  • 尽管分组交换比报文交换的传输时延少,但仍存在存储转发时延,而且其结点交换机必须具有更强的处理能力。
  • 分组交换与报文交换一样,每个分组都要加上源、目的地址和分组编号等信息,使传送的信息量大约增大5%~10%,一定程度上降低了通信效率,增加了处理的时间,使控制复杂,时延增加。
  • 当分组交换采用数据报服务时,可能出现失序、丢失或重复分组,分组到达目的结点时,要对分组按编号进行排序等工作,增加了麻烦。若采用虚电路服务,虽无失序问题,但有呼叫建立、数据传输和虚电路释放三个过程。

三种电路比较

在这里插入图片描述

  • 电路交换——整个报文的比特流连续地从源点直达终点,好像在一个管道中传输

  • 报文交换——整个报文先传送到相邻结点,全部存下来后查找转发表,转发到下一个结点

  • 分组交换——单个分组(整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点

若要传送的数据量很大,且其传送时间远大于连接建立时间,则采用电路交换较为合适。

当端到端的通路有很多段的链路组成时,采用分组交换传送数据较为合适。

从提高整个网络的信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适合于计算机之间的突发式的数据通信

不同编码的解读方式

image-20260114184428060

抗干扰能力:

image-20260114184648556

每层协议汇总

1. 应用层

协议/服务 说明 传输层协议
HTTP / HTTPS 网页浏览与加密传输 TCP
FTP 文件传输协议(主动/被动模式) TCP
SMTP 发送邮件 TCP
POP3 / IMAP 接收与管理邮件 TCP
DNS 域名解析 UDP(主要)
DHCP 动态分配IP地址 UDP
BGP 边界网关协议 TCP(端口179)
SSH / Telnet 远程登录 TCP
SNMP 网络管理 UDP
RIP 路由信息协议(内部) UDP
NTP 时间同步 UDP
WebSocket 全双工通信 TCP

2. 传输层

协议 特点 主要用途
TCP 面向连接、可靠传输、流量控制、拥塞控制 HTTP、FTP、SMTP、SSH等
UDP 无连接、不可靠、低延迟 DNS、DHCP、音视频流、RIP等
SCTP 多流、多宿主、部分可靠 电话信令、实时系统

3. 网络层

协议 说明 主要功能
IP(IPv4 / IPv6) 网际协议,负责寻址和转发 数据报封装、路由选择
ICMP 控制报文协议(ping、traceroute) 错误报告、网络诊断
IGMP 组播管理 组播组成员管理
ARP 地址解析协议(IP → MAC) 局域网内地址映射
RARP 反向地址解析协议 旧式无盘系统启动
RIP 距离向量路由协议 内部网关路由
OSPF 链路状态路由协议 内部网关路由(基于IP,协议字段89)
NAT 网络地址转换 私有IP与公网IP转换

4. 数据链路层

协议/机制 说明 主要功能
以太网(Ethernet) IEEE 802.3,有线局域网 帧封装、MAC寻址、CSMA/CD
Wi-Fi(IEEE 802.11) 无线局域网 CSMA/CA、无线帧封装
PPP 点对点协议(拨号、串行链路) 帧封装、链路控制
HDLC 高级数据链路控制 帧同步、差错控制
VLAN(802.1Q) 虚拟局域网 帧标记、逻辑隔离
STP(802.1D) 生成树协议 防环路、冗余链路管理
MAC地址 硬件地址 帧转发与过滤
帧中继、ATM 广域网技术(传统) 虚电路、高速交换

5. 物理层

技术/标准 说明 主要功能
双绞线(CAT5/6/7) 以太网常用介质 电信号传输
光纤(单模/多模) 高速、远距离传输 光信号传输
同轴电缆 传统有线电视与网络 电信号传输(较高带宽)
无线(Wi-Fi、蓝牙) 无线传输介质 电磁波传输
以太网物理层标准 如10BASE-T、1000BASE-T 编码、调制、信号定义
RS-232、USB 串行通信接口 设备间物理连接