- 1. 计算机网络概述
- 2. 物理层
- 3. 数据链路层
- 4. 网络层
- 5. 传输层
- 6. 会话层
- 7. 表示层
- 8. 应用层
- 9. 计算机网络总结图
- 10. 参考
CS专业课学习笔记
计算机网络概述
Internet概述
- 网络(Network):许多计算机连接在一起(局域网)
- 互联网(Network of Networks):网络和网络连起来就是互联网
- 因特网(Internet):全球最大的一个互联网
因特网发展的三个阶段:
- 第一阶段:ARPANET向互联网发展(上世纪60年代到80年代中期)
- 第二阶段:三级结构的因特网(上世纪80年代到90年代初)
- 第三阶段:多层次ISP(互联网服务提供商)结构的因特网
Internet组成
边缘部分
主机之间的通信方式有两种:
- 客户服务器方式(C/S方式)
- 对等方式(P2P方式)
核心部分
数据交换方式:
数据交换方式 | 描述 |
---|---|
电路交换 | 需要先建立连接比特流连续的从原点直达终点,随后释放连接 |
报文交换 | 整个报文传送至相邻结点,全部储存下来后查找转发表,转发至下一个结点 |
分组交换 | 单个分组传送到相邻结点,存储后查找转发表,转发至下一个节点(存储转发) |
电路交换:适用于数据量很大的实时性传输:核心路由器之间可以使用电路交换
报文交换:假设传输一个文档,不做分组直接写上目标地址和源地址整个传走,所以报文一般比分组长,且报文交换的时延较长
分组交换:在发送端把要发送的报文分隔为较短的数据块,每个块增加带有控制信息的首部构成分组(包),依次把各分组发送到接收端,接收端剥去首部,抽出数据部分,还原成报文
其中路由器处理分组的过程是:
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找出到某个目的地址应从哪个端口转发;
- 把分组送到适当的端口转发出去
计算机网络类别
计算机网络最简单的定义:一些互相连接的,自治的计算机的集合
作用范围
- 广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里
- 城域网 MAN (Metropolitan Area Network):作用距离约为 5 ~ 50 公里
- 局域网 LAN (Local Area Network):局限在较小的范围(如 1 公里左右)
- 个人区域网 PAN (Personal Area Network):范围很小,大约在 10 米左右
使用者
- 公用网 (public network):按规定交纳费用的人都可以使用的网络。因此也可称为公众网
- 专用网 (private network):为特殊业务工作的需要而建造的网络
拓扑结构
- 环状(Ring)
- 网状(Mesh)
- 星状(Star)
- 全连通(Fully Connected)
- 线形(Line)
- 树状(Tree)
- 总线(Bus)
交换方式
- 电路交换网
- 报文交换网
- 分组交换网
工作方式
- 资源子网
- 通信子网
- 接入网
计算机网络的性质指标
性能指标
- 速率:连接在计算机网络上的主机在数字信道上传送数据位数的速率,也称data rate或bit rate
- 带宽:数据通信领域,数字信道所能传输的最高速率
- 吞吐量:单位时间内通过某个网络的数据量
- 时延:
- 发送时延:数据块长度(比特)/ 信道带宽(比特/秒)
- 传播时延:信道长度(米)/ 信号在信道上的传播速率(米/秒)
- 处理时延:网络结点存储转发处理时间
- 排队时延:网络结点缓存队列排队时间
- 时延带宽积:传播时延 * 带宽(能够承载的数据量)
- 往返时间:从发送方发送数据开始,到发送方收到接收方确认
- 利用率:
- 信道利用率:有数据通过时间 /(有+无)数据通过时间
- 网络利用率:信道利用率加权平均值
非性能指标
- 费用
- 质量
- 标准化
- 可靠性
- 可扩展性
- 可升级性
- 维护与管理
计算机网络的体系结构
几个基本概念:
- ISO:国际标准化组织
- OSI/RM:互联网法律上的国际标志
- TCP/IP Suite:因特网事实上的国际标准
- Network Protocols:数据狡猾 遵守的规则、标准或约定
- 网络体系结构:计算机网络各层及其协议的集合
OSI参考模型
层次 | 中文 | 英文 | 作用 |
---|---|---|---|
7 | 应用层 | Application Layer | 能够产生网络流量,能够和用户交互的应用程序 |
6 | 表示层 | Presentation Layer | 加密 / 压缩 |
5 | 会话层 | Session Layer | 服务端和客户端建立的会话 / 查木马 |
4 | 传输层 | Transport Layer | 可靠传输建立会话 / 不可靠传输 / 流量控制 |
3 | 网络层 | Network Layer | IP地址编址 / 选择最佳路径 |
2 | 数据链路层 | Data Link Layer | 数据如何封装 / 添加物理层地址 / MAC |
1 | 物理层 | Physical Layer | 电压 / 接口标准 |
开放系统信息交换
开放系统信息交换涉及的几个概念:
- 实体(entity):交换信息的硬件或软件进程
- 协议(protocol):控制两个对等实体通信的规则
- 服务(service):下层向上层提供服务,上层 需要使用下层提供的服务来实现本层的功能
- 服务访问点(SAP):相邻两层实体间交换信息的地方
五层协议对应的数据单元
- 应用层 传输数据单位PDU
- 传输层 运输层报文
- 网络层 IP数据报(IP分组)
- 数据链路层 数据帧
- 物理层 比特(01010101010101)
物理层
物理层的基本概念
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:
- 机械特性:接口形状,大小,引线数目
- 电气特性:规定电压范围(-5V,+5V)
- 功能特性:规定-5V表示0,+5V表示1
- 过程特性:也称规程特性,规定建立连接时各个相关部件的工作步骤
数据通信的基础知识
相关术语
- 通信的目的是传送消息
- 数据(data):运送消息的实体
- 信号(signal):数据的电气的或电磁的表现
- “模拟信号”:代表消息的参数的取值是连续的
- “数字信号”:代表消息的参数的取值是离散的
- 码元(code):在使用时间域的波形表示数字信号时,则代表不同离散数值的基本波形就成为码元
- 在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为二进制码元。而这个间隔被称为码元长度。1码元可以携带nbit的信息量
信道
信道一般表示向一个方向传送信息的媒体。通常说的通信线路往往包含一条发送信息的信道和一条接受信息的信道
- 单向通信:只能由一个方向的通信而没有反方向的交互。eg. 广播电台
- 双向交替通信:通信的双方都可以发送信息,但不能双方同时发送、接受。eg. 对讲机
- 双向同时通信:通信的双方可以同时发送和接受消息。eg. 电话
基带信号和带通信号
- 基带信号(baseband):来自信源的信号,像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。基带信号就是发出的直接表达了要传输的信号的信号,声波就是基带信号。
- 带通信号(band pass):把基带信号经过载波调制后,把信号的频率范围搬移到较高的频段以便在信道中传输。
由于在近距离范围内基带信号的衰减不大,从而信号内容不会发生变化,在传输距离较近时,计算机网络采用基带传输方式,如从计算机到监视器,打印机等外设的信号就是基带传输的
调制方法
- 调幅(AM):载波的振幅随着基带数字信号而变化
- 调频(FM):载波的频率随着基带数字信号而变化
- 调相(PM):载波的初始相位随着基带数字信号而变化
常用编码
- 单极性不归零码:只使用一个电压值,用高电平表示1,没电压表示0
- 双极性不归零码:用正电平和负电平分别表示二进制数据的1和0,正负幅值相等
- 双极性归零码:正负零三个电平,信号本身携带同步信息
- 曼切斯特编码:信号低-高为0,高-低为1
- 差分曼切斯特编码:bit与bit直接有信号跳变为0,没有信号跳变为1
信道的极限容量
数字通信的优点:虽然信号在信道上传输时会不可避免地产生失真,但在接收端只要我们从失真的波形中能够识别出来原来的信号,那么这种失真对通信质量就没有影响。
码元传输的速率越高,或信号传输的距离越远,或噪声干扰越大,或传输媒体质量越差,在接收端的失真就越严重。
限制码元在信道上的传输速率的因素有两个:
- 信道能够通过的频率范围(奈氏准则)
- 信噪比(香农公式)
奈氏准则
1924年,奈奎斯特(Nyquist)推导出了著名的奈氏准则。他总结了在假定的理想条件下,为了避免码间串扰,码元的传输速率的上限值。
在任何信道中,码元传输的速率是有上限的,否则就会出现码间干扰的问题,使接收双端对码元的判决(即识别)成为不可能。
理想低通信道的最高码元传输速率:2WBaud
- W是理想低通信道的带宽,单位为Hz
- Baud是波特,是码元传输速率的单位
信噪比
香农用信息论的理论推导出了带宽受限且高斯白噪声干扰的信道的极限、无差错的信息传输速率
噪声存在于所有的电子设备和通信信道中。
信噪比就是信号的平均功率和噪声的平均功率之比,常记为,并用分贝作为度量单位。
信道的极限信息传输速率可表达为:
- 为信道的带宽(Hz)
- 为信道内所传信号的平均功率
- 为信道内部的高斯噪声功率
香农公式表明:
- 信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高
- 只要信息传输速率低于信道的极限信息的传输速率,就一定可以找到某种办法来实现无差错的传输
- 若信道带宽W或信噪比没有上限(实际不能实现),则信道的极限信息传输速率也就没有上限
- 实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少
物理层下面的传输媒体
传输媒体也成为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。
两大类传输媒介:导引型传输媒介和非导引型传输媒介。
导向传输媒体
导向传输媒体中,电磁波沿着固体媒体传播
- 双绞线
- 屏蔽双绞线STP(长距离传输)
- 无屏蔽双绞线UTP
- 同轴电缆
- 50Ω同轴电缆:用于数字传输,由于多用于基带传输,也叫基带同轴电缆
- 75Ω同轴电缆:用于模拟传输,即宽带同轴电缆
- 光纤
光纤通信就是利用光导纤维传递光脉冲来进行通信。有光脉冲相当于1,而没有光脉冲相当于0。
非导向传输媒体
当通信距离很远时,敷设电缆既高贵又费时。但利用无线电波在自由空间的传播就可较快地实现多种通信。由于这种通信方式不使用各种导引型传输媒体,因此就将自由空间称为非导引型传输媒体。
非导向传输媒体就是指自由空间,其中的电磁波传输被称为无线传输
短板通信主要是靠电离层的反射,但短波信道的通信质量较差
微波在空间主要是直线传播,传统的微波通信主要有两种方式:
- 地面微波接力通信
- 卫星通信
集线器(hub)
物理层设备—集线器(hub)
工作特点:
- 在网络中只起到信号放大和重发作用,目的是扩大网络的传输范围,不具备信号的定向传送能力
- 最大传输距离:100M
- 集线器是一个大的冲突域
信道复用技术
复用(mutiplexing)是通信技术中的基本概念
频分复用、时分复用和统计时分复用
- 频分复用FDM:频分复用的所有用户在同样的时间占用不同的带宽资源(不同频率)
- 时分复用TDM:时分复用的所有用户在不同的时间占用同样的带宽资源
波分复用
- 波分复用WDM(Wavelength Division Multiplexing):就是光的频分复用
码分复用
- 码分复用CDM:各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰(手机信号)
常用的名词是码分多址CDMA
数字传输系统
脉码调制PCM体制最初是为了在电话局之间的中继线上传送多路的电话,由于历史上的原因,PCM有两个互不兼容的国际标准,即北美的24路PCM(简称为T1)和欧洲的30路PCM(简称为E1).中国采用的是欧洲的E1标准。E1的速率为2.048(Mb/s),而T1的速率是1.544(Mb/s),当需要有更高的数据率时,可采用复用的方法。
带宽接入技术
用户要连接道互联网,必须先连接到某个ISP,以便获取上网所需的IP地址
标准模拟电话信号的频带被限制在 300~3400Hz的范围内,但用户本身实际可通过的信号频率任然超过1Mhz
xDSL技术
把0~4Khz低端频谱留给传统电话使用,而把原来没有利用的高端频谱留给用户上网使用
ADSL技术
非对称数字用户线ADSL技术是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。
当ADSL启动时,用户线两端的ADSL调制解调器就测试可用的频率、各子信道受到的干扰情况,以及在每一个频率上测试信号的传输质量。
ADSL不能保证固定的数据率。
基于ADSL的接入网由以下三大部分组成:数字用户接入复用器DSLAM,用户线和用户家中的一些设施。
光纤同轴混合网(HFC网)
HFC网是目前覆盖面很广的有线电视网CATV的基础上开发的一种居民宽带接入网
HFC网除可传送CATV外,还提供电话,数据和其他宽带交互型业务
现有的CATV网是树形拓补结构的同轴电缆网络,它采用模拟技术的频分复用对电视节目进行单向传输。而HFC网则需要对CATV网进行改造
FTTx技术
多种宽带光纤接入方式,称为FTTx。x可代表不同的光纤接入地点。
限制已有多种不同的FTTx。光纤到户FTTH,光纤到路边FTTC,光纤到小区FTTZ,光纤到大楼FTTB,光纤到楼层FTTF,光纤到办公室FTTO,光纤到桌面FTTD。
数据链路层
导引:
- 数据链路层基本概念及基本问题
- 基本概念
- 3个基本问题
- 两种情况下的数据链路层
- 使用点对点信道的数据链路层
- 使用广播信道的数据链路层
- 以太局域网(以太网)
- 概述
- 拓补
- 信道利用率
- MAC层
- 扩展以太网
- 高速以太网
数据链路层基本概念
数据发送模型
主机的应用程序与主机的应用程序通信过程(应用层之间),从应用层出发:
- 数据封装,分了段(传输层)
- 加上网络地址(网络层)
- 加MAC地址封装成帧(数据链路层)
- 在线路上比特流的传输(物理层)
到达路由器:
- 接受比特流(物理层)
- 接收到比特流后检查是不是给自己的(数据链路层)
- 如果是查看数据帧的网络地址,决定路由器从哪个口发出去(网络层)
路由器:
- 经过路由器抵达网络层目标地址写口的地址,源地址写口的地址(根据网络层选择路径)
- 抵达数据链路层数据重新封装
- 再次变成比特流在物理层上传输
中间的路由器重复相同过程,最后抵达接受数据
数据链路层的信道类型
数据链路层使用的信道主要有以下两种类型:
- 点对点信道:使用一对一的点对点通信方式
- 广播信道:使用一对多的广播通信方式
链路与数据链路
- 链路(link):是一条点对点的物理线路段,中间没有任何其他点
- 一条链路只是一条通路的一个组成部分
- 数据链路(data link):需要通信协议来控制这些数据,把实现这些协议的硬件和软件加到链路上,即为数据链路
- 现最常用的方法是使用适配器(网卡)来实现协议和硬件和软件
- 一般适配器都包括了数据链路层和物理层这2层功能
帧
在数据链路层上传输的内容叫做帧
数据链路层的3个基本问题
封装成帧
- 封装成帧(framing):是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,确定帧的界限
- 根据首部和尾部的标记,从比特流中识别帧的开始和结束
- 最大传输单元MTU(Maximum Transfer Unit):帧数据部分长度上限。
计算机在接受一个帧时,收到帧头部和帧尾部时才认为是完整的,若收到不完整的帧会丢弃
透明传输
透明:某一个实际存在的事物看起来却好像不存在一样。
发送端的数据链路层在数据中出现控制字符"SOH"或"EOT"的前面插入一个转义字符"ESC"(16进制编码为1B,二进制编码为00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充或字符填充。
也就是在数据中若出现了帧头部和帧尾部的话,加转义字符
差错控制
- 比特差错:比特在传输的过程中可能会产生差错,1可能会变成0,而0可能会变成1。
- 误码率BER:在一段时间内,传输错误的比特所占所传输比特总数的比率
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC的检错技术。
点对点信道的数据链路层
点对点协议PPP
PPP协议是用户计算和和ISP进行通信时所使用的数据链路层协议
PPP协议应满足的要求:简单、封装成帧、透明性、多种网络层协议、多种类型链路、差错检测、检测连接状态、最大传送单元、网络层地址协商、数据压缩协商
PPP协议有三个组成部分
- 数据链路层协议可以用于异步串行或同步串行介质
- 使用LCP(链路控制协议)建立并维护数据链路连接
- 网络控制协议(NCP)允许在点对点连接上使用多种网络层协议
PPP协议的帧格式
- 标志字段:第一个字段和尾部的第二个字段为标志字段F(Flag)
- 地址字段:地址字段A只置为
0xFF
(预留) - 控制字段:控制字段C规定为
0x03
(预留) - 协议字段
0x0021
:IP数据报0xC021
:PPP数据链路控制协议LCP的数据0x8021
:网络层的控制数据0xC023
:信息字段是安全性认证PAP0xC025
:信息字段是LQR0xC223
:信息字段时安全性认证CHAP
- FCS字段:CRC的帧校验序列FCS
PPP协议透明传输
字节填充
问题:信息字段中出现了标志字段的值,可能会被误认为是"标志",怎么办?
- 将信息字段中出现的每个
0x7E
字节转变为2字节序列(0x7D
,0x5E
) - 若信息字段中出现一个
0x7D
字节,则将其转变为2字节序列(0x7D
,0x5D
) - 若信息字段中出现ASCII码的控制字符,则在该字符前加入
0x7D
,同时将该字符的编码加以改变
零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特位连续发送),而不是异步发送(逐字符发送),采用零比特填充方法来实现透明传输
- 发送段:每当发现5个连续1,则立刻填入一个0
- 接收端:每当发现5个连续1,就把这5个连续1后的一个0删除。
PPP协议的工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接
- PC 机向路由器发送一系列的 LCP 分组(例如拨号的账户和密码。封装成多个 PPP 帧)
- 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接
广播信道的数据链路层
局域网的数据链路层
局域网的主要特点:网络为一个单位所拥有,且地理范围和站点数目均有限
适配器的作用:
计算机与外界网络的连接是通过通信适配器进行的。
适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。
CSMA/CD协议
点到点通讯使用的协议是PPP协议,而以太网使用的协议是CSMA/CD(多点接入载波监听/冲突检测)协议
在使用CSMA/CD协议时,一个站不可能同时进行发送和接收,进行的是半双工通信。
CSMA/CD(多点接入载波监听/冲突检测)协议要点:多点接入说明是总线型网络,计算机以多点接入的方式连接在一根总线上,协议的实质是载波监听和碰撞检测。
- 多点接入:表示许多计算机以多点接入的方式连接在一根总线上
- 载波监听:指每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发送碰撞。
碰撞检测
碰撞检测就是计算机边发送数据边检测信道上的信号电压大小
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)
- 当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有2个站在同时发送数据,产生了碰撞
检测道碰撞后
- 总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息
- 每一个正在发送数据的站,一旦发送总线上出现了碰撞,就要立刻停止发送,免得继续浪费网络资源,然后等待一段随机时间后再继续发送
重要特性
- 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率
争用期
最先发送数据帧的站,在发送数据帧后至多经过时间(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞
- 以太网的端到端往返时延称为争用期,或碰撞窗口,一般取51.2us为争用期的长度
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
- 对于10Mb/s以太网,争用期内可发送512bit(64字节)
- 若前64字节未发生冲突,则后去数据也不会发送冲突
最短有效帧长:
- 如果发送冲突,则一定是在前64字节内
- 由于会立刻停止,发送的数据一定小于64字节
- 于是以太网规定最短有效帧长为64字节,长度小于64字节的帧都是由于冲突而异常终止的无效帧
以太网每发完一帧,一定要把已经发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个帧重传一次
二进制指数类型退避算法
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据
- 确定基本退避时间,一般是取为争用期
- 定义重传次数 ,,即
- 从整数集合 中随机地取出一个数,记为 。重传所需的时延就是 倍的基本退避时间
- 当重传达16次仍不能成功时即丢弃该帧,并向高层报告
以太局域网
概述
以太网是一种广播类型的网络,而PPP网是点对点的,当然还有其他类型的网络。
以太网是基于数据包交换的,而传统电话网ISDN/PSTN是基于电路交换的。
以太网是一种局域网技术,而已经被淘汰的拨号上网(专业说法:ADSL)、十年前左右的宽度上网/猫(专业说法:PPPoE)、现在的光纤上网/光猫(专业说法:EPON,还有一个是GPON)是广域网技术。
由于以太网的好处多、多、多,上面提到的PPPoE、EPON中的E,其实就是以太网,Ethernet。可以发现,原本是为局域网设计的技术,与其他技术结合,也可以为广域网服务。
还是由于以太网的强大,无线wifi技术也借鉴了以太网的思想,比如wifi中的mac地址,就是来自于以太网;还有wifi跟局域网一样,也是广播类型的网络。所以,无线中也有以太网的身影
以太网的两个标准
DIX Ethernet V2
是世界上第一个局域网产品(以太网)的规约IEEE的802.3标准
以太网与数据链路层的两个子层
为了使数据链路层能更好的适应多种局域网标准,802委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制LLC(Logical Link Control)子层
- 媒体接入控制MAC(Medium Access Control)子层
与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种协议的局域网对LLC子层来说都是透明的
由于TCP/IP体系经常使用的局域网是DIX Ethernet V2而不是802.3标准中的几种局域网,因此现在802委员会制定的逻辑链路控制子层LLC(即802.3标准)的作用已经不大了,现在很多厂商的适配器上就仅装有MAC协议而没有LLC协议
以太网提供的服务
以太网提供的服务是不可靠的交付,即尽最大努力的交付
当接收站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定,如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送
星型拓补
传统以太网最初使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。不用电缆而使用无屏蔽双绞线。每个站需要用两对双绞线,分别用于发送和接受
以太网的信道利用率
以太网的信道被占用的2种情况:
- 争用期长度为 ,即端到端传播时延的2倍,检测到碰撞后不发送干扰信号
- 帧长为 ,数据发送速率为 ,发送时间为
一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功且信道转为空闲(即再经过时间 使得信道上无信号再传播)时为止,是发送一帧所需的平均时间
以太网的信道利用率:参数a
- 要提高以太网的信道利用率,就必须减少 与 之比:
- 表示发送碰撞就立即可以检测出来,并立刻停止发送,因而信道利用率高
- 越大表示争用期所占比增大,每一次碰撞就会浪费更多信道资源,因而信道利用率低
以太网的信道利用率:最大值
对以太网参数的要求
- 当数据率一定时,以太网的连线的长度收到限制,否则 的数值会太大
- 以太网的帧长不能太短,否则 的值会太小,导致 值变大
信道利用率的最大值
- 理想情况下,各站发送的数据不会发生碰撞,即总线一旦有空闲就有某一个站立即发送数据
- 发生一帧占用线路的时间时 ,而帧本身的发送时间时
理想情况下的极限信道利用率 为:
MAC地址
在局域网中,硬件地址又称为物理地址,或MAC地址。802标准所说的地址,严格的应当是每个站的名字和标识符
- IEEE的注册管理机构RA负责向厂家分配地址字段的前三个字节(即高位24位)
- 地址字段中的后三个字节由厂家自行指派,称为扩展标识符,必须保证生产出来的适配器没有重复地址
- 一个地址块可以生成 个不同的地址,这种48位地址称为MAC-48,通用名称位EUI-48
- MAC地址实际就是适配器上的EUI-48
适配器检查MAC地址
适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址
- 如果是发往本站的帧则收下,然后再进行其他的处理
- 不是就将此帧丢弃,不再进行其他的处理
这其中包括以下三种帧:
- 单播(unicast)帧(一对一)
- 广播(broadcast)帧(一对ALL)
- 多播(multicast)帧(一对多)
MAC帧格式
常用的以太网MAC帧格式有两种标准:
DIX Ethernet V2
标准- IEEE的802.3标准
最常用的MAC帧是以太网V2的格式
结合抓包工具可以看到帧格式:
- 目标地址 Destination:Vmware_cc:13:1e
- 源地址 Source:Vmware_cc14:4f
- 类型 Type:IP(0x0800)
无效MAC帧
- 帧的长度不是整数个字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度不在64-1500字节之间
- 有效的MAC帧长度为64-1518字节之间
对于检测出的无效MAC帧就直接丢弃,以太网不负责重传丢弃的帧
帧间最小间隔
帧间最小间隔为9.6us,相当于96bit的发送时间
一个站再检测到总线开始空闲后,还需要等待9.6us才能再次发送数据,这样是为了等待刚刚收到数据帧的站的接受缓存即使清理,做好接受下一帧的准备
扩展以太网
在物理层考虑扩展
-
主机使用光纤和一对光纤调节器连接到集线器
-
某大学有三个系,各自有一个局域网:
例如,1系中A主机与B主机通信时,C和D不可以通信
这时,如果3系中A和B在通信,这个信号要给所有的口,这时其他系中计算机之间就不能通信了,会检测冲突,因此通信的效率与原来相比降低了。
- 用集线器扩展局域网优点
- 使原来属于不同碰撞域的局域网上的计算器能够进行跨碰撞域的通信
- 扩大了局域网覆盖的地理范围
- 用集线器扩展局域网缺点
- 碰撞域增大了,但总的吞吐量并未提高
- 如果不同的碰撞域使用不同的数据率,那么就不能同集线器将它们互连起来
在数据链路层考虑扩展
网桥
在数据链路层扩展局域网是使用网桥
网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发
网桥具有过滤帧的功能。当一个网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口
一开始网桥也不知道哪个口对应哪个MAC地址,但是只要通过一次信就会通过MAC地址表纪录,如果都在同一个网段通信就不会再与另一个网段的设备通信
好处
- 过滤通信量
- 扩大了物理范围
- 提高了可靠性
- 可互连不同物理层,不同MAC子层和不同速率的局域网
坏处
- 储存转发增加了时延
- 在MAC子层并没有流量控制功能
- 具有不同MAC子层的网段桥接在一起时,时延更大
- 网桥只适合用户数不多和通信量不太大的局域网,否则可能堵塞
虚拟局域网(VLAN)
LAN和VLAN
交换机的使用使得VLAN的创建成为可能
虚拟局域网(VLAN):实由一些局域网网段构成的与物理位置无关的逻辑组
- 这些网段具有某些共同的需求
- 每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的工作站时属于哪一个VLAN
很多公司都是以部门划分网段,保证了分段,灵活性,安全性的特点
一个VLAN=一个广播域=逻辑网段
跨交换机
交换机端口有2种类型:
- 访问端口:只能属于某一个VLAN,只能承载某一个VLAN的流量,连接访问端口的链路称为访问链路
- 中继端口:能够同时承载多个VLAN的流量,连接中序端口的链路称为干道链路。
总结:交换机组建的网络如果需要多个VLAN通过的链路就需要配置位干道链路,如果链路上只需要单一VLAN的数据通过就可以配置为访问链路
高速以太网
速率到达或超过100Mb/s的以太网称为高速以太网
在双绞线上传送100Mb/s基带信号的星型拓扑以太网,仍使用IEEE 802.3 的CSMA/CD协议。100BASE-T以太网又称为快速以太网
100Base-T
可在全双工方式下工作而无冲突发生。因此,不使用CSMA/CD协议。MAC帧格式仍然时802.3标准规定的
保持最短帧长不变,但将一个网段的最大电缆长度减小到100m,帧间时间从9.6us变为0.96us
100Base-T以太网的物理层:
- 100BASE-TX:使用2对UTP 5类线或屏蔽双绞线STP
- 100BASE-FX:使用2对光纤
- 100BASE-T4:使用4对UTP3类线或5类线
这里:
- 10/100/1000:用单位MHz表示网线设计的频率。即100MHz。MHz的值越大,网线所支持的速度就越快
- BASE:指的就是基带。表示没有使用频分复用或者其它频率转换技术,每一个信号在一个单一频率上完全控制线缆
- 数字T/F/C等:一般数组表示传输长度
- T代表承载信号的物理介质是双绞线缆
- UTP(Unshielded Twisted Pair,非屏蔽双绞线)
- STP(Shielded Twicted Pair,屏蔽双绞线)
- 在这里每一对传送信号的双绞线互相缠绕以(FEXT和NEXT之间)减少电磁干扰和串扰
- F表示光纤
- T代表承载信号的物理介质是双绞线缆
- 最后的字母或数字(4/X等):在同一种传送速率下有多种不同的标准,它们之间以一个字母或数字跟随T/F/C之后的方式来区隔(例如TX)。它显示了网线的结构并指出包含的绞线对的数量。某些高速标准使用同轴电缆,则分配代号为CX。
吉比特以太网
吉比特以太网又称为千兆以太网
吉比特以太网可用作现有网络的主干网,也可在高带宽(即高速率)的应用场合中用来连接工作站和服务器
吉比特以太网的标准IEEE802.3z有以下几个特点:
- 允许在1Gb/s下全双工和半双工两种工作方式
- 使用802.3协议规格的帧格式
- 在半双工方式下使用CSMA/CD协议(全双工不使用)
- 与10BASE-T和100BASE-T技术向后兼容
- 当吉比特网以太网以全双工方式工作时(即通信双方可同时进程发送和接受数据),不使用载波延伸和分组突发
吉比特以太网的物理层:
- 1000BASE-X:基于光纤通道的物理层
- 1000BASE-SX:短波长
- 1000BASE-LX:长波长
- 1000BASE-CX:铜线
- 1000BASE-T:使用4对5类线UTP
10吉比特以太网
10吉比特以太网又称为万兆以太网
10GE并非将吉比特以太网的速率简单地提高到10倍
10吉比特以太网的特点:
- 与10Mb/s,100Mb/s,1000Mb/s和1GB/s以太网的帧格式完全相同
- 保留了802.3标准规定的以太网最小和最大帧长,便于升级
- 不在使用铜线而只使用光纤作为传输媒体
- 只使用全双工方式,没有争用问题,不使用CSMA/CD
由于10GE的出现,以太网的工作范围已经从局域网扩大到城域网和广域网,从而实现了端到端的以太网传输。这种工作方式的好处是:
- 以太网是一种经过实践证明的成熟技术,无论是因特网服务提供者ISP还是端用户都很愿意使用以太网。
- 以太网的互操作性也很好,不同厂商生产的以太网都能可靠地进行互操作。
- 在广域网中使用以太网时,其价格大约只有SONET的五分之一和ATM的十分之一,以太网还能够适应多种的传输媒体,如铜缆、双绞线和各种光缆,这就使具有不同传输媒体的用户在通信时不需重新布线。
- 端到端的以太网连接使帧的格式全都是以太网的格式,而不需要再进行帧格式的转换,这就简化了操作和管理。
使用高速以太网进行宽带接入
高速以太网接入的一个重要特点:是它可以提供双向的宽带通信,并且可以根据用户对带宽的需求灵活地进行带宽的升级
高速以太网接入可以采用多种方式,其中一种方式——光纤到大楼FTTB:
- 每个大楼的楼口都安装一个100Mb/s的以太网交换机(对通信量不大的楼房也可以使用10Mb/s的以太网交换机)
- 然后根据情况在每一楼层安装一个10Mb/s或100Mb/s的以太网交换机
- 各大楼的以太网交换机通过光纤汇接到光结点汇接点
- 若干个光结点汇接点再通过吉比特以太网汇接到一个高速汇接点(称为GigaPoP)
- 然后通过城域网连接到因特网的主干网
网络层
指引:
- 网络层提供的两种服务
- 虚电路服务
- 数据报服务
- 网际协议 IP
- 虚拟互联网
- IP地址
- 划分子网和构造超网
- IP地址与硬件地址
- IP数据报格式
- IP转发分组的流程
- 网际控制报文协议 ICMP
- 因特网的路由选择协议
- IP 多播
- 虚拟专业网 VPN 和网络地址转换 NAT
网络层提供的两种服务
网络层关注的是如何将分组从源端沿着网络路径送达目的地
网络层应该向运输层提供的服务:
- 虚电报服务
- 数据报服务
虚电路服务
表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接
数据报服务
网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务
网络在发生分组时不需要线建立连接,每一个分组(IP数据报)独立发送,与前后分组无关
网络层不提供服务质量的承诺,即所传送的分组可能出错,丢失,重读和失序。当然也不保证分组传送的时限
尽最大努力交付的好处:
- 由于传输网络不提供端到端的可靠传输服务,这可以让路由器制作变得简单,且价格低廉
- 如果主机(即端系统)中的进程之间的通信需要时可靠的,那么由网络的主机中的运输层负责(包括差错处理,流量控制等)
- 采用这种设计可以让网络造价大大降低,运行方式灵活,适应多种应用
两种服务对比
对比的方面 | 虚电路 | 数据报 |
---|---|---|
连接的建立 | 必须有 | 不需要 |
目的站地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有目的站的全地址 |
路由选择 | 在虚电路连接建立时进行,所有分组均按同一路由 | 每个分组独立选择路由 |
当路由器出故障 | 所有通过了出故障的路由器的虚电路均不能工作 | 出故障的路由器可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达目的站 | 到达目的站时可能不按发送顺序 |
端到端的差错处理 | 由通信子网负责,也可由用户主机负责 | 由主机负责 |
端到端的流量控制 | 由通信子网负责,也可由用户主机负责 | 由主机负责 |
网际协议 IP
虚拟互联网
也就是逻辑互连网络,互连起来的各种物理网络的异构性本来时客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像使一个统一的网络
使用IP协议的虚拟互连网络可简称为IP网
中间设备
中间设备又称为中间系统或中继(relay)系统
- 物理层中继系统:转发器(repeater)
- 数据链路层中继系统:网桥或桥接器(bridge)
- 网络层中继系统:路由器(router)
- 网络层以上的中继系统:网关(gateway)
现在网关变成路由器的一个接口,网关就是路由器接口的IP地址
路由器
网络互连的设备:路由器
当中继系统是转发器或网桥时,一般不是网络互连,这只是一个网络扩大了,还是一个网络
- 网关由于比较复杂,使用较少
- 互联网都是指用路由器进行互连的网络
- 由于历史的原因,许多有关TCP/IP的文献将网络层使用的路由器称为网关
网络层的4个协议
与IP协议配套使用的还有三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
分类的IP地址
网络类别 | 最大网络数 | 开始网络号 | 最后网络号 | 主机数 |
---|---|---|---|---|
A | 1 |
126 |
||
B | 128.1 |
191.255 |
||
C | 192.0.1 |
223.255.255 |
||
D(组播) | ||||
E(研究) |
1 | Class A: 1.0.0.0 - 127.255.255.255 |
IP地址现在由因特网名字与号码指派公司ICANN进行分布,IP地址的编址方法:
- 分类的IP地址:最基本的编址方法
- 子网的划分:最基本编址方法的改进
- 构成超网:较新的无分类编址
常见二进制
10000000
-11000000
-11100000
-11110000
-11111000
-11111100
-11111110
-11111111
-
特殊的IP地址
127.0.0.1
:本地回流地址169.254.0.0
:windows预设地址
保留的私网地址
地址类别 | 地址范围 | 网段个数 |
---|---|---|
A类 | 10.0.0.0 - 10.255.255.255 | 1 |
B类 | 172.16.0.0 - 172.31.255.255 | 16 |
C类 | 192.168.0.0 - 192.168.255.255 | 256 |
路由器对目的地址是私有IP地址的数据报一律不进行转发
IP地址丨MAC地址
- IP:决定最终的目的地
- MAC:决定下一个设备是谁
地址解析协议ARP
由于在实际网络的链路上传送数据帧时,最终必须用到MAC地址
ARP协议:完成主机或路由器IP地址到MAC地址的映射
ARP协议使用过程:检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)
ARP协议4种典型情况:
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址
- 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址
划分子网和构建超网
子网掩码
指明一个IP地址的哪些位标识的使主机所在的子网以及那些位标识的是主机的位掩码。子网掩码不能单独存在,他必须结合IP地址一起使用,其作用位将某个IP地址划分位网络地址和主机地址两个部分
子网掩码是由一系列的0和一系列的1构成的2进制数字,1的格式取决于网络号的位数,剩下的主机号对应的就是0的位数
子网掩码练习题:
子网划分
分类的IP地址是有缺点的:IP地址空间的利用率有时很低;其次两级IP地址不够灵活
为解决上述问题,从1985年起在IP地址中又增加了一个"子网号字段",使两级IP地址变为三级IP地址,这种做法叫做划分子网(subnetting),或子网寻址或子网路由选择
在划分子网的情况下,路由器转发分组的算法如下:
无分类编址CIDR(构造超网)
最小地址和最大地址不能给网络上的主机指派,全0指的是本网络,全1指的是广播地址
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,也称为构成超网
使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体
IP数据报
IP数据报由首部和数据组成
- 首部:固定20字节
- 数据:长度可变
- 版本:IPv6,IPv4
- 首部长度:首部的长度有多长
- 区分服务:数据报的优先级(实际上没有被使用过,路由器QoS)
- 总长度:指首部和数据部分的长度,因此数据报最大65535字节
- 标识:计数器,产生数据报的标识,不是序号,每产生一个数据报+1
- 标志:占3位,目前只有前2位有意义
- MF(More Fragment)
- 1:还有分片
- 0:最后一个分片
- DF(Don’t Fragment)
- 1:不允许分片
- 0:允许分片
- MF(More Fragment)
- 片偏移:较长的分组在分片后,某片在原分组中的相对位置,以8个字节位偏移单位
- 生存时间(TTL):每过一个路由器减取1,为0的时候丢弃数据报
- 协议:指出数据报携带的数据使用哪种协议,以便上层处理
- ICMP
- IGMP
- TCP
- UDP
- OSPF
- 首部检验和:只验证数据报的首部,采用的简单的方法
网际控制报文协议ICMP协议
为了提高IP数据交付成功的机会,在网络层使用了网际控制报文协议ICPM
- ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
- ICMP不是高层协议,而是IP层的协议
- ICMP报文作为IP层数据报,假设数据报的首部,组成IP数据报发出发送出站
ICMP报文有2种类型
- ICMP差错报告报文(5种)
- 终点不可达(无法交付)
- 源点抑制(拥塞丢数据)
- 时间超过(TTL=0)
- 参数问题(首部字段有问题)
- 改变路由(重定向)(值得更好的路由)
- ICMP询问报文
- 回送请求和回答报文(测试目的站是否可达以及了解其相关状态)
- 时间戳请求和回答报文(用来进行时钟同步和测量时间)
差错报文
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
ICMP的应用
- PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
- Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
互联网的路由选择协议
内部网关协议RIP协议
RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)
- RIP-1
- RIP-2(1的扩展)
最早的动态路由协议,较为简单的内部网关协议
- 使用跳数(Hop Count)作为度量来衡量到达目的网络的距离
- 每经过一个三层设备跳数增加1
- 规定度量值取0~15之间的整数
- 大于或等于16的跳数被定义为无穷大,主机不可达(限制规模)
- 通过UDP报文进行路由信息的交换,使用的端口号为520。(不可靠)
- 优点:实现简单,开销较小
- 缺点
- 设备故障,长时间才能传达所有路由
- 使用的完整路由表,规模大增大开销
RIP2协议报文格式
内部网关协议OSPF协议
OSPF内部网关协议是对链路状态路由协议的一种实现,是大中型网络上使用最为广泛的IGP协议
- 向本自治系统中所有路由器发送信息(洪泛法)
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,这只是路由器所知道的部分信息
- 只有当链路发送变化时,路由器采用泛洪法发送此信息
- 区域是以接口(Interface)为单位来划分的,所以一台多接口路由器可能属于多个区域。
一个OSPF网络被分割成多个区域。区域将网络中的路由器在逻辑上分组并以区域为单位向网络的其余部分发送汇总路由信息。
区域编号由一个长度为32 bits的字段所定义,区域编号通常使用 32 bits的点分十进制表示。
- 点分十进制(如
Area 1.1.1.1
,写法规则同IPv4地址) - 十进制数字格式(如
Area 1
,注意Area 1
不等于Area 1.1.1.1
)
优点:
- 某一区域内的路由器只用维护该区域的链路状态数据库,不用维护整个OSPF网络的链路状态数据库。
- 将某一区域网络拓扑变化的影响限制在该区域内,不会影响到整个OSPF网络,从而减小OSPF计算的频率。
- 将链路状态通告(LSA)的洪泛限制在本区域内,从而降低OSPF协议产生的数据量。
- 划分区域可以对网络进行层次化结构设计。
- 划分区域有利于资源合理调配,核心区域部署性能较好的设备资源,边缘区域部署性能较差的设备资源即可。
- 不使用UDP而是直接用IP数据报发送
- 可以进行多路径间的负载均衡
- 所有在OSPF路由器之间交换的分组都具有鉴别功能
- 支持可变长度的子网划分和无分类编址CIDR
- 每个链路状态都带上一个32位的序号,序号越大状态就越新
OSPF区域划分
- 骨干区域:
Area 0
是整个OSPF域的核心区域。所有其他非骨干区域必须和骨干区域直接相连。 - 末梢区域:不允许AS外部路由通告(AS External LSA,即类型5 LSA)在其内部进行洪泛扩散的区域
- 不完全末梢区域
- 完全末梢区域
- 完全非纯末梢区域
OSPF路由器类型
- 内部路由器(Internal Router):所有启用了OSPF的接口都在同一区域
- 骨干路由器(Backbone Router):至少有一个启用了OSPF的接口是和骨干区域(
Area 0
)相连的路由器 - 区域边界路由器(Area Border Router,ABR):指连接一个或者多个区域的路由器。
- 自治系统边界路由器(Autonomous System Boundary Router,ASBR):把从其他路由协议学习到的路由以路由重分发的方式注入到OSPF进程中,从而使得整个OSPF域内的路由器都可以学习到这些路由。
注释:
- 一台路由器可以同时属于多种类型
- 每一台OSPF路由器都有一个路由器标识符,一般写作路由器ID(32 bits)
OSPF网络类型
- 点到点网络(point-to-point)
- 广播网络(broadcast)
- 非广播多路访问网络(non-broadcast multi-access,NBMA)
- 点到多点网络(Point-to-MultiPoint)
外部网关协议BGP协议
BGP是不同自治系统的路由之间交换路由信息的协议,较新版本是BGP-4
其功能只能力求寻找一条能够到达的网络且比较好的路由,但不是最佳路由
每一个自治系统的管理员至少选一个路由器作为自治系统的发言人
- BGP协议交换路由信息数量不多
- BGP发言人数目不多,路由选择相对简单
- BGP协议支持CIDR
- BGP建立时,减缓整个路由表之后只交换变化部分
三种路由协议比较
RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息
OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),二十直接采用IP
BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP
协议 | RIP | OSPF | BGP |
---|---|---|---|
类型 | 内部 | 内部 | 外部 |
路由算法 | 距离-向量 | 链路状态 | 路径-向量 |
传递协议 | UDP | IP | TCP |
路由选择 | 跳数最少 | 代价最低 | 较好,非最佳 |
交换节点 | 和本节点相邻的路由器 | 网络中的所有路由器 | 和本节点相邻的路由器 |
交换内容 | 当前本路由器知道的全部信息,即自己的路由表 | 与本路由器相邻的所有路由器的链路状态 | 首次:整个路由器 / 非首次时:有变化的部分 |
IP组播
IP数据报的三种传输方式:单播,广播,组播(多播)
组播(多播)是指把信息同时传递给一组目的地址(多个地址)。
- 它使用的策略是最高效的,因为消息在每条网络链路上只需传递一次,且只有在链路分叉的时候,消息才会被复制。
- 组播潜在问题:就是组播的接收者(数量)未知(解决:对称加密)
- 可用于网络会议,直播等,缓解上传宽带
路由形式 | 单播 | 任播 | 多播 | 广播 | 地域性广播 |
---|---|---|---|---|---|
- 多播地址仅能用于目的地址,不能用于源地址
- IP多播可以分为两种:一种是只在本局域网上进行硬件多播,另一种则是在因特网的范围进行多播
- IP多播需要两种协议:网际组管理协议(IGMP)和多播路由选择协议
国际组管理协议IGMP
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组
组播路由选择协议
组播路由选择协议目的是:找出以源主机为根节点的组播转发树
VPN
VPN的主要用途是为数据创建安全隧道,以便在传递到Internet之前传输到其服务器。
- 匿名
- 资金安全(加密)
- 访问地理位置被阻止的服务
VPN有许多不同的协议,下图是PPTP的协议包
常见的VPN协议
- PPTP
- 不描述加密或认证功能,而是依靠PPP协议实现安全功能。
- 把数据封装成PPP数据桢通过隧道传送
- 默认端口号:1723 (TCP)
- SSTP
- 使用443端口,这使得它看起来像一般的HTTPS流量并且难以被防火墙阻止
- SSTP被认为是一个非常安全的协议
- 不能提供非常快的速度
- L2TP/IPSec
- L2TP代表第二层隧道协议,它是PPTP的演变
- IPSec:互联网协议安全
- L2TP在固定的UDP端口500/4500上运行,容易地被防火墙阻止
- IKEv2/IPSec
- IKEv1标准的演变
- 结合了2048位Diffie-Hellman组、强大的密钥交换、AES-256位加密和SHA256散列进行完整性检查
- 不旨在隐藏VPN活动,因此它可能容易被防火墙过滤
- Cisco IPSec
- IKEv1/IPSec的修改
- 安全且快速的协议,适用于iOS设备和Linux。
- 使用强大的密钥交换算法(高达2048位)并且在加密密钥建立后还具有非常强大的AES-256位加密
- 不是为了屏蔽VPN连接而设计的,所以它可能容易受到防火墙的过滤
- IPSec在两种模式下运行
- 传输模式:加密数据包的内容
- 隧道模式:加密整个数据包
- OpenConnect
- 开源VPN协议,可以在UDP和TCP上工作
- 作为思科专有的AnyConnect SSL VPN客户端的开源替代品而编写的
- 利用TLS进行身份验证和配置路由,然后使用DTLS有效地加密和传输隧道VPN流量
- 可以回退到基于TLS的传输,防火墙阻止基于UDP的流量
- AES-128和AES-256将实施于数据层加密
- OpenVPN
- 可通过UDP提供高速,或通过TCP提供更可靠和稳定的服务
- 不旨在隐藏VPN活动,因此它可能容易被防火墙过滤
- 开源协议,并常有更新和改进
- 可以使用各种加密算法,如AES、BlowFish、Camelia等。该协议非常安全
- Wireguard
- 非常简单、快速且现代化的VPN协议
- 旨在比IPSec更快、更简单、更精简、更有用,同时避免处理过多的琐碎
- 比OpenVPN更高效。WireGuard设计用于通用VPN,适用于许多不同的环境
- 使用最先进的密码术,如噪声协议框架、 Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF以及安全可信任的构造
- WireGuard是冗长且充分学术研究的结晶,产生技术白皮书
VPN在OSI中的层次 | VPN实现技术 |
---|---|
应用层 | SSL VPN |
会话层 | Socks5 VPN |
网络层 | IPSec VPN |
数据链路层 | PPTP及L2TP |
NAT
NAT英文全称是Network Address Translation
(网络地址转换),简单的来说,主机想要与互联网上的其他主机进行通信,就必须要有公网地址,但是局域网下主机都只有内部地址。这个时候,就需要通过NAT,将内部地址替换成公用地址。
- NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的
- 内部网计算机用户通常不会意识到NAT的存在(透明)
NAT 功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。这就是为什么NAT的地址和路由器的地址一般是一样的原因
NAT应用
- 数据伪装:可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。
- 端口转发:在网关上进行端口转发,将特定服务的数据包转发给内网主机。
- 负载平衡:目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。
- 失效终结:目的地址转换NAT可以用来提供高可靠性的服务。
- 透明代理:将某些链接指向存在另外一台服务器的空间
地址转换
NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
NAT类型
- 动态地址(Pooled)
- 网络地址端口转换(NAPT)
- SNAT
- DNAT
静态NAT
通过手动设置,使 Internet 客户进行的通信能够映射到某个特定的私有网络地址和端口。
动态NAT
动态地址NAT只是转换IP地址
-
每一个内部的IP地址分配一个临时的外部IP地址
-
应用于拨号,对于频繁的远程联接也可以采用动态NAT。
-
动态NAT方式适合于当机构申请到的全局IP地址较少,而内部网络主机较多的情况。
-
内网主机IP与全局IP地址是多对一的关系。
- 当数据包进出内网时,具有NAT功能的设备对IP数据包的处理与静态NAT的一样,只是NAT table表中的记录是动态的,
- 若内网主机在一定时间内没有和外部网络通信,有关它的IP地址映射关系将会被删除,并且会把该全局IP地址分配给新的IP数据包使用,形成新的NAT table映射记录。
网络地址端口转换NAPT
NAPT(Network Address Port Translation)
- 把内部地址映射到外部网络的一个IP地址的不同端口上。
- 它可以将中小型的网络隐藏在一个合法的IP地址后面。
- APT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。
NAPT是使用最普遍的一种转换方式,它又包含两种转换方式:SNAT和DNAT。
- 源NAT(Source NAT,SNAT):修改数据包的源地址。源NAT改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。
- 目的NAT(Destination NAT,DNAT):修改数据包的目的地址。Destination NAT刚好与SNAT相反,它是改变第一个数据包的目的地地址,如平衡负载、端口转发和透明代理
连接跟踪
sequenceDiagram alt Dst Client A->>NAT GW: 202.20.65.4 else Src Client A->>NAT GW: 192.168.1.2 end Note over Client A, NAT GW: SNAT并且记录
Track Table:
192.168.1.2 -> 202.20.65.4 alt Dst NAT GW->>Server: 202.20.65.4 else Src NAT GW->>Server: 202.20.65.5 end alt Dst Server->>NAT GW: 202.20.65.5 else Src Server->>NAT GW: 202.20.65.4 end Note over Server, NAT GW: 根据记录DNAT alt Dst NAT GW->>Client A: 192.168.1.2 else Src NAT GW->>Client A: 202.20.65.4 end
在NAT Gateway收到客户机发来的请求包后,做源地址转换,并且将该连接记录保存下来,当NAT Gateway收到服务器来的响应包后,查找Track Table
,确定转发目标,做目的地址转换,转发给客户机。
端口转换
但是只通过连接跟踪的话,如果同时有Client A
和Client B
两个客户端同时访问服务器A,那么网关就无法分别数据包具体是发往谁的了
sequenceDiagram participant Client A participant Client B participant NAT GW participant Server alt Dst Client A->>NAT GW: 202.20.65.4 else Src Client A->>NAT GW: 192.168.1.2 end alt Dst Client B->>NAT GW: 202.20.65.4 else Src Client B->>NAT GW: 192.168.1.3 end Note over Client A, NAT GW: Track Table:
192.168.1.2 -> 202.20.65.4
192.168.1.3 -> 202.20.65.4 alt Dst NAT GW->>Server: 202.20.65.4 else Src NAT GW->>Server: 202.20.65.5 end alt Dst Server->>NAT GW: 202.20.65.5 else Src Server->>NAT GW: 202.20.65.4 end Note left of NAT GW: 无法分辨 NAT GW-->>Client A: - NAT GW-->>Client B: -
这个时候网关会对不同端口进行转换。如果两客户机访问同一服务器的源端口不同,那么在Track Table
里加入端口信息即可区分,如果源端口正好相同,那么在实行SNAT和DNAT的同时对源端口也要做相应的转换,如下图所示。
sequenceDiagram participant Client A participant Client B participant NAT GW participant Server alt Dst Client A->>NAT GW: 202.20.65.4/80 else Src rect rgb(236, 236, 255) Client A->>NAT GW: 192.168.1.2/4096 end end alt Dst NAT GW->>Server: 202.20.65.4/80 else Src rect rgb(236, 236, 255) NAT GW->>Server: 202.20.65.5/4096 end end alt Dst Client B->>NAT GW: 202.20.65.4/80 else Src rect rgb(154, 245, 159) Client B->>NAT GW: 192.168.1.3/4096 end end alt Dst NAT GW->>Server: 202.20.65.4/80 else Src rect rgb(154, 245, 159) NAT GW->>Server: 202.20.65.5/4097 end end Note over Client A, NAT GW: Track Table:
192.168.1.2/4096 -> 202.20.65.4
192.168.1.3/4097 -> 202.20.65.4 alt Dst rect rgb(236, 236, 255) Server->>NAT GW: 202.20.65.5/4096 end else Src Server->>NAT GW: 202.20.65.4/80 end alt Dst rect rgb(236, 236, 255) NAT GW->>Client A: 192.168.1.2/4096 end else Src NAT GW->>Client A: 202.20.65.4/80 end alt Dst rect rgb(154, 245, 159) Server->>NAT GW: 202.20.65.5/4097 end else Src Server->>NAT GW: 202.20.65.4/80 end alt Dst rect rgb(154, 245, 159) NAT GW->>Client B: 192.168.1.2/4096 end else Src NAT GW->>Client B: 202.20.65.4/80 end
NAT的缺陷
- 不能处理嵌入式IP地址或端口
- 不能从公网访问内部网络服务
- 某些应用程序用不同端口接受信息,导致接受失败(下:端口转发)
- 一些P2P应用在NAT后无法进行
端口映射
端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。端口映射有动态和静态之分。
动态端口映射
内网中的一台电脑要访问网站,会向NAT网关发送数据包。
包头中包含
- 对方网站IP
- 端口
- 本机IP -> 自己的公网IP
- 端口 -> 未使用的端口
并且会记下这个映射关系,为以后转发数据包使用。然后再把数据发给网站,网站收到数据后做出反应,发送数据到NAT网关的那个未使用的端口,然后NAT网关将数据转发给内网中的那台电脑,实现内网和公网的通讯.当连接关闭时,NAT网关会释放分配给这条连接的端口,以便以后的连接可以继续使用
此类动态端口映射就是上方的端口转换。
静态端口映射
就是在NAT网关上开放一个固定的端口,然后设定此端口收到的数据要转发给内网哪个IP和端口,不管有没有连接,这个映射关系都会一直存在。就可以让公网主动访问内网的一台电脑
如果你是公网IP,然后想和小伙伴联机的话,就使用这个方式的端口映射
传输层
传输层概述
进程之间的通信
从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
从IP层来说,通信的两端是两台主机。但真正进行通信的实体是在主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格来讲,两台主机进行通信就是两台主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应进程。从传输层的角度看,通信的真正端点并不是主机而是主机中的进程
传输层的功能:
- 传输层提供进程和进程之间的逻辑通信
- 复用(multiplexing)和分用(demultiplexing)
- 传输层对收到的报文进行差错检测。网络层中IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。因此传输层来实现对数据的检错
- 传输层的两种协议:UDP,TCP
传输层的两个主要协议
两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元
TCP传送的协议数据单元是TCP报文段
UDP传送的协议数据单元是UDP报文或用户数据报
传输层的寻址与端口
- 复用(multiplexing):应用层所有的应用进程都可以通过传输层再传输到网络层
- 分用(demultiplexing):传输层从网络层收到数据后交付指明的应用进程
在网络层和数据链路层:对于一个主机,如果要把数据发送给它,需要知道它的IP地址
,在网络当中根据IP地址寻找到它所在的网络,进入到它的网络后,需要知道它的MAC地址
,根据MAC地址定位到哪个主机。但是如果找到主机,这个通信还未结束,还应找到这个主机接受这个数据的进程,因此涉及到传输层
的问题,即端口
在网络中采用发送方和接收方的套接字Socket(主机IP地址,端口号)组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程
用户数据报协议UDP
用户数据报协议(英语:User Datagram Protocol)
用户数据报协议概述
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能
UDP的主要特点:
- UDP是无连接的,减少开销和发送数据之前的时延
- UDP尽最大努力交付,即不保证可靠交付
- UDP是面向报文,适合一次性传输少量数据的网络应用
- UDP无拥塞控制,适合很多实时应用
- UDP支持一对一,一对多,多对一,多对多的交互通信
- UDP的首部开销很小8字节(TCP20字节),不需要或在程序中执行错误检查和纠正的应用,避免了协议栈中此类处理的开销。
UDP的首部格式
当传输层从IP层收到UDP数据报时,根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点—应用进程。如果接收方UDP发现收到的报文中目的端口号不正确,就丢弃该报文,并由网际控制报文协议ICMP发送"端口不可达"差错报文给发送方
当UDP运行在IPv4之上时,为了能够计算校验和,需要在UDP数据包前添加一个"伪头部"
伪首部:又称为伪包头(Pseudo Header):是指在TCP的分段或UDP的数据报格式中,在数据报首部前面增加源IP地址、目的IP地址、IP分组的协议字段、TCP或UDP数据报的总长度等共12字节,所构成的扩展首部结构。此伪首部是一个临时的结构,它既不向上也不向下传递,仅仅只是为了保证可以校验套接字的正确性
IP数据报的检验和只检验IP数据报的首部,但是UDP的检验和是把首部和数据部分一起都检验
- UDP长度:
- 该字段指定UDP报头和数据总共占用的长度,可能的最小长度是8字节
- 数据最大65535字节(数据 = 65535 − 8字节UDP报头 − 20字节IP头部 = 65507字节)
- 校验和:可以用于发现头部信息和数据中的传输错误
- 不使用校验和,该字段应被填充为全0。
- IPv4中是可选的
- IPv6中是是强制
控制传输协议TCP
- TCP是面向连接的传输层协议
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
- TCP提供可靠交付的服务
- TCP提供全双工通信
- TCP面向字节流
可靠传输的工作原理
使用确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信
可靠传输协议称为自动重传请求ARQ
ARQ:表明重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组
缺点:信道利用率低
停止等待协议
停止等待就是每发送完一个分组就停止发送,等待对方确认后再发送下一个分组
超时重传
- 当A在发送M1分组的过程中丢失时,又或者B接收到M1分组检测到差错并丢弃了M1分组时
- 只要A没有在规定时间内收到B的确认,就认为刚才发送的分组丢失了,并对丢失的分组进行重传
- A发送完一个分组后,必须暂时存储已发送的分组的副本,当收到该分组的确认时就清除本地存储的分组的副本
- 分组和确认分组都必须进行编号,这样才能明确哪一个已发送的分组被确认,哪一个还没被确认
sequenceDiagram A--xB: 发送M1(丢失) activate A Note left of A: 超时重传 A->>B: 重传M1 deactivate A B->>A: 确认M1
确认丢失
- 当B收到A的M1分组后,B发送的M1确认分组在网络中丢失了
- 且A在设定的超时重传时间内又没有收到B的M1确认分组
- 这时A无法知道是自己发送的M1分组出错丢失,还是B发送的M1确认分组丢失了
- 那么A会在超时计时器到期后重传M1分组
sequenceDiagram A->>B: 发送M1 B--xA: 确认M1 A->>B: 重传M1 Note right of B: 收到重复的M1分组后
丢失并确认重传M1确
认分组 B->>A: 重传确认M1
确认迟到
- A在发送M1分组后,B发送的确认M1分组却迟到了
- A在超时计时器规定的时间内又没有收到B的确认M1分组,那么A将会重传M1分组
- B在收到重复的M1分组后会丢弃并重传确认M1分组
- A收到重传的确认分组后,又收到了B迟到的确认M1分组,这是A会丢弃迟到的确认M1分组
sequenceDiagram A->>B: 发送M1(第一次) activate A Note right of B: 此时B发出确认
旦A没有收到 Note left of A: 超时重传 A->>B: 重传M1 deactivate A B->>A: 重传确认M1 B->>A: 确认M1(第一次) Note right of B: 确认M1(第一次)
会被丢弃
TCP报文格式
- 序号:TCP是面向字节流的,每个字节都是按顺序编号。当达到最大范围,又从0开始
- 确认号:期望收到对方下一个报文段的第一个字节的序号。若确认号=N,则表示序号N前所有的数据已经正确收到了
- 数据偏移:表示报文段的数据部分的起始位置,距离报文段的起始位置的距离。以4B位单位,即一个数值是4B
- 保留:保留使用,目前为0
- URG(紧急):当
URG=1
,表明紧急指针字段有效,该报文段有紧急数据,不用再缓存里排队,会被优先发送 - ACK(确认):仅当
ACK=1
时,确认号才有效,连接建立后,所有的报文段ACK都为1 - PSH(推送):接收方接收到
PSH=1
的报文段,会尽快交付接收应用进程,不再等待整个缓存填满再交付。实际较少使用 - RST(复位):
RST=1
时,表明TCP连接中出现严重差错,必须是否连接,再重连 - SYN(同步):在建立连接时用来同步序号
SYN=1, ACK=0
:表明是一个连接请求报文段SYN=1, ACK=1
:表示对方同意连接。TCP建立连接用到
- FIN(终止):用来释放一个连接窗口
FIN=1
:表明此报文段的发送方不再发送数据,请求释放单向连接
- 窗口:表示自己的发送方自己的接收窗口,窗口值用来告诉对方允许发送的数据量
- 校验和:检验和字段查验范围包括首部和数据部分,检验时要加上12B伪首部,第四个字段位6
- 紧急指针:
URG=1
时才有意义,指出本报文段中的紧急数据的字节数(紧急字节数结束后为普通字节) - 选项:长度可变,最长可达40字节。例如最大报文段长度MSS。MSS指的是数据部分的长度而不是整个TCP报文段长度,MSS默认为536字节长。窗口扩大,时间戳选项等
TCP可靠传输
前面说过:
- 网络层:提供尽最大努力交付,不可靠传输
- 传输层:使用TCP实现可靠传输
这里的可靠指:保证接收方进程从缓冲区读出的字节流与发送方发出的字节流是完全一样的
TCP实现可靠传输的机制:
- 校验:与UDP校验一样,增加伪首部
- 序号:一个字节占一个序号,序号字段指的是一个报文段第一个字节的序号
- 确认:TCP默认使用累计确认
- 重传:即超时重传。TCP采用自适应性算法,动态改变重传时间RTTs(加权平均往返时间)
TCP流量控制
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。TCP利用滑动窗口机制实现流量控制
发送方中的数据分为三种:
- 发送已确认
- 发送未确认
- 未发送
滑动窗口协议
TCP滑动窗口协议主要为了解决数据在网络传输的过程中,发送方和接收方速率不一致的问题,从而保证数据传输的可靠性,达到流量控制的效果。
- 发送方的滑动窗口
- 发送窗口:数据已发送接收方,但未接到接收方的确认
- 可用窗口:发送方还可以发送多少数据,受到接收方窗口的改变而改变。
应用层把数据传递给传输层的TCP的发送缓存后,TCP通过不同的机制来控制报文段的发送时机。 主要有下面三种机制:
- TCP维护一个变量,等于最大报文段长度MSS,缓存中存放的数据达到MSS字节时,则以一个报文段发送出去。
- 发送应用层指明要求的报文段,即TCP支持的推送操作。
- 发送法计时器期限到了,就要把前面缓存的数据以报文段发送出去,前提是长度不能超过MSS。
TCP传输效率
超时重传时间的选择
TCP每发送一个报文段,就对这个报文段数值一次计时器,只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段
超时重传时间应略大于上面得出的加权平均往返时间
TCP拥塞控制
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就会变坏了,这种情况就叫拥塞
出现资源拥塞的条件:对资源需求的总和 可用资源
- 拥塞控制:一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素
- 流量控制:指在给定的发送端和接收端之间的点对点通信量的控制,他所要做的就是抑制发送端发送数据的速率以便使接收端来得及接受
拥塞控制是基于拥塞窗口 cwnd,窗口大小取决网络的拥塞程度
发送发控制拥塞窗口的原则:
- 只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去
- 只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数
拥塞避免并非指完全能够避免了拥塞,利用以上的措施要完全避免网络拥塞时不可能的
只是在拥塞避免阶段把拥塞窗口控制在线性规律增长,使网络比较不容易出现拥塞
TCP拥塞控制四个算法是相辅相成,共同维护这拥塞控制机制
慢开始和拥塞避免
慢开始指主机由小到大逐渐增大发送窗口,即增大拥塞窗口的数值。
初始拥塞窗口cwnd设置为不超过2到4个最大报文段SMSS
的数值,具体规定:
- 若
SMSS <= 1095
字节,cwnd = 4 * SMSS
字节,不得超过4个报文段 - 若
1095 < SMSS <= 2190
字节,cwnd = 3 * SMSS
字节,不得超过3个报文段 - 若
SMSS > 2190
字节,则cwnd=2 * SMSS
字节,不得超过2个报文段
从上面的规定限制了初始拥塞窗口的大小。
慢开始在每收到一个对新的报文段的确认后,cwnd
可以增加最多一个SMSS
的数值。
- N是刚收到确认的报文段所确认的字节数
- 拥塞窗口每次的增加量要小于
SMSS
具体:
- 初始化窗口为1,所有发送M1报文段
- 收到确认号之后,发送M2-M3两个报文段
- 因为拥塞窗口增大了,后面的轮次也是这样翻倍增加的
- 那么发送到网络的数据就会急剧增加,容易出现拥塞,因此需要慢开始门限(
ssthresh
)状态变量。
- 当
cwnd < ssthresh
时,使用慢开始算法 - 当
cwnd > ssthresh
时,使用拥塞避免算法 - 当
cwnd = ssthresh
时,忙开始或者拥塞避免算法
快重传和快恢复
快重传算法首先要求接收方收到一个失序的报文段后就立刻发送出重复确认,这样做可以让发送方及早知道有报文段没有达到接收方。
- (出现丢包情况)当发送端收到联系三个重复的确认时
- 就执行"乘法减小"算法,把满开始门限
ssthresh
减半, - 但拥塞窗口
cwnd
选择不设置为1,而是设置为慢开始门限ssthresh
减半后的数值 - 然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
送方的发送窗口的上限值应当取为接收方窗口和拥塞窗口这两个变量中较小的一个,即应按以下公式确定
在上文,知道只是报文段丢失,而不是网络出现拥塞后,发送方会调整ssthresh
为原来的一半,然后继续进行拥塞避免算法,这个过程就叫快恢复算法
TCP传输连接管理
传输连接有三个阶段
- 连接建立
- 数据传送
- 连接释放
TCP连接的建立都是采用客户服务器方式
- 客户:主动发起连接建立的应用进程
- 服务器:被动等待建立连接的应用进程
三次握手
sequenceDiagram Client->>Server: SYN=1, ack=0, seq=x Server->>Client: SYN=1, ack=1, seq=y, ack=x + 1 Client->>Server: ACK=1, seq=x + 1, ack=y + 1
- Client:
SYN=1, ack=0, seq=x
丨YSN_END
状态 - Server:
SYN=1, ack=1, seq=y, ack=x + 1
丨SYN_RCVD
状态 - Client:
ACK=1, seq=x + 1, ack=y + 1
丨C/S:ESTABLISHED
第三次发送包目的:防止多次握手(第一次握手多次收到)
连接关闭
sequenceDiagram Client->>Server: FIN=1, seq=u Server->>Client: ACK=1, seq=v, ack=u + 1 Server->>Client: FIN=1, ACK=1, seq=w, ack=u + 1 Client->>Server: ACK=1, seq=u + 1, ack=w + 1
- Client:
FIN=1, seq=u
丨FIN_WAIT_1
状态 - Server:
ACK=1, seq=v, ack=u + 1
丨FIN_WAIT_2
状态 - Server:
FIN=1, ACK=1, seq=w, ack=u + 1
丨LAST_ACK
状态 - Client:
ACK=1, seq=u + 1, ack=w + 1
丨C:TIME_WAIT
->CLOSED
丨S:CLOSED
- 数据传输结束后,通信的双发都可释放连接。现在A的应用进程先向其TCP发出释放报文段,并停止再发送数据,主动关闭TCP连接
- A把连接释放报文段首部的
FIN=1
,其序号seq=u
,等待B的确认, - B发出确认,确认号
ack=u + 1
,而这个报文段自己的序号seq=v
- TCP服务器通知高层应用进程
- 从A到B这个方向的连接就释放了,TCP连接处于半关闭状态,B若发送数据,A仍要接受
- 若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接
- A收到连接释放报文后,必须发出确认
总结
三次握手 | 四次挥手 |
---|---|
会话层
该层被弃用。应用层的HTTP、RPC、SDP、RTCP等协议有类似的功能
表示层
该层被弃用。应用层的HTTP、FTP、Telnet等协议有类似的功能。传输层的TLS/SSL也有类似功能
应用层
DNS协议
- 根域名服务器:最高层次的域名服务器,全球共有13个不同IP地址的根域名服务器
- 顶级域名服务器:负责管理在该顶级域名服务器下注册的二级域名
- 当根域名服务器告诉查询者顶级域名服务器地址时,查询者紧接着就会到顶级域名服务器进行查询
- 权限域名服务器:负责一个区的域名解析工作
- 本地域名服务器:当一个主机发出DNS查询请求的时候,这个查询请求首先就是发给本地域名服务器的
域名解析过程
- 本机向本地域名服务器发出一个DNS请求报文
- 本地域名服务器向本机回应一个DNS响应报文
递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询
DNS协议报文格式
- 会话标识:是DNS报文的ID标识,对于请求报文和其对应的应答报文,通过它可以区分DNS应答报文是哪个请求的响应
- 标志:
- QR:查询/响应标志
- 0为查询
- 1为响应
- opcode
- 0表示标准查询
- 1表示反向查询
- 2表示服务器状态请求
- AA:表示授权回答
- TC:表示可截断的
- RD:表示期望递归
- RA:表示可用递归
- rcode:表示返回码
- 0表示没有差错
- 3表示名字差错
- 2表示服务器错误(Server Failure)
- QR:查询/响应标志
- 数量字段
- Questions:表示查询问题区域节的数量
- 查询名:长度不固定,且不使用填充字节
- 一般该字段表示的就是需要查询的域名
- 如果是反向查询,则为IP,反向查询即由IP地址反查域名
- 查询类型
- 1:
A
由域名获得IPv4地址 - 2:
NS
查询域名服务器 - 5:
CNAME
查询规范名称 - 6:
SOA
开始授权 - 11:
WKS
熟知服务 - 12:
PTR
把IP地址转换成域名 - 13:
HINFO
主机信息 - 15:
MX
邮件交换 - 28:
AAAA
由域名获得IPv6地址 - 252:
AXFR
传送整个区的请求 - 255:
ANY
对所有记录的请求
- 1:
- 查询名:长度不固定,且不使用填充字节
- Questions:表示查询问题区域节的数量
资源记录(RR)区域,该区域有三个,但格式都是一样的。
- Answers:表示回答区域的数量
- Authoritative namesversers:表示授权区域的数量
- Additional recoreds:表示附加区域的数量
格式:
- 域名:和Queries区域的查询名字字段是一样的。当报文中域名重复出现的时候,该字段使用2个字节的偏移指针来表示。
- 查询类型:表明资源纪录的类型
- 查询类:对于Internet信息,总是IN
- 生存时间(TTL)
- 以秒为单位,表示的是资源记录的生命周期
- 一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间
- 它同时也可以表明该资源记录的稳定程度,极为稳定的信息会被分配一个很大的值(比如86400,这是一天的秒数)
- 资源数据
- 该字段是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据。
- 可以是Address(表明查询报文想要的回应是一个IP地址)
- 可以是CNAME(表明查询报文想要的回应是一个规范主机名)
DHCP
动态主机设置协议(英语:Dynamic Host Configuration Protocol)是一个用于局域网的网络协议
- 用于内部网或网络服务供应商自动分配IP地址给用户
- 用于内部网管理员作为对所有计算机作中央管理的手段
DHCP工作原理
- scope:DHCP从一个IP地址池中提供IP地址,该池有DHCP服务器数据库定义
- 租约:如果客户端接受这一地址,则它可在一个预定义的期限内使用该地址
- 如果客户端无法从DHCP服务器获取IP地址,它就无法正常初始化TCP/IP
在DHCP为客户端配置TCP/IP参数时,DHCP服务器和客户端都需要经历四步过程
当客户端处于以下四种状态之一时,必须使用IP租约进程:
- 配置使用DHCP的客户端第一次初始化TCP/IP;
- 客户端请求特定的IP地址但服务器拒绝了该地址,在DHCP丢弃租约时即会发生。
- 客户端之前租约了一个IP地址
客户机请求IP地址(DHCPDISCOVER)
客户端向DHCP服务器发送请求IP地址的真实报文称为DHCPDISCOVER报文。
网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
- 当一个IPv4客户机启动时监测到需要IP地址,它会初始化一个TCP/IP的限制版本
- 广播一个报文请求寻找DHCP服务器的地址。该广播报文告知监听服务器客户端需要IP地址信息
- DHCP客户端发送的报文这一阶段包括租约请求(客户端源地址,
0.0.0.0
,目的地址,即广播地址255.255.255.255
) - 报文也包括客户端硬件MAC地址和机器名,该信息也指明了向DHCP服务器发起请求的设备
服务器提供IP地址(DHCPOFFER)
- 所有拥有有效IP地址的DHCP服务器都会向DHCP客户端提供IP地址信息
- 它响应以地址池中一个未分配的IP地址供请求主机使用
- 要能够响应DHCPDISCOVER报文,DHCP服务器必须拥有客户端的有效IP配置信息
DHCP服务器回复的DHCPOFFER报文包含以下信息:
- 客户端的硬件地址
- 提供的IP地址
- 合适的子网掩码
- 租约有效期
- 服务器ID,即DHCP服务器的IP地址
客户机选择IP地址(DHCPREQUEST)
- DHCP客户端选择它所接收到的第一个DHCPOFFER报文提供的IP地址
- 它把这一信息广播至网络。该报文中,客户端请求服务器提供给它的IP地址
- 客户端可能收到不止一个DHCP服务器发送的offer
- 通过广播这一请求,客户端告知其他DHCP服务器不会再接受其他offer
为了进一步确保客户端接受的服务器offer没有疑义,DHCPREQUEST报文中还包含以下信息:
- 提供所接受offer的服务器IP地址
- 客户端硬件地址
- 客户端接受的IP地址
服务器确认IP租约(DHCPACK)
- DHCP服务器对客户端作出响应,将IP地址分配给客户端
- 之后服务器发送DHCPACK确认信息给客户端。该信息包含IP地址的有效租约以及其他配置信息
有时,在客户端接收服务器提供的租约后,DHCP租约请求仍可能不成功。可能有以下几种情况:
- 由于客户端移动至其他子网,IP地址无效
- 客户端尝试租约它之前的IP地址但该IP地址不再可用
在上述情况下,服务器会发送一条不成功信息DHCPNACK。收到DHCPNACK的客户端必须重新开始整个DHCP初始化进程。也就是说,它必须发送另一个DHCPDISCOVER报文查找新的IP地址
FTP
网络共享文件的传输协议
FTP协议中将命令与数据分开传送的方法提高了效率
- FTP使用2个端口
- 一个数据端口
- 显示目录列表,上传、下载文件
- 一个命令端口
- 操作如"登录"、“改变目录”、“删除文件”
- 一个数据端口
FTP协议规定了控制协议传送与存储的多种选择,在以下4个方面必须做出一个选择。
- 文件类型
- ASCII码文件(默认的)
- 图像文件类型(二进制的)
- 本地文件类型(用于在具有不同字节大小主机间传送二进制数据)
- 格式控制
- 该选项针对ASCII类型文件适用
- 非打印(默认选择,文件中不包含垂直格式信息)
- 远程登录格式控制
- 结构
- 文件结构(默认选择,文件被认为是一个连续的字节流,不存在内部的文件结构)
- 记录结构(用于文本文件)
- 传输方式
- 流方式(模式选择,文件以字节流方式传输,对于文件结构,发方在文件尾提示关闭数据连接,对于记录结构,有专用的两字节序列码记录结束和文件结束)
- 块方式(文件以一系列块来传送,每块前面有一个或多个首部字节)
- 压缩方式
FTP模式
主动模式
- 客户端随机打开一个大于 1024 的端口向服务器的命令端口发起连接
- 同时开放
N + 1
端口监听,并向服务器发出port N + 1
命令 - 由服务器从它自己的数据端口20主动连接到客户端指定的数据端口
N + 1
由于是服务器来连接,可能会被防火墙拦截
被动模式
命令连接和数据连接都由客户端发起
- 开启一个 FTP 连接时,客户端打开两个任意的本地端口 (
N > 1024
和N + 1
) - 第一个端口连接服务器的 21 端口,提交 PASV 命令
- 服务器会开启一个任意的端口 (P > 1024 ),返回如
227 entering passive mode (127,0,0,1,4,18)
- 它返回了 227 开头的信息,在括号中有以逗号隔开的六个数字
- 前四个指服务器的地址
- 最后两个,将倒数第二个乘 256 再加上最后一个数字,就是数据传输的端口
- 客户端收到命令取得端口号之后, 会通过
N + 1
号端口连接服务器的端口
Telnet
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议
Telnet协议具有如下的特点:
- 适应异构
- Telnet协议定义了数据和命令在Internet上的传输方式,此定义被称作网络虚拟终端NVT(Net Virtual Terminal)
- 发送的数据:转换为NVT格式,发送到服务器,服务器收到的数据和命令,从NVT格式转换为远地系统需要的格式
- 返回的数据:远地服务器将数据从远地机器的格式转换为NVT格式,而本地客户机将将接收到的NVT格式数据再转换为本地的格式
- 传送远地命令
- 普通字符时,NVT将按照其原始含义传送
- 快捷键(组合键)时,NVT将把它转化为特殊的ASCII字符再传送
- 做到无二义性的指定信令,而不会产生控制功能与普通字符的混乱
- 数据流向
- 数据信息被用户从本地键盘键入并通过操作系统传到客户机程序
- 客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远地机器
- 远地操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点
- 远地操作系统将数据传送到用户正在运行的应用程序
- 因此:Telnet的效率不高
- 强制命令
- 操作系统的缓冲区可能被占满,无法再将数据写入伪终端,导致读取数据失败,指令执行失败
- TCP用紧急数据机制实现外带数据信令,那么Telnet只要再附加一个被称为数据标记(date mark)的保留八位组
- 过让TCP发送已设置紧急数据比特的报文段通知服务器
- 选项协商
- Telnet采用选项协商机制来解决两端的机器和操作系统的异构性
- 每个选项的处理都是对称的,即任何一端都可以发出协商申请
网络虚拟终端(NVT)
网络虚拟终端(NVT)是一种虚拟的终端设备,它被客户和服务器所采用,用来建立数据表示和解释的一致性。
NVT的组成:
- 输出设备:输出远程数据,一般为显示器
- 输入设备:本地数据输入
数据格式:采用8bit字节数据,其中最高位为0的字节用于一般数据,最高位为1的字节用于NVT命令
- Telnet使用了一种对称的数据表示,当每个客户机发送数据时,把它的本地终端的字符表示影射到NVT的字符表示上,当接收数据时,又把NVT的表示映射到本地字符集合上
- 在通信开始时,通信双方都支持一个基本的NVT终端特性子集(只能区分何为数据,何为命令),以便在最低层次上通信,在这个基础上,双方通过NVT命令协商确定NVT的更高层次上的特性,实现对NVT功能的扩展
- 在TELNET中存在大量的子协议用于协商扩展基本的网络虚拟终端NVT的功能,由于终端类型的多样化,使得TELNET协议族变得庞大起来
RDP
RDP, Remote Desktop Protocol,远程桌面协议,是一个多通道(multi-channel)的协议,提供微软终端机服务功能
RDP协议网络功能数据传送时通常都包含的各层次
- 网络连接层
- RDP协议建立在TCP/IP协议之上
- 由于传输的数据量比较大,因此在协议的底层首先定义一层网络连接层。它定义了一个完整的RDP数据逻辑包,以避免由于网络包长度过长而被分割使数据丢失
- ISO数据层:在网络连接层之上是ISO数据层,它表示RDP数据的正常连接通信
- 虚拟通道层:在ISO数据层之上,RDP协议定义一个虚拟通道层,用以拆分标示不同虚拟通道的数据,加快客户端处理速度,节省占用网络接口的时间
- 加密解密层:在虚拟通道层之上,RDP定义一个数据加密解密层。此层用于对所有的功能数据进行加密、解密处理
- 功能数据层
- 在加密解密层之上是功能数据,画面信息,本地资源转换,声音数据,打印数据等所有的功能数据信息都在此层进行处理
- 根据数据类型的不同,这些数据都有各自不同层次的分割
RDP连接过程
- 客户端连接服务器
- ISO数据层建立连接
- 发送初始协议相关信息,接收加密、解密密钥
- 虚拟通道申请
- 加密形式发送客户端系统信息,同时验证加密协议
- 平台软件证书验证
- 各功能建立连接,各功能数据传输,功能实现
HTTP
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议
- HTTP是一个基于TCP/IP通信协议来传递数据
- HTTP是一个属于应用层的面向对象的协议
- HTTP协议工作于客户端-服务端架构之上
URI丨URL
- URI:uniform resource identifier,统一资源标识符,用来唯一的标识一个资源
- URL:uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源
- URN:uniform resource name,统一资源命名,是通过名字来标识资源
HTTP协议格式
例:
1 | GET /photo.jpg |
详细参考HTTP
Web代理
就是别人代替你去访问东西然后给你(正向代理)
一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源
- Web代理都是基于TCP的,VPN可以基于其他层
功能:
- 提高访问速度
- 制对内部资源的访问
- 过滤内容
- 隐藏真实IP
- 突破自身IP访问限制
- 突破内容过滤机制限制
Web代理种类
协议区分:
- FTP代理服务器:访问FTP服务器
- HTTP代理服务器:访问网页,一般有内容过滤和缓存功能
- SSL/TLS代理:访问加密网站,一般有SSL或TLS加密功能
- RTSP代理:Realplayer访问Real流媒体服务器,一般有缓存功能
- Telnet代理:用于telnet远程控制(黑客入侵计算机时常用于隐藏身份)
- POP3/SMTP代理:用于POP3/SMTP方式收发邮件,一般有缓存功能
- SOCKS代理:只是单纯传递数据包,不关心具体协议和用法
匿名程度:
- 高度匿名代理:高度匿名代理会将数据包原封不动的转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的IP是代理服务器的IP
- 普通匿名代理:普通匿名代理会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实IP
- 透明代理:透明代理不但改动了数据包,还会告诉服务器客户端的真实IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用
- 间谍代理:间谍代理指组织或个人创建的,用于记录用户传输的数据,然后进行研究、监控等目的代理服务器
TLS
TLS:又名 SSL,是针对数据流的安全传输协议,其要求为:
- 数据被加密,任何可以截取到 TCP 数据流的人,无法解密出原始数据
- 数据不可被篡改,一旦篡改会导致解密失败,连接断开
- 服务器身份验证,基于 X509 的证书体系去确认目标服务器是否为真实的服务器
HTTP + TLS = HTTPS
SOCKS5 + TLS = SOCKS5-TLS
电子邮件
邮件发送协议是一种基于"推"的协议,主要包括SMTP
邮件接收协议是一种基于"拉”的协议,主要包括POP和IMAP
SMTP
- 端口:25
- 通过命令和响应的形式进行交互
- 邮件传送主要包括3个阶段:建立连接、邮件传送和终止连接
建立连接阶段
- SMTP客户端每隔一定时间对邮件缓存扫描一次,如发现有邮件,就使用SMTP的熟知端口号25与接收方的邮件服务器的SMTP服务器建立TCP连接
- 接收方SMTP服务器发出“220 Service ready"告诉客户端它已经准备好接收邮件。若服务器未就绪,它就发送代码421
- 客户发送HELO报文,并使用它的域名地址标志自己。目的是:用来把客户的域名通知服务器
- 注意的是,在TCP的连接建立阶段,发送方和接收方都是通过它们的IP地址来告诉对方的
- 服务器响应代码250(请求命令完成)或根据情况的其他一些代码。
报文传送阶段
- 客户发送MAIL FROM报文介绍报文的发送者。它包括发送人的邮件地址
- 服务器响应代码250(请求命令完成)或其他适当的代码
- 客户发送RCPT(收件人)报文,包括收件人的邮件地址
- RCPT命令的作用是:先弄清接收方系统是否已经准备好接收邮件的准备,然后才发送邮件
- 这样做视为了避免浪费通信资源,不至于发送了很长的邮件以后才知道是因地址错误
- 服务器响应代码250或其他适当的代码
- 客户发送DATA报文对报文的传送进行初始化,DATA命令表示要开始传送邮件的内容了
- 服务器响应代码
354 Start mail input: end with <CRLF>.<CRLF>
- 或其他适当的报文(如421服务器不可用,500命令无法识别)
- 客户用连续的行发送报文的内容。每一行的行结束时输入
<CRLF>.<CRLF>
,即回车换行,知道邮件内容结束 - 服务器响应代码(250 请求命令完成)或其他适当的代码
虽然SMTP使用TCP连接试图使邮件的传送可靠,但它并不能保证不丢失邮件。也就是说,使用SMTP传送邮件只能说可以可靠地传送接收方的邮件服务器,在往后的情况就不知道了
终止连接
在报文传送成功后,客户就终止连接
- 客户发送QUIT命令
- 服务器响应221(服务关闭)或其他代码
- 在连接终止阶段后,TCP连接必须关闭
POP
- 端口:110
- POP3(Post office Protocal)采用C/S的工作方式
- POP服务器只有在用户输入鉴别信息(用户名+密码)后,才允许对方对邮箱进行读取
- POP3有两种工作方式
- 删除方式:就在每一次读取邮件后就把邮箱中的这个邮件删除
- 保存方式:就是在读取邮件后仍然在邮箱中保存这个邮件
- POP是一种极其简单的邮件获取协议
IMAP
- 端口:143
- IMAP(Internet Mail Access Protocal)采用C/S的工作方式,较新的版本是IMAP4
- 接收方的邮件服务器上的IMAP服务器程序建立TCP连接
- IMAP协议比POP3协议复杂的多
- 允许用户在邮件服务器上整理自己的邮件
- 允许用户在下载邮件之前读取邮件的部分内容
IMAP4提供了以下功能
- 用户在下载邮件之前可以检查邮件的首部
- 用户在下载邮件之前可以用特定的字符串搜索电子邮件的内容
- 用户可以部分地下载电子邮件
- 用户可以在邮件服务器上创建、删除邮箱,或对邮箱重命名
- 为了存放电子邮件,用户可以在文件夹中创建分层次的邮箱
MIME
MIME协议( Multipurpose Internet Mail Extensions ),通用因特网邮件扩充协议 ,作为SMTP的一种辅助协议,其引入是为了克服SMTP的如下不足:
- SMTP只能发送使用NVT( 虚拟网络终端 ) 7位ASCII码格式的报文,它不能使用NVT 7位ASCII码不支持的语言(如汉语,日语,德语等)
- SMTP不能传送可执行文件或其他二进制对象(如图像文件)
- SMTP不支持音频或视频文件
- SMTP发送的邮件的长度受到限制
MIME定义了5种首部,用来加在原始的电子邮件部分以定义参数的转换
- MIME版本:定义了MIME使用的版本
- 内容-类型:定义报文主体使用的数据类型和子类型,用<数据类型/子类型>表示
- 内容-传送-编码:定义了邮件的主体在传送时是如何编码的
- 内容-标识:在多报文的环境中唯一地标识报文
- 内容描述:定义了主体是否为图像、音频或视频
基于WWW的邮件
- 从发送者的浏览器传送到发送方邮件服务器是通过HTTP协议
- 从发送方服务器到接收方邮件服务器是通过SMTP协议
- 从接收方到接收者是通过HTTP协议