Introduction
网络拓扑结构
- 星形:一旦中心故障,整个网络会瘫痪
- 环形:结点故障,环形断开,网络会瘫痪
- 总线形:某个结点故障,整个网络不会瘫痪
电路交换 vs 分组交换 ★
- 电路交换:传输时延小,实时性好,信道利用率低,灵活性差
- 分组交换:将数据分为若干组,每个分组以存储转发的方式从源节点传到目的节点,目的节点接收到所有分组后重新组装
虚电路 | 数据报 | |
---|---|---|
是否连接 | √ | × |
路由选择 | 每个分组单独选择路由 | 建立连接时选择路由,之后所有分组都使用该路由 |
主要延时 | 电路建立+分组传输 | 分组传输 |
OSI vs TCP/IP ★
- 两者都是层次结构模型,最高层都是向各种应用程序提供服务,最底层都是面向通信子网,运输层都能提供面向连接、无连接的服务
- OSI 为 7 层,TCP/IP 为 4 层
- TCP/IP 没有会话层和表示层
- TCP/IP 互联网层只提供无连接的服务
- TCP/IP 子网层没有规定通信协议,不再区分数据链路层和物理层
- 协议是控制2个对等实体进行通信的规则的集合
- 协议是水平的,服务是垂直的
- 网络层为 主机之间 提供逻辑通信
- 传输层为 应用进程之间 提供端到端的逻辑通信
Physical Layer
数据最大传输率
- 波特率:单位时间(每秒)传输码元的数目,单位为波特(Baud)
- 比特率:单位时间(每秒)传输比特的数目,单位为比特/秒(bps)
- 带宽:信号所占用的频率宽度,单位是赫兹(hz),比如语音信号的频率范围是200~3400hz,那么3400-200=3200hz就是语音信号的带宽。
- 比特率 = 波特率 × l o g 2 N log_2 N log2N,N 为进制数
- 奈奎斯特定理:B 为理想低通信道(无噪声,带宽有限)的带宽,V 为码元的离散电平数目,即有多少种不同的码元,理想低通信道的极限数据传输率为
C = 2 B l o g 2 V C = 2Blog_2V C=2Blog2V - 香农定理:B 为信道的带宽,S/N 为信噪比
C = B l o g 2 ( 1 + S / N ) S i g n a l N o i s e R a t i o = 10 l g ( S N ) d B C = Blog_2(1+S/N) \quad \rm Signal\,Noise\,Ratio = 10lg(\frac SN)dB C=Blog2(1+S/N)SignalNoiseRatio=10lg(NS)dB
数字信号的编码
- 不归零制:正电平为1,负电平为0
- 归零制:正脉冲为1,负脉冲为0
- 曼彻斯特编码:高电平跳变低电平表示1,低电平跳变高电平表示0
- 曼彻斯特编码产生的信号频率比不归零制高,且具有自同步能力
数字信号和模拟信号的调制
多路复用
- 多路复用:时分复用、频分复用、码分复用、波分复用
- 物理层接口特性:机械特性、电气特性、功能特性、过程特性
Data Link Layer
透明传输
- 解决透明传输的核心在于,使数据中出的控制字符 SOH、EOT 在接收端不被解释为控制字符
- 发送端的数据链路层在数据中出现 SOH、EOT 的前面插入一个转义字符 ESC
- 如果转义字符也出现在数据中,则在其前面也插入一个 ESC
差错控制
流量控制和可靠传输 ★
- 流量控制的方式:停止-等待协议、滑动窗口协议
- 可靠传输的方式:确认和超时重传
- 在数据链路层中,流量控制和可靠传输是交织在一起的
协议 | 发送窗口 W T W_T WT | 接收窗口 W R W_R WR | 序列号为 n 位 | 备注 |
---|---|---|---|---|
停止-等待协议 | 1 | 1 | ||
GBN协议 | >1 | 1 | W T ≤ 2 n − 1 W_T \leq 2^n-1 WT≤2n−1 | 采用累计确认 |
选择重传协议 | >1 | >1 | W T ≥ W R W T + W R ≤ 2 n W T ≤ 2 n − 1 W_T \geq W_R\quad W_T + W_R \leq 2^n\quad W_T \leq 2^{n-1} WT≥WRWT+WR≤2nWT≤2n−1 | 不用累计确认 |
- 停止-等待协议:每发一帧,收到确认后再发下一帧
- GBN协议:错误帧及其后面所有帧都要重发
- 选择重传协议:只选择错误的帧重发,但接收窗口要增大,以便先收下乱序的数据,最后进行组装
介质访问控制 ★
ALOHA
CSMA(Carrier Sense Multiple Access)
载波侦听多路访问 | 信道空闲 | 信道忙 |
---|---|---|
非坚持CSMA | 立即发送数据 | 放弃侦听,等待一个随机时间后再侦听 |
1-坚持CSMA | 立即发送数据 | 继续侦听 |
p-坚持CSMA | 概率 p 发送数据,概率 1-p 推迟到下一个时隙 | 继续侦听 |
CSMA/CD(Collision Detection)
- 先听后发,边听边发,冲突停发,随机重发
- 设电缆长度为 L,信号传播速率为 v,数据传输率为 T,则
最小帧长 = 2 L v T 最小帧长 = \frac{2L}{v}T 最小帧长=v2LT
CSMA/CA(Collision Avoidance)
- 发送前先广播告知其他结点,在某段时间内不要发送,以免冲突
集线器 vs 交换机 ★
- 层次:集线器工作在物理层,交换机工作在数据链路层
- 转发:集线器采用广播形式,交换机根据MAC地址转发
- 传输:集线器所有端口共用一条总线,是半双工通信。交换机所有端口相互独立,是全双工通信
链路 vs 数据链路
- 链路就是物理链路
- 数据链路就是逻辑链路,在物理线路的基础上添加了通信控制协议
局域网
- IEEE 802标准定义的局域网参考模型只对应于 OSI模型的物理层和数据链路层
- 数据链路层被拆分为2个子层:逻辑链路控制(LLC)、媒体访问控制(MAC)
- IEEE 802.3 是一种基带总线型的以太网标准,采用 CSMA/CD 进行访问控制
- IEEE 802.11 是无线局域网的协议标准,采用 CSMA/CA 进行访问控制
广域网
HDLC
HDLC vs PPP
相同点:
- PPP、HDLC协议都支持全双工链路。
- 都可以实现透明传输。
- 都可以实现差错检测,但都不纠正差错。
不同点:
- HDLC面向比特,PPP面向字节
- HDLC帧格式没有字段
- HDLC有编号和确认机制,PPP无序号和确认机制
- HDLC可靠,PPP不可靠
Internet Layer
异构网络互联
- 物理层:转发器(中继器)、集线器(Hub)
- 数据链路层:网桥(Bridge)、交换机(Switch)
- 网络层:路由器(Router)
- 网络层以上:网关(Gateway)
IPv4 ★
网络类别 | 地址范围 | 最大网络数 | 不指派的网络地址 |
---|---|---|---|
A | 1.0.0.0 ~ 126.255.255.255 | 2 7 − 2 2^7-2 27−2 | 0.0.0.0 127.0.0.0 |
B | 128.1.0.0 ~ 191.255.255.255 | 2 14 − 1 2^{14}-1 214−1 | 128.0.0.0 |
C | 192.0.1.0 ~ 223.255.255.255 | 2 21 − 1 2^{21}-1 221−1 | 192.0.0.0 |
D | 224.0.0.0 ~ 239.255.255.255 |
0.0.0.0
:本网络上的本主机,DHCP 用作源地址255.255.255.255
:本网络的广播地址,DHCP 用作目的地址127.x.x.x
:用于本地软件的环回测试网络号不全0,主机号全0
:该网络网络号不全0,主机号全1
:该网络的广播地址- 子网划分:若子网号有 n 位,子网数为 2 n − 2 2^n - 2 2n−2
- 无类别编址 CIDR: 支持全0和全1的子网号
IPv6 ★
- 地址长度:IPv4 为 4 字节,IPv6 为 16 字节
- 地址配置:IPv4 使用 DHCP 或手动配置,IPv6 采用 SLAAC(无状态地址自动配置)
- 数据报首部:IPv6的首部分为基本首部、扩展首部,扩展首部放在了数据部分
- 身份验证和加密:IPv4不提供,IPv6 提供
ARP(Address Resolution Protocol) ★
- 主机A向主机B发送IP数据报,先在A的 ARP 高速缓存中查看是否有B主机的IP地址
- 若有,则查出对应的硬件地址,再将该硬件地址写入MAC帧中
- 若没有,则在本局域网内广播发送一个 ARP 请求分组
- 主机B收到请求分组后,向A发送 ARP 响应分组,并写入自己的MAC地址
- 主机A收到后再写入ARP缓存中
NAT(Network Address Translation)
- NAT 用于将专用网络地址(Intranet)转换为公网地址(Internet)
- 由于专用网 IP 是可重用的,所以 NAT 大大减少了 IP 地址的消耗
- 1个A类网段:10.0.0.0 ~ 10.255.255.255
- 16个B类网段:172.16.0.0 ~ 172.31.255.255
- 256个C类网段:192.168.0.0 ~ 192.168.255.255
ICMP
traceroute
- 从源主机向目的主机发送一连串的IP数据报,其中封装的是无法交付的UDP数据报
- 设第一个数据报的TTL为1,到达路由器R1时减为0丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文
- 当最后一个数据报刚到达目的主机时,TTL为1且不减为0,向源主机发送一个 ICMP 终点不可达差错报告报文
解决IP地址耗尽的主要措施
- 采用无类别编制 CIDR,使IP地址分配更加合理
- 采用网络地址转换 NAT,以节省全球IP地址
- 采用具有更大地址空间的 IPv6
路由选择协议 ★
RIP
- 交换对象:仅和相邻路由器交换信息
- 交换内容:自己的路由表
- 交换时机:按固定的时间间隔交换信息
- 使用 UDP 传送数据
- 距离向量算法(Distance Vector)
- 先对地址为X的相邻路由器发来的路由信息进行修改:下一跳全部改为X,距离全部加1
- 对修改后的每一个项目,与原路由表进行比较
OSPF
- 交换对象:本自治系统内所有路由器
- 交换内容:与本路由器相邻的所有路由器的链路状态
- 交换时机:当链路状态发生变化时
- 使用 IP 数据报传送数据
- 链路状态算法(Link State)
BGP
- 只求寻找一条较好的路由,并非最佳路由
- 使用 TCP 传送数据
- 路径向量算法(Path Vector)
Transport Layer
TCP报文
TCP流量控制
- 接收方根据接收窗口的大小,动态调整发送方的发送窗口大小
- TCP 滑动窗口大小可以动态变化,数据链路层则不能改变
s w n d = min { r w n d , c w n d } swnd = \min\{rwnd, cwnd\} swnd=min{rwnd,cwnd}
TCP拥塞控制
- 慢启动:每经过一个 RTT,拥塞窗口翻倍,达到
ssthresh
之后,进入拥塞避免 - 拥塞避免:每经过一个 RTT,拥塞窗口加 1 个 MSS
- 快重传:发送方一连收到三个重复确认,应该立即重传
- 快恢复:
cwnd = (ssthresh = ssthresh / 2)
TCP连接管理 ★
TCP vs UDP ★
- TCP:面向连接的可靠传输,安全性高,传输速度慢,适用于大量数据的通信,不支持组播和广播
- UDP:非连接的不可靠传输,实时性高,传输速度快,适用于少量数据的通信,支持组播和广播,不支持流量控制和拥塞控制
Socket
- Socket 是对 TCP 连接的通信端点的抽象
Application Layer
Protocol | Port |
---|---|
HTTP | 80 |
FTP | 20、21 |
SMTP | 25 |
POP3 | 110 |
DNS | 53 |
DNS
POP3 vs IMAP
- IMAP 在客户端修改邮件能够同步到邮件服务器