计算机网络的功能
三种交换技术
-
电路交换 Circuit switching
- 定义:通信前从主叫端到被叫端建立一条专用的 物理通路,在通信的全部时间内,两个用户始终占用端到端的线路资源。
- 优缺点:
- 优点:数据直送,传输速率高;
- 缺点:建立/释放连接,需要额外的时间开销;
线路被通信双方独占,利用率低;线路分配的灵活性差;
交换节点不支持“差错控制”(无法发现传输过程中的发生的数据错误)
- 更适用于:低频次、大量传输数据(电话网)
-
报文交换
- 定义:把传送的数据单元先存储在中间节点,再转发给下一地址
massage报文包括:控制信息 + 用户数据(发送方/接收方 + 传送的数据内容) - 优缺点
- 优点:通信前无需建立连接
数据以“报文”为单位被交换节点间“存储转发”,通信线路可以灵活分配
在通信时间内,两个用户无需独占一整条物理线路。相比于电路交换,线路利用率高
交换节点支持“差错控制”(通过校验技术) - 缺点:报文不定长,不方便存储转发管理
长报文的存储转发时间开销大、缓存开销大
长报文容易出错,重传代价高
- 优点:通信前无需建立连接
- 定义:把传送的数据单元先存储在中间节点,再转发给下一地址
-
分组交换 Packet switching
- 基本概念:长报文的数据分为若干个小的定长数据,
每部分的定长数据增加 控制信息(首部 Header) (包含:源地址、目的地址、分组号);
定长数据+控制信息 = 分组(packet)
路由器是一种典型的分组交换机 - 过程:数据被分成定长小数据,可以通过不同路径传输,最后在终端按照分组号进行排列
- 优缺点
- 优点:相比于报文交换
分组定长,方便存储转发管理
分组的存储转发时间开销小、缓存开销小
分组不易出错,重传代价低 - 缺点:
相比于报文交换,控制信息占比增加
相比于电路交换,需要在中间存储,依然存在存储转发时延
报文被拆分为多个分组,传输过程中可能出现失序、丢失等问题,增加处理的复杂度
- 优点:相比于报文交换
- 基本概念:长报文的数据分为若干个小的定长数据,
-
虚电路交换 Virtual Circuit
- 过程:将源地址、目的地址建立联系(虚拟电路),交换机处理,在传输过程中一直按序传输,最后释放连接
- 现代计算机采用 分组交换,用网络边缘终端强大的算力进行排序,而非用网络的核心部分
-
性能分析

U4 数据链路层
- 所处地位

⭐1. 可靠传输/流量控制 与 滑动窗口
- 可靠传输:解决帧之间的“帧错”:帧丢失、帧重复、帧失序
流量控制:控制发送方发送帧的速率别太快,要让接收方来得及接收 -
3种机制
实现这两个功能需要多种机制配合:

-
本质是滑动窗口的3种协议
- 停止-等待协议 S-W:发送窗口 = 1,接收窗口 = 1
- 后退N帧协议 GBN:发送窗口 > 1,接收窗口 = 1
- 选择重传协议SR:发送窗口 > 1,接收窗口 > 1
⭐1.1停止等待协议 S-W
stop-wait
⭐1.2 后退N帧协议 GBN -累积确认
go back N
⭐1.3 选择重传协议 SR -差错帧返回“NCK”
Selective Repeat
-
滑动窗口机制
发送窗口 > 1,接收窗口 > 1。
-
确认机制
确认帧:每一帧返回
- 重传机制:超时重传 + 请求重传
超时重传:超过时间,发送方重新传Data
请求重传:NAK 否认帧:若接收方检测到有“差错” → 则丢弃该帧,返回发送方,请求重传
不必等到计时器超时再重传,而是收到NCK就立即重传 → 提升效率 -
帧编号
(接收窗口小于发送窗口)
1.4 对于可靠传输/流量控制机制的信道利用率分析
发送信道的信道利用率:发送完当前数据到发送下一次数据(发送数据的占比)
ARQ 自动重传请求协议:包括这3个协议
- 例1
- 例2

⭐2.介质/多路访问控制
广播通信时,多个节点争抢物理传输介质。怎么解决争抢问题,实现有序传输

2.1 信道划分
- 时分复用 TDM
- 频分复用 FDM
- 码分复用 CDM
随机访问
- ALOHA协议
- 纯ALOHA:准备好数据帧,就立即发送;
- 时隙ALOHA协议:准备好的数据要等到一个时隙的开始才发送;若发生冲突,分别随机等一段时间后发送
- CSMA协议:发送数据之前,先监听信道是否空闲,只有空闲时才发送数据(网络适配器要安装“载波监听装置”)
- 1-坚持CSMA协议

- 非坚持CSMA协议
优点:使各节点错开发送数据,降低冲突概率;
缺点:信道空闲时,可能不会被立即里哟个,导致信道利用率降低
- p-坚持CSMA协议
折中方法,降低冲突概率、提高信道利用率
- 1-坚持CSMA协议
- CSMA/CD协议:用于早期有线以太网(总线型)Collusion Detection
- 接收方:依次检查检查若 帧小于最短帧长、不是发给自己的、CRC检错 帧有差错 → 丢弃帧
- CSMA/CA协议:用于IEEE 802.11 无线局域网(WIFI)
轮询访问
令牌传递协议
-
获得令牌的节点会持有令牌帧,想要发送数据时,把令牌帧转换为数据帧
数据帧 = 令牌号 + 源地址&目的地址 + 数据部分 + 是否已接收(false/true) -
按固定方向遍历每个节点
是目的地址:复制数据部分,已接收=true
回到源地址:检查已接受。true:发送成功;false:发送失败,尝试重传

以太网交换机
- 自学习功能:最开始交换表为空[MAC帧:端口号]
- 记录发送方的端口号
- 不知道接收方地址 → 广播/直到接收方地址 → 精准发送
U5 网络层
- IP数据报(分组)
首部(包括源IP地址、目的IP地址) + 报文段 - 网络层 实现 主机间的传输(∵首部规定源地址、目的地址)
数据链路层 实现 节点间的传输
网络层功能
- 异构? 每个网络的拓扑结构不同、物理层&数据链路层的实现不同、连接的主机不同
- 重要设备:路由器 Router/网关
IPv4
IP数据报/分组 的构成
首部(20B 固定部分+0~40B 可变部分) + 数据部分
以下是首部固定部分的组成
-
第一行
-
分片组装问题
标识 标志 片偏移 16bit 3bit 13bit 检查是否来自同一个IP数据报 最低位MF=1(是否还有更多分片More Fragment)次低位DF=1(不允许被分片Don’t Fragment) 被分片前的位置,×8B为单位 -
标识相同、源地址相同 → 分片原同属于一个IP数据报
-
-
生存时间TTL、协议、首部校验
-
32 bit的源地址、32 bit的目的地址
-
分片问题
IP地址的分类
-
最初的分类(A/B/C/D/E)
判断目的IP类别 → 是否跟当前源IP地址的网络号相同 → 看前面的网络号 → 加上MAC地址封装成帧 不同网络的转发过程、 同一个网络的转发过程 -
子网划分 & 子网掩码
源地址、目的地址 & 源IP、目的IP → 是否属于同一个子网 → 跟子网掩码相与后 是否等于目的网络号 → MAC帧转发给目的主机 子网内、 不同子网 有子网划分&无子网划分的网络之间
| 分类 | 选择接口 | 匹配后处理 |
|---|---|---|
| 最初ABCDE | 通过最先几位判断分类 → 保留多少位 | MAC帧直接定位目的主机 |
| 子网划分 | 直接和子网掩码相与,判断属于哪个子网 | MAC帧直接定位目的主机 |
协议

ARP协议
DHCP协议
ICMP协议(网际控制报文协议)
- ICMP报文的常见分类
- 差错控制报告:直接传输数据报,有问题就反馈给发送方
- 询问报文:传送之前,先询问接收方,确保网络通畅
- 怎么区分分类? ICMP最先1B
- 差错控制报告
- 终点不可达
路由器返回:目的IP地址不可到达,路由器返回ICMP报文告诉发送方终点不可达;目的主机的端口不存在:目的主机告诉发送方进程不存在 - 时间超过
路由器返回:IP数据报的TTL=0,被丢掉;目的主机返回:IP数据报被分片,但是规定时间内分片没有到齐 → 全部丢弃 - 参数问题
检测出IP首部错误/参数不合法,路由器把IP数据报丢弃 - 改变路由(重定向)
路由器告诉发送方:对于某目的网络,发送到另一个路由器更近,下一次发送到该目的网络时 改变路由
- 终点不可达
- 询问报文
- 差错控制报告
- 不必反馈ICMP差错报告报文的情况
IPv6
- 对比
选项 IPv4 IPv6 位数 32bit 128bit 转换 8位,二进制 → 十进制 4×4位,十六进制 分片 源主机/路由器 只有源主机 地址组成(same) 网络号+主机号 前缀+接口标识符 数据报结构 略 略 - IPv6下的数据报结构
- IPv4到IPv6的迁移
- 双栈协议:设备同时支持IPv4、IPv6
- 隧道技术:IPv6封装进IPv4的数据部分。IPv4的数据报 = 首部 + 数据(IPv6数据报)
路由协议
- 路由算法
- 分层次的路由协议
RIP
应用层
OSPF
网络层,边带权
- 建立单链表
- 基础
- 洪泛法:转发到除了入口之外的出口(不回流)
检测到邻居的变化 → 洪泛最新的链表信息 - Dijstra算法:每次看总共的最短路径
- 洪泛法:转发到除了入口之外的出口(不回流)
- 怎么生成路由表?
构造本地链路状态数据库 LSDB(临界表) → Dijkstra算法计算最短路径 → 根据结果,构造路由表
若网络拓扑变化 → 引起洪泛 → 基于新的网络重新计算路由表
- “区域”划分:系统过大,洪泛压力过大,Dijsktra运算开销也过大
- (选学)具体过程
HELLO 问候分组:每10s发送,超过40s说明另据不存在
DD 数据库描述分组:告诉对方自己有的信息
LSR 链路状态请求分组:想要对方的哪些信息
LSU ;链路状态更新分组:响应请求,给对方发送需要的信息
LSAck 链路状态确认分组:告诉对方已经收到需要的数据
BGP协议
应用层,基于TCP协议
移动IP
- A在归属网络:和前面一样,直接传数据报
- A不在归属网络
U6 传输层
概述

UDP vs TCP
| 对比 | UDP | TCP |
|---|---|---|
| 首部 | 很小,8B | 更大,20~60B |
| 报文传输 | 传输完整报文,不支持报文拆分/重装 | 支持报文自动拆分/重装 |
| 连接性 & 可靠性 | 无连接、不可靠(交给应用层处理) | 有连接、可靠 |
| 拥塞控制 | 不支持拥塞控制 | 支持拥塞控制 |
| 传输方式 | 一对一/一对多 | 只支持一对一传输 |
- UDP一对多:封装成IP数据报时,IP首部为广播首部 → 会转发给不同网络中相同端口号的进程
UDP
- 数据报格式
TCP
- 面向字节流:UDP协议时面向报文的(把完整应用层报文 → 封装到UDP数据报→ 封装到IP数据报)

- TCP报文段格式

- 建立连接(三次握手)
- 释放连接(四次挥手)
- 从客户发出挥手1,到客户进程进入CLOSE状态,至少需要多久?一-1RTT+2MSL - 从客户发出握手1,到服务器进程进程进入CLOSE状态,至少需要多久?一-1.5RTT
-
TCP传输的过程
- 三次握手
-
TCP传输的过程
-
发送3bit → Server检查有无比特错误 → 没有就接收 → 发送TCP报文:ack=603(接下来期待收到的序号),rcvwnd=5
Client 就把发送成功的3bit移出buffer缓冲区 → 读入后面的数据 → 根据发来的rcvwnd动态调整发送buffer为5 -
累积确认:连续收到多个报文段,只返回1个ACK
-
接收缓冲区满了 → 清空接收缓冲区 → 发送TCP数据报:ACK=609,rwnd=8
-
捎带确认:确认+数据
-
超时重传
-
U7 应用层
网络应用模型:C/S模型、P2P模型
DNS域名系统
- 基础
- 协议工作原理
- 域名划分 -顶级域名
- DNS四类域名服务器

- DNS查询方式
-
递归查询:你问我问题,我想方设法帮你找到最终答案。

-
<a href=“https://www.bilibili.com/video/BV19E411D78Q?t=1628.8&p=90 target=“_balnk”>递归查询:你问我问题,我如果不知道最终答案,就告诉你你“下一个该问谁”(踢皮球)

-
FTP
- 登录
- 数据传输
- 主动模式:客户端告诉Server,想要Server主动传输数据
- 被动模式:Client传给Server
- 总结
电子邮件
过程
万维网 www
- 访问网络的背后
- 响应报文的分类
- 非连续连接:可以连续建立3个/图片.png的TCP连接
- 连续连接:流水线方式/非流水线方式
- 非连续连接:可以连续建立3个/图片.png的TCP连接



