文章目录
- 网络的模型
- OSI模型:七层模型
- 应用层:向用户提供应用程序服务
- 表示层:对`格式进行转换`,例如`加密/解密`,`压缩和解压缩`
- 会话层:建立和管理`通信双方的会话`,例如`腾讯会议双方的通信`。
- 传输层:提供`进程为单位`的端到端的传输服务。
- 网际层:`不同网络`之间的通信服务,IP协议,路由和转发。
- 链路层:`同一局域网下`的通信服务,例如成帧,`差错检验`,`信道冲突`和`无线网络`。
- 物理层:二进制比特流的传输服务。
- TCP/IP模型:只有四层
- 物理层
- *链路类型:全双工,半双工,单工
- 单工:谁能发送、谁能接收,是固定的;数据流只能`沿一个固定方向传输`;应用:家庭电话。
- 半双工:谁发送、谁接收,可以变化,但必须轮流;数据流可以沿两个相反方向传输,但同一时间`只能传输一个方向`的数据流;应用:无限局域网
- 全双工:谁发送、谁接收,可以变化,并且可以同时进行;数据流可以沿两个相反方向传输,同一时间`可以传输相反方向`的数据流;应用:TCP双向连接。
- 信道传输速率
- 奈奎斯特定律
- 香农定律
- 数字调制Modulation:将模拟信号转换数字信号
- 基带传输
- 曼切斯特编码:将时钟信号叠加到编码中
- 翻转-NRZ编码:0-1编码,编码跳转的信号,仍然无法解决静默问题
- 宽带传输:多路复用技术
- 码分复用技术:共享信道支持同时发送消息
- 链路层:成帧,差错检验,信道冲突和无限网络
- 成帧:区分不同帧
- 差错检验:冗余位技术---汉明码,奇偶校验,循环冗余码
- 奇偶检验:只能检验奇数位。
- 汉明距离:定义为从一个码字转换为另一个有效码字的最短距离,检验和修复的最短位数?
- 循环冗余码:使用多项式除法决定冗余位
- 流量控制:滑动窗口协议
- 重要的点
- 捎带确认:在传输数据时顺便传输ACK确认,不单独发送一个ACK确认报文
- 累计确认:ACKx表示对于前x个报文的累计确认
- 窗口大小:W s + W R ≤ 2 m W_s+W_R\leq2^{m}Ws+WR≤2m,m mm表示用于编码报文的位数;防止:窗口移动,`相同编号`报文带来的歧义问题。
- 停止-等待 Stop-and-wait:接受和发送窗口都为1
- 退回N步 Go-back-N:接受窗口为1,发送窗口为N
- `选择性重传 Selective Repeat`:接受和发送窗口数大于等于1
- 链路利用率的计算方式
- 传输时延和传播时延
- MAC层:媒体访问控制,数据链路层的一个子层
- 信道划分:静态划分和动态划分
- 静态划分:时分/频分/码分复用信道
- 动态划分:CSMA/CD协议
- CSMA/CD协议:载波监听,如果`有冲突不发送`;冲突避免,发送后还需要`检测冲突`,如果`有冲突随机等待`并且重发
- 冲突检测时间和如何避免`冲突检测不及时`:规定数据大小,约束帧的`传输时间`>信道上的往返`传播时延`
- 以太网:802.3
- 以太网帧的结构
- MTU:单个网络中最大传输单元,表示为`以太网帧的负载`
- 透明传输:每一个路由器负责包裹的`拆分和整合`
- 非透明传输:每一个路由器`只负责包裹的拆分`,整合工作在接受方
- 以太网的`传输`速率:标准以太网10Mbps,快速100Mbps等
- WIFI:802.11
- 连接过程:与基站连接,分为积极连接(主动探索基站),消极连接(基站主动介绍)
- *隐藏终端和暴露终端问题
- 网络层
- IP协议:互联网协议
- IPv4地址:32位,0.0.0.0-255.255.255.255,8bit/1字节为一组,分别私有和公开IP地址。
- IP数据报封装
- IP寻址:网络id+主机id---分类寻址,子网寻址,CIDR
- 分类寻址:网络id和主机id的地址范围进行分类
- 子网寻址:确定网络id+子网id+主机id,固定/可变子网划分,默认网关和`子网掩码`
- 寻址方式
- CIDR:无分类域间路由,只区分前缀id和主机id,路由聚合确定`共同前缀和掩码`和最长前缀匹配确定`网络`
- 路由聚合
- 最长前缀匹配:进行子网掩码匹配时,取最长匹配
- NAT:网络地址翻译
- 私有地址和公开地址
- 互联网控制协议
- ICMP:互联网控制消息协议,用于`错误报告`和`回复请求`(`ping`命令)
- ARP:MAC地址寻求协议,用于查询某个IP地址对应的MAC地址,如果不属于一个局域网,则改为`发送默认网关的ARP请求`。
- DHCP:动态主机控制协议,为每一个主机分配IP地址,子网掩码和默认网关等网络必备信息。
- 本地DHCP服务器和DHCP缓存
- 路由算法
- 路由和转发的含义
- 泛洪:与广播类似,对于不同局域网的概念,保证不会出现环
- 距离矢量算法:分布式的Bellman-Fold算法,代表:路由信息算法
- 缺点:坏消息传递慢,被相邻节点误导
- 链路状态算法:全局式的Dijsktra算法,代表:开放最短路径算法
- 缺点:维护全局拓扑结构的代价昂贵
- 边界路由算法:自治系统,内层边界路由算法,外层边界路由算法
- 自治系统:不同路由器所连接的一个`网络整体`
- 内层边界路由算法:每一个网络整体所使用的路由算法,例如OBPF和RIP算法
- 外层边界路由算法:`边界路由器`,不同网络整体所使用的路由算法,`公平性且非最优`
- 网际层中的多播和广播(泛洪)
- 传输层:提供进程级端到端的服务
- 网络套接字-Socket:应用层与传输层通信的一个抽象接口,包括IP地址(主机)+端口号(进程)
- 端口号:知名端口号
- TCP:面向连接,基于字节流的服务
- 数据格式:TCP Segment-TCP段
- TCP Header结构:端口号,SYN/FIN/ACK表示,序列号字段
- 序列号-Sequence Number:负载中`第一个字节`的序号,例如Seq=100,表示负载中下一次传递的第一个字节序号为100
- 确认码-ACK Number:期待接受的`下一个字节`的序号,例如序号101,表示预期接受导的下一个字节序号为101
- TCP连接建立:三次握手,SYN占据一个字节
- 为什么不能改为二次握手:`滞留的`TCP连接建立请求
- TCP连接取消:四次挥手,FIN占据一个字节
- 为什么不能改为四次挥手:服务器可能还有数据需要传输给客户
- TCP流量控制
- 流量控制的动机:发送方和接受方的发送/接受速率不匹配
- 滑动窗口协议:序列号,剩余接受窗口大小
- TCP超时时间管理:确认合适的超时时间,SRTT,RTO等
- TCP拥塞控制:快启动,拥塞避免,快重传,快回复
- 最大段长-MSS:拥塞控制中,数据传输的基本单位
- MTU和MSS:帧的负载的长度=IP包裹的总长度=IP头+TCP段=IP头+TCP头+TCP段
- 快启动:小于拥塞阈值时,每返回一个MSS的`ACK`,窗口大小+1,乘法增加
- 拥塞避免:大于等于拥塞阈值时,每一个`RTT`,窗口大小+1,线性增加
- 快回复:遇到连续三个重复的ACK时,窗口和阈值缩小为`一半`
- 快重传:遇到连续三个重复的ACK时,直接重传`丢失的TCP段`
- 超时处理:阈值变为一半,窗口变为1
- TCP Reno和Tahoe:前者包含快速重传和回复的逻辑
- QUIC:快速UDP网络连接
- UDP:无连接,不可靠的连接服务
- UDP数据报的格式
- 应用层
- 网络应用架构/模型-Application Architecture:CS模式和P2P模式
- CS模式:架构简单,方便管理,随时可提供服务;不易扩展,服务器压力大
- P2P模式:架构复杂,不方便管理,消息传递复杂;容易扩展,分布式,扩展性强
- 域名系统-DNS:网址-IP地址
- 根服务器:提供顶级域名服务器的IP地址
- 顶级域名服务器:包含edu/com等顶级域名的服务器
- 权威服务器:包含所需域名的名称服务器,查询时`直接返回IP地址`
- DNS缓存和本地DNS服务器:包含一些常用域名缓存的本地服务器
- 迭代查询和递归查询
- URL:统一资源定位符
- HTTP/HTTPs
- Cookie和Session
- HTML
- 邮件系统:用户代理和邮件服务器
- 发送协议:简单邮件传输协议-SMTP,`只能发送文本类数据`;MIME,可以`发送多媒体数据`
- 接受协议:POP3协议,IMAP-允许用户以文件夹形式管理邮件
- 网络设备
- 集线器:存在冲突,信道共享,需要开启CSMA/CD协议
- 交换器和网桥:不存在冲突,信道独立,分割`冲突域`
- 直接转发 / 存储转发机制
- 为什么路由器需要存储转发:根据IP地址查找路由表(非根本),`检验数据`,`修改条数`,等
- 路由器:分割`不同网络`/`广播域`
- 路由功能:交换控制信息,更新路由表
- 转发功能:根据路由表+路由算法决定下一跳
网络的模型
OSI模型:七层模型
应用层:向用户提供应用程序服务
表示层:对
格式进行转换,例如加密/解密,压缩和解压缩会话层:建立和管理
通信双方的会话,例如腾讯会议双方的通信。传输层:提供
进程为单位的端到端的传输服务。网际层:
不同网络之间的通信服务,IP协议,路由和转发。链路层:
同一局域网下的通信服务,例如成帧,差错检验,信道冲突和无线网络。物理层:二进制比特流的传输服务。
TCP/IP模型:只有四层
- 无链路层
物理层
*链路类型:全双工,半双工,单工
单工:谁能发送、谁能接收,是固定的;数据流只能沿一个固定方向传输;应用:家庭电话。
半双工:谁发送、谁接收,可以变化,但必须轮流;数据流可以沿两个相反方向传输,但同一时间只能传输一个方向的数据流;应用:无限局域网
全双工:谁发送、谁接收,可以变化,并且可以同时进行;数据流可以沿两个相反方向传输,同一时间可以传输相反方向的数据流;应用:TCP双向连接。
信道传输速率
奈奎斯特定律
在理想条件下(带宽受限无噪声),指出码元传输速率是有上限的,超过此上限会出现严重的码间串扰
香农定律
指出了在有噪声的条件下,信道的极限传输速率和信噪比和带宽有关系,如果两者都达到了极限,想要提高速率只能通过让每个码元携带更多的比特信息(换一种编码方式)。
数字调制Modulation:将模拟信号转换数字信号
基带传输
- NRZ编码:0-1编码,无法识别长期的静默0/1
曼切斯特编码:将时钟信号叠加到编码中
翻转-NRZ编码:0-1编码,编码跳转的信号,仍然无法解决静默问题
- 4B/5B编码:使用5B信息编码4B信息,存在浪费
宽带传输:多路复用技术
- 时分复用
- 频分复用
- 波长复用
码分复用技术:共享信道支持同时发送消息
链路层:成帧,差错检验,信道冲突和无限网络
成帧:区分不同帧
- 字节技术法:
- 标志位法:
- 字节填充法:
- 4B/5B编码中增加新的标志
差错检验:冗余位技术—汉明码,奇偶校验,循环冗余码
奇偶检验:只能检验奇数位。
汉明距离:定义为从一个码字转换为另一个有效码字的最短距离,检验和修复的最短位数?
- d位汉明码:检验不超过d位的错误
- 2d+1位汉明码:修复小于等于d位的错误。理解:不仅要检测出来,并且确定唯一最短路径(到两个码字的距离有区别)。
循环冗余码:使用多项式除法决定冗余位
- 给定生成多项式G ( x ) G(x)G(x),取生成多项式最高位的系数例如4,扩充原始
码字的位数 - 进行多项式的除法,得到最后余数,余数的位数不超过生成多项式的最高系数+1(注意0位)
- 使用该结果填充冗余位。
- 如果没有差错,则接受的数据应该能整除生成多项式;否则则说明出现差错。
流量控制:滑动窗口协议
重要的点
捎带确认:在传输数据时顺便传输ACK确认,不单独发送一个ACK确认报文
累计确认:ACKx表示对于前x个报文的累计确认
窗口大小:W s + W R ≤ 2 m W_s+W_R\leq2^{m}Ws+WR≤2m,m mm表示用于编码报文的位数;防止:窗口移动,相同编号报文带来的歧义问题。
- 假设m=2,那么窗口的编号为0,1,2和3.
- 假设发送方窗口为1,接受为4,4+1>4,出现冲突的问题
- 发送方发送1,但是出现拥塞问题未及时传递。此时重新发送1,正常接受,然后接连发送2,3,4和1。此时滞留的1号报文和新发送的1号报文都传递来了,就会出现二义性的问题。
- 注意此时接受方窗口已经移到了新的1号了。
停止-等待 Stop-and-wait:接受和发送窗口都为1
退回N步 Go-back-N:接受窗口为1,发送窗口为N
- 接受方返回的是一个累计的确认
选择性重传 Selective Repeat:接受和发送窗口数大于等于1
- 只是选择性的重传特定的报文(packet)
链路利用率的计算方式
传输时延和传播时延
- 传输时延:数据从网卡推送到物理链路/从链路下载到网卡的时间,例如以太网为10Mbps
- 传播时延:二进制数据流从物理链路一段传播到另一端的时间。
MAC层:媒体访问控制,数据链路层的一个子层
信道划分:静态划分和动态划分
静态划分:时分/频分/码分复用信道
动态划分:CSMA/CD协议
CSMA/CD协议:载波监听,如果有冲突不发送;冲突避免,发送后还需要检测冲突,如果有冲突随机等待并且重发
冲突检测时间和如何避免冲突检测不及时:规定数据大小,约束帧的传输时间>信道上的往返传播时延
- 冲突检测时间:往返传播时间RTT
以太网:802.3
以太网帧的结构
- 长度为1536个字节左右
MTU:单个网络中最大传输单元,表示为以太网帧的负载
透明传输:每一个路由器负责包裹的拆分和整合
非透明传输:每一个路由器只负责包裹的拆分,整合工作在接受方
以太网的传输速率:标准以太网10Mbps,快速100Mbps等
WIFI:802.11
连接过程:与基站连接,分为积极连接(主动探索基站),消极连接(基站主动介绍)
*隐藏终端和暴露终端问题
隐藏终端:传输方向相反,未发现覆盖的情况,以为信道空闲,同时发送产生冲突。
暴露终端:传输方向相反但并未覆盖。误以为产生冲突,放弃发送。
网络层
IP协议:互联网协议
IP协议(Internet Protocol,网际协议)是TCP/IP体系中的网络层协议,主要负责:
- IP地址分配与寻址
- 路由选择算法
- IP数据报封装
- 数据分片与重组
- 无连接的数据报传输
- TTL控制防止循环
- 标识上层协议(TCP/UDP等)
IPv4地址:32位,0.0.0.0-255.255.255.255,8bit/1字节为一组,分别私有和公开IP地址。
IP数据报封装
- DF:不允许分片
- MF:该分片是否为最后一个分片,也就是"还有没有其他分片"
- Offset:该分片所处偏差(前n-1个分片的累计)/8。注意不是最后真实的偏移量,因为13位<16位,所以一个单位代表8bit,还需要单独乘以8。
IP寻址:网络id+主机id—分类寻址,子网寻址,CIDR
分类寻址:网络id和主机id的地址范围进行分类
- 前几位是固定,避免出现相同前缀的网络
- 分类标准是:网络id的范围增大,但主机id的范围缩小。
子网寻址:确定网络id+子网id+主机id,固定/可变子网划分,默认网关和子网掩码
- 出了网络id后,还需要进一步划分不同的子网id,最后才是主机id
- 固定子网:子网的大小是完全一致的
- 可变子网:根据所需要的主机数(例如8-3位,16-4位),定义子网的大小。
寻址方式
- 目标地址&子网掩码,和当前网络&子网掩码,比较目标地址和当前网络是否属于同一个局域网下。
- 如果不属于,则发送给默认网关(路由器),由默认网关决定下一跳。
CIDR:无分类域间路由,只区分前缀id和主机id,路由聚合确定共同前缀和掩码和最长前缀匹配确定网络
- 不区分网络,子网和主机。
- 只区分前缀id和主机id。使用206.0.68.0/22中的22标记前缀长度。
路由聚合
- 多个IP地址取共同前缀,作为前缀ID。
最长前缀匹配:进行子网掩码匹配时,取最长匹配
- 多个IP地址和路由表项匹配时,优先选择最长匹配的一项作为下一跳。
NAT:网络地址翻译
- 路由器会将用户的私有地址翻译为互联网上的公开地址。
私有地址和公开地址
互联网控制协议
ICMP:互联网控制消息协议,用于错误报告和回复请求(ping命令)
ARP:MAC地址寻求协议,用于查询某个IP地址对应的MAC地址,如果不属于一个局域网,则改为发送默认网关的ARP请求。
- 局域网内广播ARP请求
- 如果局域网内有对应IP地址,则该主机会回复ARP请求
- 如果没有人回复,则会发送对于默认网关的ARP请求,将包裹发送至网关处理。
DHCP:动态主机控制协议,为每一个主机分配IP地址,子网掩码和默认网关等网络必备信息。
本地DHCP服务器和DHCP缓存
路由算法
路由和转发的含义
泛洪:与广播类似,对于不同局域网的概念,保证不会出现环
距离矢量算法:分布式的Bellman-Fold算法,代表:路由信息算法
- 每一个路由器定期向周边节点发送/接受路由表。路由表关于与其他节点的距离信息
- 运行Bellman-Fold算法中的松弛操作,决定更新到哪一个路由器的距离。
缺点:坏消息传递慢,被相邻节点误导
链路状态算法:全局式的Dijsktra算法,代表:开放最短路径算法
- 每一个节点将其位置的拓扑信息,定期泛洪到网络上每一个节点。
- 所有节点都会定期这么做,使得任意一个节点都维护当前网络的拓扑信息。
- 运行dijsktra算法获得最短路径。
缺点:维护全局拓扑结构的代价昂贵
边界路由算法:自治系统,内层边界路由算法,外层边界路由算法
自治系统:不同路由器所连接的一个网络整体
内层边界路由算法:每一个网络整体所使用的路由算法,例如OBPF和RIP算法
外层边界路由算法:边界路由器,不同网络整体所使用的路由算法,公平性且非最优
网际层中的多播和广播(泛洪)
传输层:提供进程级端到端的服务
网络套接字-Socket:应用层与传输层通信的一个抽象接口,包括IP地址(主机)+端口号(进程)
端口号:知名端口号
TCP:面向连接,基于字节流的服务
数据格式:TCP Segment-TCP段
TCP Header结构:端口号,SYN/FIN/ACK表示,序列号字段
序列号-Sequence Number:负载中第一个字节的序号,例如Seq=100,表示负载中下一次传递的第一个字节序号为100
确认码-ACK Number:期待接受的下一个字节的序号,例如序号101,表示预期接受导的下一个字节序号为101
TCP连接建立:三次握手,SYN占据一个字节
- 客户发送TCP建立请求:SYN=1
- 服务器返回ACK=1,并且也请求建立TCP连接,SYN=1(此时客户端-服务器的传输路径成立)
- 客户返回ACK=1(此时服务器-客户端的传输路径成立)
- 只有最后一步可以通过捎带ACK的方式实现。
为什么不能改为二次握手:滞留的TCP连接建立请求
TCP连接取消:四次挥手,FIN占据一个字节
- 客户端发起TCP连接取消请求FIN=1
- 此时服务器返回ACK=1,客户端-服务器的传输连接断开。
- 但是服务器可能还有数据发送给客户,因此暂不断开服务器-客户端的传输连接
- 数据传输完毕后,服务器发起TCP连接取消请求FIN=1
- 最后客户端返回ACK确认。双向的连接都断开。
为什么不能改为四次挥手:服务器可能还有数据需要传输给客户
TCP流量控制
流量控制的动机:发送方和接受方的发送/接受速率不匹配
滑动窗口协议:序列号,剩余接受窗口大小
- 发送方正常发送数据和序列号
- 接受方返回确认号和剩余的窗口大小(WIN=2048)
TCP超时时间管理:确认合适的超时时间,SRTT,RTO等
TCP拥塞控制:快启动,拥塞避免,快重传,快回复
最大段长-MSS:拥塞控制中,数据传输的基本单位
MTU和MSS:帧的负载的长度=IP包裹的总长度=IP头+TCP段=IP头+TCP头+TCP段
快启动:小于拥塞阈值时,每返回一个MSS的ACK,窗口大小+1,乘法增加
- 在拥塞窗口小于拥塞阈值时,每收到一个ACK就增加窗口大小
拥塞避免:大于等于拥塞阈值时,每一个RTT,窗口大小+1,线性增加
快回复:遇到连续三个重复的ACK时,窗口和阈值缩小为一半
快重传:遇到连续三个重复的ACK时,直接重传丢失的TCP段
超时处理:阈值变为一半,窗口变为1
TCP Reno和Tahoe:前者包含快速重传和回复的逻辑
QUIC:快速UDP网络连接
UDP:无连接,不可靠的连接服务
UDP数据报的格式
应用层
网络应用架构/模型-Application Architecture:CS模式和P2P模式
CS模式:架构简单,方便管理,随时可提供服务;不易扩展,服务器压力大
P2P模式:架构复杂,不方便管理,消息传递复杂;容易扩展,分布式,扩展性强
域名系统-DNS:网址-IP地址
根服务器:提供顶级域名服务器的IP地址
顶级域名服务器:包含edu/com等顶级域名的服务器
权威服务器:包含所需域名的名称服务器,查询时直接返回IP地址
DNS缓存和本地DNS服务器:包含一些常用域名缓存的本地服务器
迭代查询和递归查询
URL:统一资源定位符
HTTP/HTTPs
Cookie和Session
- Cookie是在HTTP回应中设置的,存放在用户本地。
- Session ID对应Cookie ID,存储用户的个性化信息,存放在服务器端。
- 均是为了解决HTTP无状态这一特点。
HTML
邮件系统:用户代理和邮件服务器
发送协议:简单邮件传输协议-SMTP,只能发送文本类数据;MIME,可以发送多媒体数据
接受协议:POP3协议,IMAP-允许用户以文件夹形式管理邮件
网络设备
集线器:存在冲突,信道共享,需要开启CSMA/CD协议
交换器和网桥:不存在冲突,信道独立,分割冲突域
直接转发 / 存储转发机制
- 直接转发:只读取/下载目的地址(MAC地址),然后根据MAC地址将数据转发到下一个链路
- 存储转发:将数据暂时缓存下来,期间检查目的地址,是否出现差错,然后再进行转发。
| 设备 | 典型方式 |
|---|---|
| 集线器 Hub | 直接转发(物理层) |
| 交换机 Switch | 主要是存储转发,也可直接转发 |
| 路由器 Router | 必须存储转发 |