计算机网络基础
对大学的计算机网络基础做一个总结
概述
因特网的构成
用一句话来总结因特网就是主机(host
)/端系统(end-system
)之间通过通信链路(communication link
)或分组交换机(packet switch
)建立起的互联网,下面简单描述下因特网中的相关概念:
- 端系统:使用因特网的设备(包括用户以及服务器)
- 通信链路:由光纤、铜线等组成的物理媒介(导引型媒介),空气,局域网(非导引型媒介)
- 分组交换机(
packet switch
):数据传递的中介,包括路由器、链路层交换机(link-layer switch
)- 传输速率(
bit/s
/bps
):链路间传输数据的速率- 分组:数据传输过程中以段为单位,并为每段加上一个首部字节,每一段称为一组,端系统通过分组交换资源
ISP
(Internet server provider
):因特网服务提供商,提供因特网服务的供应商- 协议:规定在两个或多个通讯实体间的数据交换格式
- 网络边缘:具体用户用户使用的英特网设备,使用接入网连接到边缘路由器
- 网络核心:由互联因特网端系统的分组交换机和链路构成的网状网络
一般来说,路由器为网络与网络进行交换的节点,交换机等设备是网络内节点
网络边缘vs网络核心
网络边缘
- 定义:主机,应用程序等具体面向客户的因特网设备
- 构成:
- 端系统(主机):运行的应用程序,如
web
等 - 客户/服务器模式:客户端向服务器请求数据,资源
- 对等(
peer-peer
)模式:没有专门的服务器,每个主机都是提供商与接收者
- 端系统(主机):运行的应用程序,如
- 目标:在端系统之间传递数据
- 握手:在数据传递之前做好准备
TCP(transmission control protocol):
传输控制协议- 可靠、按顺序地传递数据
- 流量控制:传送方不会淹没接收方
- 拥塞控制:当网络拥堵时,发送方降低发送速率
- 服务:
HTTP(web)
、FTP
(文件传送)、telnet
(远程登录)、SMTP(email)
UDP(user datagram protocol):
用户数据报协议- 不可靠数据传输,无链接,无流量控制,无拥塞控制
- 服务:流媒体、远程会议、
DNS
、internet
电话
网络核心
- 定义:路由器的网状结构。
- 目标:实现网络端到端数据传输的具体实现
- 方式:分为电路交换和分组交换两种
- 方式:预留一条专有电路
- 特点:独享资源,浪费资源,保证性能 (为每个用户预留资源)
- 电路交换方式:
- 频分(
FDM
):每条通讯独享一个频率段 - 时分(
TDM
):所有通讯按照时间插入推进,用时隙数描述不同时间片段数
- 频分(
- 使用场景:建立连接时间长,浪费片数较多,不适用于计算机通信
- 方式:以分组为单位存储、转发,不再将网络资源分为一个个片,传输时使用全部带宽
- 特点:报文被切分为分组时,会在分组切片上加上分组头部,用于识别分组
- 单位:
- 分组每次移动称为一跳(
hop
) - 链路速率R
- 分组长度L
- 分组每次移动称为一跳(
- 分组延时:由于分组交换需要每组完整进入后续节点,故存在等待延时L/R s(一次)
- 排队:如果到达速率>输出速率,分组就会排队等待传输,如果路由器缓存用完了,分组就会被抛弃
- 转发:将分组从路由器的输入链路转移到输出链路
- 同样的网络资源,分组交换允许更多用户使用网络资源(电路交互预留资源造成极大浪费)
- 分组交换适合于突发式数据传输
- 分组交换过度使用会导致网络堵塞
时延
- 定义:节点和节点传输之间所造成的延迟
- 时延的类型:
- 节点处理时延($d_{proc}$):交换器内部导向的时延
- 排队时延($d_{queue}$):分组等待交换器处理的时延
- 传输时延($d_{trans}$):分组在交换器之间传播完整性等待的时延L/R
- 传播时延($d_{prop}$):在物理媒介中信息传播的时延d/s (物理长度/传输速度)
- 总时延为四者之和
- 排队时延和丢包:
- 流量强度:
aL/R
,a
:分组/s,L
:每组数据量(bit
),R
:传输速率(bps
)- 当流量强度>1:输入数据量大于输出数据量,具有排队时延,且会趋向无穷大
- 丢包:实际设计中具有排队容量,当流量强度>1,数据量超过排队流量后,更多的分组会被丢弃,这个过程被称为丢包
- 吞吐量:系统间传输的宏观时间,分为瞬时吞吐量和平均吞吐量,平均吞吐量由链路中速率最小的一方决定,该链路被称为瓶颈链路
网络结构
- 第一层网络结构:由第一层提供商
ISP
向全球用户提供网络服务- 第二层网络结构:更小型(区域性)的第二层
ISP
- 第三层网络结构:层层递进的网络结构
- 第四层网络结构:引入对等(
peer
)概念,用网络交换点(IXP
)实现不同层级的对等- 第五层网络结构:在对等的基础上引入第一层内容提供商
因特网自顶向下协议栈
传统五层协议栈:
- 应用层:网络应用(
HTTP
、FTP
、SMTP
、DNS
),单位:报文(message
)- 传输层:主机之间的数据传输(
TCP
、UDP
),单位:报文段(segment
)、TCP/UDP
数据报- 网络层:数据从源主机到路由(
IP
、路由协议),单位:分组packet
- 链路层:相邻网络节点之间的数据传输(点对点协议
PPP
、wifi
),单位:帧(frame
)- 物理层:在物理媒介上传输数据,单位:位(
bit
)
OIS7
层网络模型:
在传统模型基础上增加了表示层:用于数据加密、数据压缩等;以及会话层:实现数据交换的同步,检查,恢复
应用层
网络核心的分层结构有一个明显的特点,就是上层结构只由下层作为基础,层层递进。也就是说,网络核心的网络层及以下并不在应用层起作用,应用层的软件交互是由传输层实现的
应用层体系结构
- 客户-服务器体系:一个
always-open
主机作为服务器,为客户提供服务P2P
体系:对等体系,无需中间商交互,直接共享信息
进程通信
- 通信方式:进程通过套接字(
soket
)的软件接口向网络发送或接收报文,其中,报文在网络传输层通过TCP
或UDP
进行数据传递 - 寻址方式:通过寻找(服务器)主机
IP
地址和端口号进行进程寻址
应用程序服务质量指标
- 可靠数据传输:数据传输时的分组丢失情况
- 吞吐量:进程间进行数据交互的速率
bps
- 定时:时间限制,保证每个字节数据到达时间之间的间隔,参考视频加载
- 安全性:加解密,保证运输协议能提供一种或多种安全服务
因特网提供的运输层服务
TCP/IP
服务:面向连接服务和可靠的数据传输,默认端口号80
- 特点:
- 面向连接:数据报文流动前,
TCP
让服务器和客户端交换运输层的控制信息,这就是握手,在握手过后,一个TCP
连接就建立了
- 面向连接:数据报文流动前,
- 可靠的数据传输:通信进程能够依靠
TCP
, 无差错、按适当顺序交付所有发送的数据。没有数据冗余和丢失 - 拥塞控制机制:当传输过程出现拥塞时停止传输
- SSL(Secure Socket Layer)/TLS:安全套接字层,用以在应用层加强
TCP
,对套接字进行加解密
- 特点:
UDP
服务:仅提供最小服务的轻量级运输协议,不保证数据完整性,没有握手过程,没有拥塞机制
应用层协议
- 定义:运行在不同端系统上时的报文交换形式,包括报文交换类型,报文语法,字段语义,进程间发送和响应报文的规则
- 常见类别有
SMTP
(电子邮件)Telnet
(远程终端访问)Http
(web
、流式多媒体)FTP
(文件传输)SIP
、RTP
(因特网电话)
HTTP协议
概述:http
协议全称超文本传输协议,确定服务器客户端结构,明确报文类型,报文由对象构成,html
页面,图片等都可被称为一个对象。运输层使用TCP
进行数据传输。
非持续连接:
HTTP
客户端在80
端口号发起一个到服务器的TCP
连接,在客户端和服务器上分别有一个socket
与该连接相关联,服务器接收连接并返回给客户端HTTP
客户端向服务器发送请求HTTP
服务器获取请求,检索URL
并返回响应报文HTTP
服务器进程通知TCP
关闭TCP
连接HTTP
客户端接收报文,TCP
连接关闭- 对每个请求文件重复1~5操作
其中,一次往返被称为一个往返时间RTT
,总往返时间为:2 * RTT+传输时间
持续连接:
- 特点:服务器返回响应后仍保持TCP连接,相同客户端和服务器的后续请求和响应报文通过相同连接传递,从而节省建立TCP连接的时间
- 非流水持续方式:只有上一个请求响应后进行下一个请求
- 流水持续方式:请求持续发送,无需等待,
http1.1
默认方式
DNS域名解析系统
- 主要目的:1、进行主机域名到
IP
地址的解析2、主机别名和规范名字的转换(别名——正规名字——IP
地址) DNS
域名结构:倒树级结构,逐层向上直到树根——主机域名.三级域.(二级域).顶级域DNS
查询:- 本地服务器:当主机发起一个DNS查询时,查询被送到本地服务器完成
- 递归查询:从本地服务器到根服务器,由根服务器从树根到顶级域,逐层往树叶查找
- 迭代查询:由本地服务器从根服务器开始逐层查询,减少根服务器负载
DNS
缓存:当服务器使用了一个映射,就将该映射缓存起来,从而提高查询效率DDoS
攻击:对根服务器进行流量轰炸,从而使查询阻塞
文件分发模式
- 文件分发模式:
C/S
模式:由服务器进行资源传输,每个客户端独立接收,需要上传N份文件- 分发耗时:$D{C/S} >= max(NF/d{up},F/d_{min})$,服务器上传N份文件,上传时间为NF/d,客户端并行下载,故F/d决定下载耗时,总耗时由N决定,线性增加
P2P
模式:除了服务器上载,所有客户端节点都可以上载,故随着客户量增多,总耗时增加速率变缓- 分发耗时:$D_{P2P}$ >= max{F/us,F/dmin,NF/(us + $\sum$ui)}
视频流化服务和CDN
- 多媒体流化技术:
- 服务端将视频文件分割成多个块,
- 每个块独立存储,编码于不同码率
- 告示文件:提供不同块的
URL
- 客户端先获取告示文件,根据告示文件动态请求不同的块从而实现流化播放
CDN
:内容分发网络- 通过将内容缓存到离用户较近的服务器节点上,提高内容访问速度和可靠性。
传输层
概述
传输层的职责是负责主机间的数据传输,提供可靠的数据传输服务和流量控制
其中涉及到的协议如下:
TCP
(传输控制协议):为调用它的应用程序提供了一种可靠的、 面向连接的服务,拥有拥塞控制、流量控制等机制,对数据完整传输交付有良好适应性UDP
(用户数据报协议):提供了一种不可靠、无连接的服务,无拥塞控制、流量控制,会有数据损失,但也因此数据传输较快,适用于对数据完整度要求不高的服务IP
(网际协议):网络层通信协议,为主机之间提供逻辑通信,尽力交付服务
基于分层网络结构”只关注当前层和服务提供层”的理念,传输层只关心当前层次中的点对点数据传输
多路复用与多路分解
- 定义:将网络层提供的主机与主机的交付服务延伸到应用进程到进程的交付服务。(进程与本机之间的交互)
- 多路复用的要求:1、源端口号2、目标端口号,总计
32bits
- 端口号:分别由
16bits
二进制数组成,数据范围在0~65535
之间- 一般情况下端口号
1~1023
被分配给系统应用使用
- 一般情况下端口号
- 分解服务:当报文到达主机时,运输层检查报文段中的目的端口号,并将它定向到相应的套接字
可靠数据传输(rdt)
- 定义:保证不出错,不丢失的数据传输方式
- 确认阶段:接收方对分组进行校验,如果数据正确,返回
ACK
;数据错误,返回NAK
,发送方根据放回结果决定下一个发送对象,如果为NAK
,重新发送一个分组,直到收到ACK
- 顺序控制(停止-等待协议):
rdt2.1
:增加0,1
状态量,在分组中加入序列号(0,1
)以两个分组为一个校验阶段,从而防止ACK
重复递交导致数据重复,确保数据顺序正确;rdt2.2
:无NAK
协议,用最后接收正确分组的ACK
替代NAK
,从而减少确认信息rdt3.0
:增加超时重传机制,通过重传解决丢包问题rdt
的缺陷:发送方——接收方之间停止等待时间(RTT
)占比过大,导致资源利用率过低
- 流水线协议:
- 定义:允许发送方在未得到对方确认的情况下一次性发送多个分组的协议
- 方法:
- 增加序号范围,用多个
bit
表示分组序号 - 增加缓冲区,发送方用以等待重传,接收方用于将接受的乱序数据排序交付
- 增加序号范围,用多个
- 滑动窗口协议:
- 发送窗口:在未接收的情况下一次发送多个分组,窗口大小由发送缓冲区大小决定,当确认接收后,窗口向后滑动
- 接收窗口:大小由缓冲区大小确定,按顺序移动,只有低序号的分组到来,窗口才向后移动
- 两种通用的流水线协议:
GBN
协议:- 实现:接收方缓冲区大小为1,顺序接收分组;
- 重传:设置一个定时器,时间到达重传所有未确认分组
- 异常处理:当接收数据失败时,发送方重新发送整个缓冲区的分组
- 特点:简单,所需资源少,出错回退代价大,适用于出错率低
SR
协议:- 实现:接收方缓冲区大小>1,允许乱序接收分组
- 重传:为每个分组保持一个定时器,单独发送未确认分组
- 异常处理:某个分组接收失败时,单独重发该分组
- 特点:出错时重传代价小,所需资源多
TCP协议
TCP
实现:点对点,可靠的数据传输,拥塞控制,发送和接收缓存,全双工数据流动,面向连接,有拥塞控制(http/https
协议底层是依靠TCP
传输协议)TCP
报文段结构:- 源端口号(
16bits
) - 目标端口号(
16bits
) - 序号(
32bit
):报文段首字节在字节流中的编号 - 确认号(
32bit
):已经确认接收的报文段编号,即ACK
号确认号是目标端口期望获取的第一个字段
id
,因此确认号和序列号首位编号是一样的
- 源端口号(
TCP
往返延时(RTT
)和超时:- 超时时间根据估算时间和采样时间动态设置
TCP
快速重传:- 原理:如果发送方连续收到3个冗余的
ACK
,重传最小序号的段 - 作用:在计时器超时之前重发报文段,从而增加传输效率
- 原理:如果发送方连续收到3个冗余的
TCP
流量控制:- 由接收方控制发送方,不让发送方发送数据太多,导致缓冲区溢出
TCP
连接管理:- 握手:在正式交换数据前,发送方和接收方握手建立通信关系
- 2次握手的隐患:超时后继续建立连接,导致服务器维护被废弃的半连接,浪费资源
- 3次握手本质:发送方向接收方请求连接,接收方接收连接并向发送方发送反请求,发送方接收反请求并向请求方返回响应结果,接收方接收响应,连接建立
- 关闭连接:把
TCP
连接看成两个半连接,一方向另一方发起请求关闭信息,关闭对向连接
TCP
拥塞机制:- 拥塞定义:太多的数据需要网络传输,超过了网络的处理能力
- 拥塞表现:
- 分组丢失
- 分组经历较长的延时
- 拥塞检测:超时检测
- 控制拥塞:
- 慢启动阶段(
AIMD
):初始cwnd
为1,每收到ACK
后,cwnd
翻倍 - 拥塞避免阶段:当达到上次拥塞时值的一半,进入拥塞避免状态,线性增加
cwnd
- 快速恢复阶段:当丢包之后,立即重传丢失的数据段,
cwnd
减半,后线性增加
- 慢启动阶段(
网络层
概述
网络层功能:将分组从一台主机传到另一台主机,处理路由间的转发和链路间路由选择的功能,简而言之,负责从源主机到目标主机的路由间的最佳路径选择(转发和路径选择)
路径选择分为两个模块,分别是数据平面和控制平面,数据平面负责数据包的封装和发送过程;控制平面则负责网络设备的管理和配置,包括路由选择和策略控制等,包括维护路由表等宏观控制
数据平面:
- 定义:主要负责实际的数据包转发和处理
- 功能:
- 数据包转发:根据转发表,将接收到的数据转发到下一个节点
- 数据包处理:包括数据包处理,过滤,加解密等操作
- 流量管理:通过流量整形和优先级队列管理流量
- 控制平面:
- 定义:控制平面负责网络的整体控制逻辑和管理任务,通过维护和更新路由信息来指导数据平面的操作
- 功能:
- 路由选择:根据网络拓扑和路由协议维护网络
- 拓扑发现:通过协议交换信息,了解网络拓扑结构
- 配置和管理:设置和管理网络设备配置,确保网络正常运行
数据分片
- 定义:数据分片源于链路层对数据的最大荷载,依据链路层最大传输单元(
MTU
)将数据包截成多端数据包在路由之间传输 - 结构:
IP
字段分为IP
首部和荷载,首部固定为20byte
,实际要分段的是荷载 - 偏移量单位取每段数据包大小/8
MF
标志标识最后一段,用(0/1
)标识- 样例:
- 若数据报为
4000byte
,MTU
为1500
,则每个字段有20byte
首部长度 - 实际要处理的数据包大小为
3980byte
,每段最大长度为1480byte
- 每一段偏移量为
185(1480/8)
- 前两段
MF
为1标识非最后,最后一段以0标识结尾
- 若数据报为
网际协议:
- 定义:互联网通信的基石,负责将数据包从源地址传送到目标地址
- 功能:
- 地址分配和路由选择:为每个设备分配一个唯一的
IP
地址,通过路由表和路由算法决定数据包的传输路径 - 数据包封装和拆封:
IP
将上层协议的数据封装为数据包,在数据包首部添加源地址和目标地址,接收数据包时将其拆封并返回给上层协议 - 分片和重组:当数据包超过最大传输单元时,
IP
将其分为更小的片段传输,接收端将其重组为完整数据包 - 错误检测和报告:通过首部校验和字段检验数据包的传输错误,若检测到错误,
IP
协议会报告错误信息
- 地址分配和路由选择:为每个设备分配一个唯一的
IPv4
:IPv4
协议由32
位二进制数据构成,如(192.168.1.1
),每段0-255
(8位),四段IP
地址用来标识并定位主机,IP
地址的分配规则采用子网掩码的形式,即一个厂商用具有相同开头的IP
地址集进行划分,以此类推,直到分配到每一个用户机,子网掩码即一个网络组中共有的那部分位数CIDR
即上述分配方法,是一种灵活的IP
地址分配方法如(192.168.1.0/24
)前24位表示子网掩码,即(/24
子网掩码),具体子网掩码是将其前24
位设为1,其余位设为0- 分配地址时,子网掩码是固定不变的,分配范围为到子网掩码不变情况下的最大范围
IPv6
为IPv4
的升级版,共有128bit
构成- 广播地址:一段数据段最后两位为广播地址(最后一个
bit
)IPv6
的出现是为了解决IPv4
数量不够的问题,IPv6
共有128
位
路由选择算法
- 链路状态(
link-state
)路由算法- 常见实例:
Dijkstra
算法和Prim
算法 - 每个路由器都维护整个网络拓扑结构,并根据收集到的信息构建全局拓扑图
- 算法复杂度高,网络开销大,避免出现路由环
- 常见实例:
- 距离向量(
distance-vector
)路由算法- 每个路由器都维护一张路由表,用来记录到每个网络的最短距离,称为距离向量表
- 每个路由器都只需存储和处理相邻路由器的距离信息,容易出现路由环
链路层
概述
- 功能:用于将网络层的数据包封装为数据帧,每个帧包含源地址目的地址以及校验信息,并且在接收数据包时能够解封数据包,使用
MAC
地址来标识网络中的唯一设备多路访问
分为时分多路复用(TDM
)和频分多路复用(FDM
)
广播通信的四种理想特征:效率、公平性、低延迟、可拓展性CRC循环冗余校验
通过CRC
算法进行数据错误校验,具体步骤如下:
- 对数据D进行拓展(补0),位数为多项式G位数-1,如$x^4+x+1$:10011,位数为4(R的位数也为4)
- 使用模2除法对D和G求余数R,模二除法只在相减过程中求异或
- 将数据D最后一个个位翻转并将余数与D拼合,组成新的数据帧
- 将新的数据帧最后一位反转对G模2运算求余
- 若余数R为0,则标识无错误,否则出错
交换机转发和过滤
- 实现:交换机通过广播的形式转发信息,通过维护一张交换机表实现过滤和转发
- 交换机表记录交换机MAC地址和接口号,每次转发帧时在路由表中记录源地址的接口和MAC地址
物理层
最底层的物理光纤对数据的传输,就不多赘述了