TCP/IP 模型大纲。
1. TCP/IP模型
TCP/IP | 相关协议 |
---|---|
应用层 | SMTP HTTP FTP DNS DHCP RIP |
传输层 | TCP UDP |
网络层 | IP ICMP OSPF ARP |
数据链路层 | PPP HDLC |
物理层 | IEEE802.3 |
2. 物理层
2.1 数据传输速率
- 码元传输速率 == 波特率
- 信息传输速率 == 比特率 (b/s)
2.2 香农定理和奈奎斯特定理
-
香农定理: 给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率 ( W log 2 ( 1 + S / N ) W\log_2 (1+S/N) Wlog2(1+S/N))。其中 W W W 为信道带宽, S S S 为信道所传输信号的平均功率, N N N 为信道内部的高斯噪声功率
-
奈奎斯特定理:理想低通信道下的极限数据传输速率 = 2 W log 2 V = 2W\log_2 V =2Wlog2V。其中 W W W 为低通信道带宽, V V V 表示可以表示码元个数的二进制的数量
2.3 电路交换、报文交换与分组交换
-
电路交换:两个结点之间必须先建立一条专用的物理通信路径,同时在整个传输期间一直独占该链路
优点:
- 通信简单,时延小,同时不存在失序问题
- 适用范围广,实时性强
缺点: - 建立连接时间长
- 线路独占,灵活性差
-
报文交换:在交换节点采用存储转发技术
优点:
- 无须建立连接,动态分配线路
- 提高线路的可靠性和利用率
缺点: - 可能会引起转发时延
- 对报文大小没有限制,因此要求网络结点具备较大的缓存空间
-
分组交换:同样采用 存储转发 技术,但是限制了每次传输的数据块的上限 (把大的分组划分为小的数据块后,再加入控制信息)
2.4 数据报与虚电路
- 仅在网络层提供连接服务的计算机称为 虚电路网络 (与虚拟网络嵌入的思想类似)
- 仅在网络层提供无连接服务的计算机网络称为 数据报网络
2.4 MTU
以太网的 MTU 为1500B
3. 数据链路层
3.1 CRC编码
计算步骤
- 假设 G ( x ) G(x) G(x) 为 1101 1101 1101,则 G ( x ) G(x) G(x) 的阶 r = 3 r = 3 r=3
- 对于待传送的信息 M = 1101 M = 1101 M=1101, 则需要在 M M M 后面补充 r r r 个 0 0 0,即 1101 000 1101 \red {000} 1101000
- 进行模2除法, M ÷ G ( x ) M \div G(x) M÷G(x)
- 得到余数 R R R,与 M M M 进行拼接即可得到CRC校验码
3.2 流量控制与可靠传输机制
-
停等协议
-
滑动窗口
采用发送窗口和接受窗口,当收到的数据帧的序号在接受窗口中,接收方接受,否则丢弃
-
数据链路层的可靠传输机制
(1) 回退N → \rightarrow → 回退N的 接收窗口大小 = 1
-
接收方可以在连续收到好几个正确的数据帧后统一确认,或者在自己有数据要发送时捎带确认
-
若采用 n 比特对帧进行编号,则发送窗口的大小 W T W_T WT 的大小应该满足 1 ≤ W T ≤ 2 n − 1 1 \le W_T \le 2^n-1 1≤WT≤2n−1:为了避免接收方全部正确接受但是确认帧全部丢失的情况
(2) 选择重传:只重传出差错或超时的数据帧,因此 接收窗口大小 > 1
- 一般默认 W T = W R W_T = W_R WT=WR,且 m a x ( W R ) = 2 n − 1 max(W_R) = 2^{n-1} max(WR)=2n−1
-
3.3 随机访问协议
- ALOHA 与 时隙ALOHA
- CSMA协议 (载波侦听多路访问协议): 在时隙ALOHA的基础上增加了载波侦听
- 1/非/ p p p - 坚持CSMA
- CSMA/CD (碰撞检测)
→
\rightarrow
→ 主要用于以太网
- 工作流程:先听后发,边听边发,冲突停发,随机重发
- 为了使得 CSMA/CD 在发送过程中具备检测到冲突的能力,因此存在最小帧长 = 总线传播时延 × \times × 数据传播速率 × \times × 2。概括来说就是,最小帧长保证了即使数据在传送到最远的地方发生冲突再传回来时,发送方仍在传输数据,因此可以检测到冲突
- 采用了二进制指数退避算法来解决碰撞问题
3.4 局域网 (LAN) 和广域网 (WAN)
局域网使用的协议主要在数据链路层,而广域网使用的协议主要在网络层,因为广域网的一个重要作用是路由选择和转发,因此需要网络层协议头部的控制信息
4. 网络层
4.1 路由算法
- 静态路由算法
- 动态路由算法
DV 算法 (距离-向量)
- 常见协议:RIP → \rightarrow → 应用层协议 | 根据跳数进行路径选择
LS 算法 (链路状态)
- 每个节点都通过洪泛获得完全的网络拓扑信息
- 常见协议:OSPF → \rightarrow → 适用于大范围的自治系统
⚠️:RIP 和 OSPF 都属于内部网关协议 (IGP),而外部网关协议 (EGP) 主要有BGP
4.2 IP数据报格式
-
首部长度、总长度、片偏移的单位为别为 4B, 1B, 8B
-
需要了解 IP 数据报的分片过程
4.3 NAT
- NAT 路由器在转发 IP 数据报时,一定要更换其源/目的 IP 地址,同时 NAT 路由器在转发数据报时还需查看和转换传输层的端口号
- 在数据链路层传输过程中,不会改变源/目的 IP 地址
- ⚠️ 通过路由器传送帧时,会改变 MAC 帧中的源地址和目的地址,但是网桥在转发帧时不改变
4.4 CIDR
- 消除了传统的 A、B、C 类的地址及划分子网的概念
- 有利于通过路由聚合来减少路由表项
4.5 ARP
- 地址解析协议,完成 IP 地址到 MAC 地址的映射
- 当 ARP 表中无 目的 IP 地址对应的 ARP 表项时,主机A会在所在的局域网内广播 ARP 请求,主机B收到请求后,发现与自身的 IP 地址对应,便会发出响应 ARP 分组。主机A收到后,将映射关系写入缓存。
4.6 DHCP
- 分配地址的过程分为四步,DISCOVER → \rightarrow → OFFER → \rightarrow → REQUEST → \rightarrow → ACK
- DHCP 整个过程都是通过广播的方式实现
- DHCP 是应用层协议,因为它是通过 C/S 方式工作的
注意:路由表 ! = != != 转发表,路由表由 { 目的IP地址,子网掩码,下一跳IP地址,接口 } 四项组成,而转发表会对路由表进行优化,保证查找过程的高效性 (例如设置默认路由)
5. 传输层
5.1 分用和复用
复用指的是发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的的应用程序
5.2 UDP
- 用户数据报协议 | User Datagram Protocol
- 基于 UDP 的应用层协议:DNS RIP
- 报文首部格式
⚠️ 校验和与 IP 协议不同:IP 协议仅对首部进行校验,而传输层协议则是对首部和数据部分均进行差错检验
- UDP的校验和需要添加12B的伪首部
5.3 TCP
- 传输控制协议 | Transmission Control Protocol
- 基于 TCP 的应用层协议:HTTP SMTP FTP
- 报文首部格式
TCP是面向字节流的(即传送时是逐个字节传送),因此 TCP 连接传送的字节流中的每个字节都按顺序编号。序列号就是本报文段所发出的第一个字节的序号。
为什么要采用三次握手?
主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务端,而产生资源的浪费 (服务器端在第二次握手成功后便在OS内核中为该TCP连接分配TCP缓存和变量)。若采用三次握手,则在长时间未收到 ACK 后便会释放资源。
- TCP 可靠传输机制
- 序列号
- 确认号
- 对超时和冗余 ACK 进行重传
- 也分别称为超时重传与快速重传
// c w n d : cwnd: cwnd: 拥塞窗口, r w n d : rwnd: rwnd: 接收窗口
- TCP 拥塞控制
四种拥塞控制算法
- 慢开始: 每收到一个确认报文, c w n d + 1 cwnd + 1 cwnd+1
- 拥塞避免: 每经过一个往返时延 R T T RTT RTT 就把发送方的 c w n d + 1 cwnd + 1 cwnd+1,使其呈线性增长
- 快速重传: 当发送方连续收到三个重复的 ACK 报文,直接重传对应报文
- 快速恢复: 当发送方连续收到三个重复的 ACK 报文,把 t h r e s h o l d threshold threshold 设置为此时 c w n d cwnd cwnd 的一半,并令 c w n d = t h r e s h o l d cwnd = threshold cwnd=threshold
TCP Reno 版本
流量控制和拥塞控制的区别
- 流量控制是一个速度匹配服务,匹配发送方的发送速率与接收方的读取速率
- 拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不过载