计算机网络
一、体系结构
概念:计算机网络就是一些互连的、自治的计算机系统的集合
组成
-
组成部分
- 硬件:主机、通信线路、交换设备、通信处理机等
- 软件:各种资源共享软件、各种工具软件
- 协议:核心
-
工作方式
- 边缘部分:主机组成,用来进行通信和资源共享
- 核心部分:网络和路由器组成,提供连通性和交换服务
-
功能组成
- 通信子网:各种传输介质、通信设备和相应网络协议
- 资源子网:实现资源共享功能的设备及其软件集合
功能
- 数据通信
- 资源共享
- 分布式处理
- 提高可靠性
- 负载均衡
分类
-
按分布范围
- 广域网:交换技术
- 城域网:以太网技术
- 局域网:广播技术
- 个人区域网
-
按传输技术
- 广播式网络
- 点对点网络
-
按拓扑结构
- 星形网络:中央设备交换机或路由器,中心结点对故障敏感
- 总线形网络:任意一处对故障敏感
- 环形网络:信号单向传输
- 网状形网络:可靠性高
-
按使用者
- 公用网
- 专用网
-
按交换技术
-
电路交换
-
三个阶段:建立连接、传输数据、断开连接,典型传统电话网络
-
特点
- 优点:数据直接传送,延迟小
- 缺点:线路利用率低
-
-
报文交换(存储转发)
- 充分利用线路容量、实现格式转换、实现一对多、多对一访问实现不同链路之间不同数据率的转换
-
分组交换:缓冲易于管理,平均延迟小,更易于标准化
-
性能指标
- 带宽
- 时延
- 吞吐量
- 速率
分层结构
协议
-
对等实体进行通信的集合
-
组成
- 语法:传输数据的格式
- 语义:所要完成的功能
- 同步:事件实现顺序
接口:同一结点内相邻两层间交换信息的连接点
服务:下层为相邻上层提供的功能调用
参考模型
-
ISO/OSI模型
-
应用层:用户与网络的界面
-
表示层:处理交换信息的表示方式,数据压缩、加密、解密
-
会话层:管理主机间的会话进程,实现数据同步
-
传输层
- 端到端通信
- 传输单位:报文段(TCP)或用户报(UDP)
- 功能:提供可靠传输服务、流量控制、差错控制、服务质量、数据传输管理
- 协议:TCP、UDP
-
网络层
- 传输单位:数据报、分组
- 功能:路由选择、流量控制、拥塞控制、差错控制、网际互连
- 协议:IP(网际协议)、IPX、ICMP(网际报文控制协议)、IGMP(网际组管理协议)、ARP(地址解析协议)、RARP、OSPF
- 可同时提供无连接服务和面向连接服务
-
数据链路层
- 点对点通信
- 传输单位:帧
- 功能:成帧、差错控制、流量控制、传输管理、保证数据正确的顺序和完整性
- 协议:SDLC、HDLC、PPP(点对点协议)、STP、帧中继
-
物理层
- 传输单位:比特
- 功能:传输比特流
-
-
TCP/IP模型
- 应用层
- 传输层
- 网际层
- 网络接口层
二、物理层
通信基础
-
信道
- 单工:只有一个方向的通信,而没有反方向的交互
- 半双工:通信双方都可以发送、接收信息,但不能同时发送、接收
- 全双工:通信双方可以同时发送、接收信息
-
定理
- 奈氏准则:理想低通信道下的极限数据传输率2Wlog2V
- 香农定理:信道的极限数据传输速率WIog2V(1+S/N)、信噪比=10log10(S/N)
-
调制与编码
-
调制:把数据变换为模拟信号的过程
-
编码:把数据变换为数字信号的过程
-
数字数据→数字信号
-
非归零码
- 实现容易、没有检错功能、难以保持同步
-
曼彻斯特编码
- 中间出现电平跳变,可用于同步,用于以太网
-
差分曼彻斯特编码
- 实现自同步、抗干扰性好,常用于局域网
-
-
数字数据→模拟信号:幅移键控、频移键控、相移键控、正交振幅调制
-
模拟数据→数字信号:1.抽样 2.量化 3.编码
-
模拟数据→模拟信号:频分复用技术等
-
-
传输方式
-
电路交换:两结点之间建立一条专用的物理通信路径,传输期间一直独占
-
报文交换:无需建立专门连接,报文携带有目标地址等信息,采用存储转发方式
-
分组交换
- 把报文分割成小的数据块,加上必要的控制信息进行传输
- 数据报:分组之间可能存在不同路径,各个分组分别转发
- 虚电路:在发送方和接收方建立一条逻辑上相连的虚电路,分组沿着虚电路传输
-
传输介质
- 无线:无线电波、微波、红外线和激光
- 有线:双绞线、同轴电缆、光纤
设备
-
中继器
- 原理:将衰减的信号再生
- 将信号整形并放大再转发出去,消除信号的失真和衰减问题,具有5段通信介质-4个中继器-3个段接PC-2个段扩展规则
- 两个网段的数据传输率要相同
-
集线器
- 实质上是一个大多端口中继器,对信号进行放大后发到其他所有端口
- 拓扑结构上属于星形、共享式网络
-
转发器:只能放大信号
三、数据链路层
功能:为网络层提供服务、链路管理、定界、帧同步与透明传输、流量控制和差错控制
组帧
-
字符计数法:在帧头部使用一个计数字段来标明帧内字符数
-
首尾定界法
- 概念:使用特定字符或比特模式定结帧的开始和结束
- 字符填充:在数中的特殊字符前面用转义字符填充
- 比特填充:数据区每遇到连续5个1就填充一个0
-
违规编码法:信号传输过程中采用违规的编码来表示帧的起始和终止
差错控制
-
检错编码:奇偶校验码、循环冗余码
-
纠错编码
-
海明码
- 能发现双比特错,但只能纠正单比特错
- n个信息位插入k个校验位,满足:2k>=n+k+1
- 纠错d位,码距为2d+1,检错d位,码距为d+1
-
可靠传输:数据链路层通常使用确认和超时重传两种机制来保证可靠传输
流量控制
-
停止等待协议
- 发送方每发送一帧都要等待接收方的应答信号才能发送下一帧
- 发送窗口大小=1,接收窗口大小=1
-
后退N帧协议
- 发送方一次可发送N帧,按序接收,重传从最后一个确认开始
- 发送窗口大小>1,接收窗口大小=1
-
选择重传协议
- 发送方一次可发送N帧,可以不按序接收,重传没有确认的帧
- 发送窗口大小>1,接收窗口大小>1
介质访问
-
信道划分
-
频分复用FDM
- 将多路信号调制到不同频率载波上疊加形成一个复合信号
- 适用于传输模拟信号
-
时分复用TDM
-
将物理信道按时间分为若干时间片,轮流给不同信号使用
-
传输介质的性质:介质的位速率大于单个信号的位速率
-
适用于传输数字信号
-
分类
- 同步时分多路复用:预先分配时间片
- 异步时分多路复用(统计时分复用):动态分配时间片
-
-
波分复用:在一根光纤中传输多种不同波长(频率)的光信号
-
码分复用:靠不同的编码来区分各路原始信号,例如CDMA技术
-
-
随机访问
-
ALOHA协议
- 纯ALOHA:不检测直接发送,若无确认则等待重发
- 时隙ALOHA:将时何划分为若干等长时隙,按时发送
-
CSMA协议
- 1-坚持:闲则发送,忙则继续监听
- 非坚持:闲则发送,忙则等待一个随机时间再听
- p-坚持:闲则以概率p发送,1-p等待下一个时隙,忙则等待一个随机时间再听
-
CSMA/CD协议
-
流程:先听后发,边听边发,冲突停发,随机重发
-
碰撞解决:采用二进制指数退避算法来解决碰撞问题
- 考虑了网络负载对冲突的影响
- k=min[重传次数,10]
- 重传16次仍不成功,丢弃帧,向高层报告出错
-
适用于总线型网络或半双工网络
-
争用期:信号在最远两个端点之间往返传输的时间
-
-
CSMA/CA协议
- 避免碰撞:预约信道、ACK帧(数据帧的确认)、RTS/CTS帧
- 碰撞解决:采用二进制指数退避算法来解决碰撞问题
- 适用于无线局域网
-
-
轮询访问:令牌传递协议
- 只有得到令牌的机器才能发送数据,其他必须等待
- 适用于负载重的广播信道
局域网
-
在一个较小地理范围内,将各种计算机等设备通过双绞线等介质连接
-
IEEE
802标准- 对应于OSI参考模型的数据链路层和物理层
- 逻辑链路控制LLC子层:建立和释放逻辑连接、提供与高层的接口、差错控制、给帧加序号
- 媒体连接控制MAC子层:组帧、拆帧、比特差错检测、寻址、透明传输、竞争处理
-
传输介质适用情况
参数 10BASE5 10BASE2 10BASE-T 10BASE-FL 传输媒体 基带同轴电缆(粗缆) 基带同轴电缆(细缆) 分屏蔽双绞线 光纤对 编码 曼彻斯特编码 拓扑结构 总线型 星型 点对点 最大段长 500m 185m 100m 2000m 最多结点数目 100 30 2 2 -
MAC帧
- MAC地址长6字节,48位
- 局域网中两设备的静态MAC地址相同时,都不能正常通信
-
高速以太网
-
100BASE-T
- 在双绞线上传送100mbs基带信号的星形拓扑结构以太网,使用CSMA/CD协议
- 支持半双工方式、全双工方式(不使用CSMA/CD协议)
- 保持最短帧长不变,将一个网段的最大长度减少到100m,从而提高以太网数据传输速率
-
10G比特以太网 只支持全双工方式
-
-
令牌环网
- 令牌实质是MAC控制帧,有时间限制
广域网
-
PPP协议
-
提供差错检测功能,不可靠传输
-
面向字节,采用字节填充方式
-
只支持全双工链路、仅支持点对点通信
-
两端可以运行不同的网络层协议
-
组成
- 链路控制协议LCP
- 网络控制协议NCP
- 一个将IP数据报封装到串行链路的方法
-
-
HDIL协议
- 面向比特,采用0比特插入法
- 分类:信息帧:使用编号和确认机制,提供可靠传输、监督帧和无编号帧
设备
-
网桥
-
特点:把两个或多个以太网通过网桥连接起来变成一个网段
-
类型
- 透明网桥:按照自学习算法填写转发表,按转发表转发
- 源路由网桥:先发送发现帧,按返回结果转发
-
-
交换机
-
特点:实际就是一个多端口网桥
-
交换方式
- 直通式:帧在接收后只检查目的地址,几乎能马上就被传出去
- 存储转发:先将接收到的帧缓存到高速缓存器,检查数据正确性
-
-
相同点:按MAC地址转发,都能隔离冲突域,不能隔离广播域
四、网络层
功能:异构网络互联:数据链路层和物理层均不同、路由与转发、拥塞控制
路由算法
-
静态:由网络管理员手工配置路由信息
-
动态
-
通过路由器间彼此交换的信息来构造路由表
-
距离-向量算法
- 慢收敛是导致发生回路的根本原因
-
链路状态算法
-
层次路由
-
概念:将互联网分成许多较小的自治系统,系统有权决定自己内部采什么路由协议
-
协议
- 内部网关协议:自治系统内部使用的网关协议,如RIP、OSPF
- 外部网关协议:自治系统之间使用的网关协议,如BGP4
IPv4
-
首部:固定部分共20B,其中首部长度、总长度和片偏移的基本单位分别为4B、1B、8B
-
NAT
-
实现专用网络地址和公用网络地址之间的相互转换
-
私有IP地址
- A类:1个A类网段 10.0.0.0-10.255.255.255
- B类:16个B类网段 172.16.0.0-172.31.255.255
- C类:256个C类网段 192.168.0.0-192.168.255.255
-
-
子网划分
- 采用子网掩码对物理子网再一次进行子网划分
- 增加子网的数量,减少广播域的大小
-
CIDR:在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分
-
路由聚合
- 概念:将网络前缀都相同的连续的地址组成“CIDR地址块”
- 目的:使得一个地址块可以表示很多地址,减少路由表表项和路由器间的信息交换
- 方法:把一串IP地址都写为二进制表示,取最长的公共前缀作为网络号
-
协议
-
ARP 地址解析协议
- 对于特定的IP地址,查询其对应的物理地址
- 工作在网络层
-
DHCP
- 给网络中的主机动态的分配IP地址
- 应用层协议,基于UDP
-
ICMP
-
用来给主机或路由器报告差错和异常情况
-
IP层协议
-
种类
-
ICMP差错报告报文
-
用于目标主机或路径上的路由器向源主机报告差错和异常情况
-
分类
- 终点不可达:路由器或主机不能交付数据报
- 源点抑制:路由器或主机由于拥塞而丢弃数据报
- 时间超过
- 参数问题
- 改变路由
-
-
ICMP询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
- 掩码地址请求和回答报文
- 路由器询问和通告报文
-
-
应用
-
PING命令
- 工作在应用层,直接使用网络层ICMP协议
- 使用ICMP回送请求和回答报文
-
traceroute、tracert
- 工作在网络层
- 使用ICMP时间超过报文
-
-
-
IPv6:首部40B,地址长度16B
- 主要用于解决IPv4的地址耗尽问题
- 不允许分片
- 不提供校验和字段
路由协议
-
内部网关协议IGP
-
路由信息协议RIP
- 基于距离向量路由选择协议,使用UDP
- 固定时间间隔,与相邻路由器交换整个路由表
- 应用层协议
-
开放最短路径优先协议OSPF
- 基于链路状态路由算法,使用IP
- 链路状态变化时,与全部路由器交换相邻结点链路状态
- Dijkstra算法计算最优路径
-
-
外部网关协议EGP
-
边界网关协议BGP
- 基于路径向量路由选择协议,使用TCP
- 寻找的并非最佳路由
-
-
路由协议总结
协议 RIP OSPF BGP 类型 内部 内部 外部 路由算法 距离-向量 链路状态 路径-向量 传递协议 UDP IP TCP 路径选择 跳数最少 代价最低 较好,非最佳 交换结点 和本结点相邻的路由器 网络中所有的路由器 和本结点相邻的路由器 交换内容 当前本路由器知道的全部信息 与本路由器相邻的所有路由器的链路状态 首次 整个路由表 非首次 有变化的部分
IP组播
- 在发送者和每一接收者之间实现点对多点网络连接,应用UDP协议
- 使用D类地址224.0.0.0-239.255.255.255,后23位构成硬件地址
- 为了避免环路,构造组播转发树
移动IP
- 概念:移动节点以固定的网络IP地址,实现跨越不同网段的漫游功能
- 组成:移动结点、本地代理、外部代理
路由器
-
特点:可以用来连接异构网络,完成路由转发,能隔离冲突域和广播域, 依照IP地址转发
-
组成
- 控制部分:路由选择处理机,根据路由协议构造与维护路由表
- 分组转发部分:交换结构、一组输入端口和一组输出端口
-
路由表:目的网络IP地址、子网掩码、下一跳IP地址、接口
五、传输层
提供服务:进程之间的逻辑通信、复用和分用、差错检测、面向连接的TCP和无连接的UDP
UDP协议
-
特点:无连接、首部开销小、最大努力交付,应用层要保证可靠性
-
首部:8B
- 源端口号
- 目的端口号
- 长度:首部和数据
- 校验和:数据报有错丢弃
-
校验:采用首部、伪首部(源、目的IP)、数据进行二进制反码算求和再取反
TCP协议
-
特点:有连接、一对一、提供可靠交付、全双工通信、面向字节流
-
首部:20B,源端口、目的端口、序号、确认号等控制信息
-
连接管理:
-
三次握手建立
- 第二次握手SYN和ACK标志位置1
-
四次握手释放
-
-
可靠传输机制
-
序号:用来保证数据能有序提交给应用层
-
确认:确认号为期待收到的下一个报文段第一个字节的序号
-
重传
- 超时:计时器到期还没收到确认则重传对应报文
- 冗余确认:当收到失序报文时向发送端发送冗余ACK
-
-
流量控制:在确认报文中设置接收窗口rwnd的值来限制发送速率
-
拥塞控制
-
原理:根据自己估算的网络拥塞程度设置cwnd的值来限制发送速率
-
方法
- 慢开始:当cwnd<ssthresh时,每收到一个报文段的确认cwnd加1
- 拥塞避免:当cwnd>ssthresh时,每经过一个往返延时cwnd加1
- 快重传:当收到连续的三个重复的ACK,直接重传对方期待的报文
- 快恢复:当收到连续的三个冗余ACK,令ssthresh=cwnd=cwnd/2
-
拥塞处理:ssthresh置为原cwnd的一半,cwnd置1
-
六、应用层
网络应用模型
-
C/S模型
-
服务器
- 处理请求
- 面向任务
-
客户机
- 发出请求
- 面向用户
-
-
P2P模型
- 每台机器既是服务器又是客户机
- 动态的逻辑网络
域名系统
-
作用:把主机名转换为IP地址
-
协议与端口:运行在UDP之上,使用53号端口
-
服务器分类
- 根域名服务器:知道所有顶级域名服务器的地址
- 顶域名服务器:负责管理在其服务器注册的所有二级域名
- 授权域名服务器:能将其管辖的主机名转换为该主机的地址
- 本地域名服务器:本地网络提供商负责的域名服务器
-
查询方式
- 递归查询:由查询的服务器发起下一次的查询
- 递归与送代结合:除第一次查询外,其余均由本地域名服务器向外查询
文件传输协议FTP
-
作用:允许用户在因特网上存取文件
-
协议与端口:运行在TCP之上
- 控制链接为21号端口(控制信息带外传送)
- 数据链接为20号端口
-
允许用户指明文件的类型与格式
电子邮件
-
Simple Mail Transfer Protocol
- 作用:向邮件服务器主动发送电子邮件
- 协议与端口:运行在TCP之上,使用25号端口
-
POP3
- 作用:向邮件服务器要求接收电子邮件
- 协议与端口:运行在TCP之上,使用110号端口
- 基于ASCII码的,在传输层使用明文来传输密码
万维网
-
统一资源定位符:负责标识万维网上各种文档
-
超文本传输协议
- 作用:在万维网上能够可靠地交换文件
- 协议与端口:运行在TCP之上,使用80号端口
-
超文本标记语言:文档结构标记语言,使用约定的标记对页面上的各种信息进行描述
应用层协议总结
应用程序 | FTP数据连接 | FTP控制连接 | TELNET | SMTP | DNS | TFTP | HTTP | POP3 | SNMP |
---|---|---|---|---|---|---|---|---|---|
使用协议 | TCP | TCP | TCP | TCP | UDP | UDP | TCP | TCP | TCP |
熟知端口号 | 20 | 21 | 23 | 25 | 53 | 69 | 80 | 110 | 161 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)