计算机网络
一. 计算机网络体系结构
1.1. 计算机网络的概念
- 互联的、自治的计算机系统的集合
- 以能够相互共享资源的方式互联起来的自治计算机系统的集合
1.2. 计算机网络的组成
- 组成部分:硬件、软件、协议(核心)
- 工作方式:边缘部分(主机)和核心部分(网络和路由器)
- 功能组成(逻辑):通信子网(下三层)和资源子网(上层)
1.3. 计算机网络的功能
数据通信、资源共享(硬件、软件、数据)、分布式处理、提高可靠性、负载均衡
1.4. 计算机网络的分类
- 分布范围
广域网(核心)、城域网、局域网、个人区域网
局域网使用广播技术,广域网使用交换技术 - 传输技术
广播式网络:共享一个公共通信信道,局域网和广域网中的无线、卫星通信
点对点网络:每条物理线路连接一对计算机,采用分组存储转发和路由选择机制,广域网基本属于此类 - 拓扑结构
总线形、星形、环形、网状网络(广域网) - 交换技术
电路交换网络:数据直接传输、时延小,但线路利用率低、不便于差错控制
报文交换网络:充分利用线路容量,但增加了资源开销和缓冲时延,缓冲区难以管理
分组交换网络:平均时延更小、缓冲易于管理
1.5. 计算机网络的性能指标
- 带宽:最高速率(b/s)
- 时延
发送时延:发送时延 = 分组长度/信道宽度
传播时延:传播时延 = 信道长度/电磁波在信道上的传播速率
处理时延:为存储转发而进行的必要的处理时间
排队时延:分组进入路由器后再输入队列中排队,确认转发端口后还要在输出队列排队 - 时延带宽积:时延带宽积 = 传播时延*信道带宽
- 往返时延(RTT):发送数据开始到接收确认总共经历的时延
- 吞吐量:单位时间通过某个信道、接口的数据量
- 速率:数字信道上的传播速率,也称数据传输速率、数据率、比特率
- 信道利用率:指出某一信道百分之多少时间有数据通过
1.6. 计算机网络分层、协议、服务、接口
- 分层:从低到高称为第1层(物理层)、第2层....第n层
作用:每层独立降低系统的复杂性,灵活性更好且便于更新,易于调试,易于抽象,易于标准化
不同机器上的同一层称为对等层,同一层实体称为对等实体,第n层实体实现的服务为第n+1层所利用
各个层次中,每个报文都分为数据部分(SDU)和控制信息部分(PCI),它们共同组成PDU
物理层的PDU称为比特,数据链路层称为帧,网络层分组,传输层报文段,n+1层的PUD作为n层SDU - 协议:由语法(传输数据的格式)、语义(规定完成功能)、同步(事件实现顺序)组成,对等实体的通信规则(水平)
- 接口:相邻两层交换信息的节点,第n层SAP就是n+1层访问n层服务的地方
- 服务:下层为上层提供的功能调用(垂直)
面向连接(TCP)与无连接服务(IP、UDP)、可靠与不可靠服务、有应答和无应答服务
1.7. ISO/OSI参考模型
- 物理层(比特):透明地传输比特流
- 数据链路层(帧):IP数据包组装成帧
成帧、差错控制(比特差错)、流量控制、传输管理
介质访问子层(MAC)还要处理广播式网络对共享信道的访问 - 网络层(数据报):关心通信子网的运行控制以及把分组从源端传到目的端
路由选择、流量控制、拥塞控制、差错控制和网际互联 - 传输层(TCP/UDP):负责主机进程间的通信,提供端到端的可靠传输服务
- 会话层:有序地传输数据(建立同步),通信失效时从校验点恢复通信
- 表示层:定义数据结构、数据压缩、加密。解密
- 应用层:典型的协议有文件传输的FTP、电子邮件的SNTP、万维网的HTTP
1.8. TCP/IP参考模型
网际接口层(物理层和数据链路层)、网际层(网络层)、传输层、应用层
OSI网络层支持无连接和面向连接的通信,传输层仅有面向连接的通信
TCP/IP网际层仅有无连接的通信,传输层支持无连接和面向连接
二. 物理层
2.1. 通信基础
- 数据、信号与码元
信号时数据的电气或电磁表现,是数据在传输过程中的存在形式
模拟信号:连续变化的数据(信号)
数字信号:有限离散的数据(信号)
码元:固定时长的信号波形表示k进制数字 - 信道:信号的传输媒介,线路的逻辑部件
按传输信号形式分为数字信道和模拟信道
两种信道上分别对应传输的信号有基带信号(1/0)和宽带信号
按交互方式可分为单向通信、半双工通信、全双工通信 - 码元传输率(Baud):单位时间传输码元的个数,又称波特率
信息传输速率(比特率) = 波特率 * 单个码元携带比特数
2.2. 奈奎斯特定理和香农定理
-
奈奎斯特定理:码元传输速率存在上限,极限为2W,V为离散电平数,单位是(b/s)
(已知码元比特数)极限数据传输率 = 2Wlog2V -
香农定理:同时考虑了带宽和信噪比,信噪比为信号平均功率与噪声平均功率之比
极限数据传输率 = Wlog2(1+S/N)
若给的是dB,需要进行转换,给出了码元比特数的情况,要同时考虑奈奎斯特定理
2.3. 编码和调制
- 数字数据编码为数字信号
归零编码(RZ):高1低0,归零跳变实现同步
非归零编码(NRZ):高1低0,同步需要时钟线
反向非归零编码(NRZI):变0同1,翻转作为通知实现同步
曼切斯特编码:降1升0,两个电压表示一个值,位中间跳变作为时钟信号实现同步,以太网编码方式
差分曼切斯特编码:变0同1 - 数字数据调制为模拟信号
幅移键控(ASK):改变载波信号的振幅
频移键控(FSK):改变载波信号的频率
相移键控(PSK):改变载波信号的相位
正交振幅调制(QAM):结合ASK和PSK,数据传输速率R = Blog2(mn)
其中B为波特率、m个相位、n中振幅 - 模拟数据编码为数字信号
常用的是对音频信号编码的脉冲调制(PCM)
采样定理(奈奎斯特定理):采样频率大于等于模拟数据的两倍,离散信号可以无失真转换,此时最大波特率就是采样频率 - 模拟数据调制为模拟信号(FDM)
2.4. 交换技术
交换就是按照某种方式动态的分配传输线路的资源
- 电路交换(直通传输)
连接建立、数据传输、连接释放
用户始终占用端到端的固定传输带宽
优点:通信时延小、有序传输、实时性强
缺点:建立连接时间长、信道利用率低、灵活性差、难以规格化 - 报文交换(存储转发)
优点:无建立时延、动态分配线路、提高线路可靠性、提供信道利用率、提供多目标服务
缺点:会存在较大的转发时延,网络节点需要较大缓存空间 - 分组交换(存储转发)
解决了报文交换中大报文传输问题
但每个小数据块都要加上源地址、目的地址和分组编号,降低了通信效率 - 数据报(无连接分组交换)
- 虚电路(面向连接分组交换)
2.5. 传输介质
- 双绞线:绞合可以减少对相邻导线的电磁干扰
传输距离过远时,对于模拟信号需要放大器放大衰减信号,对于数字信号需要中继器进行整形 - 同轴电缆:抗干扰性能比双绞线好
- 光纤:利用光导纤维传递光脉冲
单模光纤:半导体激光器,适用远距离传输
多模光纤:发光二极管,适用近距离传输 - 无线电波、微波、红外线和激光(后三者需要视线通路)
与无线电波不同,微波信号沿直线传播,需要中继站接力,利用同步卫星作为中继的就是卫星通信 - 物理层接口特性
机械特性(接口参数)、电气特性(电压的范围)、功能特性(电压的意义)、过程特性(时间出现顺序)
2.6. 物理层设备
- 中继器:将信号整形并放大(数字信号)再转发出去(最多4个)
- 集线器:多端口中继器(星形拓扑),转发到所有端口(除输入端口),只能在半双工状态下工作,计算机会平分带宽
中继器和集线器既无法分割冲突域,也无法分割广播域
三. 数据链路层
3.1. 数据链路层的功能
- 为网络层提供服务:在物理层提供服务的基础上向网络层提供服务,使之对网络层表现为无差错链路
无确认的无连接服务:适用于实时通信或误码率较低的通信信道,如以太网
有确认的无连接服务:适用于误码率较高的通信信道,如无线通信
有确认的面向连接服务:适用可靠性、实时性高的场合(链路管理,如局域网中共享信道的管理) - 帧定界、帧同步和透明传输
网络层的分组上添加首部和尾部,同时用标识位界定帧开始和结束,以及避免数据部分与帧定界符产生冲突(透明传输) - 流量控制:限制发送方的数据流量,控制的是相邻节点之间数据链路上的流量
- 差错控制:由于信道噪声,用循环冗余校验(CRC)控制位错,加入定时器和编码机制来控制帧错
3.2. 组帧:为了出错时只重发出错的帧,从而提高效率
帧是网络中信息传输的最小单位,所以既要加头部,又要加尾部
- 字符计数法:帧头部使用计数字段来标明帧内字符数(包括自己)
- 字符填充的首尾定界符法:用特定字符定界帧的开始与结束,为了透明传输,数据部分要使用转义字符
- 零比特填充的首尾标志法:用特定的比特模式(01111110)标志帧的开始和结束,为了透明传输,数据部分遇到五个连续1添加0,接收方逆操作
- 违规编码法:例如曼切斯特编码中,使用违规码序列界定帧的起始和终止(IEEE802)
3.3. 差错控制(位错)
- 检错编码(冗余编码技术)
奇偶校验码:由n-1位信息位和1位校验位组成,奇校验码使得1个数为奇数,偶校验码使得1个数为偶数,如果出错后奇偶性不变则无法校验
循环冗余码(CRC)
发送方和接收方事先商定一个多项式G(x),最高位和最低位必须为1(这里要注意多项式和位串的转换)
在帧的低位上加r个0,r的值为多项式的阶数,也就是位数减一
帧对多项式进行模2除法运算(异或),得到余数作为FCS拼接到帧后面 - 纠错编码(海明码):不仅能发现错位,同时能指出错位位置
海名距:纠正k比特错误,需要2k+1的海明距,检查k比特错误,需要k+1的海明距
(1)首先确认海明码的位数
(2)确认海明码校验位分布:i位海明码位于2i-1,从右往左升序排列
(3)分组形成校验位:数据位海明位等于校验位海明位位号之和来得到分组(与信息位数据无关)
(4)校验位根据分组求异或取值
(5)校验:每个分组和对应校验位值求异或,得到r个校验值,若全为0则没有出错,否则对应十进制数出错
3.4. 流量控制和可靠传输机制(实际上一般不在数据链路层实现可靠传输)
流量控制常见的方法有停止等待协议和滑动窗口协议
可靠传输机制通常使用确认和超时重传两种机制来完成
- 停止-等待协议
发送单个帧之后必须等待确认帧,相当于发送窗口和接收窗口均为1的滑动窗口协议
能保证有序并且只需1bit用于帧的编号 - 后退N帧协议(GBN)
连续发送多个帧并等待确认帧,若超时则重发出错帧以及之后的帧
接收方必须按序接收,若失序可以选择接收方要求重发,或者等待其超时重发
采用累积确认的方式
发送窗口应该满足1<=W<=2n-1,避免无法区分新帧和旧帧
例如ack0丢失,当此时接受窗口已经接收一遍,会等待下一个0号帧,而发送方超时重传的是上一个0号帧 - 选择重传协议(SR)
只重传出错的数据帧,需要保证接收方移动窗口后,新窗口与旧窗口没有重叠部分
接收窗口 + 发送窗口 <= 2n
接收窗口最大值为2n-1 - 信道利用率:有效发送数据时间占整个发送周期的比率
发送周期:发送方开始发送数据到收到第一个确认帧为止
假设发送方在这个周期发送L比特数据,数据传输率为C,周期为T,则信道利用率为(L/C)/T
3.5. 介质访问控制
为使用介质的每个节点隔离来自同一信道其他节点所传送的信号
决定广播信道(局域网)分配的协议属于数据链路层中的介质访问控制子层
3.5.1 信道划分介质访问控制
多路复用:一条介质上同时携带多个传输信号
- 频分多路复用(FDM)
多路基带信号调制到不同频率载波上,再叠加形成复合信号,总和不能超过信道总带宽 - 时分多路复用(TDM)
按时间分成若干时间片,轮流地分给多个信号使用,统计(异步)时分多路复用能动态分配时隙,提高利用率 - 波分多路复用(光的FDM)
- 码分多路复用(CDM)
指定站点A码片序列例如00011011,对应向量(-1 -1 -1 +1 +1 -1 +1 +1),发送1时发送该向量,0反码
指定站点B码片序列例如00101110,对应向量(-1 -1 +1 -1 +1 +1 +1 -1),发送1时发送该向量,0反码
两向量正交,规格化內积为0,向量与自身的规格化內积为1,与反码规格化內积为-1
公共信道上对两向量进行线性叠加,若要得到A则将叠加向量与A对应向量相乘
3.5.2 随机访问介质访问控制
所有用户根据自己意愿随机发送信息,占用信道全部速率,胜利者通过争用获得信道
实质上是一种将广播信道转换为点对点信道的行为
- ALOHA协议
纯ALOHA协议:碰撞后等待一段随机时间重传,吞吐量为0.184
时隙ALOHA协议:规定每个时隙开始时才能发送一个帧,吞吐量为0.368 - CSMA协议(载波监听多路访问)
多了一个载波监听装置,发现信道空闲后再发送
(1)1-坚持:空闲立即发送,忙继续监听,发生冲突随机等待一段时间再监听
(2)非坚持:空闲立即发送,忙则随机等待一段时间再监听
(3)p-坚持:空闲以p概率发送,1-p概率推迟到下一个时隙,忙则持续监听 - CSMA/CD(载波监听多路访问/碰撞检测)
适用于总线形网络或半双工网络(以太网)
电磁波传播速率有限,某个时刻检测到信道空闲时,信道不一定是空闲的
只有经历过2τ的时间后才能真正得知是否空闲,τ为单程传播时延,这个2τ也称为争用期
帧的传输时延至少要两倍于传播时延,以便在发送前就检验到前一个帧是否冲突
最小帧长 = 总线传播时延数据传播速率2
以太网的最短帧为64B
二进制退避算法:k等于重传次数,但不超过10,重传次数超过16则丢弃,从[0,1...2^k-1]中随机取r,退避时间为2rτ - CSMA/CA
应用于无线局域网,因为无线信号接受信号强度远小于发送信号,同时存在隐蔽站问题难以碰撞检测
发送数据前先等待DIF,然后发送RTS控制帧,广播告诉其他节点,AP发送CTS允许数据传播的同时,抑制其他站点
3.5.3 轮询访问介质访问控制
令牌传递协议,主要应用于令牌环局域网中
限定了有权力发送数据的节点只有一个,相比随机访问的争用,轮询是轮流占用信道,适用于负载很高的广播信道
3.6. 局域网
IEEE802局域网模型只对应OSI的数据链路层和物理层,并将数据链路层分为LLC(给帧加序号)和MAC(透明传输、比特差错检验)
- 以太网(802.3)
逻辑结构总线形,拓扑结构是星形
采用无连接不可靠的工作方式,发送数据采用曼切斯特编码
以太网的传输媒介和网卡(见105)
以太网的MAC地址长6字节,校验码4字节,校验时不仅要校验MAC帧数据部分,还要校验目的地址、源地址和类型字段
高速以太网:100BASE-T以太网、吉比特以太网、10吉比特以太网(光纤、不使用CSMA/CD) - 无线局域网(802.11)
MAC层使用CSMA/CA协议
最小构件是基本服务集BSS,基本服务集的基站也称AP,与BSS外站通信必须经过AP,AP间的通信使用有线传输
3.7. 广域网
广域网由结点交换机和连接这些交换机的链路组成,问题在于路由选择和分组转发
- PPP协议:串行线路面向字节的协议
PPP协议由LCP(链路控制协议)、NCP(网络控制协议)和将IP数据报封装到串行链路的方法组成
PPP只保证无差错接受,是不可靠的传输协议,只支持全双工链路
在异步线路中采用字节填充法,在同步线路中采用比特填充用于透明传输 - HDLC协议:面向比特的协议
保证可靠传输,采用比特填充的首尾标志法,包含信息帧、监督帧、无编号帧
3.8. 数据链路层设备
-
网桥
优点:过滤信息通量、扩大物理范围、使用不同物理层、互联不同局域网
能隔开冲突域,不能隔开广播域。必须具有路径选择功能,会造成广播风暴
透明网桥按照自学习算法处理收到的帧,为了防止兜圈子使用生成树算法
源路由网桥通过广播发现帧找到最佳路由 -
局域网交换机(多端口网桥)
一般工作在全双工,此时吞吐量为各主机之和
能隔开冲突域,不能隔开广播域
VLAN即可以隔开冲突域,又能隔开广播域
若数据帧源MAC地址不在转发表,则加入转发表,并将帧转发给其他端口
有直通式和存储转发式的两种交换模式,直通式只需检查帧的目的地址(6B)
四. 网络层
4.1. 网络层的功能
- 异构网络互联
- 路由与转发:路由选择(从相邻路由器构建路由表)和分组转发(根据转发表将IP数据报从合适端口转发出去)
- 拥塞(全局)控制:吞吐量随网络负载增大而下降,进行开环控制和闭环控制
4.2. 路由算法
-
距离-向量路由算法(RIP路由信息协议):每个节点每次更新将全部路由表发送给相邻节点
PIP属于应用层协议,使用UDP传送数据,好消息收敛快,坏消息收敛慢
一条路径最多包含15个路由器(防止循环在环路上),适用小型互联网
仅在相邻路由器交换信息,按固定时间交换全部信息(路由表)
路由表更新过程:X传来的RIP报文《目的网络,距离,下一跳路由器地址》先把下一跳地址修改成X,再把距离加一
没有目标网络N则添加;有目的网络N,其下一跳为传来路由表的路由器,进行更新;距离更小项目进行替换 -
链路状态路由算法(OSPF开放最短路径优先协议):每个节点具有完全的网络拓扑信息
OSPF属于网络层协议,直接用IP数据报传输
向所有路由器发送信息,发送的是相邻路由器的链路状态(与哪些路由器相连以及对应的代价)
只有当链路状态发生变化时才用洪泛法向所有路由器发送信息
根据同步的全网拓扑结构图使用Dijkstra算法计算最优路径(路由表只存储下一跳) -
外部网关协议(BGP边界网关协议):不同自治系统的路由器之间交换路由器信息的协议
BGP是应用层协议,基于TCP,是一种路径-向量算法,找一条较好路径
每个自洽系统需要BGP发言人与其他系统交换信息,该路由器除了运行BGP外,还要运行AS的内部网关协议
和本节点相邻路由器进行交换,首次交换整个路由表,之后交换变换部分
4.3 IPv4
1. IPv4分组
源地址4B,目的地址4B,校验和2B(只校验首部),首部长度一般为20B
首部长度基本单位4B、总长度基本单位1B、片偏移基本单位8B
数据链路层帧的MTU(46B~1500B)限制IP数据报长度,大于限定长度需要进行分组
根据标识、标志、片偏移完成重组,同一批分组标识一样,MF=0表示最后一个片,DF=0表示可以分组
每个分组要拼接一个首部,数据部分长度相应减少,根据该数据长度计算片偏移(除以8B)
转发分组流程
- 从数据包首部提取目的主机IP地址D,得到目的网络地址N
- 若网络N与此路由器直接相连,则直接交付给目的主机
- 若路由表有目的地址为D的特定主机路由,把数据报传送给指定的下一跳路由
- 若路由表有到达网络N的路由,传送给指定的下一跳路由
- 传送给默认路由器
得到下一跳IP地址后,并不会在数据报中修改IP地址(会丢失目标),而是转化成MAC地址(通过ARP),根据MAC地址找到下一跳
在不同网络中传送,MAC源地址和目的地址都要改变,网桥转发帧不改变MAC源地址(通过源地址更新转发表)
2. IPv4与NAT
IP地址由网络号和主机号组成
IPv4给每台主机(路由器)分配32比特的唯一标识符,IP地址分为A(8)、B(16)、C(24)、D、E五类
主机号全为1表示本网络广播地址,全为0表示网络本身,故最大主机数-2
网络号为0不可指派,故最大网络数-1,A类127是环回自检网络,再-1
IP分级好处:IP管理机构只分配网络号,主机号由得到该网络自行分配,方便管理。路由表仅根据网络号转发分组,减少存储
路由器的每个端口都有一个不同网络号的IP地址
网络地址转换(NAT)将专用网络地址转为公用地址,使得专用网只需一个全球IP,大大节省了IP地址消耗(路由器需要装NAT软件)
普通路由器不改变源IP地址和目的IP地址,仅工作在网络层。NAT路由器需改变IP地址并查看和转换传输层端口号
3. 子网划分与子网掩码、CIDR
子网划分:IP地址增加子网号字段,使两级地址变成三级地址
单位对外仍表现为没有划分子网的网络,从主机借用若干比特作为子网号
子网掩码:告诉主机或路由器进行了子网划分,通过子网掩码表示对主机号的借位
由一串1和一串0构成,1对应网络号和子网号,0对应主机号,将IP与子网掩码相与,可得到子网网络地址
子网掩码下的网络和转发分组
同一子网所有主机和路由器端口要设置相同子网掩码
路由器包含目的网络地址、子网掩码、下一跳地址
- 提取目的主机IP地址D,对路由器相连网络子网掩码逐个相与
- 结果与相应网络地址匹配,则直接交付
- 若路由表有目的地址为D的特定主机路由,把数据报传送给指定的下一跳路由
- 路由表每一行子网掩码与D逐位与,结果为N,若N与该行目的网路地址匹配,传送到下一跳
- 传送给默认路由器
CIDR(无分类域间路由选择):变长子网掩码消除A、B、C类网络划分
路由表由网络前缀和下一跳地址组成,当不止一个匹配结果时,选择最长前缀(最佳匹配)
无分类两级编址为网络前缀和主机号,采用斜线记法(IP地址/网络前缀所占比特数)
通过IP地址与掩码逐位相与得到网络前缀
特点:可以通过分配的地址进一步划分子网(增加网络前缀所占比特)
网路前缀相同的连续IP组成CIDR地址块(减少网络前缀所占比特),可以表示很多地址(路由聚合)
4. ARP、DHCP与ICMP
ARP(地址解析协议)
在实际链路上传输帧时,必须要使用硬件地址,需要用到ARP完成IP地址到MAC地址的映射
每个主机都有APR高速缓存,存放主机和路由器的IP到MAC的映射表,称为ARP表
以主机A向本局域网中主机B发送数据报为例(不在同一个网络则找路由器硬件地址并转发)
- APR高速缓存查看有无主机B的IP地址,如果有,将其对应硬件地址写入MAC帧
- 如果没有,发送广播ARP请求分组,主机B收到请求后向主机A发出响应ARP分组(包含主机B的IP和MAC映射关系)
- 主机A收到后将此映射写入APR缓存,并按查询到的硬件地址发送MAC帧
DHCP(动态主机配置协议):应用层协议基于UDP
给主机动态分配IP地址,提供即插即用的联网机制
DHCP发现(找服务器)——>DHCP提供(提供IP)——>DHCP请求(请求提供IP)——>DHCP确认(分配IP)
ICMP(网际控制报文协议):网络层协议,为了提高IP数据包交付成功机会
包括ICMP差错报告报文和ICMP询问报文
4.4 IPv6
主要特点(解决IP地址耗尽):采用CIDR、NAT和更大的地址空间(16B)
不允许分片,首部长度基本单位是8B,IPv6地址用冒号分割8组的4位16进制数
IPv4向IPv6过渡采用双协议栈和隧道技术(IPv6数据报封装到IPv4数据报的数据部分)
4.5 组播和IGMP
组播基于UDP,为了将一个分组发给多个目的地主机
主机组播时只发送一份数据,数据在传送路径分岔将分组复制转发(组播路由器)
IP组播使用D类地址格式(224~239),IP转MAC需要取后23位
IGMP(因特网组管理协议)
移动IP在本地网,按传统TCP/IP通信,在外地时,本地代理构建通向转交地址的隧道,转交地址再解封装送到移动节点处
4.6 路由器的组成和功能
源主机和目的主机在同一网络上,可以直接交付无需通过路由器
路由器可以连接不同的网络,隔离广播域
路由选择部分(控制部分):根据协议完成路由表计算,构建路由表,并定期进行更新
分组转发部分:包括交换结构、输入端口和输出端口,处理数据流和进行转发表查询、转发
一般来说,路由表包括4个项目:目的网络IP地址,子网掩码、下一跳IP地址、接口
转发表由路由表得到并进行查找结构优化
五. 传输层
5.1. 传输层服务
-
功能
传输层提供应用进程间的逻辑通信(端到端通信)
复用(多个进程能使用同一传输层协议)分用(数据能正确交付到目的进程)
传输层对报文进行差错检测(网络层只检查首部)
提供面向连接的TCP和无连接的UDP -
端口和寻址
端口标识主机中的应用程序,传输层使用的是软件端口
端口号长度为16bit,分为服务器端端口号和客户端端口号
端口号拼接到IP地址形成套接字Socket,唯一标识网络中一台主机的进程
FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|
21 | 23 | 25 | 53 | 69 | 80 | 161 |
- 无连接和面向连接
TCP提供一条全双工的可靠逻辑信道,UDP提供不可靠的逻辑信道
TCP提供面向连接的服务,需要进行确认、流量控制、计时器和连接管理,增加了开销,适用于HTTP、TELNET等场所
UDP比较简单、执行速度快、实时性更好,适用TFTP、DNS、SNMP、RTP
TCP和网络层虚电路区别:虚电路经过的节点必须保存虚电路状态信息,无法提供无连接服务
5.2. UDP协议
UDP仅在IP服务上增加复用分用和差错检测两个基本服务,首部开销为8B
支持一对一、一对多、多对一、多对多交互通信
常用于一次性传输数据较少(DNS、SNMP)的应用和实时性要求高的应用(IP电话、实时视频会议)
首部开销8B包括源端口、目的端口、长度、校验和(通过伪首部进行校验,数据部分非偶数字节补一个全0字节)
通过伪首部,可以检查源端口号、目的端口号、数据部分,还可以检测源IP地址和目的地址
5.3. TCP协议
1. TCP的特点和格式
TCP只能一对一,提供可靠交付服务,保证数据无差错、不丢失、不重复且有序
TCP全双工通信,两端设有发送缓存和接收缓存
TCP传输数据单元称为报文段,首部为20B,包括以下字段
源端口(2B)和目的端口(2B)、序号(字节编号)、确认位ACK、同步位SYN(连接请求和连接接收)、窗口、校验和
2. TCP连接管理
连接的建立:经历三次握手
- 客户机给服务器发送连接请求报文段(SYN=1、seq=x)
- 服务器收到连接请求报文,发回确认报文段(SYN=1、ACK=1、ack=x+1、seq=y)服务器资源分配
- 客户机收到确认报文段,再发回确认报文段(ACK=1、ack=y+1、seq=x+1)客户机资源分配
洪泛攻击:发送大量连接请求报文段,同时不对服务器的ACK予以确认,使其处于半连接状态
连接的释放:经历四次握手
- 客户机给服务器发送连接释放报文段(FIN=1、seq=u)
- 服务器收到连接释放报文段后发出确认(ACK=1、ack=u+1、seq=v)客户机——>服务器得到释放
- 服务器给客户机发送连接释放报文(FIN=1、ACK=1、ack=u+1、seq=w)
- 客户机最后进行确认(ACK=1、ack=w+1、seq=u+1)、等待2MSL才进入连接关闭(防止报文段丢失)
3. TCP可靠传输
可靠:接收方读取的字节流与发送方发出的字节流完全一样
TCP使用校验(添加伪首部)、序号(按字节进行编号)、确认(采用累积确认)和重传机制实现可靠传输
超时重传:对每个报文段设置一次计时器,采用自适应算法得到合适的重传时间
冗余ACK:每当比期望序号大的失序报文段到达时,都发送一个冗余ACK,指明下一个期待的字节序号,收到3个后立即重传(快速重传)
4. TCP流量控制
流量控制是一个速度匹配服务(匹配发送方发送速率和接收方读取速率),否则容易导致溢出和丢包
通信过程中,接收方根据自己接收缓存大小,动态调整发送方发送窗口大小(通过首部窗口字段)
5. TCP拥塞控制
拥塞是一个全局性的过程,过多的数据注入网络,常常表现为通信时延的增加
慢开始算法:先令拥塞窗口cwnd=1,然后逐步增大cwnd(每一轮RTT指数增加)
拥塞避免算法:当cwnd小于阈值,使用慢开始算法,大于阈值时,使用拥塞避免(线性增加cwnd)
网络拥塞处理:出现拥塞时(未按时收到确认)把阈值设为当前cwnd一半,然后cwnd重新设为1,使用慢开始算法
快重传:通过冗余ACK检测丢包,而不必等到计时器超时
快恢复:连续收到三个冗余ACK时,cwnd值设置为门限ssthresh减半后的值,然后执行拥塞避免算法
六. 应用层
6.1. 网络应用模型
-
客户/服务器模型(Web、FTP、远程登录、电子邮件)
客户程序需要知道服务器程序地址,服务器程序不知道客户程序地址
客户机之间不直接通信,服务器处于等待接受请求状态 -
P2P模型
每个节点是对等的,消除了对某个服务器的依赖,提高了资源利用率
可扩展性号、健壮性强,但为其他节点提供服务会占用较多内存
6.2. DNS(域名系统):便于记忆的主机名转化成IP地址
采用客户/服务器模型,运行在UDP上,使用53号端口
-
层次域名空间
因特网采用层次树状结构命名方法 -
域名服务器
域名到IP地址的解析是由运行在域名服务器上的程序完成的,域名服务器采用分布式设计
根域名服务器、顶级域名服务器、授权域名服务器、本地域名服务器 -
域名解析过程
通过本机的DNS客户端构建一个DNS请求报文,以UDP数据报方式发往本地域名服务器
递归查询:主机——>本地域名服务器——>根域名服务器——>顶级域名服务器——>权限域名服务器,每次访问都让下一个服务器作为代理
迭代查询:仅让本地域名服务器作为代理,像查看索引表一样分别从高到低访问对应服务器
- 客户机向本地域名服务器发出DNS请求报文
- 本地域名服务器收到请求,查看本地缓存,若没有,向根域名服务器发出解析请求报文
- 根域名服务器判断该域名属于.com域,将对应顶级域名服务器dns.com的IP返回给本地域名服务器
- 本地域名服务器向顶级域名服务器发出解析请求报文
- 顶级域名服务器判断该域属于abc.com域,将授权域名服务器dns.abc.com的IP地址返回给本地域名服务器
- 本地服务器向授权域名服务器发出解析请求报文
- 授权域名服务器将查询结果返回给本地域名服务器
- 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机
6.3. FTP(文件传输协议)
基于客户/服务器的工作方式,使用TCP服务,端口号为21
提供不同种类主机文件传输能力,以匿名FTP提供公用文件共享能力
控制连接:服务器监听21号端口,等待客户连接
数据连接:使用20号端口,分为主动模式和被动模式,控制信息是带外传送的
6.4. 电子邮件
电子邮件是一种异步通信方式
SMTP基于TCP服务的客户/服务器工作方式,端口号为25,只能传输ASCII码文件
POP3基于TCP服务的客户/服务器工作方式,端口号为110
包括三个组成成分:用户代理、邮件服务器和电子邮件协议(SMTP、POP3)
连接建立:发件人邮件发送到发送方邮件服务器、SMTP客户扫描缓存、有邮件使用25端口与接收方邮件服务器建立TCP连接
MIME:SMTP无法传输可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充
IMAP:可以正文和附件分离读取
基于万维网的电子邮件:如Hotmain、Gmail,浏览器和邮件服务器之间使用HTTP,服务器之间使用SMTP
6.5. 万维网
统一资源定位符(URL)可以唯一标识资源,这些资源通过HTTP传送给使用者,后者通过点击链接获取资源
URL相当于文件名在网络范围的扩展,一般形式为<协议、主机、端口、路径>
- 浏览器分析URL
- 向DNS请求解析域名对应IP
- 域名系统DNS解析并返回对应IP
- 浏览器与该服务器建立TCP连接(端口号80)
- 浏览器发出获取指定路径文件HTTP请求
- 服务器通过HTTP把文件发送给浏览器
- 释放TCP连接
- 浏览器解析文件,并向用户显示web页
HTTP本身是无连接的(交换时连接),同时也是无状态的(不会记录)
实际应用中使用cookie来提供个性化服务
非持久连接(每个网页元素都要单独建立一个连接)和持久连接(分为流水线和非流水线)
HTTP分为请求报文和响应报文
难点题型
1. k段链路的分组交换时延和电路交换时延计算
d(每段链路传播时延)、b(速率)、p(分组大小)、x(处理后的总报文比特数)、s(电路建立时间)
注意:若给的是处理前的报文比特数,还需要通过分组中数据部分长度和控制部分长度运算出待传输的总报文比特数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南