导图社区 计算机网络
这张思维导图以计算机网络为核心,全面且系统地呈现了该领域的丰富知识。从计算机网络体系结构出发,详细阐述了计算机网络的概述、分类、性能指标等基础内容,为深入学习奠定坚实基础。物理层作为网络的基础层级,模板中涵盖了双绞线、光纤等传输介质,以及中继器、集线器等物理层设备的相关知识,帮助理解网络信号在物理介质上的传输原理。传输层则聚焦于TCP和UDP协议,深入剖析其特点、端口号、连接管理等内容,是掌握网络数据传输可靠性与高效性的关键。数据链路层介绍了差错控制、流量控制等重要机制,以及以太网、无线局域网等常见的链路层技术,让学习者明白数据在局域网内的传输规则。网络层是互联网的核心,模板详细讲解了IP协议、路由算法、IPv4与IPv6的区别等核心内容,对于理解互联网的架构与数据转发原理至关重要。应用层涵盖了HTTP、FTP、DNS等常见应用层协议,展示了网络在各类实际应用中的工作方式。通过这张思维导图,学习者能够将计算机网络复杂的知识点进行有机整合,形成清晰的知识脉络,加深对网络原理与技术的理解。无论是课堂学习、项目实践还是考试复习,它都能成为用户的得力助手。
编辑于2026-03-19 14:33:28对于高等数学学习感到吃力的学生,尤其是正在紧张备考考研的同学来说,这张高数思维导图模板宛如一场“及时雨”,是一份不可多得的数学学习宝藏资料。从不定积分的概念、性质到计算方法,帮助学生掌握积分运算的基本技能,为后续学习奠定基础。多元函数微分学部分,详细介绍了多元函数的基本概念、偏导数、全微分等内容,使学生理解多元函数的微分特性。二重积分作为积分学在二维空间的应用,模板中清晰地展示了其概念、性质以及计算方法,助力学生解决实际问题。常微分方程板块,涵盖了常微分方程的基本概念、一阶微分方程、高阶微分方程等重要知识,让学生学会运用微分方程解决实际中的变化问题。这张思维导图采用简洁明了的图表和文字,将高数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,梳理知识体系,提升解题能力,在考试中取得理想的成绩,为后续的学术研究和职业发展打下坚实的数学基础。
对于线性代数学习存在困扰的学生,尤其是正在紧张备考考研的同学来说,这张线性代数知识图谱模板堪称“救星”,是一份不可多得的宝藏学习资料。从抽象的行列式公式,详细列举了行列式的基本性质与运算规则,为学生掌握这一基础工具提供了清晰的指引。矩阵部分更是内容丰富,涵盖了矩阵的概念、运算、逆矩阵以及矩阵的秩等关键内容,帮助学生构建起完整的矩阵知识体系。向量作为线性代数的重要组成部分,图谱中深入讲解了向量的线性相关性、线性表示等重要概念,为学生理解向量空间奠定基础。线性方程组部分,详细阐述了方程组的解的情况以及求解方法,使学生能够熟练运用所学知识解决实际问题。特征值和特征向量以及二次型等较为复杂的内容,在图谱中也得到了清晰的呈现,包括它们的定义、性质以及计算方法等,助力学生攻克学习难点。这张知识图谱采用图文并茂、逻辑清晰的形式,将线性代数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,提升解题能力,在考试中取得优异成绩。
对于正在全力备战计算机考研的同学以及计算机相关专业的学生而言,这张关于数据结构的思维导图模板无疑是一份不可多得的宝藏学习资料,是助力他们在计算机知识海洋中遨游的得力指南。在绪论部分,涵盖了数据结构的基本概念、算法的基本概念以及算法效率的度量等内容,为后续深入学习搭建起知识框架。线性表作为基础数据结构,详细介绍了线性表的定义、基本操作,以及顺序表和链表的实现方式,让学生清晰掌握线性数据的组织与存储。栈、队列和数组板块,讲解了栈和队列的特性、基本操作以及在不同场景下的应用,帮助学生理解特殊线性结构的使用方法。树和二叉树部分深入剖析了树的基本概念、存储结构,以及二叉树的遍历、线索化等重要知识,是掌握非线性数据结构的关键。图的结构则更为复杂,模板中详细阐述了图的定义、存储方式以及图的遍历、最短路径等算法,助力学生攻克图结构相关难题。查找和排序作为数据结构的重要应用,分别介绍了各种查找算法和排序算法的原理、实现及性能分析,让学生学会如何高效地查找和排序数据。无论是用于日常学习、课后复习,还是考研冲刺阶段的查漏补缺,它都能发挥巨大作用,帮助学生提升学习效率,在计算机学习的道路上稳步前行。
社区模板帮助中心,点此进入>>
对于高等数学学习感到吃力的学生,尤其是正在紧张备考考研的同学来说,这张高数思维导图模板宛如一场“及时雨”,是一份不可多得的数学学习宝藏资料。从不定积分的概念、性质到计算方法,帮助学生掌握积分运算的基本技能,为后续学习奠定基础。多元函数微分学部分,详细介绍了多元函数的基本概念、偏导数、全微分等内容,使学生理解多元函数的微分特性。二重积分作为积分学在二维空间的应用,模板中清晰地展示了其概念、性质以及计算方法,助力学生解决实际问题。常微分方程板块,涵盖了常微分方程的基本概念、一阶微分方程、高阶微分方程等重要知识,让学生学会运用微分方程解决实际中的变化问题。这张思维导图采用简洁明了的图表和文字,将高数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,梳理知识体系,提升解题能力,在考试中取得理想的成绩,为后续的学术研究和职业发展打下坚实的数学基础。
对于线性代数学习存在困扰的学生,尤其是正在紧张备考考研的同学来说,这张线性代数知识图谱模板堪称“救星”,是一份不可多得的宝藏学习资料。从抽象的行列式公式,详细列举了行列式的基本性质与运算规则,为学生掌握这一基础工具提供了清晰的指引。矩阵部分更是内容丰富,涵盖了矩阵的概念、运算、逆矩阵以及矩阵的秩等关键内容,帮助学生构建起完整的矩阵知识体系。向量作为线性代数的重要组成部分,图谱中深入讲解了向量的线性相关性、线性表示等重要概念,为学生理解向量空间奠定基础。线性方程组部分,详细阐述了方程组的解的情况以及求解方法,使学生能够熟练运用所学知识解决实际问题。特征值和特征向量以及二次型等较为复杂的内容,在图谱中也得到了清晰的呈现,包括它们的定义、性质以及计算方法等,助力学生攻克学习难点。这张知识图谱采用图文并茂、逻辑清晰的形式,将线性代数中错综复杂的知识点有机串联,形成了一个易于理解和记忆的知识网络。学生可以利用它进行课前预习,快速把握课程重点;课后复习时,能够查漏补缺,加深对知识点的理解;对于考研学生而言,更是复习备考的得力助手,帮助他们在有限的时间内高效复习,提升解题能力,在考试中取得优异成绩。
对于正在全力备战计算机考研的同学以及计算机相关专业的学生而言,这张关于数据结构的思维导图模板无疑是一份不可多得的宝藏学习资料,是助力他们在计算机知识海洋中遨游的得力指南。在绪论部分,涵盖了数据结构的基本概念、算法的基本概念以及算法效率的度量等内容,为后续深入学习搭建起知识框架。线性表作为基础数据结构,详细介绍了线性表的定义、基本操作,以及顺序表和链表的实现方式,让学生清晰掌握线性数据的组织与存储。栈、队列和数组板块,讲解了栈和队列的特性、基本操作以及在不同场景下的应用,帮助学生理解特殊线性结构的使用方法。树和二叉树部分深入剖析了树的基本概念、存储结构,以及二叉树的遍历、线索化等重要知识,是掌握非线性数据结构的关键。图的结构则更为复杂,模板中详细阐述了图的定义、存储方式以及图的遍历、最短路径等算法,助力学生攻克图结构相关难题。查找和排序作为数据结构的重要应用,分别介绍了各种查找算法和排序算法的原理、实现及性能分析,让学生学会如何高效地查找和排序数据。无论是用于日常学习、课后复习,还是考研冲刺阶段的查漏补缺,它都能发挥巨大作用,帮助学生提升学习效率,在计算机学习的道路上稳步前行。
计算机网络
计算机网络体系结构
计算机网络概述
计算机网络的概念
计算机网络由若干节点和链接这些节点的链路组成
节点(Node)
可以是计算机、集线器、交换机或路由器灯
链路(Link)
Internet
专用名词
指当前全球最大的、开放的、由众多网络和路由器互连而成的特定计算机网络
采用TCP/IP族作为通信规则
internet
泛指由多个计算机网络互连而成的计算机网络
这些网络之间可以使用任意的通信协议作为通信规则
计算机网络的组成
从组成部分看
硬件
主机(端系统)
通信链路(如双绞线、光纤)
交换设备(如路由器、交换机)
通信处理机(网卡)
. . .
软件
主要包括各种实现资源共享的软件
方便用户使用的各种工具软件
如E-mail、FTP程序、聊天程序等
协议
计算机网络的核心
规定了网络传输数据时所遵循的规范
从工作方式看
边缘部分
由所有连接到互联网上的供用户直接使用的主机组成
用来进行通信(如传输数据、音频或视频)和资源共享
核心部分
由大量网络和连接这些网络的路由器组成
为边缘部分提供连通性和交换服务
从功能组成看
通信子网
由各种传输介质、通信设备和相应的网络协议组成
它使网络具有数据传输、交换、控制和存储的能力,实现联网计算机之间的数据通信
资源子网
实现资源共享功能的设备及其软件的集合
向网络用户提供共享其他计算机上的硬件资源、软件资源和数据资源等服务
计算机网络的功能
数据通信
资源共享
分布式处理
当计算机网络中的某个计算机系统负荷过重时,可将其处理的某个任务分配给网络中的其他计算机系统
提高可靠性
计算机网络中的各台计算机可通过网络互为替代机
负载均衡
电路交换、报文交换与分组交换
电路交换
电路交换分为三步
建立连接
开始占用通信资源
建立一条专用的物理通信路径
由通信双方之间的交换设备和链路逐段连接而成
传输数据
一直占用通信资源
释放连接
归还通信资源
评价
优点
通信时延小
有序传输
没有冲突
实时性强
缺点
建立连接时间长
线路利用率差
灵活性差
难以实现差错控制
报文交换
数据交换的单位是报文
用户数据加上源地址、目的地址等信息后,封装成报文(Message)
报文交换采用存储转发技术
整个报文先传送到相邻节点,全部存储后查找转发表,转发到下一个节点,如此重复,直至到达目的节点
每个报文都可单独选择到达目的端的路径
评价
优点
无建立连接时延
灵活分配线路
线路利用率高
支持差错控制
缺点
转发时延高
缓存开销大
错误处理低效
分组交换
也采用存储转发技术
解决了报文交换中报文过长的问题
若报文过长,则对交换节点的缓存容量就有较大的需求,在错误处理方面比较低效
源主机在发送之前,先把较长的报文划分为若干较小的等长数据段(具有固定最大长度),在每个数据段前面添加一些由必要控制信息组成的首部,构成分组(Packet)
源主机将分组发送到分组交换网中,分组交换网中的分组交换机收到一个分组后,现将其缓存,然后从其首部中提取目的地址,据此查找自己的转发表,再将分组转发给下一个分组交换机
评价
优点
方便存储管理
传输效率高
可以使后一个分组的存储操作与前一个分组的转发操作并行
减少传输时延
减少了出错概率和重传代价
缺点
存在存储转发时延
需要传输额外的信息量
当分组交换网采用数据服务时,可能出现失序、丢失或重复分组的情况,分组到达目的主机时,要对分组按编号进行排序等工作
若采用虚电路服务,则没有失序问题,但有呼叫建立、数据传输和虚电路释放三个过程
比较
当要连续传送大量的数据,且其传送时间远大于连接建立时,采用电路交换较为合适
从提高整个网络的信道利用率来看,报文交换和分组交换优于电路交换
其中分组交换必报文交换的时延小,也更为灵活,尤其适合突发式数据传送
计算机网络的分类
按分布范围分类
广域网(WAN)
提供长距离通信,运送主机所发送的数据,覆盖范围通常是直径为几十米到几千千米的区域
是互联网的核心部分
连接广域网的各节点交换机链路一般都是高速链路,具有较大的通信容量
城域网(MAN)
直径为5~50km
大多数采用以太网技术
局域网(LAN)
一般用主机通过高速线路相连,覆盖范围较小,覆盖区域为几十到几千米的区域
使用广播技术
个人区域网(PAN)
按传输技术分类
广播式网络
所有联网计算机共享一个公共通信信道
局域网基本上都采用广播式通信技术,广域网中的无线、卫星通信网络也采用广播式通信
点对点网络
每条物理线路连接一对计算机
按拓扑结构分类
总线形网络
用单根传输线把计算机连接起来
评价
优点
建网容易、增/减节点方便、节省线路
缺点
重负载时通信效率不高、总线任意一处对故障敏感
星形网络
每个终端或计算机都以单独的线路与中央设备相连
中央设备一般是交换机或路由器
评价
优点
便于集中控制和管理
缺点
成本高、中央设备对故障敏感
环形网络
所有计算机接口设备连接成一个环
环既可以是单环也可以是双环,环中信号是单向传输的
网状网络
每个节点至少有两条路径与其他节点相连,多用在局域网中
有规则型和非规则型
评价
优点
可靠性高
缺点
控制复杂、线路成本高
按使用者分类
公用网
电信公司出资建造的大型网络
专用网
某个单位为满足单位特殊业务的需要而建造的网络
按传输介质分类
有线网络
双绞线网络
同轴电缆网络
. . .
无线网络
蓝牙
微波
无线电
. . .
计算机网络的性能指标
速率(数据传输速率、数据率或比特率)
指连接到网络上的节点在数字信道上传送数据的速率
单位
b/s(比特/秒)或bit/s(bps)
带宽(Bandwidth)
表示网络的通信线路所能传送数据的能力
是数字信道所能传送的“最高数据传输速率”
吞吐量(Throughput)
单位时间内通过某个网络(或信道、接口)的实际数据量
常用于对实际网络的测量
时延(Delay)
指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需的总时间
由4部分构成
发送时延
节点将分组的所有比特推向链路所花费的时间
从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所花费的时间
发送时延 = 分组长度 / 发送速率
发送总时延 = 文件的发送时延 + 一个分组的转发和传播时延
传播时延
电磁波在信道(传输介质)中传播一定的距离所花费的时间
即一个比特从链路的一端传播到另一端所需的时间
传播时延 = 信道长度 / 电磁波在信道上的传播速率
处理时延
分组在交换节点为存储转发而进行的一些必要处理所花费的时间
分析分组的首部
差错校验
查找合适的路由
. . .
排队时延
分组在路由器的输入队列或输出队列中排队等待所花费的时间
时延带宽积
考虑一个代表链路的圆柱形管道,长度表示链路的传播时延,横截面积表示链路带宽
时延带宽积表示该管道可以容纳的比特数量
往返时延(RTT)
从发送端发出一个短分组,到发送端收到来自接收端的确认总共经历的时间
信道利用率
有数据通过的时间 / (有数据通过的时间+无数据通过的时间)
计算机网络体系结构与参考模型
计算机网络分层结构
分层的基本原则
每层都实现一种独立的功能,降低大系统的复杂度
各层之间的接口自然清晰,易于理解,相互交流尽可能少
各层功能的精确定义福利与具体的实现方法,可以采用最合适的技术来实现
保持下层对上层的独立性,上层单向使用下层提供的服务
整个分层结构应能促进标准化工作
实体
指任何可发送或接收信息的硬件或软件进程,通常是某个特定的软件模块
第n层的活动元素通常称为第n层实体
对等层
不同机器上的同一层
对等实体
同一层的实体
服务提供者(n)和服务用户(n+1)
n层向第n+1层提供服务包括其以下各层提供的服务
协议数据单元(PDU)
对等层之间传送的数据单位
n-PDU
各层PDU都分为
服务数据单元(SDU)
层与层之间交换的数据单位
协议控制信息(PCI)
每层的协议数据单元都有一个通俗的名称
物理层
比特流
数据链路层
帧
网络层
分组
传输层
报文段
当在各层之间传输数据时,将从第n+1层收到的PDU作为第n层的SDU,加上第n层的PCI,就封装成了第n层的PDU
n-SDU + n-PCI = n-PDU = (n-1)-SDU
层次结构的含义包含
第n层的实体不仅要使用第n-1层的服务来实现自身定义的功能,还要向第n+1层提供本层的服务,该层服务式第n层及其下面各层服务的总和
最低层只提供服务,是整个层次结构的基础;最高层面向用户提供服务
上一层只能通过相邻层间的接口使用下一层的服务
通信时,对等层在逻辑上有一个直接信道,表现为能直接将信息传送到对方
补充
分层的目的不包括定义功能执行的具体方法
计算机网络协议、接口、服务的概念
协议
网络协议
为了在网络中进行数据交换而建立的这些规则、标准或约定
是控制在对等实体之间进行通信的规则的集合,是水平的,不对等实体之间是没有协议的
组成
语法
数据与控制信息的格式
如TCP首部格式
语义
需要发出何种控制信息、完成何种动作及做出何种应答
同步(或时序)
执行各种操作的条件、时序关系等
即时间实现顺序的详细说明
接口
服务访问点(SAP)
同一节点内相邻两层的实体交换信息的逻辑接口
每层直接能在紧邻的层之间定义接口
服务是通过ASP提供给上层使用的
服务
下层为紧邻的上层提供的功能调用,是垂直的
分类
面向连接服务与无连接服务
面向连接服务
通信前双方必须建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和占用的资源
分为三个阶段
连接建立、数据传输、连接释放
如TCP
无连接服务
需要发送数据时可直接发送,将每个带有目的地址的包(报文分组)传送到线路上,有系统选定路线进行传输
是一种不可靠服务
如UDP、IP
可靠服务和不可靠服务
可靠服务
具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地
不可靠服务
其网络的正确性、可靠性由应用或用户来保障
有应答服务和无应答服务
有应答服务
应答由传输系统内部实现
无应答服务
若需要应答,则由高层实现
ISO/OSI参考模型和TCP/IP模型
OSI参考模型
物理层
传输单位
比特
功能
在物理介质上为数据端设备透明地传输原始比特流
主要研究
通信链路与通信节点的连接需要一些电路接口,物理层规定了这些接口的一些参数,如机械形状和尺寸、引脚的数量和排列等
物理层规定了通信链路上锁纯属的信号的意义和电气特征
注意
传输信息所用的一些物理介质并不在物理层协议之内
物理层不存在下一层,自然也就不用封装
数据链路层
传输单位
帧
主要作用
加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错数据链路
数据链路层将网络层交来的IP分组封装成帧,并且可靠地传输到相邻节点的网络层,实现节点之间的差错控制和流量控制的功能
差错控制可以检测出因外界噪声干扰导致原始的物理连接在传输比特流时可能发生的错误,然后将收到的错误信息丢弃
这类差错发生在物理层,由数据链路层检验
如果相邻节点之间发送速率比接收速率快,若不加以控制,会导致目的节点丢弃很多来不及接收的正确数据,造成传输线路效率下降,流量控制可以协调两个节点的速率
广播式网络在数据链路层还要处理如何控制对共享信道的访问
提供的是点到点通信
一个点指一个硬件地址或IP地址
数据链路层在不可靠的物理介质上提供可靠的传输,作用包括
物理寻址
组帧
流量控制
差错检验
数据重发
. . .(不包括拥塞控制)
网络层
传输单位
数据报
主要任务
将网络层的协议数据单元(分组)从源主机传输到目的主机,为分组交换网上的不同主机提供通信服务
关键问题
对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互连等功能
网络层既提供有连接可靠的虚电路服务,又提供无连接不可靠的数据报服务
传输层(运输层)
负责主机中两个进程之间的通信,提供端到端的流量控制、差错控制、连接建立与释放、可靠传输管理等服务
端到端
运行在不同主机内的两个进程之间的通信
只有传输层以上的通信才能成为端到端
传输层仅提供有连接可靠的服务
通过传输层的屏蔽,高层用户看不到通信子网的交替和变化
复用和分用的功能
复用
多个应用层进程可同时使用下面传输层的服务
分用
传输层将收到的信息分别交付给上面应用层中相应的进程
会话层
允许不同主机上的各个进程之间进行会话
主要表现为表示层实体或用户进程建立连接,并在连接上有序地传输数据,这就是会话,也称同步建立(SYN)
负责管理主机间的会话进程,包括建立、管理和终止进程间的会话
包含一种称为检查点的机制来维持可靠会话,使通信会话在通信失效时从检查点继续恢复通信,即断点下载原理
两个主要服务是会话管理和同步
表示层
主要处理在不同主机中交换信息的表示方式
表示层采用首相的标准方法定义数据结构,并采用标准的编码形式
数据压缩、加密和解密也是表示层的功能
应用层
OSI参考模型的最高层,是用户与网络的接口
应用层为特定类型的网络应用提供访问OSI参考模型环境的手段
是最复杂的一层,使用的协议也最多
TCP/IP模型
分层
网络接口层
功能类似于OSI参考模型的物理层和数据链路层
作用
从主机或节点接收IP分组,并将它们发送到特定的物理网络上
具体的物理网络可是各种类型的局域网,如以太网、令牌环网等,又可是诸如电话网、ATM等公共数据网络
网际层
将分组发往任何网络,并为其独立地选择合适的路由,但不保证各个分组有序地到达,各个分组的有序和可靠交付由高层负责
网际层仅提供无连接不可靠的IP,数据传输的单位是IP数据报
传输层
功能
使发送端和目的端主机上的对等实体进行会话
处理关于可靠性、流量控制和错误校正等问题
主要使用两种协议
传输控制协议(TCP)
面向连接的,传输数据之前必须先建立连接,能够提供可靠的交付
数据传输的单位是报文段
用户数据报协议(UDP)
无连接的不保证提供可靠的交付,只能提供“尽最大努力交付”
数据传输单位是用户数据报
应用层
包含所有的高层协议
如虚拟终端协议(Telnet)、文件传输协议(FTP)、域名解析服务(DNS)、电子邮件协议(SMTP)、超文本传输协议(HTTP)
IP是互联网中的核心协议
TCP/IP可为各式各样的的应用提供服务,TCP/IP还允许IP在由各种网络构成的互联网
TCP/IP模型与OSI参考模型的比较
相似
采取分层的体系结构
基于独立的协议栈的概念
可解异构网络的互连
差别
使用协议栈进行通信的数据传输过程
用户传输的数据通常是用户能够理解的自然语言,通过应用层将自然语言转化为用于通信的通信数据
通信数据到达传输层,作为传输层的服务数据单元(传输层SDU),加上传输层的协议控制信息(传输层PCI),组成传输层PDU
下放到网络层后,就成为网络层的SDU,加上网络层的PCI,又组成了网络层的PDU
下放到链路层. . .
层层下放,层层包裹,最后形成的数据包通过通信线路传输,到达接收方节点协议栈,接收方逆向逐层拆开“包裹”,然后将收到的数据提交给用户
补充
ISO设计了开放系统互连参考模型(OSI/RM),但实际执行的通用标准是TCP/IP标准
通信领域中表示速率时,k = 103,M = 106,G = 109,T = 1012
物理层
通信基础
基本概念
数据、信号与码元
数据和信号
模拟数据(或模拟信号)的取值是连续的
数字数据(信号)的取值是离散的
码元
用一个固定时长的信号波形表示一个k进制数
该时长称为码元宽度
一码元可携带若干比特的信息
信源、信道与信宿
信源
产生和发送数据的源头
信宿
接收数据的终点
信道
信号的传输介质
信道不等于通信电路,一条可双向通信的电路往往包含两个信道,一个是发送信道,一个是接收信道。另外多个通信用户共用通信电路时,每个用户在该通信电路当中都有一个信道
分类
按传输信号形式的不同
模拟信道
数字信道
按传输介质的不同
无线信道
有线信道
噪声源
信道上的噪声及分散在通信系统其他各处的噪声的集中表示
信号的分类
基带信号
由信源发出的未经过调制的原始电信号
基带传输
宽带信号
首先将基带信号进行调制,形成频分复用模拟信号,然后送到信道上传输,称为宽带传输
数据传输方式
串行传输
逐比特地按序依次传输
适用于长距离通信
并行传输
若干比特通过多个通信信道同时传输
适用于近距离通信
从通信双方信息的交互方式,分为
单向通信
只有一个方向的通信
只需一个信道
半双工通信
通信双发都可以发送或接收信息,任何一方都不能同时发送和接收信息
全双工通信
通信双方可同时发送和接收信息
都需要两个信道,每个方向一个信道
速率、波特与带宽
速率
数据传输速率,单位时间内传输的数据量
描述形式
码元传输速率(波特率或调制速率)
数字通信系统每秒传输的码元数
单位
波特
信息传输速率(比特率)
单位
比特每秒
带宽
模拟信号系统中
又称频率带宽
表示某个信道所能传输信号的频率范围,即最高频率与最低频率之差
单位
赫兹
计算机网络中
表示网络的交通性线路所能传输数据的能力,即最高数据率
单位
b/s
信道的极限容量
码元的传输速率越高,或者信号的传输距离越远,或者噪声干扰越大,或者传输介质的质量越差,接收端模型的失真就越严重
奈奎斯特定理
码间串扰
信号中的许多高频分量往往不能通过信道,否则在阐述中就会衰减,导致接收端收到的型号波形失去码元之间的清晰界限
规定
在理想低通(没有噪声、带宽有限)信道中,为了避免码间串扰,极限码元传输速率为
2W波特
其中W是信道的频率带宽
若用 V 表示每个码元的离散电平数量(码元的离散电平数量始址有多少种不同的码元),则极限数据传输速率为
2Wlog2V
(单位:b/s)
结论
在任何信道中,码元传输速率是有上限的
信道的带宽越大,则码元传输能力越强
奈氏准则给出的码元传输速率的限制,但并未限制信息传输速率
未对一个码元最多可以携带多少比特给出限制
香农定理
带宽受限且有高斯噪声干扰的信道的极限传输速率
Wlog2(1+S/N)
(单位:b/s)
W
信道的频率带宽
S
信道内所传输信号的平均功率
N
信道内的高斯噪声功率
信噪比
采用无单位记法
S/N
采用分贝记法
10log10(S/N)
结论
信道的带宽或信道中的信噪比越大,信息的极限传输速率越高
对一定的传输带宽和一定的信噪比,信息传输速率的上限是确定的
只要信息传输速率低于信道的极限传输速率,就能找到某种方法实现无差错的传输
香农定理得出的时极限信息传输速率,实际信道能达到的传输速率要比它低不少
编码与调制
编码
将数据转换成数字信号的过程
调制
将数据转换为模拟信号的过程
4种编码与调制方式
数字数据编码为数字信号
数字数据编码用于基带传输中,即在基本不改变数字数据信号频率的情况下,直接输出数字信号
常用的数字数据编码
归零(RZ)编码
高电平表示1,低电平表示0,每个码元的中间均跳变到零电平,接收方根据该跳变调整本方的时钟基准,这就为收发双方提供了自同步机
因为归零需要占用一部分带宽,所以传输效率受到了一定的影响
非归零(NRZ)编码
与RZ编码的区别是不用归零,一个时钟全部用来传输数据编码效率最高
但nrz编码的收发双方存在同步问题,为此需要双方都带有时钟线
反向非归零(NRZI)编码
与NRZ编码的区别是用电平的跳变表示0,电平保持不变表示1
既能传输时中信号,又能尽量不损失系统带宽
曼彻斯特编码
每个码元的中间都发生电平跳变,电平跳变既作为时钟信号,又用作数据信号
可用向下跳变表示1,向上调变表示0,或者采用相反的规定
最适合传输二进制的数字信号
标准以太网使用的就是曼彻斯特编码
差分曼彻斯特编码
每个码元的中间都发生电频跳变,与曼彻斯特编码不同的是,电平跳变仅表示时钟信号而不表示数据
数据的表示在于每个码元开始处是否有电平跳变
无跳变表示1,有跳变表示0
查分曼彻斯特编码拥有更强的抗干扰能力
广泛应用于宽带高速网中
模拟数据编码为数字信号
主要包括三个步骤
采样
对模拟信号进行周期性扫描,将时间上连续的信号变成时间上离散信号
采样频率必须大雨货等于模拟信号最大频率的两倍
量化
将采样得到的电平按照一定的分级标度转换成对应的数值并去整
编码
将量化得到的离散整数转换为与之对应的二进制编码
常用语对音频信号进行编码的PCM编码
数字数据调制为模拟信号
数字数据调制技术在发送端将数字信号转换为模拟信号,而在接收端将模拟信号还原为数字信号分别对应于调制解调器的调制和解调过程
数字调制方式
调幅(AM)或幅移键控(ASK)
通过改变载波的振幅来表示数字信号1和0
调频(FM)或频移键控(FSK)
通过改变载波的频率来表示数字信号1和0
调相(PM)或相移键控(PSK)
通过改变载波的相位来表示数字信号1和0
正交幅度调制(QAM)
在频率相同的前提下,将am与pm结合起来,形成叠加信号
R = Blog2(mn)
QAM的数据传输速率R = 波特率B * log2(相位数m * 每个相位的振幅数n)
单位 b/s
模拟数据调制为模拟信号
为了实现传输的有效性,可能需要较高的频率
这种调制方式还可以使用频分复用(FDM)技术,充分利用带宽资源
电话机和本地局交换机采用模拟信号传输模拟数据的编码方法
传输介质
也称传输媒体是数据传输系统中发送器和接收器之间的物理通路
分类
导向传输介质
电磁波被导向为沿固体介质传播
铜线或光纤等
非导向传输介质
指自由空间(空气、真空或海水)
电磁波在非导向传输介质中的传输称为无线传输
双绞线、同轴电缆、光纤、无线传输介质
双绞线
最常用的传输介质,在局域网和传统电话网中普遍使用
双绞线有两根,采用一定规则、并排绞合相互绝缘的铜导线组成
绞合可减少对相邻导线的电磁干扰
为了进一步提高抗电磁干扰的能力,还可以在双绞线的外面加上一层金属丝编织成的屏蔽层
屏蔽双绞线(STP)
无屏蔽层的双绞线称为非屏蔽双绞线(UTP)
评价
双绞线的价格便宜,模拟传输和数字传输都可以使用双绞线。通信距离一般为几千米到数10千米
双绞线的带宽取决于铜线的粗细和传输的距离
距离太远时,对于模拟信号要用放大器放大衰减的信号。对于数字信号,要用中继器来对失真的信号进行整形
随着技术的发展和集线器的出现,在局域网领域基本上都采用双绞线作为传输介质
同轴电缆
同轴电缆由内导体、绝缘层、外导体屏蔽层和绝缘保护套层(由内到外)构成
因为外导体屏蔽层的作用,所以同轴电缆具有良好的抗干扰特性,而被广泛应用于传输较高速率的数据
分类
50Ω同轴电缆
主要用于传送基带数字信号,在早期局域网中应用广泛
75Ω同轴电缆
主要用于传送宽带信号,在有线电视系统中应用广泛
利用一根同轴电缆互联主机构成以太网的主机间的通信方式为半双工
光纤
光纤通信是指利用光导纤维传递光脉冲来进行通信
有光脉冲表示1,无光脉冲表示0
光纤通信系统带宽极大
可见光频率约为108MHz
光纤主要由纤芯和包层构成
纤芯直径约8~100μm
包层较纤芯有较低的折射率,光波通过纤芯进行传导
当光线从高折射率的介质射向低折射率的介质时,其折射角将大于入射角。因此只要入射角大于某个临界角就会出现线全反射,即光线碰到包层时就会折射回纤芯。这个过程不但重复光也就沿着光线传输下去
分类
多模光纤
光脉冲在多模光纤中传输的损耗更高,因此较适合近距离传输
利用光的全反射特性,可让从不同角度入射的多条光线在一根光纤中传输
单模光纤
当光纤的直径减小到只有一个光的波长是光线就像一根波导那样,可使光线一直向前传播,而不产生多次反射
单模光纤的纤芯很细,制造成本较高
单模光纤的光源是定向性很好的半导体激光器,因此单模光纤的衰减较小可传输数千米甚至数10千米,而不必使用中继器,适合远距离传输
特点
传输损耗小,中继距离长,对远距离传输特别经济
抗雷电和电磁干扰性能好,在有较大电流脉冲干扰的环境下则尤为重要
不受电磁干扰和噪声影响
无串音干扰,保密性好,不易被窃听或截取数据
体积小,重量轻,在现有的电缆管道以拥塞不堪的情况下,这特别有利
无线传输介质
无线电波
具有较强的穿透能力可以传输很长的距离
广泛应用于通信领域,如无线手机通信、计算机网络中的无线局域网(WLAN)等
无线电波是信号向所有方向散播,所以有效距离范围内的接收设备无需对准某个方向
微波、红外线和激光
高带宽的无线通信
都需要在发送方和接收方之间有一条视线通路,有很强的指向性
红外线通信和激光通信都将要传输的信号分别转换为各自的信号格式,即红外线信号和激光信号,再直接在空间中传播
微波通信的频率较高,频段范围也很广,因此通信信道的容量很大
在地面上的传播距离有限,超过一定距离后就要使用中继站来接力
卫星通信利用地球同步卫星作为中继站来转发微波信号。可以突破地面微波通信距离的限制
三颗相隔120°的同步卫星几乎就能覆盖整个地球表面,基本能实现全球通信
通信容量大,距离远,覆盖广
缺点是保密性差,端到端传播时延长,成本高,受气候影响大,误码率较高
物理层接口的特性
机械特性
指明接口所用接线器的尺寸和形状、引脚数量和排列、固定和锁定装置等
电气特性
指明在接口电缆的各条线上的电压范围、传输速率和距离限制等
功能特性
指明某条线上出现的某一电平的电压的意义,以及每条线的功能
过程特性(规程特性)
指明不同功能的各种可能事件的出现顺序
物理层设备
中继器
主要功能
放大、整形并转发信号,以消除信号经过一长段电缆后产生的失真和衰减,使信号的波形和强度达到所需的要求,进而扩大网络传输的距离
原理
信号再生(而非放大器那样简单的放大衰弱的信号)
中继器有两个端口数据从一个端口输入,从另一个端口发出
端口仅作用于信号的电气部分,而不管是否有错误数据或不适于网段的数据
使用中继器连接的两端仍是一个局域网
中继器两端的网络部分是网段而不是子网
中继器可以用来连接不同介质的局域网,只要他们具有相同的速率和协议
中继器若出现故障,则对相邻两个网段的工作都产生影响
从理论上讲,中继器的使用数量是无限的,网络因而也可无限延长。但事实上网络标准中对信号的延迟规范做了具体的规定,中继器只能在该规范内进行有效的工作,否则会引起网络故障
如“5-4-3规则”
集线器(Hub)
实质上是一个多端口的中继器
当Hub工作时,一个端口接收到数据信号后,因为信号再从端口到Hub的传输过程中有衰减,所以Hub便对该信号进行整形放大,使之再生到发送时的状态,紧接着转发到其他所有处于工作状态的端口
若同时有两个或多个端口输入,则输出时将发生冲突,致使这些数据都无效
在网络中指起信号放大和转发作用,目的是扩大网络的传输范围,而不具备信号的定向传送能力
即信息传输的方向是固定的,是标准的共享式设备
使用hub组网灵活
它将所有节点的通信集中在以其为中心的节点上,由Hub组成的网络是共享式网络
物理上的结构是星形,逻辑上的结构是总线形
用集线器连接的工作站集合属于同一个冲突域,也属于同一个广播域
Hub的每个端口连接的是同一网络的不同网段,同时也只能在半双工状态下工作,网络的吞吐率因而受到限制
补充
物理层设备没有存储转发功能
不能连接不同速率的局域网
不能连接不同数据链路层协议的局域网
数据链路层
数据链路层的功能
主要任务
让帧在一段链路上或一个网络中传输
协议的共同基本问题
封装成帧
透明传输
差错控制
主要使用的信道有两种
点对点信道
使用一对一的通信方式
PPP是目前使用最广泛的点对点协议
广播信道
使用一对多的广播通信方式
有线局域网普遍使用CSMA/CD协议
无线局域网使用CSMA/CA协议
数据链路层所处的地位
基本概念
链路(物理链路)
指从一个节点到相邻节点的一段物理线路
数据链路(逻辑链路)
当在一条链路上传送数据时,除了需要链路本身还需要一些必要的通信协议来控制这些数据的传输。把实现这些协议的硬件和软件加到链路上,就构成了数据电路
帧
数据与电路层对等实体之间进行逻辑通信的协议数据单元
链路管理
数据链路层连接的建立维持和释放过程称为链路管理,它主要用于面向连接的服务
链路两端的节点要进行通信,必须首先确认对方已处于就绪状态并交换一些必要的信息,以对帧序号初始化,然后才能建立连接,在传输过程中要维持连接,在传输完毕后要释放该连接
封装成帧与透明传输
封装成帧
是指在一段数据的前后分别添加首部和尾部,构成帧,帧是数据链路层的传输单元
帧长
等于帧的数据部分长度加上首部和尾部的长度
帧定界
首部和尾部中含有很多控制信息,它们的一个重要作用是确定帧的界限
接收方能从收到的二进制比特流中区分出帧的开始与结束
HDCLC标准
标志 F(01111110) | 地址 A(8位) | 控制 C(8位) | 信息 I(N位) | 帧检验序列 FCS(16位) | 标志 F
最大传送单元
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能的大于首部和尾部的长度。但随着帧长的增加,传输差错发生的概率也随之提高,发生差错时重传的代价也越大。因此每种链路层协议都规定了帧的数据部分的长度上限
透明传输
指不论什么样的比特组合的数据,都能够按照原样无差错的在数据链路上传输
用来解决在数据中恰好出现与帧定界符相同的比特组合
流量控制
背景
链路两端节点的工作速率和缓存空间存在差异,所以发送方的发送能力可能大于接收方的接收能力,此时若不适当限制发送方的发送速率,前面来不及接收的帧将被后面不断发送来的帧淹没,造成帧的丢失而出错
实际上就是限制发送方的发送速率,使之不超过接收方的接收能力
在OSI体系结构中,数据链路层具有流量控制的功能,而在TCP/IP体系结构中,流量控制功能被移到了传输层
它们控制的对象不同,对于数据链路层来说,控制的是相邻节点之间的数据链路上的流量;对于传输层来说控制的则是从源端到目的端之间的流动
差错检测
分类
位错
帧中某些位出现差错,通常采用循环冗余检验(CRC)来发现位错
帧错
帧丢失、帧重复或帧失序的错误,他们都属于传输差错
对比
过去的OSI
必须让数据链路层向上提供可靠传输
在CRC检测的基础上增加了帧编号、确认和重传机制
收到正确的帧就要向发送方发送确认,发送方在一定期限内,若未收到对方的确认就认为出现了差错,因此进行重传,直到收到确认为止
现在
通信质量较差的无线传输
数据链路层依然使用确认和重传机制,向上提供可靠的传输服务
通信质量良好的有线链路
数据链路层已不再使用确认和和重传机制,即不要求向上提供可靠传输的服务,而仅需进行CRC检测,目的是将有错的帧丢弃,保证上交的帧都是正确的,而对于出错的帧的重传任务则是由高层协议(如传输层TCP)完成
补充
组帧即定义数据格式
控制对物理传输介质的访问由数据链路层的介质访问控制(MAC)子层完成
组帧
字符计数法
在帧首部使用一个计数字段来记录该帧所含的字节数(包括计数字段自身所占用的1字节)
当接收方读出真首部的字节计数值时,就知道后面跟随的字节数,从而确定帧结束位置,因为帧与帧之间是连续传输的,所以也能确定下一帧的开始位置
字节填充法
使用特定字节来定界一帧的开始与结束
为了使信息位中出现的特殊字符不被误判为真的首尾定界。符可在特殊字符之前填充一个转义字符 ESC 来加以区分,以实现数据的透明传输
若转义字符 ESC 也出现在数据中,则解决办法仍是在转义字符前插入一个转义字符
零比特填充法
允许数据帧包含任意个数的比特,它使用一个特定的比特串 01111110 来标志一个帧的开始和结束
为了不使数据字段中出现的比特流,01111110被误判为帧的首尾标志,发送方先扫描整个数据字段每遇到5个连续的“1”自动在其后面插入一个“0”
接收方执行该过程的逆操作,即每收到5个连续的“1”就自动删除后面紧跟的“0”,以恢复原始数据
零比特填充法很容易由硬件来实现,性能优于字节填充
违规编码法
在物理层进行比特编码时,常采用违规编码法
借用违规编码序列来定界帧的起始和终止
违规编码法不采用任何填充技术,便能实现数据的透明传输。但只适用于采用冗余编码的特殊编码环境
因为字符计数法中计数字段的脆弱性和字节填充法实现上的复杂性与不兼容性,所以目前较常使用的组帧方法是比特填充法和违规编码法
差错控制
比特差错
实际通信链路都不是理想的,比特在传输过程中可能产生差错,1可能变成0,0可能变成1
利用编码技术进行差错控制,主要有两类
自动重传请求(ARQ)
当接收方检测到差错时,就设法通知发送方重发,直到收到正确的数据为止
前向纠错(FEC)
接收方不但能发现差错,而且能确定错误的位置并加以纠正
检错编码
都采用冗余编码技术
核心思想
在有效数据(信息位)被发送前,按某种关系附加一定的冗余位(检验位),构成一个符合某一规则的码字后发送
当要发送的有效数据变化时,相应的冗余冗余位也随之变化,使得码字遵从不变原则
接收方根据收到的码字是否仍符合原规则来判断是否出错
常见的检错编码
奇偶检验码
是奇检验码码和偶检验码的统称
它由n-1位数据和1位检验位构成,检验位的取值(0或1)将整个检验码中“1”的个数为奇数或偶数
奇检验码
n位码字中“1”的个数为奇数
传输的数据中“1”的个数若是偶数则可能检测出错误,若是奇数则检测不出错误
偶检验码
n位码字中“1”的个数为偶数
奇偶检验码只能检测奇数位的出错,但不知道哪些位出错了,也不能发现偶数位的出错情况
循环冗余码(CRC)
数据链路层广泛使用循环冗余码检错技术
循环冗余码是具有纠错功能的,只是数据链路曾经使用了它的检测功能
基本思想
收发双方约定一个生成多项式G(x)(要求最低位必须为1)
发送方基于待发送的数据和G(x),计算出冗余码(帧检验序列 FCS),将冗余码附加到数据后面一起发送
接收方收到数据和冗余码后,通过G(x)来计算收到的数据和冗余码是否产生差错
计算冗余码的步骤(假设一段m位数据)
①加0
假设G(x)的阶为r,在数据后面加r个0
②模2除
利用模2除法,用G(x)对应的二进制串去除①中计算得出的数据串,得到的余数即为冗余码
示例
发送方的FCS生成和接收方的CRC检验都是由硬件实现的,处理很迅速,不会影响数据传输
若在传输过程中无差错,则经过CRC检验后得出的余数r肯定为零。但是若出现误码,则余数r仍为零的概率极低
通过crc检测技术可以做到对帧的无差错接受而接收。而接收方丢弃的帧虽然曾经收到,但最终因为有差错而被丢弃,即未被接受
CRC检验码可以检测出所有的奇数个比特错误
带r个检验位的多项式编码可以检测到所有长度小于或等于r的突发性错误
突发错误是指在数据传输中,错误连续出现在一个较短的区间内
纠错编码
码距(海明距离)
指两个码字对应被取值不同的比特数量
计算码距的一种方法是对两个位串进行异或运算,结果中“1”的个数即为码距
编码集的码距
在一个编码集中任意两个码字的码距的最小值称为该编码集的码距
根据纠错理论,编码方案的检测能力和纠错能力与码距的关系
l = d + c + 1, d ≥ c
码距l越大,其检测的位数d就越大,纠错的位数c也就越大
推出结论
为了检测d位错误,需要一个码距为d+1的编码方案
当一个有效码字发生d位错误时,不可能变成另一个有效码字
码距为1的编码方案,无法检测任何错误
为了纠正c位错误,需要一个码距为2c+1的编码方案
当一个有效码字发生c位错误时,它还是离原来的码子最近,从而能确定原来的码字,达到纠错的目的
海明码的编码过程
海明码具有1位纠错能力
编码过程
①确定海明码的位数
2k ≥ n+k+1
n位信息位,k位检验位
②确定检验位的分布
规定检验位Pi在海明位号位2i-1的位置上,其余各位为信息位
③分组以形成检验关系
每个数据为用多个检验位进行检验
但要满足条件,被检验数据位的海名位号等于检验该数据位的各个检验位海名为号之和,另外检验位不需要再被检验。
④检验位取值
检验位Pi的值为第i组所有位求异或
⑤海明码的检验原理
每个检验组分别利用检验位和参与形成该检验位的信息位进行奇偶检验检查
流量控制与可靠传输机制
流量控制与滑动窗口机制
流量控制是由接收方控制发送方的发送速率,使接受方有足够的缓冲空间来接受每个帧
常见方法
停止-等待协议
发送方每次只允许发送一个帧,接收方每次接收一个帧都要反馈一个确认信号。表示可以接受下一帧发送方收到确认信号后才能发送下一帧。如果发送方没有收到接收方反馈的确认信号,需要一直等待
滑动窗口协议
发送窗口
在任意时刻发送方中维持一组连续的允许发送帧的序号
发送窗口表示在还未收到对方确认信息的情况下,发送方最多还能发送多少个帧和哪些帧
发送方每收到一个去确认的确认帧就将发送窗口向前滑动一个位置。当窗口内没有可以发送的帧时,发送方就停止发送
接收窗口
接收方也维持一组与连续的允许接收帧的序号
在接收方设置接收窗口是为了控制可以接受哪些帧和不可以接受哪些帧
接收方每收到一个序号落入接收窗口的数据证就允许将该帧收下,然后将接收窗口向前滑动一个位置并发回确认。若收到的帧落在接收窗口之外,则一律丢弃。
特性
只有接收窗口向前滑动时发送窗口才有可能向前滑动
其他协议
停止-等待协议
发送窗口WT=1,接收窗口WR=1
后退N帧协议
发送窗口WT>1,接收窗口WR=1
选择重传协议
发送窗口WT>1,接收窗口WR>1
当接收窗口大小为1时,只有收到该帧后才允许接收下一帧,因此可保证帧的有序接收
在数据链路层的滑动窗口协议中,窗口大小在传输过程中是固定的(与传输层不同)
可靠传输机制
可靠传输
是指发送方发送的数据都能被接收方正确的结束,常采用确认和超时重传两种机制来实现,使用这两种机制的可靠传输协议称为自动重传请求(ARQ)
确认
接收方每收到发送方发来的数据帧,都要向发送方发回一个确认帧,表示已正确的收到该数据帧
超时重传
只发送方在发送一个数据帧后就启动一个计时器,若在规定时间内没有收到所发送数据帧的确认帧,则重发该数据帧,直到发送成功为止
ARQ协议分为3种
停止-等待协议(S-W)
单帧滑动窗口
发送方每次只能发送一个帧,当发送方收到接收方的确认帧后才可以发送下一个帧
可能出现两种差错
数据帧出错或丢失
接收方检测到数据帧出现的差错,就简单的将该帧丢弃
若是数据帧在传输过程中丢失,发送方装备了计时器,在发送一个帧后,发送方等待确认,当计时器超时的时候,若仍未收到确认则重发该数据帧
确认帧出错或丢失
若接收方已收到正确的数据帧,但发送方收不到确认帧,因此发送方会重传已被接收的数据帧。接收方收到相同的数据帧时,会丢弃该帧,并重传一个该帧对应的确认帧
帧缓冲区
为了超时重传和判定重复帧的需要,发送方和接收方都需要设置一个帧缓冲区
当发送方发送完数据帧时,必须在其发送缓存中保留改数据帧的副本,这样才能在出现差错时进行重传,只有在收到对方发来的确认真 ack后方可清除该副本
信道利用率很低
当源主机和目的主机之间的距离很远而且数据传输速率很高时,效率会变得很低
后退N帧协议(GBN)
多帧滑动窗口
发送方可在未收到确认证的情况下,将序号在发送窗口内的多个数据帧全部发送出去
后退N帧
发送方发送n个数据帧后,若发现这n个帧的前一个数据帧在计时器超时的时候仍未收到其确认信息,则该针被判断为出错或丢失,此时发动方不得不重传该出错帧及随后的N个帧的意味着接收方只允许按顺序接收帧
累积确认
允许接收方不需要收到每一个正确的数据帧就立即发回一个确认帧,而可在连续收到多个确认帧的正确数据之后,对最后一个数据帧发回确认信息
ACKn
表示对n号帧的确认,表示接收方已正确接收到n号针及之前的所有帧,下次期望收到n+1号帧
发送窗口的尺寸
若采用n比特对帧编号,则发送窗口WT应满足
1 < WT ≤ 2n-1
发送窗口过大则会造成接收方无法分辨新数据帧和旧数据帧
接收窗口等于1时,可保证按序接收数据帧
评价
一方面因连续发送数据帧而提高了信道利用率,另一方面在重传时又必须重传原来以正确到达的帧,因此这种做法会降低传送功率。
当信道误码率较大时,后退N帧协议不一定优于停止-等待协议
选择重传协议(SR)
多帧滑动窗口
为了进一步提高信道的利用率,可以设法只重传出现差错和计时器超时的数据帧。但此时必须加大接收窗口,以便先收下失序但正确到达的且序号仍落在接收窗口内的那些数据帧,等到所缺序号的数据帧收齐后再一并送交上层
原理及实现
接收方不能采用累计确认,而要对每个正确接收的数据帧逐一进行确认
选择重传协议比后退n帧协议更复杂,且接收方需要设置足够的帧缓冲区,来暂存那些失序,但正确到达且序号落在进入窗口内的数据帧
每个发送缓冲区对应一个计时器,当计时器超时的时候,缓冲区的帧就重传。若接收方收到重复的数据帧,则丢弃该帧,并重传与该帧对应的确认帧
差错处理策略
一旦接收方检测到某个数据帧出错,就向发送方发送一个否定帧nak,要求发送方立即重传nak对应的数据帧
窗口尺寸(采用n比特对帧进行编号)
WR + WT ≤ 2n
否则,在接收方的接收窗口向前移动后,若有一个或多个确认帧丢失的发送方会超时重传之前的救赎矩阵。接收窗口内的新序号与之前的旧序号出现重叠接收方,就无法分辨是新数据帧还是旧数据帧
WR ≤ WT
否则,若接收窗口大于发送窗口,则接收窗口永远不可能填满接收窗口,多出的空间就毫无意义
一般情况下二者是相同的
在连续 ARQ 协议中,发送窗口大小 ≤ 窗口总数 -1
信道利用率分析
停止-等待协议
TD
发送方发送分组的发送时延
等于分组长度除以数据的传输速率
TA
接收方发送确认分组的发送时延
RTT
往返时间
当RTT>TD 时,信道利用率就非常低
连续ARQ协议
采用流水线传输,即发送方可连续发送多个分组
只要发送窗口足够大,就可使信道上有数据持续流动
发送窗口为n
,即在一个发送周期内可以发送完n个分组
,即在一个发送周期内发送不完(或刚好发完)n个分组
只要不发生差错,发送方就可不间断的发送分组,信道利用率为1
信道平均(实际)数据传输速率 =
信道利用率 * 信道带宽
发送周期内发送的数据量 / 发送周期
介质访问控制
介质访问控制(MAC)子层
用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制子层
信道划分介质访问控制
将使用同一传输介质的多个设备的通信隔离开来,把时域和频域资源合理的分配给这些设备
复用
是指在发送端把多个发送方的信号组合在一条物理信道上进行传输,在接收端把收到的复用信号分离出来,并发送给对应的接收方
当传输介质的带宽超过传输单个信号所需的带宽时,通过。在一条介质上传输多个信号,还能提高传输系统的利用率
分为4种
时分复用(TDM)
将信道的传输时间划分为一段段等长的时间片,称为TDM帧,每个用户在每一个TDM帧中所占用固定序号的时序,每个用户所占用的时隙周期性的出现,所有用户在不同时间占用同样的信道资源
因为时分复用是按固定次序给用户分配时隙的,当用户在某段时间暂无数据传输时,其他用户也无法使用这个暂时空闲的线路资源,所以时分复用后的信道利用率不高
统计时分复用(STDM)
它并不固定分配时隙,而按需动态分配时隙,当用户有数据要传送时才会分配到STDM帧中的时隙,因此可以提高线路的利用率。
为了实现TDM,必须满足
介质的位速率(每秒传输的二进制位数)大于单个信号的位速率
如果介质的位速率不大于单个信号的位速率,就意味着在单位时间内,介质无法传输单个信号所需要传输的数据量
介质的带宽(所能传输信号的最高频率与最低频率之差)大于结合信号的带宽(所有信号经过调制后形成的复合信号的带宽)
如果介质的带宽小于结合信号的带宽,就如同一条狭窄的道路无法容纳过多车辆并行行驶一样,信号在传输过程中会相互干扰,导致信号失真
频分复用(FDM)
是指将信道的总频带划分为多个子频带,每个子频带作为一个子信道,每对用户使用一个子信道进行通信
在实际应用中,为了防止子信道之间互相干扰,相邻信道间还要加入“隔离频带”
频分复用的优点在于充分利用了传输介质的带宽,系统效率较高,实现也容易
TDM与FDM相比,抗干扰能力强,可以逐级再生整形,避免干扰的积累,而且数字信号比较容易实现自动转换
FDM适合传输模拟信号,TDM适合传输数字信号
波分复用(WDM)
即光的频分复用,它在一根光纤中传输多种不同波长(频率)的光信号,因为波长不同,各路光信号互不干扰,最后用光分用器将各路波长分解出来
因为光波处于频谱的高频段,有很大的带宽,所以可以实现多路的波分复用
码分复用(CDM)
是采用不同的编码来区分各路原始信号的一种复用方式
它既共享信道的频率,又共享时间
码分多址(CMDA)
原理
将每个比特时间再划分成m个短的时间槽称为码片,通常m的值是64或128。每个站点被指派一个唯一的m位码片序列,发送‘1’时站点发送他的码片序列,发送‘0’时,站点发送码该码片序列的反码,当两个或多个站点同时发送时,各路数据在信道中线性相加。为了从信道中分离出各路信号,要求各个站点的码片序列相互正交
计算
正交向量规格化内积为0
任何站的码片向量和该站码片向量自身的规格化内积都是1
任何站的码片向量和该码片反码的向量的规格化内积都是-1
码分复用技术具有频谱利用率高,抗干扰能力强,保密性强,语音质量好的优点,还可以减少投资及降低运行成本,主要用于无线通信系统,特别是移动通信系统
随机访问介质访问控制
随机访问控制协议(争用型协议)
在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户都能根据自己的意愿,随机地发送信息占用信道的全部速率
在总线型网络中,当有两个或多个用户同时发送信息时就会产生帧冲突(也称碰撞),导致所有冲突用户发送的发送均以失败告终
为了解决随机访问发生的冲突,每个用户需要按照一定的规则,反复的重传他的帧,直到该帧无冲突的通过
节点之间通信既不共享时间,又不共享空间
实质上是一种将广播信道转换为点到点信道的机制
协议
ALOHA协议
纯ALOHA协议
基本思想
当总线型网络中的任何站点需要发送数据时,可以不进行任何检测就发送数据,若在一段时间内未收到确认,则该站点就认为传输过程中发生了冲突,发送站点需要等待一段随机的时间后再发送数据,直至发送成功
吞吐量很低
时隙ALOHA协议
协议同步各站点的时间,将时间划分为一段段等长的时隙(Slot),规定站点只能在每个时隙开始时才能发送帧,发送一帧的时间必须小于或等于时隙的长度
避免了用户发送数据的随意性,降低了产生冲突的可能性,提高了信道的利用率
CSMA(载波监听多路访问)协议
基本思想
每个站点在发送前都监听公用信道,发现信道空闲后再发送
与ALOHA协议的区别是多了一个载波监听装置
分类
1-坚持CSMA
当站点要发送数据时,首先监听信道
若信道空闲,则立即发送数据
若信道忙,则继续监听直至信道空闲
非坚持CSMA
当站点要发送数据时,首先监听信道,若信道空闲则立即发送数据;若信道忙则放弃监听,等待一个随机的时间后再重新监听
p-坚持CSMA
只适用于时分信道
当站点要发送数据时,首先监听信道
若信道忙,则持续监听(等到下一个时隙再监听),直至空闲
克服坚持CSMA中应随机等待造成的延迟时间较长的缺点
若信道空闲,则以概率p发送数据,以概率1-p维持到下一个时隙再继续监听,直到数据发送成功
降低1-坚持CSMA中多个站点检测到信道空闲时同时发送帧的冲突概率
CSMA/CD(载波监听多路访问/冲突检测)协议
适用于总线型网络或半双工网络环境
因为全双工采用两条信道,分别用来发送和接收,在任何时候发送双方都可以发送或接收数据,不可能产生冲突
载波监听
每个站点在发送前和发送过程中都必须不停的检测信道
在发送前检测信道是为了获得发送权,在发送过程中检测信道是为了及时发现发送的数据是否发生冲突
冲突检测
边发送边检测
适配器边发送数据边检测信道上电压的变化情况,当检测到电压变化幅度超过一定的门限值时,表明发生了冲突,适配器要立即停止发送数据,等待一段随机时间后再次发送
工作流程简单概括
先听后发,边听边发,冲突停发,随机重发
电磁波在总线上的传播速率总是有限的,因此当某时刻发送站检测到信道空闲时,信道不一定空闲
争用期
2t
端到端传播时延的2倍
每个站在自己发送数据后的一小段时间内存在发生冲突的可能性。只有经过争用期这段时间还未检测到冲突时,才能确定这次发送不会发生冲突
最短帧长
争用期内可发送的数据长度
以太网的争用期是512bit的发送时间
计算
最短帧长 = 最大单向传播时延 * 数据传输速率 * 2
在争用期内,若检测到冲突就停止发送,此时已发送出去的数据一定小于最短帧长。因此,凡长度小于这个最短帧长的帧就,都是因为冲突而异常终止的无效帧
截断二进制指数退避算法
算法内容
①确定基本退避时间,一般取二倍的总线端到端的传播时延 2t(争用期)
②从离散的整数集合 [0, 1, · · ·,(2k-1)] 中随机取出一个数,记为r,重传所需推迟的时间就是r倍的争用期
参数 k = min(重传次数, 10)
r最大值为1023
③当重传达16次仍不成功时,说明网络太拥挤,认为该帧永远无法正确发出,抛弃该帧,并向高层报告出错
动态退避
使用截断二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增
能降低发生冲突的概率,有利于整个系统的稳定
CSMA/CD协议归纳
①准备发送
适配器从网络层获得一个分组,封装成帧,放入适配器的缓存
②检测信道
若信道忙则持续检测,直至信道转为空闲
若在 9.6μs 的时间内信道保持空闲(保证帧间最小间隔),则发送这个帧
③发送过程中,适配器仍然持续检测信道
发送成功
在争用期内一直未检测到冲突,该帧肯定能发送成功
发送失败
在争用期内检测到冲突,此时立即停止发送,适配器执行退避算法,等待一段随机时间后,返回步骤②
若重传16次仍不能成功,则停止重传并向上报错
CSMA/CA(载波监听多路访问/冲突避免)协议
背景
CSMA/CD协议已成功用于有线连接的局域网,但无线局域网不能简单地搬用CSMA/CD协议
原因
适配器接收到的信号强度往往远小于发送信号的强度,且在无线介质上,信号强度的动态变化范围很大。因此若要实现冲突检测在硬件上的花费会过大
在无线通信中,并非所有站点都能够听见对方(但能产生冲突),即存在“隐蔽站”问题,从而使得冲突检测机制并不能检测到所有的冲突
802.11标准定义了广泛用于无线局域网的CSMA/CA协议
“冲突避免”并不是指协议可以完全避免冲突,而是指协议的设计要尽量降低冲突发生的概率
链路层确认/重传(ARQ)方案
站点每通过无线局域网发送完一帧,就要在收到对方的确认证后才能继续发送下一帧。
帧间间隔(IFS)
所有站检测到信道空闲后,还要等待一段很短的时间(继续监听),才能发送帧
802.11标准使用了3中IFS
SIFS(短IFS)
最短的IFS,用来分隔属于一次对话的各帧,使用SIFS的帧类有ACK帧、CTS帧分、片后的数据帧以及所有回答AP探询的帧等
PIFS(点协调IFS)
中等长度的IFS,在PCF(点协调功能)方式中使用
DIFS(分布式协调IFS)
最长的IFS,在DCF(分布式协调功能)方式下用来发送数据帧和管理帧
虚拟载波监听机制
让源站将它要占用信道的持续时间(包括目的站发回ACK帧所需的时间),及时通知给所有其他站,以便使所有其他站在这段时间内都停止发送,这样就大大减少了冲突的概率
其他站并未监听信道,而是收到了源站的通知才不发送数据
CSMA/CA算法归纳
①若站点最初有数据要发送(而非发送不成功再进行重传),且检测到信道空闲,那么在等待时间DIFS后,就发送整个数据帧
②否则站点执行CSMA/CA退避算法,选取一个随机退避值。一旦检测到信道忙退避计时器就保持不变,只要信道空闲退避计时器就进行倒计时
CSMA/CA退避算法
第 i 次退避在 [0 · · ·, (22+i-1)]个时隙中随机选择一个,扩大的随机选择退避时间的范围
当时隙范围最大达到255时(对应于第6次退避)就不再增加
③当退避计时器减至0时(这时信道只可能是空闲的)站点就发送整个帧并等待确认
④发送站若收到确认,就知道已发送的帧被目的站正确接收,这时要发送第二帧就要从步骤②开始,执行退避算法,随机选定一段退避时间
隐蔽站问题
问题描述:站a和站b都在ap的覆盖范围内,但站a和站b相距较远,彼此都听不见对方当。站a和站b检测到信道空闲时,都向ap发送数据,导致冲突发生,这就是隐蔽站问题
信道预约
802.11标准允许发送站对信道进行预约
过程
①源站发送数据之前,先监听信道,若信道空闲,则等待时间DIFS后广播一个请求发送RTS控制帧
RTS(Request To Send)控制帧
包括
源地址
目的地址
本次通信所需的持续时间
是从收到RTS帧后,到目的站最后发送完ACK帧为止的时间
SIFS + CTS + SIFS + 数据帧 + SIFS + ACK
②若ap正确收到RTS帧,且信道空闲,则等待时间SIFS后,广播一个已允许发送CTS控制帧。它也包括这次通信所需的持续时间
CTS(Clear To Send)控制帧
发送CTS目的
给源站明确的发送许可
指示其他站在预约期内不要发送
其他站根据CTS帧中的持续时间设置自己的网络分配向量(NAV)
指出了信道忙的持续时间
持续时间
从收到CTS帧后,到目的站最后发送完ACK帧为止
SIFS + 数据帧 + SIFS + ACK
③源站收到CTS帧后,再等待时间SIFS,就可发送数据帧
④若ap正确收到了源站发来的数据,则等待时间SIFS后,就向源站发送确认帧ACK
预约信道不是CSMA/CA的强制规定
轮询访问:令牌传递协议
轮询访问
用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个节点,再决定信道的分配
令牌传递协议
令牌(Token)
令牌是一个特殊的控制帧,它本身并不包含信息,仅控制信道的使用,确保同一时刻只有一个站独占信道
在令牌传递协议中一个令牌沿着环形总线在各站之间依次传递
当环上的一个站希望发送帧时,必须等待令牌,站点只有取得令牌后才能发送帧,因此令牌环网络不会发生冲突(因为令牌只有一个)站点发送完一帧后应释放令牌,以便让其他站使用
因为令牌在环网上是按顺序依次传递的,所以对所有联网计算机原访问权是公平的
令牌环网络中令牌和数据的传递过程
①当网络空闲时,环路中只有令牌帧在循环传递
②当令牌传送到有数据要发送的站点时,该站点就修改令牌中的一个标志位,并在令牌中附加自己需要传输的数据,将令牌变成一个数据帧,然后将这个数据帧发送出去
③数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址,若目的地址和自己的地址相同,则接收站就复制该数据帧,以便进一步处理
在令牌传递过程中,没有数据要发送的节点收到令牌后将立刻传递下去而不能持有
④数据帧沿着环路传输,直到到达该帧的源站点,源站点收到自己发出的帧后,便不再转发,同时通过检验返回的帧,来查看数据传输过程中是否输错,若出错,则重传
⑤源站点传送完数据后,重新生成一个令牌,并传递给下一个站点,交出信道控制权
令牌传输协议非常适合负载很高(多个节能在同一时刻发送数据的概率很大)的广播信道
令牌传递协议,既不共享时间,又不共享空间
局域网
局域网的基本概念和体系结构
局域网(LAN)
是指在一个较小的地理范围内,将各种计算机、外部设备和数据库系统等,通过双绞线、同轴电缆等连接介质,相互连接起来,组成资源和信息共享的计算机互联网络
特点
为一个单位所拥有,且地理范围和站点数量均有限
所有站点共享较高的总带宽
较低的时延和较低的误码率
各站为平等关系,而非主从关系
能进行广播和多播
特性主要由三个要素决定
拓扑结构
星形结构
环形结构
总线形结构
星形和总线形结合的复合型结构
传输介质
可以使用铜缆、双绞线和光纤等多种传输介质,其中双绞线为主流传输介质
介质访问控制方式
最重要,它决定着局域网的技术特性
主要有CSMA/CD协议、令牌总线协议和令牌环协议。前两种协议主要用于总线型局域网,令牌协议主要用于环形局域网
三种特殊的局域网拓扑实现
以太网
逻辑拓扑是总线形结构,物理拓扑是星形结构,目前使用范围最广
令牌环
逻辑拓扑式环形结构,物理拓扑是星形结构
FDDI(光纤分布数字接口)
逻辑拓扑是环形结构,物理拓扑是双环结构
IEEE 802标准
定义的局域网参考模型只对应于OSI参考模型的数据链路层和物理层
将数据链路层拆分为两个子层
逻辑链路控制(LLC)子层
与传输介质无关,他向网络层提供无确认无连接、面向连接、待确认无连接、高速传送4种不同的连接服务类型
介质访问控制(MAC)子层
与接入传输介质有关的内容都放在MAC子层,它向上层屏蔽对物理层访问的各种差异
主要功能
组帧和拆卸帧、比特传输差错检测、透明传输
以太网与 IEEE 802.3
以太网采用两项措施来简化通信
采用无连接的工作方式,既不对发送的数据帧编号,又不要求接收方发送确认。即以太网尽最大努力交付数据,提供的是不可靠服务,对差错的纠正则由高层完成
发送的数据都使用曼彻斯特编码的信号,每个码元的中间出现一次电压转换,接收方利用这种电压转换,方便地将位同步信号提取出来
以太网采用的是分组交换技术
在以太网中数据以帧的形式传输。源端用户的较长报文需要分为若干数据块,这些数据块在各层中还要加上相应的控制信息,在网络层中是分组,在数据链路层中是以太网的帧
以太网的传输介质与网卡
传输介质
用集线器连接的以太网一定工作在半双工状态;用交换机连接的以太网既可以工作在半双工状态,又可以工作在全双工状态
用集线器连接的以太网一定采用CSMA/CD协议
一根光纤内部至少包含两条光纤,用于实现全双工通信,因此光纤连接的以太网不采用CSMA/CD协议
网络适配器 Adapter(网络接口卡 NIC)
适配器不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码及数据缓存等功能
适配器和局域网的通信是通过电缆或双绞线以串行方式进行的,而适配器和计算机的通信则是通过计算机的I/O总线以并行的方式进行的
当适配器收到正确的帧时,就用中断来通知该计算机,并交付协议栈中的网络层。当计算机要发送ip数据报时,就由协议栈把ip数据报,向下交给适配器组帧后发送到局域网
网卡实现的主要功能在物理层和数据链路层
以太网的MAC地址
MAC地址(物理地址或局域网硬件地址)
是指局域网上每台计算机中固化在网络适配器的ROM中的地址
全世界所有的局域网适配器都具有不同的地址,一台计算机只要没有更换适配器,不管其地理位置如何变化,其MAC地址都不会变化
用于控制主机在网络上的数据通信
长6个字节,一般由连字符(或冒号)分隔的12个16进制数表示
高24位为厂商代码,低24位为厂商自行分配的适配器序列号
以太网地址就是通常所说的mac地址
当路由器通过适配器连接到局域网时,适配器上的mac地址就用来标志路由器的某个接口
路由器若同时连接到两个网络上,则它需要两个适配器和两个mac地址
适配器从网络上每收到一个mac帧,首先都要用硬件检查mac帧中的目的地址
若是发往本站的针则收下,否则丢弃该帧
包括以下三种帧
单播帧
收到的帧的目的地址与本站的mac地址相同
广播帧
发送给本局域网上所有的站点
全1地址
多播帧
发送给本局网上一部分站点的帧
以太网的MAC帧
DIX Ethernet V2(以太网V2标准)
在帧前面插入的8字节前道码分为两个字段
前同步码
用来实现mac帧的比特同步
帧开始定界符
目的地址
帧在局域网上的目的适配器的mac地址
源地址
传输帧到局域网上的源适配器的mac地址
类型
指出数据字段中的数据应交给哪个上层协议处理
数据
46~1500字节承载上层的协议数据单元
以太网的最大传输单元是1500字节,若ip数据报超过1500字节,则必须将该ip数据报分片
由于csma/cd算法的限制,以太网帧必须满足最小长度是64字节,当ip数据报少于46字节时,Mac子层就在数据字段的后面加一个整数字节的填充字段,以确保增长不少于64字节
检验码(FCS)
检验范围从目的地址段到数据字段
算法采用32位crc码
IEEE 802.3标准
帧格式与以太网V2帧格式的不同
用长度域替代了v2帧中的类型域,指出了数据域的长度
高速以太网
速率达到或超过 100Mb/s的以太网
高速以太网技术
高速以太网的mac帧格式与标准以太网的帧格式完全相同,以便升级和向后兼容
IEEE 802.11 无线局域网
无线局域网的组成
有固定基础设施无线局域网
接入点(AP)
采用星形拓扑,其中心点称为接入点
安装AP时必须为其分配一个不超过32字节的服务及标识符(SSID)和一个信道
SSID是指使用该AP的无线局域网的名称
数据链路层使用物理层的服务必须通过服务接入点,数据链路层向高层提供服务也必须通过服务接入点
基本服务集(BSS)
无线局域网的最小构件
一个基本服务集包括一个接入点和若干移动站
各站在本BSS内的通信,或与本BSS外部站的通信,都必须通过本BSS的AP
AP就是基本服务集中的基站
基本服务区(BSA)
基本服务及覆盖的地理范围
无线局域网的基本服务区的直径一般不超过100m
扩展的服务集(ESS)
基本服务集可以是孤立的,可通过AP连接到一个分配系统,然后连接到另一个基本服务集,构成一个扩展的服务集
分配系统(DS)
使扩展的服务及对上层的表现就像一个基本服务集
门户(Portal)
ESS可通过Portal为无线用户提供到有线连接的以太网接入
作用相当于网桥
漫游
无固定基础设施移动自组织网络
由一些平等状态的移动站相互通信组成的临时网络
各节点之间地位平等,中间节点都为转发节点,因此都具有路由器的功能
构成
一些可移动设备发现他们附近还有其他的可移动设备,且要求和其他移动设备进行通信。自组网络中的每个移动站都要参与网络中其他移动站的路由发现和维护,同时由移动站构成的网络拓扑可能随时变化更快。因此在固定网络中行之有效的一些路由选择协议对移动网自组网络已不适用
自主网络和移动ip并不相同
移动ip技术是漫游的主机可用多种方法连接到因特网,其核心网络功能仍然基于固定网络中一直使用的各种路由选择协议
自组网络是将移动性扩展到无线领域中的自治系统,具有自己特定的路由选择协议,且可以不和因特网相连
“固定基础设施”是指预先建立的、能覆盖一定地理范围的固定基站
802.11 局域网的MAC帧
地址字段
持续期字段
CSMA/CA协议中允许发送数据的站点对信到预约一段时间,并将这个时间写入持续期字段
帧控制字段
类型字段和子类型字段
用来区分帧的功能
802.11帧共有三种类型:控制帧、数据帧和管理帧,每种帧又分为若干子类型
VLAN基本概念与基本原理
虚拟局域网(VLAN)
背景
一个以太网是一个广播域,当一个以太网中包含的计算机太多时,往往会导致
以太网中出现大量的广播帧,特别是经常使用的arp和dhcp
一个单位的不同部门共享一个局域网,对信息保密和安全不利
可将一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的vlan,而每个vlan是一个较小的广播域
属于同一个vlan的计算机之间可以直接通信,而不同vlan之间的计算机之间不能直接通信
划分VLAN的方式
基于接口
将交换机的若干结构化为一个逻辑组,这种方法最简单、最有效,若主机离开了原来的接口,则可能进入一个新的子网
基于MAC地址
按mac地址将一些主机划分为一个逻辑子网,当主机的物理位置从一个交换机移动到另一个交换机时,它仍属于原来的子网
基于IP地址
根据网络层地址或协议划分vlan,这样的vlan可以跨越路由器进行扩展,将多个局域网的主机组成一个vlan
802.3ac标准定义了支持vlan的以太网帧格式的扩展
他在以太网帧中插入一个4字节的标识符,称为vlan标签
用来指明发送该帧的计算机属于哪个虚拟局域网
插入vlan标签的帧称为802.1Q帧
Vlan标签的前两个字节总是置为0x8100,表示这是一个802.1Q帧
4位
实际上并没有什么作用
VID
唯一的标识该802.1Q帧属于哪个vlan
利用以太网交换机构成虚拟局域网
各主机并不知道自己的vid值,但交换机必须知道,主机与交换机之间的交互的都是标准以太网帧
一个VLAN的范围可以跨越不同的交换机,前提是所用的交换机能够识别和处理VLAN
若源站向处于同一个vlan但是连接在另一个交换机上的目的站发送帧,源站所连的交换机必须转把帧转发到目的站所连接的交换机,但在转发前要插入vlan标签,否则另一个交换机就不知道应该把帧转发给哪个vlan
这种情况下,连接两个交换机接口之间的链路称为汇聚链路或干线链路
处于不同vlan中的站,即使连接同一个交换机,相互之间通信也需要通过上层路由器来解决。也可以在交换机中嵌入专用芯片进行转发,以便交换机实现第3层的转发功能
广域网
广域网的基本概念
广域网(WAN)
通常是指覆盖范围很广(远超一个城市的范围)的长距离网络,任务是长距离运送主机所发送的数据
连接广域网各节点交换机的链路都是高速链路,广域网首要考虑的问题是通信容量必须足够大,以便支持日益增长的通信量
局域网可以通过广域网与另一个相隔很远的局域网通信
广域网由一些节点交换机,及连接这些节点交换机的链路组成
节点交换机的功能是存储并转发分组
节点之间都是点到点连接,但为了提高网络的可靠性,一个节点交换机往往与多个节点交换机相连
通常需采用网状结构
广域网和局域网的区别与联系
目前局域网接入广域网主要是通过路由器实现的
高级数据连路控制协议(HDLC)
不属于TCP/IP族
点对点协议(PPP)
主要有两种应用
用户通常都要连接到某个isp才能接入互联网,ppp就是用户计算机与isp通信时所用的数据链路层协议
互联网服务提供商(ISP)
两台网络设备之间的直连专用线路
有三个组成部分
链路控制协议(LCP)
用来建立、配置、测试数据链路连接,以及协商一些选项
网络控制协议(NCP)
PPP允许采用多种网络层协议,每个不同的网络层协议要用一个相应的ncp来配置,为网络层协议建立和配置逻辑连接
将IP数据报封装到串行链路的方法
IP数据包在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元(MTU)的限制
PPP帧格式
标志字段(F)
规定位0x7E(01111110)
表示一个帧的开始和结束,即ppp帧的定界符
标志字段出现在信息段中
异步传输
采用字节填充法,使用的转义字符是0x7d
同步传输
采用零比特填充法来实现透明传输
意义暂未定义字段
地址字段(A)
规定为0xFF
控制字段(C)
规定为0x03
协议段
表示信息段运载的是什么种类的分组
信息段
帧检验序列(FCS)
CRC检验的冗余码
PPP状态
PPP双方建立LCP链路后,接着进入身份鉴别状态(可选)
PPP的特点
虽然在连接建立的过程中使用了确认机制,但在数据的发送过程中,只保证无差错接收(通过CRC检验),不使用序号和确认机制,因而是不可靠服务
只支持全双工的点对点链路,不支持多点线路
PPP的两端可以运行不同的网络层协议,但仍可使用同一个PPP进行通信
PPP是面向字节的,所有PPP帧的长度都是整数个字节
支持动态分配IP
数据链路层设备
网桥的基本概念
使用网桥在数据链路层扩展以太网
原来的每个以太网称为一个网段
一个网段的故障不会影响另一个网段的运行
不会将原本独立的两个冲突域合并成一个更大的冲突域
网桥具有识别和转发帧的能力
根据帧首部中的目的MAC地址和网桥的帧转发表来转发或丢弃所收到的帧
起到了过滤通信达功能
网络1和网络2通过网桥连接后,网桥接收到网络1发送到数据帧,检查数据帧中的地址
若是网络1的地址,则将其丢弃,因为源站和目的站处在同一个网段,不需要借助网桥转发
若是网络2的地址,则转发给网络2
以太网交换机
交换机的原理和特点
以太网交换机(二层交换机)
二层只以太网交换机工作在数据链路层
实质
一个多接口的网桥
作用
它能将网络分成小的冲突域,为每个用户提供更大的带宽
特点
当交换机的接口直接与主机或其他交换机连接时,通常都工作在全双工方式
交换机具有并行性能同时连通多对接口,每对接口相互通信的主机都能向独占通信介质那样无冲突的传输数据
这样就不需要使用CSMA/CD协议
当交换机的接口连接集线器时,只能使用CSMA/CD协议,且只能工作在半双工方式
交换机是一种即插即用的设备,其内部的中转发表是通过自学习算法基于网络中各主机间的通信,自动的逐渐建立的
交换机因为使用专用交换结构芯片,交换速率较高
以太网交换机主要采用两种交换方式
直通交换方式
接收到帧的同时,就立即按照该帧的目的mac地址决定转发接口
评价
优点
转发时延非常小
缺点
不检查差错就直接转发,因此可能将一些无效证转发给其他站
不适用于需要速率匹配、协议转换或差错检测的线路
直通交换方式的输入接口接收到一个真实指检查帧的目的mac地址决定输出接口,引入的转发时间至少为读取目的mac地址(共6B)所需的时间
存储转发交换方式
首先缓存接收到的帧,然后检查帧是否正确(可能还需要进行速率匹配或协议转换)
确认无误后,根据目的mac地址决定转发接口
若帧出错,则将其丢弃
优点是可靠性高,支持不同速率接口间的转换,缺点是时延较大
存储转发方式引入的转发时延至少为读取整个帧的时间
交换机的自学习能力
过滤
决定一个帧是转发到某个接口还是丢弃它
转发
决定一个声音被转移至哪个接口
交换表(switch table)
表项至少包含
一个MAC地址
连通该MAC地址的接口
交换机自学习过程
假定a现向b发送一帧,从接口1进入交换机交换机,收到帧后直接查找交换表,找不到mac地址为b的表项,于是交换机将改帧的源地址a和接口1写入交换表,并向除接口1外的所有接口广播这个帧。 c和d丢弃该帧,因为目的地址不匹配,只有b收下这个目的地址正确的帧。交换表中写入 (a, 1) 后,从任何接口收到目的地址为a的帧都应从接口已转发出去
因为交换机所连的主机会随时变化,所以需要更新交换表中的表项
交换表的每个表项都设有一定的有效时间,过期表项会被自动删除
保证了交换表中的数据符合当前网络实际情况
这种自学习算法使得交换机能即插即用,不必手工配置,非常方便
共享式以太网和交换式以太网的对比
主机发送普通帧
对于共享式以太网集线器将帧转发到其他所有接口,其他各主机中的网卡根据帧的目的MAC地址,决定接收或丢弃该帧
对于交换式网络交换机收到帧后,根据帧的目的mac地址和自身的交换表,将帧明确的转发给目的主机
主机发送广播帧
对于共享式以太网络,集线器将帧转发到其他所有接口,其他各主机中的网卡检测到帧的目的mac地址是广播地址时,就接受该帧
对于交换式以太网交换机,检测到目的mac地址是广播地址,于是从其他所有接口转发该帧,其他各主机收到该广播帧后就接受该帧
多对主机同时通信
对于共享式以太网,当多对主机同时通信时必然产生冲突
对于交换式以太网交换机能实现多对接口的高速并行交换,因此不会产生冲突
集线器既不隔离广播域又不隔离冲突域,而交换机不隔离广播域,但隔离冲突域
网络层
网络层的功能
概述
网络层提供主机到主机的通信服务
主要任务
将分组从源主机经过多个网络和多段链路传输的目的主机
分为分组转发和路由选择两种重要功能
在互联网采用的TCP/IP体系结构中,网络层向上是提供简单灵活的、无连接的、尽最大努力交付的数据报服务
这就使得网络中的路由器可以做得比较简单,而且价格低廉
通信的可靠性可以由更高层的传输层来负责
异构网络互连
互联网中的异构网络,在拓扑结构、寻址方案、差错处理方法、路由选择机制等都不尽相同
这些特点均在物理层或数据链路层定义,即互联网中的异构网络,在物理层和数据链路层中的协议至少有一个不同
网络互连
将两个以上的计算机网络,通过一定的方法,用一些中继系统相互连接起来,以构成更大的网络系统
中继系统
根据所在的层次,中继系统分为以下4种
物理层中继系统:转发器,集线器
数据链路层中继系统:网桥或交换机
网络层中继系统:路由器
网络层以上的中继系统:网关
当使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,他们仍是同一个网络,一般并不称为网络互连
网络互连,通常是指由路由器进行网络连接和路由选择
路由器是一台专用计算机,用于在互联网中进行路由选择
虚拟互连网络(IP网络)
许多计算机网络通过一些路由器进行互连,因为参与互连的计算机网络都使用相同的IP,通过IP就可使这些性能各异的网络在网络层上看起来像是一个统一的网络,所以可以把互连后的网络视为一个虚拟互连网络
使用ip网络的好处是
当ip网上的主机进行通信时,就好像在单个网络上通信一样,而看不见互连的各个网络的具体异构细节
路由与转发
路由选择
根据路由协议构造路由表,同时经常或定期的与相邻路由器交换信息,获取网络最新拓扑,动态更新维护路由表,以决定分的组到达目的地节点的最优路径
源主机和中间路由器都不知道IP分组到达目的主机需要经过的完整路径
分组转发
指路由器根据转发表,将分组从合适的端口转发出去
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应使查找过程最优化,路由表则需要最优化网络拓扑变化的计算
网络层提供的两种服务
虚电路(VC)
在虚电路方式中,当两台计算机进行通信时,应当先建立网络层的连接,也就是建立一条逻辑上的虚电路,连接一旦建立就固定了虚电路对应的物理路径
与电路交换类似,整个通信过程分为三个阶段
虚电路建立
将一个未使用过的虚电路号(VCID)分配给该区电路,以区别于本系统中的其他虚电路,然后双方就沿着已建立的虚电路传送分组
分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带这条虚电路的编号即可
不需要为每条虚电路预分配带宽
数据传输
虚电路释放
虚电路表
在虚电路网络中的每个节点上都维持一张虚电路表,它是在虚电路建立过程中确定的
表中每向记录打开一个虚电路的信息,包括在接收电路和发送电路上的虚电路号前一节点和下一节点的标识
工作原理
①数据传输前主机a与主机b先建立连接,主机a发出“呼叫请求”分组,该分组通过中间节点送往主机b,若主机b同意连接,再发送“呼叫应答”分组予以确认
②虚电路建立后,主机a和主机b就可相互传送数据分组
③传送结束后,主机a通过发送“释放请求”分组来拆除虚电路,逐段断开整个连接
特点
虚电路通信电路的建立和拆除需要时间开销,对交互式应用和少量的短分组情况显得很浪费,但对长时间、频繁的数据交换效率较高
虚电路的路由选择体现在连接建立阶段,连接建立后就确定了传输路径
虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达
还可对两个端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送
虚电路有一个致命的弱点,即当网络中的某个节点或某条电路出现故障而彻底失效时,所有经过该节点或该电路的虚电路将遭到破坏
分组首部不包含目的地,只包含的是虚电路号,相对于数据报方式其开销小
分类
永久性虚电路(PVC)
提前定义好的、基本上不需要任何建立时间的端点之间的连接
交换型虚电路(SVC)
临时性的连接指持续所需的时间,且在会话结束时就取消这种连接
数据报
网络在发送分组前不需要先建立连接
源主机的高层协议将报文拆成若干较小的数据段,并加上地址等控制信息后构成分组
中间节点存储分组很短一段时间,找到最佳的路由后尽快转发每个分组
网络层不提供服务质量的承诺,因为网络不提供端到端的可靠服务传输服务,所以这就使得网络中的路由器比较简单
原理(假定主机a向主机b发送分组)
①主机a先将分组逐个发往与它直接连接的交换结点a
②交换节点a缓存收到的分组,然后查找自己的转发表
因为不同时刻的网络状态不同,所以转发表的内容可能不完全相同
③网络中的其他节点收到分组后类似的转发分组,直到分组最终到达主机b
特点
发送分组前不需要建立一些连接,发送方可随时发送分组,网络中的节点可随时接收分组
网络尽最大努力交付传输不保证可靠性,所以分组可能出错或丢失
网络为每一个分组独立的选择路由,转发的路径可能不相同,因此分组不一定按序到达目的节点
发送的分组中要包括发送方和接收方的完整地址,以便可以独立传送
当分组在交换节点存储转发时,需要排队等候处理,这会带来一定的时延
当网络发生拥塞时,这种时延会大大增加,交换节点还可根据情况丢弃部分分组
网络具有冗余路径,当某个交换节点或一条链路出现故障时,可相应的更新转发表,寻找另一条路径转发分组,对故障的适应能力强
收发双方不独占某条链路,资源利用率较高
优点
网络的造价大大降低,运行方式灵活,能够适应多种应用
SDN的基本概念
软件定义网络(SDN)
两个平面相互分离
将网络层抽象的划分为数据平面和控制平面,转发是数据平面实现的功能,路由选择是控制平面实现的功能
集中式的控制平面
控制-数据接口
控制平面利用控制-数据接口对数据平面上的路由进行集中式控制,方便软件来控制网络
在SDN结构中,路由器都变得简单了,它的路由选择软件都不需要了,因此路由器之间不再相互交换路由信息
远程控制器
逻辑上的,可由多个服务器组成
掌握各主机和整个网络的状态,为每个分组计算出最佳路由,通过Openflow协议(或其他途径)将转发表(在SDN中称为流表)下发给路由器
路由器的工作很单纯,即收到分组、查找转发表、转发分组
互联网是分布式的,在某些具体条件下,特别是像一些大型的数据中心之间的广域网使用SDN模式来建造,就可使网络运行效率更高
分布式的数据平面
是一种新型网络体系结构,是一种设计构建和管理网络的新方法,不是一种新型物理网络结构
SDN的可编程性通过为开发者提供强大的编程接口,使得网络具有很好的编程性
北向接口
对上层应用的开发者提供的编程接口
北向接口提供了一系列丰富的api,开发者可以在此基础上设计自己的应用,而不必关心底层的硬件细节
南向接口
SDN控制器和转发设备建立双向会话的接口
通过不同的南向接口协议(如Openflow),SDN控制器就可兼容不同的硬件设备,同时可在设备中实现上层应用的逻辑
东西向接口
SDN控制器与集群内部控制器之间的通信接口
用于增强整个控制平面的可靠性和可拓展性
优点
全局集中式控制和分布式高速转发,既利于控制平面的全局优化,有利于高性能的网络转发
灵活可编程与性能的平衡控制和转发功能分离,使得网络可以有专用的自动化工具以编程方式配置
降低成本
控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本
问题
安全风险
集中管理容易受攻击,若崩溃,则整个网络受到影响
瓶颈问题
原本分布式的控制平面集中化后,随着网络规模的扩大,控制器可能成为网络性能的瓶颈
拥塞控制
拥塞
因出现过量的分组而引起网络性能下降的现象
判断网络是否进入拥塞状态的方法
观察网络的吞吐量与网络负载的关系
若随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,则网络可能仅以进入轻度拥塞状态
若网络的吞吐量随着网络负载的增大而下降,则网络就可能已进入拥塞状态
主要解决的问题
是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免拥塞而出现分组的丢失
作用
确保网络能够承载所达到的流量
这是一个全局的过程,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素,单一的增加资源并不能解决拥塞
方法
开环控制
在设计网络时,事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞
这是一种静态的预防方法,一旦整个系统启动并运行冲突,就不再需要修改
开环控制手段包括确定何时可接收新流量,何时可丢弃分组及丢弃哪些分组,确定何种调度策略等
这些手段的共性是,在做决定时不考虑当前网络的状态
闭环控制
事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生的拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出身的出现的问题
闭环控制是基于反馈环路的概念,是一种动态的方法
补充
在路由器互联的多个局域网的结构中,要求每个局域网物理层、数据层、网络层协议可以不同,而网络层以上的高层协议必须相同
IPv4
IPv4分组
IPv4分组的格式
版本
4位
IP的版本, IPv4中该字段值为4
首部长度
4位
以4B为单位
最大可表示60(15*4)B,最常用的首部长度是20B
总长度
16位
单位为字节
最大长度 216-1=65535 B
以太网帧的最大传输单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度一定不能超过下面的数据链路层的MTU值
标识
16位
它是一个计数器,每产生一个数据报就加1并复制给标识字段
当一个数据报的长度超过网络MTU时,必须分片,此时每个数据报片都复制一次标识后,以便能正确的重装成原来的数据报
标志(Flag)
3位
最低位为MF
MF=1表示后面还有分片
MF=0表示最后一个分片
中间的一位是DF
DF=0时才允许分片
片偏移
13位
他指出较长的数据报在分片后,某片在原数据报中的相对位置,片偏移以8B为偏移单位,除最后一个分片外,每个分片的长度一定是8B的整数倍
生存时间(TTL)
8位
数据报在网络中可通过的路由器数的最大值。标志数据报在网络中的寿命,以确保数据报不会永远在网络中循环
路由器在转发数据报前先将TTL减1,若TTL被减为0,则该数据报必须丢弃
协议
8位
指出此数据报携带的数据使用何种协议。及数据报的数据部分应上交给哪个协议进行处理
其中6表示TCP,17表示UDP
首部校验和
16位
数据报每经过一个路由器,其首部中的某些字段都可能发生变化,因此路由器都要重新计算首部校验和
计算方法
初始化
将 IP 首部看成是由一系列 16 位字组成。把检验和字段本身初始化为 0
例如,对于一个 20 字节(160 位)的 IPv4 首部,可将其划分为 10 个 16 位字
反码求和
对 IP 首部中的所有 16 位字进行反码求和
具体操作是将这些 16 位字逐位相加。在相加过程中,如果产生进位,要将进位值加到和的最低位
取反得到检验和
将上一步得到的 16 位和进行按位取反,得到的结果就是该 IP 首部的检验和
接收端验证
接收端收到 IP 数据报后,按照同样的方法重新计算首部检验和
如果重新计算得到的检验和与接收数据报中首部检验和字段的值相同,那么在一定程度上可以认为 IP 首部在传输过程中没有发生错误;如果不同,则说明 IP 首部可能出现了错误,接收端通常会丢弃该数据报
ip并不要求源主机重传有差错的ip数据报
源地址字段
4B
目的地址字段
4B
IP数据报分片
最大传输单元(MTU)
一个链路层数据帧能承载的最大数据量
以太网MTU为1500B
许多广域网的MTU不超过576B
分片与重组
片
当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在多个较小的IP数据报中,这些较小的数据报称为片
片偏移以8个字节为偏移单位,因此除了最后一个分片,其他每个分片的数据部分长度都是8B的整数倍
片在目的地的网络层被重新组装
目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组
创建一个IP数据报时,源主机为该数据报加上一个标识号,当一个路由器需要将一个数据报分片时形成的每一个数据报(片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可通过检查数据报的标识号来确定哪些数据报是属于同一个原始数据报的片
目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置
IPv4地址与NAT
IPv4地址
IP地址是给连接到互联网上的每台主机或路由器的每个接口分配的一个在全球范围内唯一的32位标识符
IP地址由互联网名字和数字分配机构ICANN进行分配
点分十进制记法
把32位IP地址分成4段,每段8位,用等效的10进制数表示,并在每一段数字之间加一个小数点。即一个IP地址用4段10进制数表示
分类
D类IP地址
用途
专门用于组播,实现一对多通信。像视频会议、在线游戏、IPTV 及部分路由协议,都借助组播提高效率,减少流量
特点
不区分网络号与主机号,代表主机组集合;只能作目的地址,不能作源地址用于单播通信
一般情况下,不会将网络号为 0 的地址作为常规的、分配给网络设备的 IP 地址,所以A类IP的网络号从1开始
构成
IP地址::={<网络号>, <主机号>}
网络号标志主机所连接到的网络
一个网络号在整个互联网范围内必须是唯一的
主机号标志该主机(或路由器)
一个主机号在它前面的网络号所指明的网络范围内必须是唯一的
特殊IP地址(不可用作主机的IP地址)
主机号全0表示本网络本身
主机号全1表示本网络的广播地址,也称直接广播地址
127.×.×.×
保留作为本地软件返回测试(Loopback Test)本主机的进程之间的通信用
本主机不会将目的地址为回环测试的IP数据报发送到任何网络
32位全为0
表示本网络上的本主机
32位全为1
受限广播地址
只在本网络上进行广播
特点
是一种分等级的地址结构
好处
Ip地址管理机构在分配ip地址时只分配网络号,而主机号则由得到该网络的单位自行分配,方便了ip地址的管理
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间
IP地址是标志一台主机(或路由器)和一条链路的接口
当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的ip地址,其网络号必须是不同的,因此路由器至少应具有两个或两个以上的ip地址,每个网端口都有一个不同网络号的ip地址
用转发器或桥接器(网桥等)连接的若干LAN仍是同一个网络(同一个广播域),因此该LAN中所有主机的ip地址网络号必须相同,但主机号必须不同
在ip地址中,所有分配到网络号的网络都是平等的
在同一个局域网上的主机或路由器接口的ip地址中,网络号必须是相同的
网络地址转换(NAT)
指通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的ip地址
它使得整个专用网只需要一个全球ip地址就可与互联网连通,因为专用网本地ip地址是可重用的,所以nat大大节省了ip地址的消耗
隐藏了内部网络结构,从而降低了内部网络受到攻击的风险
私有IP地址(可重用地址)
私有ip地址只用于lan,不用于wan连接
私有ip地址不能直接用于互联网,必须通过网关利用NAT,将私有ip地址转换为互联网中合法的全球ip地址,后才能出现在互联网上
并且允许私有ip地址被lan重复使用
互联网的路由器对目的地址是私有地址的IP一律不进行转发
有效地解决了ip地址不足的问题
但是治本的方法还是使用IPv6
3个私有IP地址块
10.0.0.0/8
10.0.0.0 ~ 10.255.255.255
相当于1个A类网络
172.16.0.0/12
172.16.0.0 ~ 172.16.255.255
相当于16个连续的B类网络
192.168.0.0/16
192.168.0.0 ~ 192.168.0.255
相当于255个连续的C类网络
在互联网中的所有路由器对目的地址是私有地址的数据报一律不进行转发
这种采用私有ip地址的互联网络,称为专用互联网或本地互联网
原理和应用
使用NAT时需要在专用网连接到互联网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球ip地址
当使用本地地址的主机和外界通信时,nat路由器使用nat转换表,进行本地ip地址和全球ip地址的转换
Nat转换表中存放着{本地ip地址: 端口}到{全球ip地址: 端口}的映射
可让多个私有ip地址映射到一个全球ip地址
NAT路由器工作原理
背景
假设某家庭办理的10Mb/s的电信宽带,那么该家庭就获得一个全球ip地址(如138.76.29.7)。而家庭网络内三台主机使用私有地址(如10.0.0.0网段),家庭网关路由器应开启nat功能
原理
①假设用户主机10.0.0.1(随机端口3345),向Web服务器128.119.40.186(端口80)发送请求
②Nat路由器收到ip分组后,为该ip分组生成一个新端口号5001,将ip分组的源地址改为138.76.29.7(nat路由器的全球ip地址),将源端口号改为5001。 Nat路由器在nat转换表中增加一个表项 {WAN端: (138.76.29.7,5001), LAN端: (10.0.0.1,3345)}
③Web服务器并不知道刚抵达的ip分组已被nat路由器改装,更不知道用户的专用地址,它响应的ip分组的目的地址是nat路由器的全球ip地址138.76.29.7,目的端口号是5001
④响应分组到达nat路由器后,通过nat转换表将ip分组的ip地址改为10.0.0.1,将目的端口号改为3345
只需要一个全球ip地址,就可让多台主机同时访问互联网
Nat路由器因为看到了端口,所以它工作在传输层
在某些场合内网中的一些服务器需要向公网用户提供服务,此时可在nat表中配置“公网ip地址+端口号”与“私网ip地址+端口号”的映射关系,实现公网用户通过该映射关系访问私网服务器的功能
补充
发送ip分组前先判断源主机和目的主机是否在同一个子网内,若在同一子网内,则直接交互,无需经过网关
划分子网与路由聚合
划分子网
两级IP地址的缺点
Ip地址空间的利用率有时很低
给每个物理网络分配一个网络号会使路由表变得太大
两级ip地址不够灵活
划分子网的基本思路
划分子网属于一个单位内部的事情,单位对外仍表现为没有划分子网的一个网络
划分子网的方法是从网络的主机号借用若干未作为子网号,当然主机后也相应减少了相同的位数
三级IP地址结构:IP地址::={<网络号>, <子网号>, <主机号>}
路由器转发分组根据的仍是ip数据报的目的网络号,本单位的路由器收到ip数据报后,再按目的网络号和子网号找到目的子网,最后把ip数据报交给目的主机
影响
划分子网可以增加子网的数量
减少了广播域的大小
子网之间的数据传输需要通过路由器进行
提高网络的效率和安全性
减少总的主机数量
各子网中主机后全0和全1地址不能使用
划分子网提高了ip地址的利用率
子网掩码和默认网关
子网掩码
可用来指明分类ip地址的主机号部分被借用了多少位作为子网号
子网掩码是一个与ip地址相对应的长32位的二进制串,它由一串1和跟随的一串0组成
1对应ip地址中的网络号及子网号
0对应于主机号
主机或路由器只需将ip地址和其对应的子网掩码逐位“与”,就可得出相应子网的网络地址
子网掩码是一个网络的重要属性,路由器相互之间交换路由信息时,必须将自己所在网络的子网掩码告诉对方
分组转发时,路由器将分组的目标地址和某网络的子网掩码按位相与,若结果与该网络地址一致,则路由匹配成功,路由器将分组转发至该网络
在使用子网掩码的情况下
一台主机在设置ip地址信息的同时,必须设置子网掩码
属于同一个子网的所有主机及路由器的相应端口,都必须设置相同的子网掩码
路由器的路由表中所包含的信息主要内容有目的网络地址、子网掩码、下一跳地址
默认网关
是子网与外部网络连接的设备,也就是连接本机或子网的路由器接口的ip地址
当主机发送数据时,根据所发送数据的目的ip地址通过子网掩码来判定目的主机是否在子网中。若目的主机在子网中,则直接发送;若目的主机不在子网中,则将该数据发送到默认网关,由网关(路由器)将其转发到其他网络,进一步寻找目的主机
现在的互联网标准规定,所有网络都必须使用子网掩码
若一个网络未划分子网,则该网络的子网掩码就使用默认子网掩码
默认子网掩码
A类网络
255.0.0.0
B类网络
255.255.0.0
C类网络
255.255.255.0
默认网关可以理解为到当前主机最近的路由器的端口地址
初始的源ip地址经过nat路由器的转发后,将源ip地址从私有ip地址改为全球ip地址,即nat路由器外部接口的ip地址
无分类编址 CIDR
无分类域间路由选择(CIDR)是在编程子网掩码的基础上提出的一种消除传统A、B、C类地址及其划分子网的概念
使用网络前缀概念替代替网络的概念,与传统分类ip地址最大的区别就是网络前缀的位数不是固定的,可以任意选取
IP地址::={<网络前缀>, <主机号>}
斜线记法(CIDR记法)
“IP地址/网络前缀所占的位数"
网络前缀所占的位数对应网络号的部分,等效于子网掩码中连续1的部分
采用CIDR后,斜线及后面的数字一定不能省略
CIDR地址块
网络前缀都相同的连续ip地址组成一个CIDR地址块
实际可指派地址数通常为 2N-2(N表示主机号的位数)
主机号全0代表网络号,主机号全1为广播地址
地址块包含地址数为2N
补充
在一条点对点链路中,只需要两个主机IP地址、一个网络地址和一个广播地址,主机号只需两位,子网掩码可指定为255.255.255.252(CIDR表示为“/30”)
在新标准中,可指定为255.255.255.254(CIRD为“/31”)
路由聚合
含义
一个大的CIDR地址块中包含很多小的地址块,因此在路由表中就可利用较大的一个CIDR地址块来代替许多较小的地址块
作用
使得路由表中的一个项目可以表示原来传统分类地址的多条路由项目,压缩了路由表所占的空间,从而提高了网络性能
最长前缀匹配(最佳匹配)
使用CIDR时,路由表中的表项由“网络前缀”和“下一跳地址”组成,在查找路由表时可能会得到不止一个匹配结果,此时应当从匹配结果中选择具有最长网络前缀的路由。因为网络前缀越长,其地址块就越小,因而路由就越具体
为了更有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构(通常采用二叉线索)中,然后自上而下的按层次进行查找
优点
网络前缀长度的灵活性
上层网络的前缀长度较短,所以相应的路由表的项目就较少;而内部又可采用延长网络前缀的方法来灵活的划分子网
网络层转发分组的过程
过程
分组转发都是基于目的主机所在网络的,这是因为互联网上的网络数远小于主机数,这样可以极大的压缩转发表的大小
当分组到达路由器后,路由器根据目的ip地址的网络前缀来查找转发表,确定下一跳应当到哪个路由器,因此在转发表中每条路由必须有下面两条信息(目的网络地址,下一跳地址),这样ip数据报最终一定可以找到目的主机所在网络上的路由器(可能要通过多次间接交付),当到达最后一个路由器时才试图向目的主机进行直接交付
采用CIDR编制时,若一个分组在转发表中可以找到多个匹配的前缀,应当使用最长前缀匹配。为了更快的查找转发表,可以按前缀的长短将前缀最长的排在第一行,按前缀长度的降序排列,这样从第一行最长的开始查找,只要检索到匹配的就不必再继续查找
路由表中的特殊路由
特定主机路由
对特定目的主机的ip地址专门指明一个路由,以方便网络管理员控制和测试网络
如a.b.c.d/32
默认路由
0.0.0.0/0
全0掩码和任何目的地址进行按位与运算结果必然为全0,即必然和前缀0.0.0.0/0相匹配
目的网络是其他网络(不在转发表中)就一律选择默认路由
默认路由通常用于路由器到互联网的路由。互联网包括无数的网络集合不可能在路由表象中一一列出,因此只能采用默认路由的方式
路由器执行的分组转发算法
①从收到的ip分组的首部提取目的主机的ip地址d(目的地址)
②若查找到特定主机路由(目的地址为d),则按照这条路由的下一跳进行转发分组,否则从转发表中的下一条按前缀长度的顺序开始检查,执行步骤③
③将这一行的子网掩码与目的地址d逐位“与”
若运算结果与本行的前缀匹配,在查找结束按照“下一跳”指出的进行处理
否则
若转发表还有下一行,则对下一行进行检查,重复执行步骤③
否则,执行步骤④
④若转发表中有一个默认路由,则把分组传送给默认路由,否则报告转发分组出错
地址解析协议
IP地址与硬件地址(MAC地址)
区别
IP地址是网络层及网络层之上使用的地址,它是分层式的;硬件地址是数据链路层使用的地址,它是平面式的
Ip地址放在ip数据报的首部,mac地址放在mac帧的首部
把ip数据报封装为mac帧后,数据链路层看不见ip数据包中的ip地址
因为路由器的隔离,ip网络中无法通过广播mac地址来完成跨网络的寻址,所以在网络层只使用ip地址来完成寻址。寻址时,每个路由器根据其路由表选择到目标网络需要转发到的下一跳,而ip数据报通过多次路由转发到达目的网络后,改为在目标局域网中通过数据链路层的mac地址以广播方式寻址
网络的性质
在ip层抽象的互联网上只能看到ip数据报
虽然在ip数据报首部中有源ip地址,但路由器只根据目的ip地址进行转发
在局域网的链路层,只能看见mac帧。Ip数据包被封装在mac帧中,通过路由器转发时,ip数据报在每个网络中都被路由器解封装和重新封装,其mac帧首部中的原地址和目的地址会不断改变,这也决定了无法使用mac地址跨网络通信
每当路由器将IP数据报转发到一个具体的网络时,都需要重新封装源硬件地址目的硬件地址
尽管互联在一起的网络的硬件地址体系各不相同,但ip层抽象的互联网屏蔽了下层这些复杂的细节
地址解析协议(ARP)
无论网络层使用什么协议,在实际网络的链路上传送数据真实,最终必须使用硬件地址。所以需要一种方法来完成ip地址到mac地址的映射,这就是地址解析协议
ARP表
每台主机都设有一个arp高速缓存
用来存放本局域网上各主机和路由器的ip地址到mac地址的映射表
使用ARP来动态维护ARP表
ARP对高速缓存中的每一个映射表项都设置了生存时间,超时的项目会从高速缓存中删除
ARP工作在网络层
工作原理
主机欲向本局域网上的某台主机b发送ip数据报时,先在其arp高速缓存中查看有无主机b的ip地址
若有,则可以查出其对应的硬件地址,再将此硬件地址写入mac帧,然后通过局域网将该mac帧发往址硬件地址
若没有,则通过使用目的mac地址为ff-ff-ff-ff-ff-ff的帧来封装并广播arp请求(分组广播发送),使同一个局域网里的所有主机都受到此arp请求
主机b收到该arp请求后向主机a发出arp响应分组(单播发送),分组中包含主机b的ip地址与mac地址的映射关系,主机a收到arp响应分组后,就将此映射写入arp缓存,然后按查询到的硬件地址发送mac帧
若目的主机和源主机不在同一个局域网上,则要通过arp找到本局网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做
Arp因为看到了ip地址,所以他工作在网络层
从ip地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程,只要主机或路由器和本网络上的另一个已知ip地址的主机或路由器进行通信,Arp就自动地向这个ip地址解析为数据链路层所需的硬件地址,然后插入mac帧
动态主机配置协议 DHCP
常用于给主机动态的分配ip地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和自动获取ip地址,而不用手工参与
是应用层协议,基于UDP
使用客户/服务器模型
工作原理
需要ip地址的主机在启动时就向dhcp服务器广播发送发现报文,这时该主机就成为dhcp客户
本地网络上的所有主机都能收到这个广播报文,但只有dhcp服务器才能回答该广播报文
Dhcp服务器先在其数据库中查找该计算机的配置信息
若找到,则返回收到的信息
若找不到,则从服务器的地址池中取一个地址分配给该主机
Dhcp服务器的回答报文称为提供报文
包含提供的ip地址等配置信息
Dhcp服务器和客户的交换过程
① Dhcp客户广播“dhcp发现”消息,试图找到网络中的dhcp服务器,以便从dhcp服务器获得一个ip地址
源地址为0.0.0.0,目的地址为255.255.255.255
② Dhcp服务器收到“dhcp发现”消息后,广播“dhcp提供”消息,其中包括提供给dhcp客户机的ip地址
源地址为dhcp服务器地址,目的地址为255.255.255.255
③ Dhcp客户收到“dhcp提供”消息,若接受该地址,则广播“dhcp请求”消息,向dhcp服务器请求提供地址
源地址为0.0.0.0,目的地址为255.255.255.255
④ Dhcp服务器广播“dhcp确认”消息,将ip地址分配给dhcp客户
源地址为0.0.0.0,目的地址为255.255.255.255
租用期
Dhcp服务器分开配给dhcp客户的ip地址是临时的,因此dhcp客户只能在一段有限的时间内使用这个分配到的ip地址
租用期的数值应由dhcp服务器自己决定,dhcp客户也可在自己发送的报文中提出对租用机的要求
Dhcp客户可随时提前终止服务器提供的租用期,这时只需向dhcp服务器发送释放报文
网际控制报文协议 ICMP
网络层协议
被封装在ip数据报中发送
目的
为了有效地转发ip数据包和提高交付成功的机会
让主机或路由器报告差错和异常情况
分类
ICMP差错报告报文
用于目标主机或到目标主机路径上的路由器,向源主机报告差错和异常情况
5种常用类型
终点不可达
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
源点抑制
当路由器或主机因为拥塞而丢弃数据报时,就像源点发送源点抑制报文,使源点知道应当把数据报发送速率放慢
时间超过
当路由器收到一个数据报时,会将其首估中生存时间(TTL)的值减1
若结果不为0,则路由器将该数据报转发出去
若结果为0,则路由器不但要丢弃该数据报,而且要向源点发送时间超过报文
当终点在预先规定的时间内,不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发作时间超过报文
参数问题
当路由器或目的主机收到的数据报的首部中,有的字段(注意不是任意字段)的值不正确时,就丢弃该数据报并向源点发送参数问题报文
改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
不应发送ICMP差错报告报文的情况
对icmp差错报告报文,不再发送icmp差错报告报文
对第一个分片的数据报片的所有后续数据报片,都不发送icmp差错报告报文
对具有多播地址的数据报,都不发送icmp差错报告报文
对于具有特殊地址的数据报,不发送icmp差错报告报文
ICMP询问报文
常用的有两种类型
回送请求和回答报文
用来测试目的主机是否可达,以及了解其有关状态
时间戳请求和回答报文
利用报文中记录的时间戳,发送方可计算出当前的往返时延
常见应用
分组网间探测 PING
用来测试两台主机之间的连通性
使用连ICMP回送请求和回答报文
Traceroute(UNIX,在Windows中时Tracert)
可以用来跟踪分组经过的路由
使用了ICMP时间超过报文
补充
数据报到达具体的目的网络后,需要知道目的主机的mac地址才能成功送达
Ipv6
IPv6的特点
解决“IP地址耗尽”问题的三种措施
采用无类别编址 CIDR
采用网络地址转换(NAT)
IPv6
特点
更大的地址空间
扩展的地址层次结构
灵活的首部格式
改进的选项
IPv6首部长度时固定的,其选项放在有效载荷中,选项是灵活可变的
IPv4所规定的选项是固定不变的,其选项放在首部的可变部分
允许协议继续扩充
IPv6允许不断扩充功能,而IPv4的功能是固定不变的
支持即插即用
不需要使用DHCP
支持资源的预分配
支持实时音/视频等要求保证一定带宽和时延的应用
只有源主机才能分片
是端到端的
不允许类似IPv4在中间路由器进行分片
若路由器发现到来的数据报太大而不能转发到链路,则丢弃该数据报并向发送方发送一个指示分组太大的icmp报文
首部长度是固定的40B
增大了安全性
身份鉴别和保密功能是IPv6的扩展首部
IPv6与IPv4不兼容,与所有其他的互联网协议兼容,包括TCP、UDP、ICMP、IGMP和DNS等,只是在少数地方做了必要的修改(大部分是为了处理长地址)
IPv6数据报的基本首部
IPv6数据报由两部分组成
基本首部
40B
有效载荷(净载荷)
有零个或多个扩展首部(扩展首部不属于IPv6数据报的首部)及其后面的数据部分构成
格式
字段含义
版本(4位)
6
通信量类(8位)
用来区分不同的IPv6数据报的类别或优先级
流标号(20位)
流
流是指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音/视频传输),而在这个流所经过的路径上的路由都保证指明的服务质量
所有属于同一个流的数据报都具有相同的流标号
有效载荷长度(16位)
指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)
最大值65535(单位字节)
下一个首部(8位)
指明IPv6数据报所运载的数据是何种协议数据单元
当IPv6带有扩展首部时,它就标识后面第一个扩展首部的类型
跳数限制(8位)
源点在每个数据报发出时,即设定某个限制值(最大为255)。路由器每次转发时将其值减1,减为0时就将该数据报丢弃
源地址和目的地址(各占128位)
相比IPv4减少了
首部长字段
首部长度固定(40B)
服务类型字段
优先级和流标号字段实现了服务类型字段的功能
总长度字段
改用有效荷载长度字段
标识、标志、片偏移字段
这些功能已包含在分片扩展首部中
TTL字段
改为跳数限制字段
协议字段
改用下一个首部字段
检验和字段
在传输层有差错检验功能,加快了路由器的处理速度
选项字段
用扩展首部来实现选项功能
IPv6地址
目的地址有三种类型
单播
点对点通信
多播
一点对多点通信,数据包发送到一组计算机中的每一台
任播
任播的终点是一组计算机,但数据报只交付其中的一台计算机,通常是距离最近的一台计算机
表示法
冒号16进制记法
把地址中的每4位用一个16进制数表示并用冒号分隔每16位
缩写表示法
当16位域的开头有一些0时,可以采用一种缩写表示法。但在域中必须至少有一个数字
当有相继的零值域时,还可进一步缩写,这些域可用双冒号(::)缩写
双末后表示法在一个地址中仅能出现一次。
地址的分类
未指明地址
00...0(128位),可记为 ::/128
该地址不能用作目的地址,只能用于还未配置IPv6地址的主机作为源地址
回环地址
00...1(128位),可记为 ::1/128
作用与IPv4的回环地址一样,但IPv6的回环地址仅此一个
多播地址
11111111(8位),可记为 FF00::/8
这类地址占IPv6地址空间的1/256
本地链路单播地址
1111111010(10位),可记为 FE80::/10
类似于IPv4的私有IP地址
全球单播地址
除上述4种外的其他所有IPv6地址
用的最多的地址
采用三级结构
| 全球路由选择前缀(48位) | 子网标识符(16位) | 接口标识符(64位) |
全球路由选择前缀
用于互联网中路由的选择,相当于网络号
子网标识符
用于各机构建自己的子网
接口标识符
用于指明主机或路由器的单个网络接口,相当于主机号
IPv6地址的接口标识符有64位之多,足以对各种接口的硬件地址进行编码。这样IPv6就可直接从128位地址的最后64位中直接提取出相应的硬件地址,而不需要使用地址解析协议(arp)进行地址解析
IPv4向IPv6过渡
从ipv4向ipv6过渡只能采用逐步演进的办法,同时还必须使新安装的ipv6系统能够向后兼容。Ipv6系统必须能够接收和转发ipv4分组,并且能够为ipv4分组选择路由
过渡策略
双栈协议
是指在一台设备上同时装有ipv4和ipv6两个协议。站分别配置了一个ipv4地址和一个ipv6地址。因此这台设备既能和ipv4网络通信,又能和ipv6网络通信
双协议站主机在与IPv6主机通信时采用IPv6地址,而在与IPv4主机通信时采用IPv4地址。双协议站主机使用应用层的域名系统(DNS)获知目的主机采用的是哪种地址
隧道技术
是指在ipv6数据报要进入ipv4网络时,把整个ipv6数据报封装成ipv4数据报的数据部分,使原来的ipv6数据报就好像在ipv4网络的隧道中传输,当ipv4数据报离开ipv4网络时,再将其数据部分交给主机的ipv6协议
路由算法与路由协议
路由算法
路由选择协议的核心是路由算法,即需要何种算法来获得路由表中的各个项目
目的
给定一组路由器及连接路由的链路,路由算法要找到一条从源路由器到目的路由器的“最佳”路径
“最佳”路径指具有最低费用的路径
静态路由与动态路由(从能否随网络的通信量或拓扑自适应地进行调整变化来划分)
静态路由算法
指由网络管理员手工配置每一条路由
简单和开销较小,但不能及时适应网络状态的变化,适用于简单的小型网络
动态路由算法
根据网络流量负载和拓扑结构的变化,来动态调整自身的路由表
能较好地适应网络状态的变化,但实现复杂,开销也大,适用于较复杂的大型网络
常见的动态路由算法可分为两类:距离-向量路由算法和链路状态路由算
距离-向量路由算法
基础是Bellman-Ford算法
用于计算单源最短路径
每个节点以自身为源点执行Bellman-Ford算法,全局上可以解决任意节点对之间的最短路径问题
基本思想
假设 dx(y) 表示从节点 x 到节点 y 的带权最短路径的费用,则有
dx(y) = min{ c(x,y), dv(y) }
v 是 x 的所有邻居
c(x, v) 是从 x 到邻居 v 的费用
对于距离-向量算法,每个节点 x 维护下列路由信息
从 x 到每个直接相邻邻居 v 的链路费用 c(x, v)
节点 x 的距离向量,即 x 到网络中其他节点的费用。这是一组距离,因此称为距离向量
各节点的初始化距离向量就等于它到每个直接连接邻居的费用
它收到的每个邻居的距离向量,即 x 的每个邻居到网络中其他节点的费用
在距离-向量算法中,每个节点定期地向它的每个邻居发送它的距离向量副本。当节点 x 从它的任何一个邻居 v 接收到一个新距离向量时,它首先保存 v 的距离向量,然后使用Bellman-Ford公式 dx(y) = min{ c(x,y), dv(y) } 更新自己的距离向量,若节点 x 的距离向量因这个更新步骤而改变,则节点 x 接下来继续向它的每个邻居,发送其更新后的距离向量
更新报文的大小与网络中的节点数量成正比
最常见的距离向量路由算法是RIP算法,它采用跳数作为距离的度量
链路状态路由算法
链路状态
是指路由器都和哪些路由器相邻,以及相应链路的代价
链路状态算法要求每个节点都具有全网拓扑结构图(这个拓扑结构图在全网范围内是一致的),它们执行下列两项任务:一是,主动测试所有相邻节点的状态;二是,定期地将链路状态传播给所有其他节点
每个节点都可使用 Dijkstra 最短路径算法计算计算出到达其他节点的最短路径
适用于大型或路由信息变化聚敛的互联网环境
因为一个节点的链路状态只涉及相邻节点的连通状态,而与整个互联网的规模并无直接关系
优点
每个节点都使用同样的链路状态数据独立的计算路径,而不依赖中间节点的计算。链路状态报文不加改变的传播,因此采用该算法易于查找故障
当一个节点从所有其他节点接收到报文时,它就在本地立刻计算出正确的路径,保证一步汇聚
因为链路状态报文仅运载来自单个节点关于直接链路的信息,其大小与网络中的节点数量无关,所以链路状态算法比距离-向量算法具有更好的规模可延展性
分层次的路由选择协议
路由协议的分类
内部网关协议(IGP)
用于自治系统内部的路由选择
RIP、OSPF
一个自治系统有权决定,在本自治系统内使用哪种内部网关协议
外部网关协议(EGP)
用于自治系统之间的路由选择
BGP
各个自治系统边界路由器之间,统一使用BGP协议相互通信路由协议
自治系统 AS
全世界的互联网被划分为相互独立的自治系统AS,每个自治系统都有全球唯一的AS编号(ASN)
每个AS至少有一台自治系统边界路由器和其他AS相连
自治系统之间是平级关系,不存在包含关系
路由信息协议(RIP)
RIP的规定
1️⃣网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录,即距离向量
2️⃣RIP使用跳数(Hop Count)或称距离,来衡量到达目的网络的距离
规定从一路由器到直接连接的网络的距离定义为1,每经过一个路由器,距离就加1
3️⃣RIP认为好的路由就是它通过的路由器数量少,即距离或跳数少
4️⃣RIP允许一条路径最多只能包含15个路由器
距离等于16时表示网络不可达
RIP只适用于小型互联网
规定路径上的最高跳数的目的是防止不断在环路上循环,减少网络拥塞的可能性
5️⃣每个路由表项都有三个关键字段
<目的网络N,距离d,下一跳路由器地址X>
RIP的特点
仅和直接相邻的路由器交换信息
交换的信息是本路由所知道的全部信息,即自己的路由表
按固定的时间间隔(通常为30秒)交换路由信息
当网络拓扑发生变化时,路由器也及时向相邻路由器通道拓扑变化后的路由信息
收敛
经过若干次交换个更新后,所有的路由器最终都会知道到达本自治系统内任何网络的最短距离和下一跳路由器的地址
RIP是应用层协议
使用UDP传送数据(端口520)
选择的不一定是时间最短的,但一定是具有最少的路由跳数
RIP的距离向量算法
1️⃣对地址为X的相邻路由器发来的RIP报文,先修改报文中的所有项目
把“下一跳”字段中的地址都改为X
把所有“距离”字段加1
2️⃣对修改后的RIP报文中的每个项目执行
IF ( 若原来的路由表中没有目的网络N ) 则把该项目添加到路由表中 ELSE IF ( 若原来的路由表中有目的网络N,且下一跳路由器的地址是X ) 用收到的项目替换原路由表中的项目 ELSE IF ( 若原来的路由表中有目的网络N,且下一跳路由器的地址不是X ) 若收到的项目中的距离d小于路由器中的距离,则进行更新 ELSE 什么也不做
3️⃣若180秒(RIP默认超时时间)还没有收到相邻路由器的更新路由表,则把此相邻路由器计为不可达路由器
即把距离设置为16
4️⃣返回
RIP的优缺点
优点
实现简单、开销小、收敛过程快
若一个路由器发现了更短的路由,则这种更新信息就传播得很快,在较短时间内便可被传至所有路由器
好消息传得快
缺点
RIP限制了网络的规模,它能使用的最大距离为15
路由器之间交换的是路由器中的完整路由表,网络规模越大,开销越大
当网络出现故障时,路由器之间需反复多次交换信息才能完成收敛,要经过较长时间才能将故障消息传送到所有路由器
坏消息传得慢
开放最短路径优先协议(OSPF)
OSPF的特点
属于网络层
使用IP协议提供的服务
IP首部协议字段为89
因为要交换的信息量很大,应使报文的长度尽量短
基于链路状态路由算法(Dijkstra算法)计算最佳转发路径
每一台路由器需要建立整个网络的拓扑图
带权有向图,可用邻接表存储
OSPF工作流程
路由器开机时探测与自己直连的所有链路状态(LS,Link-State)
用洪泛法(flooding)将探测到的链路状态信息迅速转发给其他路由器
每个链路状态信息都带上一个32位的序号
序号越大,状态越新
若路由器探测到身边链路有变化,就再次立即洪泛最新的链路状态信息
其他特点
允许自治系统灵活地自定义链路“代价”
支持等价多路径转发
支持鉴别功能,防止非法路由信息在自治系统内传播
支持变长子网划分、CIDR
OSPF的工作原理
如何生成路由表
1️⃣构建LSDB
路由器用洪泛法将探测到的链路状态信息迅速转发给其他路由器
一旦探测到身边链路有变化,路由器就再次立即洪泛最新的链路信息
2️⃣运行Dijkstra算法
路由器基于LSDB运行Dijsktra算法,计算出从自身到达每一个目的网络的最短路径
3️⃣生成路由表
根据Dijsktra算法的运行结果,构造路由表
路由表的结果为
<目的网络,下一跳,到目的网络的距离>
“区域”划分
将自治系统划分为一个主干区域、多个非主干区域
区域划分的作用
洪泛范围局限在每个区域内部,降低了洪泛压力
一台普通路由器仅需关心所属区域的网络拓扑,LSDB变小了
几类路由器
自治系统路由器(ASBR)
在主干区域内,至少有一台,与其他自治系统相连
区域边界路由器(ABR)
每个非主干区域,至少有一台,与主干区域相连
区域内部路由器(Internal Router)
也称“非边界路由器”,通常每个区域内有多台
OSPF的分组类型
问候(Hello)分组
建立&维持邻居关系
每隔10秒发一次
40秒超时
数据库描述(DD)分组
邻居建立时,向邻居给出自己的LSDB摘要
LSA,Link-State Advertisement的头信息
链路状态请求(LSR)分组
向邻居请求缺少的LSA(指明头信息即可)
链路状态更新(LSU)分组
向邻居传输具体的LSA(可能引发全网洪泛)
链路状态确认(LSAck)分组
收到邻居发来的LSU后,向邻居确认收到了哪些LSA(头信息)
OSPF的基本操作
补充
互联网(Internet)包括无数的网络集合,不可能在路由表中一一列出,因此路由器到互联网的路由只能采用默认路由的方式,网络前缀为0.0.0.0/0
边界网关协议(BGP,Border Getway Protocol)
BGP的基本特点
是一种外部网关协议
力求寻找一条能够到达目的网络的较好的路由
非最佳路由
互联网规模太大
AS之间的路由选择必须考虑政治、安全或经济等有关因素
是应用层协议,基于TCP
两个边界路由器通过端口号为179的半永久TCP连接(双方交换信息后仍保持连接状态)来交换BGP路由信息
BGP要在不同的自治系统之间交换路由信息,网络环境复杂,需要保证可靠的传输,所以选择TCP
BGP不仅运行在AS之间,还运行在AS内部
BGP对等方
外部BGP会话
内部BGP会话
BGP路由
一般格式
BGP路由 = <CIDR前缀,BGP属性>
BGP属性
AS-PATH
通告的BGP路由所经过的自治系统
在BGP中通常用一个全局唯一的自治系统号ASN来表示自治系统
BGP路由每经过一个AS,就将其ASN加入AS-PATH
NEXT-HOP
通告的BGP路由起点
BGP路由选择
1️⃣首先选择本地偏好值最高的路由
BGP路由属性中有一个本地偏好的选项
可能由管理员设置,或是从同一AS中的另一个路由器学习得到的
2️⃣选择AS跳数最少(AS-PATH最短)的路由
3️⃣使用热土豆路由选择法
选择最靠近NEXT-HOP路由器的路由
让分组经过最少的转发次数离开本AS,这是要使用内部网关协议(OSPF或RIP)
对不同的路由器,得出的选择结果是不同的
4️⃣选择BGP标识符的数值最小的路由
BGP的四种报文
Open(打开)报文
用来与相邻的另一个BGP对等方建立关系,使通信初始化
是两个路由器之间建立TCP连接后接着必须发送的报文,作用是相互识别对方,协商一些参数
收到Open报文的路由器发挥Keepalive报文表示接收建立BGP连接
Update(更新)报文
用来通知某一路由的信息,以及列出要撤销的多条路由
BGP的核心
Keepalive(保活)报文
用来周期性的证实邻站的连通性
Notification(通知)报文
用来发送检测到的差错
三种路由协议的比较
IP多播
IP多播地址
IPv4中的D类地址
注意
多播数据是“尽最大努力交付”,不提供可靠交付
多播地址只能用于目的地址,不能用于源地址
对多播数据报不产生ICMP差错报文
IP多播可分为两种
只在本局域网上进行硬件多播
在互联网范围内进行多播
目前大部分主机都是通过局域网接入互联网的,因此在互联网上进行多播的最后阶段,还要把多播数据报在局域网上用硬件多播交付给多播组的所有成员
多播机制仅应用于udp,它能将报文同时发送给多个接收者
在局域网上进行硬件多播
把ip多播地址映射成多播mac地址,可以将ip多播数据报封装在局域网的mac帧
IGMP与多播路由协议
网际组管理协议(IGMP)
路由器利用IGMP获得多播组的成员信息
让连接到本地局域网上的多波路由器,知道本局域网上是否有主机参加或退出了某个多播组
并不是在互联网范围内对多波组成员进行管理的协议,IGMP并不知道ip多播组包含的成员数,也不知道这些成员分布在哪些网络上
IGMP报文被封装在IP数据报中发送,但它也向IP提供服务
因此不把IGMP视为一个单独的协议,而视为整个网际协议IP的一个组成部分
工作可分为两个阶段
①当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个igmp报文,声明自己要成为该组的成员。本地的多播路由器收到igmp报文后,还要利用多播路由选择协议,把这种组成员关系转发给互联网上的其他多播路由器
②组成员关系是动态的
本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍是组的成员
只要对某个组有一台主机响应,多播路由器就认为这个组是活跃的
一个组在经过几次探询后,仍没有一台主机响应多播路由器,就认为本网络上的主机都已离开了这个组,因此就不再把这个组的成员关系转发给其他的多播路由器
多播路由选择协议
多播路由选择,实际上就是找出以源主机为根节点的多播转发树,其中每个分组在每条链路上只能传送一次。不同的多播组对应与不同的多播转发树。同一个多播组对不同的源点也会有不同的多播转发树
多播(组播)的概念
让源主机一次发送的单个分组可以抵达用一个组地址标识的若干目的主机,即一对多的通信
能够实现多播协议的路由器称为多播路由器
移动IP
移动IP的概念
移动IP技术是指移动站以固定的IP地址实现跨越不同网络的漫游功能,并保证基于IP的网络权限在漫游过程中不发生任何改变
一个移动站是把连接点从一个网络或子网改变到另一个网络或子网的主机
目标
把分组自动地投递给移动站
三种功能实体
移动节点
具有永久IP地址都移动主机
本地代理(归属代理)
通常就是连接在归属网络(原始连接到的网络)上的路由器
实现的代理功能是在应用层完成的
外地代理
通常就是连接在被访网络(移动到另一地点所接入点网络)上的路由器
两个重要功能
要为移动站创建一个临时地址,称为转交地址
及时把移动站的转交地址告诉其归属代理
移动IP的通信过程
在移动IP中,每个移动站都由一个原始地址,即永久地址(归属地址),移动站原始连接的网络称为归属网络
永久地址和归属网络的关联是不变的
注意
转交地址是供移动站、归属代理及外地代理使用的,各应用程序都不会使用
外地代理要向连接在被访网络上的移动站发送IP分组时,直接使用移动站的MAC地址
基本通信流程
通信者b要和移动站a进行通信
〇b并不知道a在什么地方,但b使用a的永久地址作为发送的ip分组中的目的地址
①移动站a在归属网络时,按传统的TCP/ip方式进行通信
②移动站a漫游到被访网络时,要向外地代理进行登记,以获得一个临时的转交地址,外地代理要向a的归属代理登记a的转交地址
③归属代理知道移动站a的转交地址后,会构建一条通向转交地址的隧道,将截获的发送给a的ip分组进行再封装,并通过隧道发送给被防网络的外地代理
④外地代理把收到的封装的ip分组进行拆分,恢复成原始的ip分组,然后发送给移动站a,这样a在被访网络就能收到这些发送给它的ip分组
⑤移动站a在被访网络对外发送ip分组时,仍然使用自己的永久地址作为ip分组的源地址,此时显然无需通过a的归属代理来转发,而是直接通过被访网络的外部代理
⑥移动站a移动到另一被访网络时在新外地代理登记后,然后新外地代理将a的新转交地址告诉其归属代理。无论如何移动a收到的ip分组都是由归属代理转发的
⑦移动站a回到归属网络时,a向归属代理注销转交地址
为了支持移动性,在网络层还应增加一些新功能
①移动站到外地代理的等级协议
②外地代理到归属代理的登记协议
③归属代理数据报封装协议
④外地代理拆封协议
网络层设备
冲突域和广播域
冲突域
冲突域是指连接到同一物理介质上的所有节点的集合,这些节点之间存在介质征用的现象
在osi参考模型中冲突域被视为第1层的概念
集线器、中继器等简单复制转发信号的第1层设备,所连接的节点都属于同一个冲突域
第2层(网桥、交换机),第3层(路由器)设备都可以划分冲突域
广播域
是指接收同样广播消息的节点集合
在该集合中的任意节点发送一个广播帧,其他能收到这个帧的节点都被认为是改广播域的一部分
在osi模型参考模型中,广播域被视为第2层的概念
第1层和第2层设备所连接的节点都属于同一个广播域
路由器作为第3层设备可以划分广播域,即可连接不同的广播域
通常所说的局域网(LAN)特指使用路由器分割的网络
路由器的组成和功能
路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络),并完成分组转发。在多个逻辑网络(多个广播域)互连时必须使用路由器
当源主机和目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上
若在同一个网络上则直接交付,而无需通过路由器
要求发送方和目的站具有相同的子网地址
若不在同一个网络上,则路由器按照转发表(由路由表得出)指出的路由将分组转发给下一个路由器
间接交付
从模型的角度看
路由器是网络层设备
它实现了网络模型的下三层(物理层、数据链路层、网络层)
从结构上看分为
路由选择
也称控制部分
核心构件时路由选择处理机
任务
根据所选定的路由选择协议构造出路由表
经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表
分组转发
交换结构
也称交换组织,本身是一个“在路由器中的网络”
作用
根据转发表对分组进行处理,将某个输入端口进入到分组从一个合适的输出端口转发出去
端口
路由器的端口中有物理层、数据链路层和网络层的处理模块
端口在网络层的处理模块中都设有一个缓冲队列
用来暂存等待处理或已处理完毕待发送的分组,还可用来进行必要的差错检测
路由器对收到的ip分组首部进行差错检验,丢弃有差错手部的报文,但不保证ip分组不丢失
若分组处理的速度赶不上分组进入队列的速度,就会使后面进入队列的分组应缓冲区满而只能被丢弃
路由器的端口一般都具有输入和输出的功能
输入
在物理层接收比特流
在数据链路层取出帧,剥去帧的首部和尾部后,分组就被送入网络层的处理模块
输出
执行输入端口相反的操作
路由表与分组转发
路由表
根据路由选择算法得出
主要用途
路由选择
标准路由表有4个项目
目的网络IP地址
子网掩码
目的地址和子网掩码均为 0.0.0.0
下一跳IP地址
接口
输出端口就是路由器的接口,每个接口都有一个标识符。路由表中的每一条项目都会指定一个接口标识符,路由器转发分组时,根据路由表中的接口标识符来确定输出端口
路由表中包含到目地网络的下一跳路径信息。路由表不可能包含到达所有主机的下一跳信息
转发表
从路由表得出的
其表项和路由表项有直接到对应关系
其结构应使查找过程最优化
转发表中含有一个分组将要发网的目的网络,以及分组的下一跳(下一步接收者的目的地址,实际为mac地址)
转发表还可以设置一条默认路由只要目的网络不在转发表中就一律选择默认路由转发默认路由表象的匹配优先级最低
路由表总是用软件来实现的,转发表可以用软件来实现,甚至可以用特殊硬件来实现
传输层
传输层提供的服务
传输层的功能
为运行在不同主机上的进程之间提供逻辑通信
说明
传输层属于面向通信部分的最高层,也是用户功能中的最低层
只有主机的协议栈才有传输层,而路由器在转发分组时都只用到下三层的功能
功能
应用进程之间的逻辑通信
应用进程之间的通信也称端到端的逻辑通信
从传输层来看,通信的真正端点不是主机,而是主机中的进程
复用和分用
复用
发送方不同的应用进程都可以使用同一个传输层协议传送数据
分用
接收方的传输层在剥去报文的首部后,能够把这些数据真正交付到目的应用进程
实现分用时所依据的头部字段是目的端口号
差错检测
传输层要对收到的报文(首部和数据部分)进行差错检测
TCP
若接收方发现报文段出错,则要求发送方重发该报文
UDP
若接收方发现数据报出错,则直接丢弃
在网络层ip数据报首部中的检验和字段,只检验首部是否出错,而不检查数据部分
提供面向连接和无连接的传输协议
传输层向高层用户屏蔽了低层网络核心的细节(如网络拓扑、路由协议等)
它使应用进程看见的是在两个传输层实体之间,好像有一条端到端的逻辑通信信道,这条逻辑通信信道对上层表现却因传输层协议的不同而有很大差别
TCP
尽管下面的网络是不可靠的,但这种逻辑通信信道相当于一条全双工的可靠信道
UDP
逻辑通信信道仍是一条不可靠信道
传输层的寻址与端口
端口的作用
端口能让应用层的各种进程将其数据通过端口向下交付给传输层。以及让传输层知道应当将其报文段中的数据。向上通过端口交付给应用层相应的进程
服务访问点
数据链路层
帧的“类型”字段
网络层
IP数据报的“协议”字段
传输层
“端口号”字段
应用层
“用户界面”
传输层使用的是软件端口
软件端口
在协议栈层间的抽象的协议端口
是应用层的各种协议进程与传输实体进行层间交互的一种地址
硬件端口
不同硬件设备进行交互的接口
端口号
长16比特
能表示65536个不同的端口号
端口号只有本地意义,即端口号只标识本计算机应用层中的各进程,在因特网中不同计算机相同端口号是没有联系的
根据端口号范围可将端口分为两类
服务器使用的端口号
熟知端口号
数值为0~1023
IANA(互联网地址指派机构)把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有用户都知道
常见熟知端口号
FTP(21)
TELNET(23)
SMTP(25)
DNS(53)
TFTP(69)
HTTP(80)
SNMP(161)
登记端口号
数值为1024~49151
供没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA登记,以防重复
客户端使用的端口号
数值为49151~65535
这类端口号仅在客户进程运行时才动态的选择
也称短暂端口号
当服务器进程收到客户进程的报文时就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程
通信结束后,刚用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用
套接字
构成
在网络中通过ip地址来识别和区分不同的主机,通过端口号来识别和区分一台主机中的不同应用进程。端口号拼接到ip地址就构成套接字(Socket)
在网络中采用发送方和接收方的套接字来识别端点
套接字(Socket) = (IP地址:端口号)
它唯一的标识网络中的一台主机的一个应用进程
无连接服务与面向连接服务
面向连接的传输控制协议(TCP)
采用TCP时,传输层向上提供的是一条全双工的可靠逻辑信道
TCP提供面向连接的可靠服务通信双方在传输数据之前必须先建立连接,然后基于此连接进行可靠数据传输。数据传输结束后要释放连接
TCP不提供广播或多播
为了实现可靠数据传输就必须增加许多措施,如确认、流量控制、计时器及连接管理等,这不仅是协议数据单元的首部增大了很多,还要占用许多的处理机资源
主要适用于可靠性更重要的场合
文件传输协议(FTP)
超文本传输协议(HTTP)
远程终端协议(TELNET)
简单邮件传送协议(SMTP)
. . .
无连接的用户数据报协议(UDP)
提供无连接的不可靠服务通信,双方在传输数据之前不需要建立连接,接收方的传输层在收到udp用户数据报后,无需给发送方发回任何确认
在IP层之上仅提供两个增加的服务
多路复用
对数据的错误检查
比较简单,执行速度比较快,实用性好
使用UDP的应用
小文件传输协议(TFTP)
DNS(域名解析)
动态主机配置协议(DHCP)
简单网络管理协议(SNMP)
实时传输协议(RTP)
路由信息协议(RIP)
网际组管理协议(IGMP)
UDP
UDP数据报
UDP概述
UDP的特点
UDP无须建立连接状态
无连接状态
UDP首部开销小(8B)
没有拥塞控制
支持一对一、一对多、多对一和多对多的交互通信
UDP常用于
一次性传输较少数据的网络应用
如客户/服务器模型、远程调用
多媒体应用
IP电话、实时视频会议、流媒体等
可靠数据传输对这些应用来说不是最重要的,但是它们不可容忍拥塞控制导致出现较大的延迟
远程登录需要依靠一个客户端到服务器的可靠连接,必须保证数据传输的安全性,使用UDP是不合适的
不保证可靠交付
所有维护可靠性的工作可由用户在应用层完成
UDP是面向报文的
发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,一次发送一个报文,既不合并,又不拆分,而是保留这些报文的边界
接收方UDP对IP层交上来的UDP数据报,去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文
报文不可分割,是UDP数据报处理的最小单位
应用程序必须选择合适大小的报文,否则会降低IP层的效率
若报文太长,则UDP把它交给IP层后,可能导致分片
若报文太短,会使IP数据报的首部相对长度太大
UDP的首部格式
UDP数据报包含两部分
首部字段(8B)
源端口
在对方需要回信时使用,不需要时可用全0
目的端口
长度
包括首部和数据
最小值是8(仅有首部)
检验和
检测UDP数据报在传输过程中是否有错,有错就丢弃
该字段是可选的,源主机不想计算检验和时,直接令该字段为全0
数据字段
若接收方发现收到的报文中的目的端口不正确(不存在对应于端口号的应用进程),则丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方
UDP检验
伪首部
在计算检验和时,要在UDP数据报前增加12B的伪首部,得到一个临时的UDP数据报
并不是UDP的真正首部
检验和基于这个临时的UDP数据报来计算
伪首部既不向下传送,又不向上递交
计算检验和的方法和计算IP数据报首部的方法基本相同,但UDP的检验和要将首部和数据字段一起检验
计算方法
在发送方
先把全0放入检验和字段,再把伪首部和UDP数据报看成是由许多16位的字串接起来的
若UDP数据报的数据部分不是偶数个字节,则要在末尾填入一个全0字节
填入的全0字节不发送
按二进制反码计算出这些16位字的和,将此和的二进制反码写入检验和字段
在接收方
把收到的UDP数据报连同伪首部(有需要则需补全0字节),按二进制反码求16位字的和
当无差错时,其结果应为全1,否则表明有差错出现,应丢弃
二进制反码运算规则
①从低位到高位逐列进行计算
②若最高位相加后产生进位,则最后得到的结果要在最低位加1
回卷
TCP
TCP的特点
TCP是面向连接的传输层协议
TCP连接只是一条逻辑连接
每一条TCP连接只能有两个端点
提供可靠交付的服务,保证传送的数据无差错、不丢失、不重复且有序
提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据
TCP连接的两端都设有发送缓存和接收缓存
发送缓存暂存的数据包括
发送应用程序传送给发送方TCP准备发送的数据
TCP已发送但尚未收到确认的数据
接收缓存暂存的数据包括
按序到达但尚未被接收应用程序读取的数据
不按序到达的数据
TCP是面向字节流的
虽然用程序和TCP的交互一是一次一个数据块,但TCP把应用程序交下来的数据仅视为一连串的无结构的字节流
TCP报文的长度根据接收方给出的窗口值和当前网络拥塞程度来决定
TCP报文段
各字段意义
源端口和目的端口
各2B
序号
4B
TCP连接中传送的字节流中的每个字节都要按顺序编号序号字段值,指的是本报文段所发送的数据的第一个字节的序号
确认号
4B
是希望收到对方下一个报文段的第1个数据字节的序号
若确认号为n,则表明到序号n-1为止的所有数据都已正确收到
数据偏移(首部长度)
4位
以4B为单位,表示对首部的最大长度为60B
保留
6位
目前应置为0
紧急位 URG
URG=1,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据应尽快传送(相当于高优先级的数据),紧急数据被插至报文段数据的最前面,而在紧急数据后面的数据仍是普通数据,因此要与首部中的紧急指针字段配合使用
确认位 ACK
仅当 ACK=1,时确认号字段才有效
推送位 PSH(Push)
两个应用进程进行交互式通信时,都希望在进入一个命令后,立即就能收到对方的响应,此时发送方TCP把PSH置1,接收方TCP收到PSH=1的报文段后,就尽快交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付
复位位 RST(Reset)
当RST=1时表明TCP连接中出现严重差错(如主机崩溃等),必须释放连接,然后重新建立传输连接
还可以用于拒绝一个非法的报文段
同步位 SYN
当SYN=1时,表明这是一个连接请求或连接接受报文
SYN=1,ACK=0时,表明这是一个连接请求报文,若对方同意建立连接,则应在响应报文中使用SYN=1,ACK=1
终止位 FIN(Finish)
用来释放一个连接
FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接
窗口
2B
窗口值告诉对方从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)
接收方的数据缓存空间是有限的,因此窗口只作为接收方,让发送方设置其发送窗口的依据
检验和
2B
检验和字段检验的范围包括首部和数据两部分
计算检验和时要在TCP报文段的前面加上12B的伪首部
伪首部中协议字段值位6
紧急指针
2B
紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数
即使窗口为零,也可发送紧急数据
选项
长度可变,最长40B
填充
为了使整个手部的长度是4B的整数倍
TCP连接管理
TCP连接的端点即为套接字(Socket),每一条TCP连接唯一地被通信的两个端点所确定
TCP连接的建立采用客户/服务器模式
主动发起连接建立的应用进程称为客户(Client)
被动等待连接的应用进程称为服务器(Sever)
三个阶段
连接建立
三次握手
连接建立前,服务器处于LISTEN(收听)状态,等待客户的连接请求
过程
①客户机首先向服务器发送连接请求报文段
请求报文段的SYN位置1,同时选择一个初始序号seq=x
TCP规定SYN报文段(SYN=1的报文段)不能携带数据,但要消耗一个序号
客户机进入SYN-SENT(同步已发送状态)
②服务器收到连接请求报文段后,如同意建立连接,则向客户机发回确认
确认报文段的SYN位和ACK位都置1,确认号ack=x+1,同时选择一个初始序号seq=y
确认报文段不能携带数据,但也要消耗一个序号
服务器进入SYN-RCVD(同步收到)状态
③客户机收到确认报文段后,还要向服务器给出确认
确认报文段的ACK位置1,确认号ack=y+1,序号 seq=x+1
该报文段可以携带数据
若不携带数据则不消耗序号,下一个数据报文段的序号仍为x+1
客户机进入ESTABLISHED(已建立连接)状态
服务器收到来自客户机的确认
进入ESTABLISHED状态
数据传送
建立了TCP链接后就可以传送应用层数据
连接释放
参与TCP连接的两个进程中的任何一个都能终止该连接
四次挥手
过程
①客户机打算关闭连接时(需要发送到数据段均已接收到确认)向服务器发送连接释放报文段并停止发送数据,主动关闭TCP连接
该报文段的FIN位置1,序号seq=u,它等于前面已传送的数据的最后一个字节的序号加1,FIN报文段即使不携带数据也要消耗一个序号
这时客户机进入FIN-WAIT-1(终止等待一)状态
TCP是全双工的,即可以想象为一条TCP链接上有两条数据通路,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据
②服务器收到连接释放报文段后即发出确认
该报文段的ACK位置1,确认号ack=u+1,序号seq=v,等于它前面已传送过的数据的最后一个字节的序号加1
然后服务器进入CLOSE-WAIT(关闭等待)状态
此时从客户机到服务器这个方向的连接就释放了,但从服务器到客户器这个方向的连接并未关闭,TCP处于半关闭状态
客户机收到来自服务器的确认后,进入FIN-WAIT-2(终止等待2)状态,等待服务器发出的连接释放报文段
③若服务器已经没有要向客户机发送的数据,就向其发送连接释放报文段
该报文段的FIN和ACK位都置1,序号seq=w(处于半关闭状态的服务器可能又发送了一些数据),还必须重复发送上次已发送的确认号ack=u+1
这时服务器已进入了LAST-ACK(最后确认)状态
④客户机收到连接释放报文后,必须发出确认
该报文段的ACK位置1,确认号ack=w+1,序号seq=u+1
之后进入TIME-WAIT(时间等待)状态
服务器收到该保温后就进入CLOSED(连接关闭)状态
客户机进入TIME-WAIT状态后,还要经过时间等待计时器设置的时间2MSL(Maximum Segment Lifetime,最长报文段寿命)后,才进入CLOSED状态
连接可靠关闭和避免数据冲突
确保最后一个 ACK 报文可靠到达
若 ACK 丢失,服务器会在 1 个 MSL 内重传 FIN
防止旧连接的延迟报文干扰新连接
TCP还使用一个保活计时器,以避免客户机突然出现故障,而导致服务器一直无效等待
服务器每收到一次客户的数据,就会重置保活计时器,若计时器到期后还没有收到客户的数据,服务器就每隔75秒发送一个探测报文段
若连续发送10个探测报文段后仍未收到客户的响应,则服务器认为客户机出了故障,关闭这个连接
TCP可靠传输
序号
TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节之上,而不建立在报文段之上
TCP连接传送的数据流中的每个字节都编上一个序号,序号字段的值是指本报文段所发送的数据的第一个字节的序号
确认
TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号
TCP默认使用累计确认
TCP指确认数据流中第1个丢失字节为止的字节,这样可以减少传输开销
接收方可在合适的时候发送确认,也可在自己有数据要发送时将确认信息顺便捎上(捎带确认)
重传
两种事件会导致TCP对报文段进行重传
超时
TCP每发送一个报文段,就会对这个报文段设置一个超时计时器计时器设置的重传时间到期。但还未收到确认时就要重传这一报文段
RTT
为了计算超时计时器的重传时间,TCP采用一种自适应算法,它记录一个报文段发出的时间以及相应确认的时间这两个时间之差为报文段的往返时间
RTTS
TCP维护了RTT的一个加权平均往返时间,,它会随新测量的RTT样本值的变化而变化
RTO
超时计时器设置的超时重传时间应略大于RTTS,但也不能大太多,否则当报文段丢失时,TCP不能很快重传,导致数据传输时延大
冗余ACK
发送方通常可在超时事件发生之前,通过注意所谓的冗余ACK来较好的检测丢包情况
超时触发重传存在的一个问题是超时周期往往太长
用于ACK就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认
TCP规定
每当比期望序号大的失序报文段到达时就发送一个冗余ACK,指明下一个期待的字节的序号
当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失
这时发送方可以立即对对应的报文段进执行重传,这种技术通常称为快速重传
例如3、4、5号报文段到达接收方,但是接收方所期望收到的下一个报文段时2号,于是接收方就发送三个对1号报文段的冗余ACK
正常累计确认和冗余ACK
正常累计确认 ACK:接收端收到按序数据报后,采用延迟确认机制(约 200 毫秒),利用这段时间处理和识别数据。时间到或有新数据到达,发送确认序号为按序接收最高字节序号加 1 的 ACK。发送端借此更新窗口与记录,继续正常发送数据
冗余 ACK:数据乱序到达时,接收端立即发送确认序号为期望按序接收数据序号的冗余 ACK,之后每收到新乱序数据且期望序号数据未到,就重复发送。发送端收到连续三个相同确认序号的冗余 ACK,立即触发快速重传,从发送缓存取对应数据报文段重传,无需等待其他正常确认 ACK
TCP流量控制
MSS(最大段长度)
定义
MSS 指的是 TCP 报文段中数据部分的最大长度,不包含 TCP 首部
两端主机在发出建立TCP连接的请求时,会在TCP首部写入MSS选项,告诉对方自己的接口能够适应的MSS的大小,然后在二者之间选择一个较小的值投入使用。此后tcp将以MSS的大小对数据进行分割发送。MSS是在三次握手时得出的
流量控制的功能就是让发送方的发送速率不要太快,以便让接收方来得及接收
流量控制是一个速度匹配服务
TCP使用滑动窗口来实现流量控制
Tcp要求接收范围指一个接收窗口(rwnd),接收方根据当前接收缓存的大小动态的调整,接收窗口的大小及大小反映了接收方的容量
接收方将其放在tcp报文段首部中的窗口字段以通知发送方
发送方的发送窗口不能超过接收方给出的接收窗口值,以限制发送方网络输入报文的速率
报文段中rwnd=0,表示不允许发送方再发送数据,直到接收方重新发出一个新的窗口值
rwnd即接收方允许连续接收的能力,单位是字节
发送方总是根据最新收到的rwnd值来限制自己发送窗口的大小,从而将被确认的数据量控制在rwnd大小之内,保证不会使接收方的接收缓存溢出
Tcp为每个连接设有一个持续计时器,只要发送方收到对方的零窗口通知,就启动持续计时器,若计时器超时就发送一个零窗口探测报文段,而对方在就在确认这个探测报文段时给出现在的窗口值,若窗口仍然为零,则发送方收到确认报文段后,就重新设置持续计时器
数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的窗口大小可以动态变化
重传分组的数量最多可以了等于滑动窗口的大小
TCP拥塞控制
拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或连路不致过载
出现拥塞时端点,并不了解拥塞发生的细节,对通信的端点来说,拥塞往往表现为通信时延的增加
拥塞控制与流量控制
区别
拥塞控制是让网络能够承受现有的网络负荷,是一个全局的过程,涉及所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素
流量控制往往指点对点的通信量的控制,是个端到端的问题
相似
都通过控制发送方发送数据的速率来达到控制效果
TCP拥塞控制算法
慢开始
拥塞避免
快重传
快恢复
慢开始和拥塞避免
慢开始
思路
当发送方开始发送数据时,因为并不清楚网络的负荷情况,若立即把大量数据注入,网络则有可能引发网络拥塞
先发送少量数据探测一下,若没有发生拥塞,则适当增加拥塞窗口,即由小到大逐渐增大拥塞窗口
具体做法
在tcp开始发送报文段时,先设置cwnd=1,使得发送方一开始向网络注入的报文段(少目的是试探一下网络的拥塞情况)
使用慢开始算法后,每经过一个传输轮次往返时延(RTT),cwd就会加倍,即cwnd的值随传输轮次指数增长
指数增长时,拥塞窗口不能超过ssthresh的值
为了防止cwnd增长过大而引起网络拥塞,还需设置一个慢开始门限 ssthresh(阈值),当慢开始一直把cwnd增大到一个规定的ssthresh时,然后改用拥塞避免算法。
拥塞避免
思路
让拥塞窗口cwnd缓慢增大
具体做法
每经过一个往返时延RTT,就把发送方的拥塞窗口cwnd加1而不是加倍,使拥塞窗口cwnd按线性规律缓慢增长(加法增大)
根据cwnd的大小执行不同的算法
cwnd < ssthresh
使用慢开始算法
cwnd > ssthresh
停止使用慢开始算法而改用拥塞避免算法
cwnd = ssthresh
既可使用慢开始算法,又可使用拥塞避免算法
网络拥塞的处理
无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认)就要首先把慢开始门限ssthresh设置为出现拥塞时的发送方cwnd值的一半(但不能小于2),然后把佣色窗口cwnd重新设置为1执行慢开始算法
目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完
快重传和快恢复
快重传
快重传算法是使发送方尽快(尽早)进行重传,而不等超时计时器超时再重传
要求
接收方不要等待自己发送的数据时才进行捎带确认,而要立即发送确认,即使收到了失序的报文段也要立即发出对已收到报文段的重复确认
发送方一旦连续收到三个冗余ACK(重复确认),就立即重传相应的报文段,而不是等该报文段的超时计时器超时再重传
快恢复
原理
当发送方连续收到三个冗余ACK(重复确认)时执行“乘法减小”方法,把慢开始门限ssthresh调节为当前cwnd的一半,把cwnd值也调整为当前cwnd的一半(等于ssthresh值),然后开始执行拥塞避免算法,使拥塞窗口缓慢的线性增大
补充
接收方的缓存空间总是有限的,因此发送方发送窗口的大小由流量控制和拥塞控制共同决定
当题目中同时出现接收窗口(rwnd)和拥塞窗口(cwnd)时,发送方发送窗口的实际大小是由rwnd和cwnd中较小的那一个确定的
应用层
网络应用模型
客户/服务器(C/S)模型
客户/服务器模型中,一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求
客户机是面向用户的,服务器是面向任务的
工作流程
服务器处于接收请求的状态
客户机发出服务请求,并等待接收结果
服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机
最主要的特征
客户是服务请求方,服务器是服务提供方
使用客户/服务器模型的常见应用
Web、文件传输协议(FTP)、远程登录、电子邮件等
主要特点
网络中各计算机的地位不平等,服务器可通过对用户权限的限制来达到管理客户机的目的。整个网络的管理工作由少数服务器负责,因此网络的管理非常集中和方便
客户机相互之间不直接通信
可扩展性不佳,受服务器硬件和网络带宽的限制,服务器支持的客户机数量有限
P2P模型
思想
整个网络中的传输内容不在被保护在中心服务器上每个节点都同时具有下载上传的功能,其权利和义务都是大体对等的。
P2P模型中任意一对计算机,称为对等方(Peer),直接相互通信
优点
减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个节点上,因此大大提高了系统效率和资源利用率
多个客户机之间可以直接共享文档
可扩展性好传统服务器有响应和带宽的限制,因此只能接受一定数量的请求
网络健壮性好,单个节点和失效不会影响其他部分的节点
缺点
在获取服务的同时还要给其他节点提供服务,因此会占用较多的内存,影响整机速度
域名系统
是因特网使用的命名系统用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的ip地址
DNS系统采用客户/服务器模式,其协议运行在UDP之上,使用53号端口
从概念上可分为三部分
层次域名空间
域名
互联网上用于识别和定位计算机或计算机组(如服务器)的字符标识
因特网上提供访问的主机一定要有IP地址,但不一定要有域名
多台主机可以映射到同一个域名上(负载均衡)
域名在不同时间可以解析出不同的IP地址
可以把多个域名指向同一台主机IP地址
一台主机也可以映射到多个域名上(如虚拟主机)
因特网采用层次树状结构的命名方法,使用这种命名方法任何一个连接到因特网的主机或路由器都有一个唯一的层次结构名称,即域名
域(Domain)是名字空间中一个可被管理的划分
域可以划分为子域,而子域还可以继续划分为子域的子域
每个域名都由标号序列组成,而各标号之间用“.”隔开
关于域名中的标号有以下几点需要注意
标号中的英文不区分大小写
标号中除连字符(-)外,不能使用其他的标点符号
每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符
级别最低的域名写在左边,级别最高的域名写在右边
顶级域名(TLD)
国家(地区)顶级域名(nTLD)
某些国家和地区的域名
“.cn”表示中国,“.us”表示美国
通用顶级域名(gTDL)
“.com”公司,“.net”网络服务机构,“.org”非营利性组织,“.edu”教育机构,“.gov”国家或政府部分等
基础结构域名(arpa)
用于反向域名解析,即IP地址反向解析为域名
在域名系统中,各级域名由其上一级的域名管理机构管理,顶级域名由因特网名称与数字地址分配机构(ICANN)管理。国家顶级域名下注册的二级域名将由该国家自行确定,每个组织都可以将它的域再分成一定数量的子域,并将这些子域委托给其他组织去管理
域名服务器
域名到IP地址的解析,是由运行在域名服务器上的程序完成的
一个服务器所负责管辖或有权限的范围称为区(小于或等于域)
一个区域中的所有节点必须是能够连通的,每个区设置相应的权限域名服务器用来保存改区中的所有主机的域名到IP地址的映射
每个域名服务器不仅能够进行一些域名到IP地址的解析,而且必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时能够知道到什么地方去找其他域名服务器
DNS使用了大量的域名服务器,它们按层次方式组织
有4种类型的域名服务器
根域名服务器
最高层次的域名服务器所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址
不管是哪个本地域名服取消对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器
英特网上有13个根域名服务器
实际上每个都是冗余服务器的集群体,以提供安全性和可靠性
通常跟域名服务器并不直接将待查询的域名直接转换成IP地址,而是告诉本地域名服务器,下一步应当找哪个顶级域名服务器进行查询。
顶级域名服务器
负责管理在顶级域名服务及注册的所有二级域名
收到DNS请求时,就给出相应的回答可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址
权限域名服务器(授权域名服务器)
每台主机都必须在权限域名服务器处登记
实际上,许多域名服务器都同时充当本地域名服务器和权限域名服务器
权限域名服务器总是能将其管辖的主机名转换为该主机的IP地址
本地域名服务器
每个因特网服务提供者(ISP)都可以拥有一个本地域名服务器
当一台主机发出DNS请求时,这个查询请求报文就发送给该主机的本地域名服务器
解析器
域名解析过程
当客户端需要域名解析时,通过本机的DNS客户端,构造一个DNS请求报文,以UDP数据方式发往本地域名服务器
有两种方式
主机向本地域名服务器查询都采用递归查询
递归查询是指若主机所查询的本地域名服务器,不知道被查询域名的IP地址,则本地域名服务器就以DNS客户的身份向根域名服务器继续发出查询请求报文,而不是让主机自己进行下一步查询
本地域名服务器向其他域名服务器采用递归查询或迭代查询
递归查询,本地域名服务器只需向根域名服务器查询一次,后面几次查询都是递归地在其他几个域名服务器之间进行的
本地域名服务器向根域名服务器的查询通常是采用迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所查询的ip地址,要么告诉本地服务器,你下一步应当向哪个顶级域名服务器进行查询,然后让本地服务器进行后续的查询。同样顶级域名服务器收到查询报文后,要么给出要查询的ip地址,要么告诉本地域名服务器下一步应当向哪个权限域名服务器查询。最后知道了所要解析的域名ip地址后,再把这个结果返回给发去查询的主机
过程(客户机想获知域名为y.abc.com主机的IP地址)
①客户机向其本地域名服务器发出DNS请求报文(递归查询)
②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求报文(迭代查询)
③根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器
④本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)
⑤顶级域名服务器dns.com收到请求后,判断该域名属于abc.cmo域,将对应的权限域名服务器dns.abc.com的IP地址返回给本地域名服务器
⑥本地域名服务器向权限域名服务器dns.abc.com发起解析请求报文(迭代查询)
⑦权限域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器
⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机
为了提高DSN的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存,用来缓存最近查询过的域名的相关映射信息
因为主机名和IP地址之间的映射关系不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息
在主机中同样也很需要高速缓存,许多主机在启动时从本地域名服务器下载域名和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且旨在从缓存中找不到域名时才使用域名服务器
文件传输协议
FTP工作原理
文件传输协议(FTP)
是因特网上使用最广泛的文件传输协议
提供交互式的访问,允许客户指明文件袋类型与格式,并允许文件具有存取权限
屏蔽了各计算机系统的细节,适用于在异构网络中的任意计算机之间传送文件
FTP提供的功能
提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力
以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
以匿名FTP的方式提供公用文件共享的能力
FTP采用客户/服务器的工作方式,使用TCP可靠传输服务
FTP服务器进程
一个服务器进程可同时为多个客户进程提供服务
组成
主进程
负责接收新的请求
若干从属进程
负责处理单个请求
工作步骤
①打开熟知端口21(控制端口),是客户进程能够连接上
②等待客户进程发连接请求
③启动从属进程处理客户进程发来的请求
从属进程对客户进程的请求处理完毕后即终止
④回到等待状态,继续接收其他客户进程的请求
主进程与从属进程并发执行
FTP服务器必须在整个会话期间保留用户的状态信息,特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置
控制连接与数据连接
FTP在工作时使用两个并行的TCP连接
控制连接
服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接
用来传输控制信息(如连接请求,传送请求等)
控制连接在整个会话期间一直保持打开状态
是持久的
数据连接
服务器端口号为20
服务端的控制进程在接收到ftp客户发送来的文件传输请求后,就创建“数据传送进程”和“数据连接”
数据连接用来连接客户端和服务器端的数据传送进程
数据传送进程,实际完成文件的传送,在传送完毕后关闭数据传送连接并结束运行
是非持久的
两种传输模式
主动模式 PORT
客户端连接到服务器的21号端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT命令和端口号后,通过20号端口和客户端开放的端口连接,发送数据
“服务器”连接到“客户端”
默认采用主动模式
被动模式 PASV
客户端要读取数据时,发送PASV命令到服务器,服务器在本地随机开放一个端口并告知客户端,客户端在连接到服务器开放的端口进行数据传输
“客户端”连接到“服务器”
FTP的控制信息是带外传送的
使用了一个分离度控制连接
使用FTP时,要修改服务器上的文件,就需要先将此文件传送到本地主机,然后将修改后的文件副本传送到源服务器,来回传送耗费很多时间。
网络文件系统(NFS)
允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据。这样NFS可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件
FTP支持两种传输方式
ASCII
传输非加密文本文件
Binary
传输图像、声音等非文本文件
电子邮件
电子邮件系统的组成结构
用户代理(User Agent)
用户与电子邮件系统的接口
用户代理向用户提供一个很友好的接口来发送和接收邮件
用户代理至少应当具有撰写显示和邮件处理的功能
通常情况下,用户代理就是一个运行在PC上的程序
邮件服务器
它的功能是发送和接收邮件,同时还要向发件人报告邮件传送的情况(已交付、被拒绝、丢失等)
邮件服务器采用客户/服务器模式工作,但它必须能够同时充当客户和服务器
一个账号在服务器上只能有一个邮件接收目录
电子邮件使用的协议
邮件发送协议
用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP
SMTP用的是推(Push)的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户将邮件推送到SMTP服务器
邮件读取协议
用于用户代理从邮件服务器读取邮件,如POP3
POP3用的是拉(Pull)的通信方式,即用户都去邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件
电子邮件的收发过程
①发件人调用用户代理来撰写和编辑要发送的邮件
②邮件撰写完后,发件人点击“发送邮件”按钮,把发送邮件的工作全都交给用户代理来完成。用户代理用SMTP把邮件传送给发送端邮件服务器
③发送端邮件服务器将邮件放入邮件缓存队列中,等待发送
④发送邮件服务器的SMTP客户与接收端邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去
邮件是直接传送给接收端邮件服务器的,而不会在互联网的某个中间邮件服务器落地
⑤运行在接收端的邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收件人的用户信箱,等待收件人在方便时进行读取
⑥收件人打算收信时调用用户代理使用POP3(或IMAP)协议,将自己的邮件从接收端邮件服务器的用户邮箱中取回
电子邮件格式与MIME
电子邮件格式
组成
信封
内容
首部
From
通常由邮件系统自动填入
To
必填关键字,后面填入一个或多个收件人的电子邮件地址
电子邮件地址格式
收件人邮箱名@邮箱所在的主机的域名
保证邮件地址在因特网上是唯一的
Subject
可选关键字是邮件的主题,反映了邮件的主要内容
首部与主体之间用一个空行进行分割
主体
RFC 822规定了邮件的首部格式,而邮件的主体部分则让用户自由撰写用户。写好首部后,邮件系统自动地将信封所需的信息提取出来,并写在信封上用户不需要亲自填写信封上的信息
多用途因特网邮件扩展(MIME)
背景
SMTP只能传送7位ASCII码文本邮件,许多其他非英语国家的文字就无法传送,且无法传送可执行文件及其他二进制对象,所以提出了多用途因特网邮件扩展
原理
当发送端发送到邮件中包含有非ASCII码数据时,不能直接使用SMTP进行传送,而要通过MIME进行转换,将非ASCII码数据转换为ASCII码数据,之后就可以使用SMTP进行传送
接受端也要使用MIME对接收到的ASCII码数据进行逆转换,以便可以得到包含有非ASCII码数据的邮件
MIME主要包括的内容
5个新的邮件首部字段
MIME版本
内容描述
内容标识
传送编码
内容类型
定义了许多邮件内容的格式,对多媒体电子邮件的标识方法进行了标准化
定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变
SMTP和POP3
SMTP(简单邮件传输协议)
是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息
使用TCP连接,端口号为25
三个阶段
连接建立
① 发件人的邮件发送到发送方邮件服务器的邮件缓存中后 ② SMTP客户就每隔一定时间对邮件缓存扫描一次 ③ 如发现有邮件就与接收方邮件服务器的SMTP服务器建立TCP连接,SMTP服务器使用的熟知端口号为25 ④ 连接建立后接收方SMTP服务器发出220 Service Ready(服务就绪) ⑤ 然后SMTP客户向SMTP服务器发送HELO命令附上发送方的主机名
不使用中间的邮件服务器,TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立。当接收方有件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接
邮件传送
连接建立后就可开始传送邮件
① 邮件的传送首先从MAIL命令开始,命令后面有发件人的地址 ② 若SMTP服务器已准备好接收邮件,则回答250 OK ③ 下面跟着一个或多个RCPT命令,格式为RCPT TO: <收件人地址> ④ 每发送一个RCPT命令,都应有相应的信息从SMTP服务器返回,如250 OK或550 No Such user here(无此用户) ⑤ 获得OK的回答后,客户端就使用DATA命令,表示要开始传送邮件的内容 ⑥ 正常情况下,SMTP服务器返回到信息是354 Start mail input; end with <CTRL>.<CTRL> ⑦ 此时SMTP客户就可开始传送邮件内容,并使用<CTRL>.<CTRL>表示邮件内容的结束
RCPT命令的作用
先弄清接收方系统是否已准备好接收邮件,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,避免浪费通信资源
连接释放
邮件发送完后,SMTP客户端应发送QUIT命令 SMTP服务器返回到信息是221(服务关闭),表示SMTP同意释放TCP连接
邮件传送到全部过程就此结束
POP3 和 IMAP
邮局协议(POP)
采用客户/服务器模式,在传输层使用TCP,端口号为110
接收方的用户代理必须运行POP客户程序,而接收方的邮件服务器中则运行POP服务程序
两种工作方式
下载并保留
用户从邮件服务器上读取邮件后,邮件依然会保留在邮件服务器上,用户可再次从服务器上读取该邮件
下载并删除
邮件一旦被读取,就被从邮件服务器上删除
POP3协议在传输层时使用明文来传输密码的,并不对密码加密
因特网报文存储协议(IMAP)
特性
IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此IMAP维护了会话用户的状态信息
允许用户代理只获取报文段某些部分
例如可以只读取一个报文的首部,或多部分MIME报文段一部分
适用于低带宽的情况
基于万维网的电子邮件
如Hotmail、Gmail等
特点
用户浏览器与Hotmail或Fmail的邮件服务器之间的邮件发送或接收使用的是HTTP,仅在不同邮件服务器之间传送邮件时才使用SMTP
万维网(WWW)
WWW的概念与组成结构
是一个分布式、联机式的信息存储空间,在这个空间中
一样有用的事物称为一样资源,并由一个全域统一资源定位符(URL)标识
这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过点击链接来获取资源
内核部分由三个标准构成
统一资源定位符(URL)
负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符
URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁标记,相当于一个文件名在网络范围的扩展
一般形式
<协议>;//<主机>:<端口>/<路径>
协议
指用什么协议来获取万维网文档,常见的有http、ftp等
主机
时存放资源的主机在因特网中的域名或IP地址
端口和路径有时可省略
在URL中不区分大小写
超文本传输协议(HTTP)
一个应用层协议,它使用TCP连接进行可靠的传输,HTTP时万维网客户程序和服务器程序之间交互所必须严格遵守的协议
超文本标记语言(HTML)
一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述
万维网以客户/服务器模式工作
浏览器是在用户主机上的万维网客户程序
万维网文档所驻留的主机运行服务器程序,这台主机称为万维网服务器
若主机是Web服务器且使用私有IP地址,发出的分组源端口号为80,说明是其发出的HTTP响应分组,若该HTTP响应分组是对外网主机发出的HTTP请求的响应,则NAT表中一定存在相应的表项(否则HTTP请求分组不可能到达Web服务器);若在NAT表找不到相应的表项,则只可能是对内网主机发出的HTTP请求的响应,这时该分组不需要通过路由转发,NAT路由器应丢弃该分组
客户程序向服务器发出请求,服务器程序向客户程序送回客户所要等万维网文档
工作流程
①Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求
②Web服务器把URL转换为文件路径,并返回信息给Web浏览器
③通信完成,关闭连接
万维网是无数个网络站点和网页端集合,它们在一起构成了因特网的最主要的部分(因特网也包括电子邮件、Usenet和新闻组)
超文本传输协议
概念
HTTP定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
从层次的角度看,HTTP是面向事务(Transaction-oriented)的应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件的重要基础
HTTP的操作过程
用户单击鼠标后所发生的时间顺序如下(以访问清华大学的网站为例)
①浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/chn/index.htm)
②浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址
③域名系统DNS解析出清华大学服务器的IP地址
如未注明,默认与本地域名服务器的查询也需要1RTT
④浏览器与该服务器建立TCP连接(默认端口号80)
⑤浏览器发出HTTP请求:GET /chn/index.htm
⑥服务器通过HTTP响应把文件index.htm发送给浏览器
⑦释放TCP连接
⑧浏览器解释文件index.htm,并将Web页显示给用户
上述只是一个简化过程,实际过程涉及TCP/IP体系结构中
应用层的DHCP、DNS和HTTP
传输层的UDP(DNS使用UDP传输)和TCP
网际层的IP、ARP、ICMP
数据链路层的CSMA/CD或PPP(若涉及ISP接入或广域网传输)
HTTP的特点
无连接的
使用TCP作为传输层协议,保证了数据的可靠传输,但HTTP本身是无连接的,即双方在交换HTTP报文之间不需要先建立HTTP连接
无状态的
同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时相同
无状态特性简化了服务器的设计,使之更易支持大量并发的请求
在实际应用中,通常使用Cookie加数据库的方式来跟踪用户活动(如记录用户最近浏览大商品等)
Cookie的工作原理
① 当用户初次浏览某个使用Cookie的网站时,该网站服务器就为用户产生一个唯一的Cookie识别码,如“12345”,并以此为索引在后端数据库中创建一个项目,用来记录用户访问该网站的各种信息 ② 接着在给用户的响应报文中添加一个Set-cookie的首部行“Set Cookie: 12345”,用户收到响应后,就在它管理的特定Cookie文件中添加该服务器的主机名和Cookie识别码 ③ 当用户再次浏览这个网站时,会取出这个网站的识别码,并在请求报文中添加一个Cookie首部行“Cookie: 12345” ④ 服务器根据Cookie识别码就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户的历史浏览记录向其推荐新商品等
HTTP既可使用非持续链接(HTTP/1.0),又可使用持续链接(HTTP/1.1 支持)
非持续链接
每个网页元素对象的传输都需要单独建立一个TCP连接
请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)
每次建立新的TCP连接都要分配缓存和变量,使万维网的负担很重
为了减小时延,浏览器通常会建立多个并行的TCP连接以同时请求多个对象
对应的首部行应为 “Connection: close”
持续链接
万维网服务器在发送响应后仍然保持这条连接,时同一个客户和该服务器可以继续在这条TCP连接上传后续的HTTP报文和响应报文
HTTP/1.1默认使用持续连接
工作方式分为
非流水线
客户在收到前一个响应后才能发出下一个请求,服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源
流水线
客户可以连续发出对各个对象的请求,服务器就可连续响应这些请求
若所有的请求和响应都是连续发送到,则引用所有对象共计经历1RTT延迟,而非流水线方式,每个对象都必须有1RTT延迟
减少了TCP连接中的空闲时间,提高了效率
HTTP是基于TCP的,所以每RTT内传送到数据量还要受到TCP发送窗口的限制
对应的首部行应为 “Connection: Keep-Alive”
HTTP的报文结构
两种报文都由三个部分组成,格式的区别是开始行不同
组成
开始行
区别
在请求报文中的开始行称为请求行
在响应报文中的开始行称为状态行
开始行的三个字段之间都以空格分割,最后的“CR”和“LF”分别代表“回车”和“换行”
首部行
用来说明浏览器、服务器或报文主体的一些信息
首部可以有几行,但也可以不使用
在每个首部行中都有首部段名和它的值,每一行的结束都要有“回车”和“换行”
整个首部行结束时,还有一空行将首部行和后面的实体主体分开
实体主体
在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段
请求报文段“请求行”有三个内容
方法
是对所有请求对象进行的操作,是一些命令
HTTP请求报文中常用的几个方法
使用HEAD方法时服务器可对HTTP报文进行响应,但不会返回请求对象,其作用主要是调试
请求资源的URL
HTTP的版本
响应报文段第一行是状态行
包含
HTTP的版本
状态码
解释状态码的短语
HTTP响应报文中常见的三种状态行
HTTP/1.1 202 Accepted
接受请求
HTTP/1.1 400 Bad Request
错误的请求
HTTP/1.1 404 Not Found
找不到页面