计网期末复习笔记
引言(一)
1.网络体系结构
(只要是网络就能用网络模型来分层,只不过可能这里介绍的两种体系结构不适用于所有网络——移动电话网络的体系结构与计算机网络体系结构完全不同)
1.1 OSI参考模型
OSI参考模型本身算不上一个网络体系结构,它甚至没有定义每一层的服务和所使用的协议,它仅指明了每一层应该做什么事;
OSI有7层,TCP/IP有4层;
基本功能:
应用层:提供用户和网络的接口;
网络层:控制报文通过网络的路由选择;
数据链路层:保证数据的正确性和完整性;
物理层:处理信号通过介质的传输;
1.2 TCP/IP参考模型
没有严格区分接口、服务、协议的概念;
非常不通用——使用TCP/IP模型来描述蓝牙是完全不可能的;
没有区分数据链路层和物理层;
1.3 两种参考模型
OSI模型的网络层支持无连接、面向连接,但传输层仅支持面向连接;
TCP/IP模型的网络层仅支持无连接,但传输层支持无连接、面向连接;
2.概念辨析
传输层是真正的端到端,它自始自终将数据从源端携带到接受方。而网络层及以下层的数据在传输过程中一直被修改,可以看作源机器和目标机器的网络层及其以下层被多个中间路由器隔离;
网络层、链路层、物理层是链式连接,传输层、应用层是端到端连接
端到端:传输层
主机到主机:网络层
点到点:链路层
3.常见术语
(1)服务:服务就是下层为上层提供的功能调用,上层使用下层提供的服务时除了需要访问SAP外还需要使用服务原语这种特殊命令;
(2)接口:也称为服务访问点SAP,第n层的SAP就是第n+1层可以访问第n层提供的服务的地方;
应用层为用户界面,网络层为IP地址,链路层为MAC地址,物理层为网卡接口;
(3)协议:为进行网络中数据的交换建立的规则称为协议,由语法、语义和同步构成;
语法:规定对等实体之间传输数据的格式;
语义:规定本层实体要完成的功能;
同步:规定执行操作的条件、时序关系等;
(4)实体:在计算机网络的分层结构中第n层的活动元素通常称为n层实体,指代任何可以发送或接收信息的硬件或软件进程,n层实体实现的服务为n+1层利用;
(5)数据单元PDU:每一层的数据单元都可以分为数据部分SDU和控制信息部分PCI,SDU即服务数据单元指的是为了完成某些功能而传送的数据,PCI即协议控制信息指的是控制协议操作的信息;
每层的PDU都有一个通俗的名字如物理层为比特,链路层为帧,网络层为分组,传输层为报文;
每层的PDU作为下一层的SDU,也就是下一层会对从上一层中收到的数据PDU进行封装并加上自己的PCI形成本层的PDU;
尽管服务原语和PDU在功能上有关系,但是在设计是两者不需要互相考虑,不会互相影响;
(6)注意:
并非在一层内完成的全部功能都是服务,只有提供给高层调用的功能才称为服务;
要实现n层的功能,必须使用n层的协议,只有实现n层的功能(也称为n层协议的实现)才能为n+1提供服务
===========================网络实例(并不仅限于计算机网络)===========================
4.网络实例
4.0 因特网
因特网是大量不同网络(异构网络/同构网络)的集合,这些网络使用特定的公共协议并提供特定的公共服务;
因特网其实并不是一个实体,仅仅只是一个概念而已(因特网是全球最大的互联网,而互联网本身就只是一个集合概念)。所以不要去搜什么因特网和移动电话网络的区别,因为任何网络都可以成为因特网的一部分,这个两个根本就没有可比性;
网络的定义是若干节点和连接这些节点的链路构成——因此你的鼠标(有线/无线)与电脑之间的连接也可以称为网络,而我们这门课程名为计算机网络,主要介绍的就是计算机之间的互联;
计算机互联是指两台计算机之间可以交换信息,使用任何方式(有线光纤、无线蓝牙、无线WIFI)都可以;
==========================下面我们将介绍真正的网络实例==========================
4.1 无线个人域网络:蓝牙
蓝牙通常用于自组网络,两个手机直接互相连接即可,不需要网络基础设施(如AP)来互连蓝牙设备(这与手机通过WIFI投屏到电视不同)。
因为蓝牙无线协议比较特殊,有些数据直接从物理层到应用层,故不能加入TCP/IP体系,这就意味着蓝牙不能上网。
我们常常会思考,蓝牙是否会被WIFI取代(NFC因为距离实在太短了所以不考虑会取代蓝牙):
- 首先蓝牙的传输距离实在是太受限了;
- 同时与WIFI相比蓝牙的传输速率也很慢;
- 但是短期内WIFI还不能取代蓝牙,一是因为蓝牙可以直接互联两设备不需要经过互联网等其他设备非常方便,另一个原因是WIFI的功耗很大,不插电基本上不能使用,而蓝牙设备可以非常小巧便携;
4.2 无线局域网:802.11
这是一个重要的标准并且值得尊重,最好不要称其为WIFI
简单介绍一下802.11的发展历史:
刚开始各个厂家使用自己的短程无线电发射机和接收机,因为没有统一的标准所以不同产品不能兼容,于是出现了802.11标准;802.11不像蜂窝移动电话网络需要购买固定的授权频段,只需要和微波炉等电器竞争频段即可;802.11由客户和接入点AP组成,AP又称为基站;
为了解决无线电波在传输过程中的衰减问题,提出了正交频分复用OFDM调制方案,OFDM将宽带分为窄带,不同的比特在这些窄带上并行发送;
无线电本质上是一种广播介质,所以很可能会出现多个传输导致的碰撞问题,我们在后面可以看到使用了CMSA/CA协议解决这一问题;
802.11为了解决移动客户从一个AP移动到另一个AP的覆盖范围内,需要一些移交工作,解决方案是802.11网络由多个蜂窝组成,每个蜂窝有自己的AP,通过一个分布式系统(往往是以太网)将这些蜂窝连接在一起,从外部来看整个系统看起来就像一个单一的局域网;
最后一个需要解决的问题是,因为无线电的广播性质所以计算机很可能收到并非发送给它们的信息包,解决方案是使用WIFI保护接入即WPA;
我们没有详细介绍802.11的MAC帧类型,需要知道的是802.11MAC帧主要有四种类型:IBSS | TO AP | FROM AP | WDS ,不同类型的帧其内部Adress1-4字段不同
IBSS: DA SA BSSID
TO AP: BSSID SA DA
FROM AP: DA BSSID SA
WDS: RA TA DA SA
其中RA表示接收方地址,BSSID表示Basic Aervice Set IDentifier,SA是源地址,DA是目的地址,
接收方表示下一跳的MAC,目的地址表示最终的MAC
考点:
WIFI提供无连接带确认的服务
4.3 有线局域网:以太网
以太网是目前使用范围最广的局域网,逻辑拓扑是总线型结构,物理拓扑是星形结构;
以太网采用无连接提供不可靠的服务——只实现无差错接收(差错帧直接丢弃),不实现可靠传输,所以使用以太网的网络体系只有在传输层提供可靠服务;
以太网中数据以帧的形式传输,就交换技术来说以太网使用的是分组交换技术;
以太网在半双工方式(速率小于等于1Gbps)下使用CSMA/CD技术,在高速以太网(速率大于等于100Mbps)中使用的全双工模式(隔离冲突域)不会发生争用问题(同时CSMA/CD根本就不可能支持全双工);
(1)10BaseT表示10Mbps的以太网,传输介质选用非屏蔽双绞线,使用的曼彻斯特编码(未规定上1还是下1有多种可能),网络拓扑结构为星形,CSMA/CD媒体控制访问机制;
(2)100BaseT表示100Mbps的以太网,传输介质为非屏蔽双绞线(T就表示为双绞线,F为光纤),支持全双工和半双工;
(3)吉比特以太网即千兆以太网,3z规定使用光纤,3ab规定使用双绞线,支持全双工和非全双工;
(4)10吉比特以太网传输介质为光纤,只能使用全双工方式工作;
考点:
以太网提供无连接服务;
为了实现CMSA/CD:
-以太网规定最小帧间间隔为96bit时间;
-10Mbps的以太网规定争用期为512比特时间,总线长度不能超过2500m;
-以太网的最小帧长为64字节也就是512bit,V2的MAC帧规定最大帧长度为1518字节;
-也就是说帧里面的数据部分最小长度为46字节最大长度为1500字节;
4.4 广域网:VPN
广域网不等于互联网,互联网可以连接异构网络,而广域网仅仅是单一的网络;互联网使用路由器连接不同【网络】,广域网使用结点交换机或路由器连接不同【主机】;
就交换技术来说广域网使用分组交换技术;就传输方式来说广域网采用存储转发的方式;
广域网由主机和通信子网构成,通信子网通常包括传输线路(有线/无线)和交换元素(交换机/路由器)——注意子网的概念原本就是广域网专有,后来才发展成为网络层的子网划分的那个概念;
VPN主要可分为同一机构内不同部门的内部网络所构成的虚拟专用网VPN即内联网VPN和在家中远程访问校园网内的某些资源时使用的远程接入VPN
内联网VPN指的是公司并不租赁专用的传输线路,而是直接将洲际两边的子公司连接在互联网上,有信息要传送时直接把数据丢在互联网上进行传递,逻辑上看起来好像还是子公司之间进行数据传输,这利用了隧道技术
远程接入VPN指的是外地工作的员工需要访问公司内部专用网络时,只需要运行员工PC内的VPN软件,将PC接入互联网,此时VPN软件会在员工PC和公司主机之间建立VPN隧道,员工可以直接访问内网资源;
4.5 广域网:公共电话交换网络
公共电话网络(PSTN)也称为有线电话网络;
PSTN是一种以模拟技术为基础的电路交换网络。在众多的广域网互连技术中,通过PSTN进行互连所要求的通信费用最低,但其数据传输质量及传输速度也最差,同时PSTN的网络资源利用率也比较低;
ISP为了使用PSTN提供的远距离基础设施,是需要给电话线拥有者付费的(不同于VPN白嫖因特网);
我们知道原本电话网络的设计不是为了传输数字数据而是为了传输模拟声波数据,所以在利用电话线作为介质传输数字数据的过程中需要解决很多原有问题,这也是公用电话交换网络的发展历程;
历史背景:最初当贝尔发明电话后,用户必须在自己和对方的电话之间拉一条电话线,也就是途中的全连通网络,后来发现这是不可行的;好在贝尔的公司建立了中心交换网络,也就是引入单级交换局对用户进行管理;后来发现需要打长途电话之类的单级交换局的管理成为问题,所以又引入了二级交换局,如此发展最终整个电话系统的层次结构增长到五级;我们只需要知道电话网络中三个重要的组成部分:交换局、客户与交换局之间的线路、交换局之间的线路;每部电话机都有两根铜线,这是为了构成电流回路传输语音,但这和ADSL的实现原理不一样;电话机与最近的交换局(端局)之间的双线连接被称为本地回路,我们常称为“最后一公里”,这也是限制联网速度的因素;
最初整个电话系统都是模拟的,但是随着光纤(光纤传输的是离散的光脉冲,也就是数字信号)、计算机、数字电路的引入,现在只剩下本地回路还是模拟的(一方面是因为将本地回路全部数字化花费太高);
我们如何利用只能传输模拟信号的电话线传输数字信号呢,这里有三种方法:
(1)电话调制解调器(modem也称为猫)
modem在狭窄的信道上发送数字数据(将数字数据调制为模拟信号发送),而这些信道原本用于电话网络进行语音通话,相当于在本地回路上直接挤出位置来传送数字数据;
(2)*ADSL
这是一种宽带技术,工作人员会将电话线接入一个分离器,分离器的接口可以连接我们的有线电话、ADSL设备;
ADSL宽带是直接用现有电话线完成电话的语音信号和上网的数据信号【同时】传输
为了信号之间的互不干扰,将电话线传输的语音信号和数据信号分别调制到不同频率上,将信号分离;
负责上传上网的数据和下载上网的数据的带宽是不一样的,这也是非对称数字用户线路(ADSL)的由来;
考点:
ADSL实现全双工通信,在两个方向的传输速率不同;
ADSL使用频带传输,频带传输就是先将基带信号变换(调制)成便于在模拟信道中传输的、具有较高频率范围的模拟信号(称为频带信号),再将这种频带信号在模拟信道中传输(远距离通信常用);
ADSL通信与普通电话机的语音通信使用完全相同的传输介质;
ADSL仅是一个物理层标准;
(3)光纤入户
这也是一种宽带技术;
既然铜线做的本地回路那么差劲,干脆直接就用数字信道;
注意光纤需要接上光猫将数字光信号转换为数字电信号才能被计算机识别(光猫的作用主要是转换光/电信号而不是进行调制),计算机不可能直接识别光信号(网卡不是modem,网卡仅是网络的接口),当然现在家里的无线路由器结合了光猫和路由器的功能(区分有线网卡的电接口和无线网卡的波接口);
4.6 广域网:蜂窝移动电话网络
传统有线电话网络系统始终无法满足移动中的用户(不可能带个座机到处跑),于是出现了移动电话(蜂窝电话),注意蜂窝电话并不等价于无绳电话(这根本不能联网),要说传统有线电话网络的好处,可能就是其通话费用比移动电话低,我们可以通过号码来区分这是一个固定电话还是移动电话;
使用蜂窝网络如4G上网,上层还是走的TCP/IP协议栈;
注意蜂窝移动电话网络与因特网体系完全不同;
第一代移动电话系统:以连续变化的模拟信号而非数字序列来传输语音通话,高级移动电话系统AMPS;
第二代移动电话系统:从模拟传输切换到以数字形式传输语音通话,增加了安全性同时提供短信业务,全球移动通信系统GSM;
第三代移动电话系统:能同时提供【数字语音】和【宽带数字数据】服务,数字数据也就是电子邮件、因特网等服务,通用移动通信系统UMTS(也称为宽带码分多址);
第四代移动电话系统:4G系统取名为长期演进LTE;
1G 2G 3G对于无线电频谱的需求量很大,正因如此导致蜂窝网络的设计出现;为了管理用户之间无线电的干扰,系统的覆盖区域被分为一个个的蜂窝:
- 在一个蜂窝内的用户分配到互不干扰的信道;
(这样的分配使得相邻蜂窝的频谱得到较好的重复利用,也称为频率重用,增加了网络的容量;蜂窝的设计有许多变种,但基本设计思想是相同的)
简单介绍一下通用移动通信系统UMTS的组成结构:
- 空中接口是移动设备和基站之间进行空中通信需要的接口;
- 蜂窝基站(简称基站)实现空中接口,无线网络控制器控制如何使用无线电频谱,两者共同组成无线接入网络部分,每个蜂窝都有一个基站,多个基站连接到移动电话交换局(类似于有线电话中的端局);
- 核心网络部分是指移动电话网络的负责运载无线接入网络的流量的部分,这部分可分为支持数据包的网络和支持电路交换的网络,现在大部分移动电话公司能同时实现两种业务;
- 当有来电时如何找到一个移动用户呢?每个移动电话网络在其核心网络区域会维持一个归属用户服务器HSS,给服务器知道该区域内每个用户的位置;
日常生活中的运用:
关于移动电话的安全性问题,从2G开始移动电话被分为手机和可移动芯片SIM(用户识别模块)两部分,SIM卡中包含了用户的身份和账户信息;
出国旅游只需要在本地购买一张新的SIM卡,就可以实现本地的通话无需长途漫游;
当某些地区的用户数量超过了蜂窝系统的负载能力时,移动运营商会通过将超载的蜂窝切割成更小的微蜂窝(如音乐会会出现电话公司的便携式塔),使得更多频率被重用,同时会降低系统功率(这将导致用户的信号变差);
从1G的模拟电话到2G的数字电话,数字电话有几个优点:(1)将语音信号数字化可以增大网络容量;(2)数字信号更好加密,拥有更高的安全性;
软切换:与旧基站断开连接并连接新基站的一瞬间实际是和两个基站同时保持连接,所以不会出现中断;硬切换:用户先与旧基站断开连接,再与新基站建立连接;
4.7 广域网:有线电视网络
注意这里说的有线电视指的是使用同轴电缆将电视信号送到用户住宅,而不区分电视信号是从天上还是从光纤/电缆中来的,下面展示最原始的有线电视系统(也是山村里不便于铺线使用的方式)
系统主要包含:大天线用于接收空中的电视信号,放大器(头端)用于放大信号,同轴电缆用于将电视信号送到用户住宅;
这样的系统中信号传输是单向的,即只能从头端传输到用户处;
城市中常使用的是如下结构的有线电视网络,也称为混合光纤电缆(长距离使用光纤传输,最后一公里使用同轴电缆);
不管是哪种结构,想要接入因特网都比较困难,因为电视网络是单向的,所以早期有一种方式是Internet利用有线电视网络进行下行流传输,通过有线电话网络进行上行流传输;
注意:上行流量就是本机向Internet发送的字节数,下行流量就是从网络中下载的字节数;
有线电视网络和有线电话网络的一个主要区别就在于,在最后一公里处,有线电视网络因为多个用户共享同一根电缆,会导致某个用户下载非常大的文件时影响电缆上其他用户的体验(窃取带宽),而有线电话网络是用户直接通过双绞线连接到端局,通过ADSL线路现在文件并不会影响其他用户的带宽;
要使用有线电视网络接入因特网如上面所说,受到许多限制,好在使用频分复用可以让电视和Internet在同一根电缆上共存,这将用到线缆调制解调器;
ADSL和有线电视电缆比较:
- 这两者有许多地方是相似的,可以看作两个操作系统;
- 骨干网上两者均采用光纤,网络边缘(也就是最后一公里)ADSL使用了双绞线而有线电视采用了同轴电缆;
- ADSL作为一种点到点的传输介质,本质上比共享式的电视电缆安全的多;
5.概念辨析
计算机网络是由自治的计算机互联的集合体;
计算机网络最基本的功能是数据通信;
计算机网络最基本的的组成是通信子网和资源子网;
资源子网主要由计算机系统、终端、联网外部设备、各种软件资源和信息资源等组成(计算机软件属于资源子网);
通信子网对应OSI模型的下面三层,任务是完成网络数据传输、转发等(网桥、交换机、路由器属于通信子网);
计算机网络的资源指计算机硬件、软件以及数据;
局域网和广域网差别不仅在于覆盖范围不同,也在于它们使用的协议不同,局域网使用【广播技术】在链路层工作,广域网使用【点对点(交换)技术】在网络层工作;
物理层:中继器,集线器(多接口中继器)
链路层:桥接器(网桥),交换机(多接口网桥)
链路层在不可靠的物理介质上提供点到点之间的可靠传输;
传输层在不可靠的网络层提供端到端的可靠传输(TCP);
流量控制:链路层、网络层、传输层
拥塞控制:网络层、传输层
物理层(二)
1.概念辨析
两个对等实体之间进行数据传输的方式:
(1)电路交换:真正的物理线路-如电话线,不具备差错控制,故不能用于保证数据无差错传输,并且只要某一结点出问题整段电路都崩溃;——至今网络上也没有关于电路交换是否可靠的讨论
(2)报文交换:每个报文大小不同存储转发时间不固定,不能用于实时通信环境;
(3)分组交换:分为虚电路(面向连接可靠)和数据报(无差错控制和流量控制,无连接不可靠);虚电路相比于电路交换真正的线路,它仅提供逻辑上的连接故结点发生故障则虚电路重新建立一条(更耗时),而数据报直接选择其他路由;
电路交换是面向连接,但面向连接不一定是电路交换;
中继器(转发器):信号再生(整形、放大),用于远距离数字传输
放大器:信号放大,用于远距离模拟传输
网卡:连接计算机和传输介质的接口,工作在物理层,实现的功能在物理层、数据链路层;
双绞线:绞合减少相邻导线的电磁干扰;加上屏蔽层后称为屏蔽双绞线
同轴电缆:具有屏蔽层,抗干扰特性强;相当于是双绞线的优化版;
光纤:多模光纤指多束光线在一条光纤中传输,适用于近距离传输,利用光的全反射特性;单模光纤中光波沿直线传输,适合远距离传输;光纤不受电磁干扰和噪声影响;
主要物理媒介的带宽:双绞线<无线电(电视信号)<同轴电缆<光纤
机械特性:规定连接设备的规格即接口形状
电气特性:规定信号的电压高帝(5V-10V)、传输距离、阻抗大小、传输速率
功能特性:定义电压表示何种意义以及引脚的功能
过程特性:定义物理线路的工作过程和时序的关系
2.编码和调制
数据指装载信息的实体,本身并不等于信息(可以认为信息是汉字而数据是二进制编码);
信号是数据在传输过程中的存在形式,可以是电磁、电气、光的形式;
数据和信号都可以用“模拟”(连续变化)和“数字”(取值离散)来修饰;
信道是信号的传输媒介,是一条线路上的逻辑向量部件;
信道上传输的信号还可按照频率范围分为基带信号和宽带信号,基带信号可以是数字/模拟信号(来自信源的信号),但宽带信号一定是模拟信号(调制过后的基带信号);
无论数据是数字还是模拟,都必须先转换为信号才能在信道上传输,将数据变为模拟信号称为调制,将数据变为数字信号称为编码
(1)数字数据编码为数字信号
归零编码(RZ)、非归零编码、曼彻斯特编码、差分曼彻斯特编码
(2)数字数据调制为模拟信号
ASK(调幅,有振幅为1无振幅为0)、FSK(调频,低频为0高频为1)、PSK(调相,正弦波表0余弦波表1)、QAM(调幅+调相,也称为混合调制)
(3)模拟数据编码为数字信号
PCM(脉码调制,用于音频数据,采样、量化、编码)
(4)模拟数据调制为模拟信号
将低频数据调制后放在高频信道传输
3.波特率
码元:简单来说就是不同离散状态的基本波形,一个码元可以携带n个比特,但这要求【不同离散状态的码元个数<=2^n】
波特率:单位时间传输码元个数
比特率:单位时间传输比特个数
常见波特率与比特率之间的关系:
(1)曼彻斯特编码:因为其一个比特对应两个离散状态的波形,故2*波特率=比特率;
(2)其他情况下,一个码元携带n个比特,则波特率=n*比特率;
4.信道极限
影响信道最大传输速率的因素主要有【信道带宽】和【信噪比】
采样定理:采样频率F与原始模拟信号最大频率f之间关系为F>=2f
采样频率的意义在于:
若1s采样n次则采样频率为nHz,若这里的nHz合法(符合nice准则的要求即小于2W),则可认为信道的波特率为n Baud;
若1路模拟信号的频率为1kHz,则采样频率=2kHz;
nice准则(W为带宽):
理想低通信道最高波特率=2W Baud
理想带通信道最高波特率=W Baud
香农公式:
在带宽为W且有噪音,信噪比为S/N的信道中,最高比特率=W*log2(1+S/N) bps(常用log2(1001)=10)——注意不是2W!很容易混淆
当给的信噪比不是比值而是以dB为单位的数值x时,使用 x=10*log10(S/N)反解出S/N,计算最高比特率代入【比值】计算
注意:
nice可以在有噪声和无噪声的条件下用,香农只能在有噪声条件下用,所以计算时一定要计算nice,最后结果取最高速率较小者(因为nice是波特率,所以可能需要转换单位);
如果题干没有指明信道是带通(规定信道频率的上下限),则默认信道是低通信道;
5.物理层设备
5.1 中继器
又称为转发器,将数字信号整形并放大转发出去(信号再生);
中继器工作在物理层,不能连接两个具有不同速率的局域网;
中继器两端的网络是同一个网络的不同网段(这个地方可能会有点疑惑,因为网段本质上概念要大于子网)而非两个子网,中继器不具备存储转发功能,所以两个网段速率、协议必须相同(某个设备具有存储转发功能则可以认为它能连接两个不同协议);
“5-4-3”规则:互相串联的中继器最多4个,4个中继器串联的5个通信介质中只有3个可以挂载计算机;
只能工作在【半双工】;
5.2 集线器
英文名Hub,本质上是多端口中继器,工作在物理层;
只能工作在【半双工】;
Hub不能分割冲突域和广播域;
数据链路层(三)
1.基本概念
(1)数据链路层的基本功能有:为网络层提供服务、链路管理(针对面向连接的服务)、组帧、流量控制、差错控制
对网络层而言,数据链路层的基本任务是将源机器中来自网络层的数据传输到目标机器的网络层,数据链路层可以为网络层提供如下的服务:
无确认的无连接服务,适用于实时通信或误码率较低的通信信道如以太网;
有确认的无连接服务,适用于误码率较高的通信信道如无线通信;
有确认的面向连接服务,适用于对通信要求较高的场合;
(2)连接 可靠性 确认机制 有线/无线
数据链路层可以为网络层提供三种可能的服务:无确认的无连接服务,有确认的无连接服务,有确认的面向连接服务,
因为是否面向连接是建立在确认机制上(A要和B建立连接一定需要得到的确认),所以不可能存在无确认的面向连接服务;
连接和可靠性没有任何关系,连接是指在通信两端建立一个通道,该通道占用资源;可靠性是指发送和收到的是同一个东西;
PPP协议就属于不可靠的面向连接服务,这里不可靠是因为PPP协议除了在建立连接时使用了确认机制外在其他时候都没使用;
还有就是有线/无线与面向连接没有任何关系,有线和无线介绍的仅仅只是传输介质的不同,面向连接指的是在传输过程中的问题,两者根本就不在一个维度上;
(3)噪声
通信信道的噪声可以分为两类:热噪声和冲击噪声
热噪声一般是信道固有,引起的差错是随机差错——通过提高信噪比来降低它对数据传输的影响;
冲击噪声一般由外界电磁干扰引起,引起的差错是【突发差错】,是引起传输差错的【主要原因】,不能通过提高信噪比避免;
(4)隐藏站&暴露站 A B C D
隐藏站是指:A向B发送消息后C也向B发送消息(因为C没有监听到A发送的消息),所以在接收端B会产生碰撞
暴露站是指:B向A发送消息时,C也想给D发送消息,但是C监听到范围内有一个传输正在进行(B->A)所以C放弃给D发送消息
这些问题使用【CSMA/CA协议来解决】
2.组帧
数据链路层之所以需要将比特组合成帧传输(帧是网络中最小传输单位而非比特)是为了避免出错时全部重传而只需要重传出错的帧即可;
组帧既需要添加首部也需要添加尾部,因为接收端需要正确的接收帧必须清楚帧在一串比特流中从哪里开始到哪里结束,注意分组不需要添加尾部来定界;
组帧需要解决帧定界、帧同步、透明传输等问题,主要有如下四种组帧方式:
2.1 字符计数法
在帧头部使用一个计数字段来标明帧内字符数,接收方收到该字段就可以确定帧结束的位置。(计数字段提供的字节数包含自身所占的一个字节)
缺点:假如计数字段出错则收发双方将失去同步造成灾难,所以在有传输误码的数据信道上传输数据不能使用字符计数法来组帧;
2.2 字符填充法
也称为字符填充的首尾定界符法,使用一些特定的字符来定界一帧的开始与结束。为了使信息位中出现的特殊字符不被误判为帧的首尾定界符(SOH和EOT),可以在特殊字符(SOH EOT ESC)前面填充一个转义字符(ESC)来加以区分,以实现数据的透明传输。
2.3 零比特填充法
1)在发送端,扫描整个字节字段,只要连续5个 1,就立即填入一个0;
2)在接收端收到一个帧时,先找到标识字段确定边界,再用硬件对比特流进行扫描,发现连续5个1时,就把后面的0删除;
2.4 违规编码法
物理层使用比特编码时链路层常常采用违规编码法组帧,比如物理层使用曼彻斯特编码1为“高-低”电平对,0为“低-高”电平对,“高-高”和“低-低”没有使用称为违规,可以使用这些违规编码组成的序列来定界;
局域网802就是用的违规编码法组帧;
违规编码法不需要使用填充技术可实现透明传输,但是只适用于采用冗余编码的环境;
3.差错控制
校验码主要用于链路层实现差错控制;
(1)一般地,奇偶校验在数据左边增加校验位,CRC在数据右边增加校验位
(2)校验码指的是既能够发现错误又能够纠正错误
3.1 汉明码
注意:P3读4位,P4读8位;
3.2 CRC
数据链路层总是将CRC放在尾部原因:
- 便于发送方硬件电路边发送边累加计算CRC校验和,最后追加到尾部;
- 便于接收方硬件电路边接收边累计计算CRC校验和,最后与尾部CRC比较;
3.3 模2除法
该除法常用于计算CRC的校验位
4.流量控制&可靠传输
数据链路层的流量控制和可靠传输是交织在一起实现的;
流量控制指的是对链路上的帧的发送速率进行控制,基本方法是由接收方控制发送方发送数据的速率;
数据链路层的可靠传输通常使用确认机制和超时重传机制实现;
4.1 协议1-无限制“乌托邦”单工协议
特点:
数据单向传送;
收发双方的网络层都处于就绪状态(随时待命);
处理时间忽略不计(瞬间完成);
可用的缓存空间无穷大(无限空间);
假设信道永远不会损坏或者丢失帧(完美通道);
4.2 协议2-无错信道上的单工“停-等”协议
问题:如何避免收方被涌入的数据淹没,即取消“接收方允许无限量接收(缓存无限大)”的假设,这种延缓就是流量控制的一个例子;
解决方法:收方回发一个哑帧ACK,接收方收到哑帧,表明收方允许接收数据,此时再次发送下一帧数据;
协议2实际上是半双工协议;
4.3 协议3-有错信道上的单工“停-等”协议
问题1:数据帧或确认帧在途中丢失将如何解决?
解决方法:使用定时器超期重传
问题2:有可能收到重复帧,如何解决?
解决方法:给每个帧一个独一无二的序列号seq;序号也用来重组排序
基本工作机制:发送方每发出一个帧,启动一个重传定时器;超时前,如果收到收方的确认,拆除定时器;超时还未收到确认,发送方重传帧并重置定时器
==============================上面的几种协议的信道利用率都极低==============================
有如下方法可以提高信道利用率:
(1)全双工
(2)捎带确认
捎带确认的作用:进一步减少确认帧
捎带确认:将确认暂时延迟以便可以钩到一个外发的数据帧上一起发送。若无法“捎带”,当一个控制捎带确认的计时器超时后,单独发确认帧。
(3)批发数据
停—等协议是每收到一个确认才能发送下一帧,发送端等待时间太长,网络通信效率不高。为了提高效率,可以在等待的时间继续发送数据帧(加大发送窗口),这样大大减少了浪费的时间。
下面这几种协议就是具备上述优点的协议
4.4 协议4-1位滑动窗口协议
本质上就是全双工的停-等协议,引入超时重传机制实现无差错,双工通信环境下引入ACK0和ACK1防止帧重复ACKseq;
发送窗口:W=1
接收窗口:W=1
4.5 协议5-回退n帧协议
发送方连续发送帧至发送窗口满;接收窗口大小为1,对出错帧不确认,这将引发超时,发送方超时重传,从未被确认帧开始;
并且引入累计确认机制,ACKn表示接收方正确收到n号帧及以前的所有帧;
发送窗口:1≤ W ≤ 2^n-1(n为seq的位数)
接收窗口:W=1
注意:这个地方很容易踩雷,
假如题干说发送窗口大小为32,则需要至少n等于6才行,不要用MAX_SEQ来解题,(使用序列号seq位数n解题永远不会错);
还有一个知识点关于发送窗口的上边界和下边界(即准备发送的数据在窗口内的大小),假设发送窗口上边界对应的帧序号为U,下边界对应的帧序号为L,发送窗口最大为W,则有如下不等式成立:0<=U-L+1<=W
4.6 协议6-选择重传协议
接收窗口存储除差错帧外的所有正确帧(故需要加大接收窗口);发送方只重传差错帧;接收方接收到重传帧,并按正确顺序将分组提交网络层;
且增加NAK机制:若接收方怀疑收到坏帧则直接发送一个NAK要求发送方对NAK中指定的帧进行重传;
取消累计确认机制,收到哪个帧就回发对应的ACK,不具备累计确认功能;
发送窗口:1≤ W ≤ 2^(n-1)
接收窗口:1≤ W ≤ 2^(n-1)
一般地,接收窗口等于发送窗口大小,当两者取最大值时有WR=WT=2^(n-1);
硬性的,接收窗口WR+发送窗口WT<= 2^n;
回退n帧:发送方需要较大的缓冲区,以便重传,适于信道出错率较少的情况;
选择重传:接收方需要较大的缓冲区,以便按正确顺序将分组提交网络层,适于信道出错率较高的情况;
注意:数据链路层的滑动窗口协议和传输层的滑动窗口协议区别在于数据链路层的滑动窗口大小一旦确定则在整个传输过程中都固定不变;
4.7 流控协议的信道利用率
信道利用率是对发送方而言,指发送方在一个发送周期(发送方从开始发送数据到收到第一个确认帧为止)的时间内,发送的有效数据(ACK不算有效数据)所用时间占整个发送周期时间的比率;
假设发送周期为T(第一个帧的传输时延+第一个帧的传播时延+确认帧的传输时延+确认帧的传播时延),在该周期T内发送了L比特的有效数据,发送方的数据传输速率为C,则信道利用率为(L/C)/T;
题干中若问到,要使信道利用率最高,其中一层含义就是L默认以最小帧长进行发送(众说纷纭,其中一个说法是因为短帧的额外开销更小,类似于分组和报文的区别);
(1)停止等待协议的信道利用率:假设L为数据帧长度,C为发送方数据传输速率,R为单程传播时延
$$
信道利用率=(L/C)/(L/C+2R)
$$
这里我们需要注意题干是否说明了接收方发送的确认帧的长度是多少,如果很小或者直接说短帧其传输时延忽略则计算公式同上,如果无法忽略假设接收方发送确认帧需要花费时间N,则
$$
信道利用率=(L/C)/(L/C+2R+N)
$$
(2)后退N帧协议的信道利用率:
回退N帧的特点是在收到确认帧之前-即在发送周期T内可以传输不只一个帧,所以计算方法一般是先利用(L/C+2R)或(L/C+2R+N)计算出发送周期,再根据题干计算得到一个T内能发送多少帧,
常见的描述还有,若回退N帧的发送窗口大小为1000则在收到第一个数据的确认之前能最多发送1000个数据帧;
(3)信道吞吐率
$$
信道吞吐率=信道利用率*发送方的发送速率
$$
5.MAC层——媒体接入控制
介质访问控制(MAC):也称为媒体接入控制,为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,协调活动结点的传输;
常见介质访问控制方法:信道划分介质访问控制(静态划分)、随机访问介质访问控制(动态划分)以及轮询访问介质访问控制(动态划分);
尽管媒体接入控制可分为静态划分信道和动态接入控制,但是所有传统的(不包括STDM)静态信道分配方法都不适应突发性的流量(静态信道划分通常在无线网络的物理层中使用而非数据链路层);
5.1 信道划分MAC
多路复用是实现信道划分介质访问控制的途径,静态划分信道必然不会发生冲突;
(1)FDM:频分多路复用,为了防止子信道之间的干扰相邻信道需要“保护频带”(ADSL和802.11都使用了这种技术),适用于传输模拟信号;
(2)TDM/STDM:时分复用/统计时分复用,适用于传输数字信号——因特网使用的是【统计时分复用】,适合传输具备突发性的计算机数据;
(3)WDM:波分多路复用,也就是光的频分多路复用,在一根光纤中传输多种不同波长的光信号;
(4)CDM:码分多路复用,采用不同的编码来区分各路原始信号的一种复用方式,既共享信道的频率又共享时间,主要用于无线通信系统;
(5)CDMA:码分多址,是CDM的一种实现,基本思想为需要发送比特1时站点发送码片序列代替,需要发送比特0时站点发送码片序列的反码代替;
规定两个站的码片序列一定要正交也就是规格化内积为0(只要正交则反码也正交),这里我们是将码片序列作为向量来进行计算的;
假设 向量A为站点A的码片,向量B为站点B的码片,当站点A和站点B都需要给站点C发送数据时,两者的向量在公共信道上就是A+B(向量对应位置线性相加),
C收到A+B后进行计算,A(A+B)得到A发送的数据,B(A+B)得到B发送的数据(这里不是乘法,是规格化内积,内积的意义在于结果要么是1要么是-1);
5.2 随机访问MAC
为解决随机接入发生的碰撞,每个用户需要按照一定的规则反复重传它的帧,直到该帧无碰撞的被接收,这些规则就是随机访问MAC协议;
这些协议的核心思想都是:胜者取得信息的发送权,故这些协议也称为争用型协议,也就意味着肯定会产生冲突;
各个结点既不共享时间,也不共享空间;
5.2.1 ALOHA协议
(1)纯ALOHA协议
想发就发任何一个站都可以在帧生成后立即发送(可能冲突),并通过信号的反馈,检测信道,以确定发送是否成功。如发送失败(在一段时间内未收到确认),则经随机延时后再发送。如果发送失败,经过随机延时之后再次发送;
(2)时隙ALOHA协议
在纯ALOHA的基础上,将所有站的时间同步起来,将时间划分为等长的时隙并规定所有的站只能在每个时隙开始时才能发送一个帧(也就是规定只能在起跑时间起跑),避免站点发送数据的随意性减少碰撞发生;
5.2.2 CSMA协议
在ALOHA的基础上增加了载波侦听装置,所谓载波监听-CSMA即每一个站在发送数据/帧之前先要检测一下总线上是否有其他计算机/站点在发送数据,如果有,则暂时不要发送数据,以免发生碰撞;
(1)1-坚持CSMA
站点侦听到信道忙后,持续侦听信道;一旦侦听到信道空闲立刻发送帧数据;
(2)非坚持CSMA
站点侦听到信道忙后,放弃侦听,等待随机时间后再次侦听,一旦侦听到信道空闲立刻发送帧数据;
(3)p-坚持CSMA
是1-坚持CSMA和非坚持CSMA的折中,持续侦听(无论信道是否空闲),当信道空闲时有概率p发送数据,概率1-p推迟在下一个时隙发送(注意下一个时隙空闲才能成功发送,否则还是会碰撞);
(4)*CSMA/CD
是CSMA协议的改进方案;
工作流程可以简化为“先听后发,边发边听,冲突停发,随机重发”
注意:
CSMA/CD中的站不可能同时进行发送和接受,因此采用CSMA/CD协议的以太网不可能进行全双工通信,而只能进行半双工通信;
理想的情况下,发送帧的主机发送完信号后需要持续对该信号进行碰撞检测(但CSMA/CD边发边听,发完就不听,所以在后面我们规定了最小帧长),如果经过争用期2t这段时间还没有检测到碰撞,才能肯定发送不会产生碰撞(检测迎面碰撞是否产生),于是确保发送信号安全到达目标端;
根据争用期的概念,为了防止争用期过长限制了以太网总线长度不能超过2500m,同时为了保证能够在边发边听的时间>=争用期,规定以太网的最小帧长为64字节;而为了防止某个站点长时间发送一个超长的帧,以太网规定最大帧长为1518字节;
最短帧长的计算公式:
$$
最短帧长=2*传播时延 数据传输速率
$$
退避时间的算法这里使用的是截断二进制指数算法,退避时间=基本退避时间随机数r;基本退避时间选择争用期2t,随机数r是离散整数集合[0,1,2…(2^k-1)]中的某个数,k=Min{当前重传次数,10};该算法可以使得重传需要推迟的时间随重传次数增大而增大,当重传16次仍然不能成功时直接丢弃不重传了;
(5)CSMA/CA
在无线局域网中,即使在发送过程中发生了碰撞也要把整个帧发送完毕,这与有线局域网中发生冲突立刻停止发送数据不同;
无线局域网中,碰撞发生在接收的时候而不是发送时,谁都无法检测到碰撞,所以不再采取碰撞检测CD,而是碰撞避免CA;
CSMA/CD常用于有线连接的局域网(总线型以太网),而无线局域网的环境下碰撞检测CD会出问题;
CSMA/CA将碰撞检测修改为碰撞避免,使用预约信道、ACK帧、RTS/CTS帧等三种机制实现避免碰撞;
基本思想就是发送数据时广播告知其他站点不要在某段时间内发送数据,碰撞避免并不意味着完全不会发生碰撞;
CSMA还引入了两种帧间间隔,分别是短帧间间隔和DCF帧间间隔,此处的帧间间隔意思为站点检测到信道空闲后还需要等待一段时间才能发送帧;
信道预约:提前用一个很短的,不容易发生碰撞的帧(RTS),通知好接收方/目的站,一会的一段时间内只和我通信,不要理会别人;
虚拟载波监听:基于信道预约实现,RTS CTS 数据帧都会携带通信持续时间,所以站点只要监听到这三种帧的任意一个就可以知道持续时间,不需要监听真正的信号;
5.3 轮询访问MAC
轮询访问中站点不能随机发送消息,需要通过一个集中控制的监控站以循环方式轮询每个站点再决定信道的分配;轮询访问MAC也属于无冲突协议;
轮询访问既不共享空间也不共享时间;
(1)位图协议(预留协议)
如有N个站点共享信道,编号为0 ~N-1,其竞争周期将分为N个时隙,每个站点占有一个时隙,如某站准备发送,则可在属于它的时隙内填入1,一个竞争周期后,则将按顺序发送,不会产生冲突
(2)令牌传递
抓取到令牌的工作站可以发送一帧。除了环,令牌也可以运行在其它拓扑上,但是,令牌在设备间的传递通路逻辑上必须满足是一个环。
优点是无论网络负载如何,令牌网都不会产生冲突;
(3)二进制倒计数协议
把站号按相同长度的二进制数编号,需要发送的站逐个按高位到低位在争用周期开始时竞争,凡低序号的站点发现有高序号站点也希望发送,则退出竞争
仲裁规则:高序号站点优先 1010>1001>0100>0010
5.4 CSMA/CD协议的信道利用率
注意这里的又稍有不同,为了使信道利用率最大我们应当使得以太网端到端距离尽量小而以太网帧尽量长;
6.局域网MAC地址格式
(1)基本概念
使用点对点信道的数据链路层不需要MAC地址,使用广播信道的数据链路层必须使用MAC地址来区分各主机;
MAC地址又称为硬件地址或物理地址(注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴);
MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识(也就是说一台电脑有多个网卡或交换机有多个接口则具备多个MAC地址);
【MAC地址】长6字节,由连字符号分割的12个十六进制数,共6组(一组一个字节,2个十六进制数一个字节,故一组两个十六进制数),表示如01-60-8c-e4-b1-21,高24位为厂商代码,低24位为厂商自行分配的网卡序列号;
(2)以太网的MAC帧
前导码:也就是802.3的前同步码
前同步码,7字节,实现接收端与发送端时钟同步;
帧开始定界符:表示后面开始是MAC帧;
帧检测序列:用于校验帧的Data部分、目的地址、源地址和类型字段,不校验前导码和帧起始
注意:MAC帧不需要帧结束定界符,以太网规定了最小帧间间隔为96比特,只需要从帧开始定界符其后面连续到达的比特流都属于同一个MAC帧;
MAC不是不需要尾部!帧必须有首部和尾部,尾部由校验码FCS填充;
7.广域网协议
PPP协议和HDLC协议是目前最常用的两种【广域网】数据链路层协议;
7.1 PPP协议
【面向字节】的协议,用于直连在两个结点的链路上;
主要有三部分组成:链路控制协议、网络控制协议以及封装成帧的方法;
PPP协议是不可靠面向连接的协议,提供差错检测但不提供纠错功能,也就是只保证无差错接收(坏帧直接丢弃)不保证可靠传输;
仅支持全双工点对点链路;
注意(实在觉得误导就不要纠结这个题了):
(1)首先对等实体之间的通信必须使用相同的协议;
(2)两个网络使用某种设备互联后,设备可以屏蔽设备所在层及以下层(互联的意思就是两个对等实体之间可以互相传送数据)
如果不需要保证设备层以上的设备可以通信,则只需要保证设备层及以下层的协议相同即可;
如果要保证能够在设备层以上的层可以进行通信,则只需要保持设备层以上的各层协议相同而无需考虑设备层以下的协议是否相同(按理来说设备下的层协议应该也是需要相同的,但是考点在于屏蔽);
(3)PPP协议允许上层使用多种网络层协议;
(4)两个结点直接通过链路层互联,则链路层之间的通信必须使用相同的数据链路层协议以及相同的物理层协议;
(5)两个结点直接通过路由器互联,则使用应用层通信只需要保证应用层和传输层协议相同即可;
7.2 HDLC协议
高级数据链路控制协议;
【面向比特】的协议,使用比特填充法实现透明传输,全双工通信(注意不是应用层的DHCP协议),提供可靠传输;
8.数据链路层设备
8.1 网桥
也称为桥接器,工作在数据链路层,将两个LAN(局域网)连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”:
- 它根据 MAC 帧的目的地址对收到的帧进行转发和过滤;
- 当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃(这句话描述交换机就完全正确,但是网桥只有两个端口所以不太严谨);
网桥和交换机的区别:
交换机的功能体现出不仅仅是一个网桥的功能,而是多个网桥功能的集合;
由于交换机能够支持多个端口,因此可以把网络系统划分成为更多的物理网段,这样使得整个网络系统具有更高的带宽。而网桥仅仅支持两个端口,所以,网桥划分的物理网段是相当有限的;
交换机与网桥数据信息的传输速率相比,交换机要快于网桥;
用交换机或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id(中继器同样连接的只是网段);
8.2 交换机
(1)基本概念
工作在第二层(数据链路层),比HUB智能一些,它能分辨数据帧中的源MAC地址和目的MAC地址,能建立任意两个端口之间的联系,但是交换机只懂得MAC地址,并不清楚IP地址;
本质上就是多端口网桥;
【全双工模式】——所以以太网的交换机根本不使用CSMA/CD协议;
独占传输媒体的带宽,不会像中继器一样均分带宽(这就导致10bps的交换机有8个端口则整体带宽为80bps而非1.25bps);
VLAN(虚拟局域网)就是交换机实现的,既可以隔离冲突域也可以隔离广播域(交换机只能隔离冲突域);
(2)交换机的自学习&转发帧
交换表的格式:MAC地址 端口号 时间戳
交换机的自学习和转发帧是相互交织进行的;
======================自学习&转发帧过程======================
当收到一个MAC帧:
a)首先会解析MAC帧的源MAC地址
- 如果源MAC地址不在交换表中,则将该项添加进入交换表中:MAC地址为源MAC地址,端口号为接受该MAC帧的端口,时间戳为当前时间;
- 如果源MAC地址在交换表中,则更新相应项的时间戳;
b)接着会解析MAC帧的目的MAC地址
- 假如目的MAC地址在交换表中存在且交换表中记录的端口与帧的进入端口不同,则根据交换表转发到指定端口,否则丢弃该帧;
- 假如目的MAC地址在交换表中不存在,则洪泛转发该MAC帧(除了帧进入的接口);
注意:
交换机的自学习(目的MAC地址不在交换表中)是使用的洪泛广播,但是转发帧的时候(目的MAC地址在交换表中)是单独选择某个端口进行转发;
交换机会定时扫描交换表中的每一项的时间戳,超过规定的时间则删除该项;
(3)交换机的两种交换模式
-直通式交换机仅检查帧的目的地址后马上转发出去,速度快、安全性低、不支持不同速率的端口交换;
-存储转发式交换机将帧缓存并检查帧是否正确,确认无误后转发,延迟大、可靠性高、支持不同速率间的交换;
网络层(四)
1.概念辨析
(1)异构网络:指传输介质、数据编码方式、链路控制协议、不同数据单元格式以及不同转发机制,简单来说【异构网络】是指【数据链路层】和【物理层】都不同;
(2)路由器的路由表主要包含:目的网络的IP地址,以及要到达该目的网络要经过的下一个路由器的IP地址(尽管修改的是MAC地址,但是路由表中存的是IP地址,称为从目的网络到下一跳的映射)和本路由器的某个转发接口;
(3)路由选择分为直接交付和间接交付(路由选择基于路由算法实现),发送站与目的站在同一个子网时(子网掩码相同)使用直接交付(也就是下一跳为本路由器的某个转发端口),反之使用间接交付(即下一跳为下一个路由器的IP地址)——直接交付不涉及路由器(这句话只能当定理背诵,应该说【可以】不涉及路由器),间接交付一定涉及直接交付(间接交付的最后一步就是直接交付)
2.路由算法
根据能否随网络的通信量或拓扑自适应地进行调整变化可将路由算法分为静态路由算法和动态/自适应路由算法,而常见的动态路由算法又分为距离向量路由算法和链路状态路由算法;
常见的距离向量路由算法为RIP,使用跳数作为距离向量;不常见的距离矢量算法可能会使用延迟作为距离;无论用什么做距离,最后传送的都是类似于向量的东西(1,2,3,4,5)表示到5个目的网络的距离分别是1,2,3,4,5;
常见的链路状态路由算法为OSPF;
2.1 RIP协议
这是一个应用层协议,用UDP传送数据;
(1)RIP与OSPF相比的特点:
路由器仅和【相邻】的所有路由器交换信息;
路由器之间交换的信息是当前路由器的路由表(已知的全部信息);
按照固定时间间隔交换路由信息;
(2)工作流程:
路由器C将自己的路由表传给D,D收到后对该路由表进行改造,分别对C路由表中的距离+1后,若符合更新规则则更新自己的路由表;
举例说明其中一种情况:
发现新网络,D必须更新;
旧网络,相同下一跳,则D必须更新(因为是最新消息);
旧网络,不同下一跳,若通过C到达目的网络的距离小于D经过其他路由器到达目的网络的距离(新路由优势),则D更新对应条目信息;
旧网络,新路由劣势,不更新
旧网络,不同下一跳,距离相同,添加使其负载均衡;
(3)坏消息传得慢
出现这种情况是因为RIP因为其自身性质导致收敛速度慢(固定周期才交换一次信息,而且传的是完整的路由表开销特别大,距离矢量本身就不可避免这种问题);这也称为慢收敛,其中一种情况就是坏消息一直在两个路由器之间互相传送一直到路由表更新为16(若不规定16是不可达状态则永远都不会收敛)才会收敛;
2.2 OSPF协议
这是一个【网络层】协议(这一点是有争议的,实际上OSPF属于传输层,之所以说它是网络层协议是因为OSPF协议不经过UDP数据报传输,直接使用IP数据报传输);
(1)OSPF与RIP相比的特点:
路由器使用【洪泛】方法向本【AS中的所有】路由器发送信息;
路由器之间交换的信息是与本路由器相邻的所有路由器的链路状态或其他(已知的部分信息);
只有链路状态发生变化时才会发送路由信息;
使用负载均衡(处理本路由器到同一个目的网络有多条相同代价的路径);
OSPF为了防止洪泛的范围过大,在AS的基础上划分了更小的区域,同一个区域内的路由器知道本区域的网络拓扑结构,而对其他区域透明;
(2)OSPF并不会只发送完整的路由信息,它主要发送的信息有以下几种:
(3)工作流程
a)准备过程(建立全网同步的链路数据库):
相邻路由器之间周期性发送【问候分组】,维护邻居关系(尽管洪泛不考虑是否为邻居,但是链路状态的定义是邻居路由器以及相应链路的代价);
相邻路由器之间发送【数据库描述分组】(链路状态数据库实际就是该区域的网络拓扑结构,收敛状态下全网统一,后续用于迪杰斯特拉算最短路径,而这个数据库描述分组仅仅是一个简化版的数据库,只包含数据库的关键信息);
若R1对比R2发来的数据库描述分组发现自己缺少某些链路状态项目,则R1给R2发送【链路状态请求分组】;
R2将详细的链路状态项目封装在【链路状态更新分组】中并发送给R1;
R1收到后给R2发送【链路状态确认分组】;
b)工作过程:
每30min或链路状态发生变化时,路由器都会发送【链路状态更新分组】,收到该分组的其他路由器将洪泛转发该分组,并给该路由器发回【链路状态确认分组】,这称为新情况下的链路状态数据库同步;
c)构建路由:
每个路由站点根据自己的数据库用迪杰斯特拉构建最短路径图并更新自己的路由表即可;
d)总结:
考试过程中要求书写,OSPF基本工作过程主要包括以下5个步骤:
- 发现邻居,学习邻居地址;
- 测量到邻居的开销;
- 构造链路状态数据包LSP;
- 扩散LSP到区域中的所有路由器;
- 使用迪杰斯特拉算法计算路由;
(4)概念辨析
区域内路由器:区域内部的路由器;
区域边界路由器:连接两个区域的路由器;
主干路由器:主干区域中的所有路由器包括主干区域内部和主干区域边界;
AS边界路由器:连接两个AS的路由器;
2.3 BGP协议
基于TCP 的应用层协议;
并非寻找最优路径,只需要找到一条稍微好的路径就行;
基于路径向量算法;
BGP交换的路由信息不是路径上到某个路由器的下一跳,而是到达某个目的网络需要经过的各个AS序列;
3.层次路由
若网络规模过大则会导致路由算法过于复杂,CPU花费大量时间计算路由,所以因特网将整个互联网划分为许多AS自治系统;
内部网关协议IGP是一个AS内部使用的路由选择协议(路由选择协议基于路由算法实现的协议,如RIP OSPF),外部网关协议EGP是两个AS之间使用的路由选择协议(如BGP);
AS中的每个路由知道本区域内的路由细节,但是不知道其他区域的内部结构;
4.IP分组格式
首先要明确一点,IP地址和IP分组(也称为IP数据报)不是同一个东西,且我们所说的无论是IP地址还是IP分组都是IPV4的简称;IP分组格式里面是包含了源IP地址和目的IP地址的;
本章的重点也就是IPV4地址和IPV4分组格式相关,MAC地址并不作为考试重点了解即可;
IP分组主要分为首部和数据两部分,因为首部是规定了IP协议的实现,所以着重介绍其首部格式;
可能最后期末考试的协议分析题会考察IP协议,多注意在刷题中巩固,同时IP分组分片也是计算题的考点;
4.1 IP分组的首部格式
- 下图是IP数据报的首部格式,由【20字节】的固定部分和40字节的可变部分组成;固定部分是指每个IP数据报必须包含的部分,有些IP数据报的首部除了包含20字节的固定部分外还包含一些可选字段来增加IP数据报的功能;
- IP数据报的首部常以32个bit为单位进行描述,图中的每一行都由32个比特(也就是4个字节)构成,每个小格子称为字段或者域,每个字段或某些字段的组合用来表达IP协议的相关功能;
- IP数据报首部中有三个关于长度的标记,分别是首部长度(占4bit是指这个字段占4bit,但是它表示的长度一定是4B的整数倍),总长度(占16bit,单位为1B),片偏移(占13bit,单位为8B);
- IP数据报的【首部长度】表示的数据一定是4字节的整数倍,因为首部中的可选字段的长度从1个字节到40个字节不等,则当20字节的固定部分加上1到40个字节长度不等的可变部分,会造成首部长度不是4字节整数倍时,就用取值为全0的填充字段填充相应个字节,以确保IP数据报的首部长度是4字节的整数倍;
- IP数据报在传输过程中经过多台路由器,则源主机发出的IP数据报和目的主机收到的IP数据报的首部不同之处在于TTL字段和首部校验和字段;
4.2 IP分组分片
IP分组格式中标识、标志、片偏移共同用于IP数据报分片
假设现在有一个IP分组,首部长度20B,数据部分长度3800B,则总长度为3820B,在数据链路层需要使用以太网传输该IP分组,但是众所周知以太网帧的MTU为1500B,也就是数据载荷部分最多能够装的IP分组的长度为1500B,所以没办法封装3820B的IP分组;
注意:
尽管我们在计算的时候是用的3820B即数据长度+首部长度,并且假如IP分组的长度小于MTU则确实是把这整个IP分组都封装进帧的数据载荷部分了;但是分片时是先将原首部丢弃,仅对数据部分进行分片,接着为每个分片添加新的IP分组首部使之成为新的完整的IP分组;接着再将分片封装在帧的数据载荷部分中;
我们来看如何对3820B的IP分组进行分片以及首部相应字段的值:
注意:
片偏移的计算方式就是用本分片的第一个字节的序号除以8(因为片偏移以8B为单位)
5.IP地址
5.1 IPV4
我们常说的IP地址都是指的IPV4地址
$$
IP地址=<网络号字段><主机号字段>
$$
$$
IP地址=<网络号字段><子网号字段><主机号字段>
$$
简单的区分分类编址的IPV4方法是看点分十进制的第一个十进制数,A类网络0127共128个十进制,B类网络128191共64个十进制(并不是64个网络),C类网络192~223共32个十进制;
5.2 CIDR
无分类域间路由选择CIDR消除了传统的A B C类地址以及划分子网的概念(地址掩码不是子网特有概念所以还是存在);引入了超网的概念;
注意,当让我们根据某一个CIDR地址块给出其全部细节时,我们最后的结果比如最小地址等都需要再转换为点分十进制表示;
CIDR的一个重要概念就是聚合超网——减少路由记录对路由表的占用
方法是找共同前缀,这5条记录的共同前缀共22个比特,将共同前缀保持不变作为网络前缀,剩余十个比特全部取0,写为点分十进制,得到聚合后的地址块(超网)172.1.4.0/22
5.3 IPV6
IPV6将32位的IPV4扩充到128位;
一般意义上来说IPV6不允许分片;
IPV6数据报首部长度必须是8B整数倍,IPV4数据报首部长度是4B整数倍;
IPV6地址的书写方式为每4位用一个十六进制数表示(4个二进制数对应1个十六进制数),每16位(两字节)冒号分隔,共8组,如4BF5:324F:0987:ACD3:4BF5:324F:0987:ACD3
6.常见协议
6.1 ARP协议
ARP协议是网络层的协议,解决如何通过网络层的IP地址找到其对应的MAC地址;
ARP协议只能在同一段链路或网络上使用,广播帧会被路由器屏蔽;
6.2 DHCP协议
动态主机配置协议;
DHCP协议是TCP/IP协议体系应用层中的协议,使用运输层的UDP提供的服务(DHCP报文在运输层会被封装成为UDP用户数据报),
封装有DHCP报文的UDP用户数据报在网络层会被封装成IP数据报,接着根据使用的网络接口封装成相应的数据链路层的帧进行发送
6.3 ICMP
网际控制报文协议,常用的ping和tracert命令都涉及ICMP协议;
ICMP协议是网络层的协议,实现更有效的转发IP数据报和提高交付成功的机会;
ICMP报文被封装在IP数据报中发送;
网络中的【主机】或者【路由器】使用ICMP协议来发送【ICMP差错报文】或【ICMP询问报文】;
7.网络层设备
路由器的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口;
路由器的转发表有2个项目:目的网络IP地址、下一跳IP地址;
交换机的交换表有3个项目:目的MAC地址、端口号、时间戳(用于删除超时项);
路由表总是用软件实现,转发表由路由表得出,转发表可用软件也可用硬件实现;
分组的实际转发依靠转发表而非路由表,路由协议改变的是路由表进而影响转发表;
转发仅涉及一个路由器,路由选择涉及多个路由器;
运输层(五)
1.概念辨析
(1)运行在计算机上的进程使用进程标识符PID来标识;为了使运行不同操作系统的计算机的应用进程之间能够进行通信,使用统一的TCP/IP协议的应用进程标识符——端口号而非PID;
(2)传输层的功能:
传输层属于面向通信部分的最高层(但它不属于通信子网),同时也是用户功能中的最底层;
传输层根据首部中的校验和对报文进行差错检测(首部和数据部分),应用层同样会进行差错检测但仅检测首部;
(3)
传输层的复用,指的是发送方不同的应用进程都可以使用同一个传输层协议传送数据;
传输层的分用,指的是接收方的传输层能够根据首部的信息,在去除传输层报文的首部后能够把数据部分正确的交给目的应用进程;
网络层的复用,指的是不管是使用UDP协议封装成的UDP用户数据报还是使用TCP协议封装成的TCP报文段,在网络层都需要使用IP协议封装成IP数据报,也称为IP复用;
网络层的分用,指的是接收方的网络层收到IP数据报后进行IP分用,若IP数据报首部中协议字段的值为17则把IP数据报的数据载荷部分所封装的UDP用户数据报上交运输层的UDP;若协议字段为6则将封装的TCP报文段上交TCP;
(4)端口号只具备本地意义,只标识本计算机应用层中的各个进程
-服务端使用的端口号,分为熟知端口号(01023)和登记端口号(102449151);
-客户端使用的端口号(49152~65535),这类端口号又称为短暂端口号;
(5)套接字
$$
套接字=<主机IP地址><端口号>
$$
在网络中采用发送方和接收方的套接字组合来识别端点之间的通信;
一个套接字唯一的标识了网络中的一台主机和其上的一个应用进程;
2.TCP
2.1 TCP的基本概念
TCP提供面向连接和可靠传输服务,面向连接是指三握手和四挥手,可靠传输服务是指增加额外的开销处理确认、流量控制、计时器及连接管理等;
每条TCP的连接只能是一对一,一条TCP连接只能连接两个端点;
TCP提供全双工通信,接收方和发送方都设置有缓存;
TCP面向字节流,这正是TCP实现可靠传输、流量控制、以及拥塞控制的基础;
- TCP会把应用进程交付下来的数据块看作是一连串无结构的字节流,TCP并不知道这些待传送的字节流的含义(同时也不存在报文边界的概念了),仅将字节编号,并存储在自己发送缓存中;TCP会根据发送策略,提取一定量的字节构建TCP报文并发送
TCP报文段既可以传送数据(功能类似UDP数据报),也可以用于建立、释放连接以及应答;
2.2 TCP报文段格式
一个TCP报文段由首部和数据载荷两部分构成,首部的前20B是固定的,可增加的可选选项通常长度为4B的整数倍;
其最小长度为20字节(仅包含首部固定部分),最大长度为60字节,这是因为TCP要实现可靠传输、流量控制、拥塞控制等服务,因此其首部会比较复杂,进而首部中的字段会比较多;
序号seq:因为TCP面向字节流(传输时逐个字节传送),所以TCP连接传送的数据流中的每个字节都有一个序号,序号字段的值表示报文段发送的数据中的第一个字节的序号;
确认号ACKseq:在确认报文段中,确认号为N表示到序号N-1为止(注意这里千万不要和数据链路层的累计确认混淆,这里的ACKseq不包括本身)的所有数据都正确收到;
确认位ACK:只有ACK=1时确认号字段才有效;
同步位SYN:SYN=1表示这是一个连接请求报文或连接接收报文;
终止位FIN:用于释放连接,FIN=1表示此报文段的发送方的数据已发送完毕,要求释放连接;
接收窗口rwnd:用于流量控制,指出允许对方发送的数据量(也可以理解为接收方缓存还剩多少),单位为字节,其大小与网络的带宽和时延密切相关
2.3 TCP连接管理
2.3.1 三握手
- TCP 连接的建立采用客户服务器C/S方式;
- 主动发起连接建立的应用进程叫做TCP客户(client)。
- 被动等待连接建立的应用进程叫做TCP服务器 (server)。
“握手”需要在TCP客户端和服务器之间交换三个TCP报文段:
- 客户机的TCP向服务器的TCP发送一个【连接请求】报文段,不含应用层的数据(即连接请求报文不携带数据但仍消耗一个序号),首部中的SYN标志位置1,随机起始序列号seq=x;
- 服务器的TCP收到连接请求报文段后若同意建立连接则发送【连接接收】报文段,不含应用层的数据,SYN=1,ACK=1,ACKseq=x+1,随机起始序列号seq=y;(服务器的资源在第二步分配)
- 客户机接收到连接接收报文段后还要给服务器发送【确认】,可以携带数据,SYN=0,ACK=1,ACKseq=y+1,seq=x+1;(客户端的资源在第三步分配)
最后一个普通TCP确认报文段并不多余,这是为了防止已失效的【连接请求】报文段突然又传送到了TCP服务器,因而导致TCP服务器一直在连接状态等待确认浪费资源;
2.3.2 四挥手
- 参与TCP连接的两个进程中的任何一个都能终止该连接
“挥手”需要在TCP客户端和服务器之间交换四个TCP报文段:
- 客户机准备关闭连接,向服务端发送【连接释放】报文段并停止向服务器传输数据,FIN标志位置1,seq=u(不是随机的,等于前面已经发送的最后一个字节的序号+1),可以不携带数据,同时还要确认从服务器收到的前v-1个字节都是正确的即ACKseq=v,ACK=1;
- 服务器收到连接释放报文段后发回【确认】,ACKseq=u+1,seq(自己的序号)=v(等于前面已经发送的最后一个字节的序号+1),且确认收到了客户端的前u个字节;(此时客户端到服务器的连接就释放了,TCP连接处于半关闭状态)
- 服务器如果没有要发送的数据,向客户机发送【连接释放】报文段,字段含义类似1、2;
- 客户机收到后发回【确认】;
2.4 TCP流量控制
在此之前我们先辨析TCP流量控制和拥塞管理的区别(网络层没介绍流控和拥塞控制,这是因为我们使用的无连接IP协议根本无法获取传输线路上的流量和拥塞情况,所以使用IP协议的网络层无法实现流控和拥塞控制):
- 流量控制解决的是发送方和接收方速率不匹配的问题;拥塞控制解决的是避免网络资源被耗尽的问题;
- 流量控制是通过【滑动窗口】来实现的;拥塞控制是通过【拥塞窗口】来实现的;
- 流量控制解决的是发送方和接收方速率不匹配的问题,发送方发送过快接收方就来不及接收和处理。采用的机制是滑动窗口的机制,控制的是发送了但未被ACK确认的包数量。
- 拥塞控制解决的是避免网络资源被耗尽的问题,通过大家自律的采取避让的措施,来避免网络有限资源被耗尽。当出现丢包时,控制发送的速率达到降低网络负载的目的。
但是拥塞控制和流量控制还是有相似之处:
- 两者都通过控制发送方的发送速率来达到控制效果;
接着我们辨析数据链路层的流控和运输层的流控的区别:
- 传输层定义端到端用户之间的流控,数据链路层定义两个中间相邻结点的流控;
- 传输层窗口大小可以变化,数据链路层的窗口大小固定;
注意:即使接收窗口为0也必须接收零窗口探测报文段
2.5 TCP拥塞控制
$$
TCP发送方的发送窗口swnd大小=Min[自身的拥塞窗口rwnd大小,TCP接收方的接收窗口cwnd大小]
$$
2.5.1 慢开始&拥塞避免
两个变量:
- 拥塞窗口(cwnd):未执行拥塞避免时,每经过一个传输轮次,拥塞窗口cwnd就加倍,窗口大小按指数增加;执行拥塞避免时(拥塞窗口大小到达慢开始门限)窗口大小加法增大;
- 慢开始门限(ssthresh):防止拥塞窗口增长过大引起网络拥塞而设置的临界值
常见考点是给出接收窗口大小(如24KB),给出RTT=5ms,问在最大数据段长度为1KB的无拥塞线路上使用慢启动,需要多长时间才能填满发送满窗口的数据
这种题考点的就是1->2->4->8->16->32这个过程一共花费多长时间(5*5=25ms),注意24KB只是一个界限,它的发送满窗口数据意思就是一次性发大于24KB的数据;
2.5.2 快重传&快恢复
实际上这两种方式都是为了优化慢开始&拥塞避免的不足而提出的优化方法;
2.6 可靠传输
TCP的可靠传输保证接收方的字节流与发送方的字节流完全一样,TCP使用校验、序号、确认、重传等机制实现可靠传输;
3.UDP
3.1 UDP基本概念
UDP提供无连接和不可靠服务,无连接指在数据传输之前不需要建立任何连接,让该信息的传递在网络上尽力而为的向目的地传送,不可靠指的是只进行差错检测,也没有利用确认机制;
UDP因为采用无连接所以支持一对一,一对多,多对一和多对多;
UDP仅在IP的服务上多提供两种附加服务:多路复用和差错检测(只检测,错了就丢了),不使用流量控制和拥塞控制;
因为UDP是无连接的,所以可以不需要套接字(当然拥有套接字也没问题);而TCP因为客户端和服务端明显有区别,且面向连接,所以必须使用套接字,参考链接如下(8条消息) TCP/UDP 套接字总结_安东time的博客-CSDN博客_tcp套接字和udp套接字
因为UDP不保证可靠交付,所以所有维护传输可靠性的工作需要在应用层完成;
UDP是面向报文的,报报文是UDP数据报处理的最小单位,不可分割不可合并;
3.2 UDP数据报格式
一个UDP数据报由【首部】和【数据载荷】两部分构成,其首部仅有四个字段,每个字段长度为2字节
由于UDP不提供可靠传输服务,它仅仅在网际层的基础上添加了用于区分应用进程的端口,因此它的首部非常简单,仅有8个字节4个字段,每个字段2字节
源端口:
目的端口:
长度:整个UDP数据报的长度,最小值是8B(仅有首部);
校验和:传输层根据首部中的校验和对报文进行差错检测(首部和数据部分)
关于UDP使用校验和进行校验大概知道流程即可,一般不会考察计算:
UDP在发送给IP层之前需要添加校验和或者从IP层接收到报文需要使用校验和进行检测;
在发送给IP层之前需要经过计算得到校验和,将该值添加到校验和字段,计算方法为:在计算校验和时在UDP数据报前额外临时添加一个12B的伪首部,利用伪首部+首部+数据部分形成的新UDP数据报(此时首部中的校验和字段为全0因为还没计算出来);将计算得到的校验和填入校验和字段,接着去除伪首部将UDP数据报发送给IP层;
接收端利用校验和进行校验的方式类似,首先给UDP添加伪首部,接着对伪首部+首部+数据部分的新UDP数据报进行二进制反码求和;
因为伪首部模仿的IP首部,所以伪首部中包含了IP数据报的源IP地址和目的IP地址;
同时注意因为UDP数据部分不是偶数个字节添加的全0填充位在最后是不发送的,要去掉(因为这是数据部分!不能擅自修改数据部分,在首部添加填充位如IP是可以接受的);
4.服务质量QoS(Quality of Service)
在传统的计算机网络中,网络设备对于数据包的处理方式都是相同的,平等的对待所有的数据流量。但是,随着计算机网络规模的扩大和网络服务多元化的扩充,部分网络应用程序对网络设备和数据包转发提出了更高的要求。为了满足这些特殊应用程序的数据流量转发,因此提出了QoS的概念;
QoS是网络中管理数据流的可用带宽、延迟、抖动以及分组丢失的技术集合,赋予不同类别的网络流量(我们将应用程序相关在网络中称为网络流量)以不同的服务质量;
QoS只有在网络中存在瓶颈的时候才能起到作用。因为如果没有瓶颈,就意味着没有丢包、没有消息队列,也就无从优化了;
需要知道的是,对于计算机网络来说,在一段时间内其性能一般不会变化,因此,保证一部分网络流量的服务质量本质上是对其他类型的网络流量的损害。
4.1 QoS的衡量指标
文章参考:(11条消息) 浅谈QoS——QoS概述_永远是少年啊的博客-CSDN博客_计算机网络qos
在一般情况下,判断网络的质量通常有以下四种指标:
(1)带宽
-端口带宽,即端口转发数据包的速率;
-端到端带宽,就是指网络通信的双发能够通信的最大带宽;端到端带宽遵循木桶原理,即端到端带宽是由两端设备路径上的最小带宽决定的。比如PC1要和PC2通信,他们之间要经过R1、R2路由器,如果PC1到R1的带宽为10M,R1到R2的带宽为100M,R2到PC2的带宽为64K,则我们说PC1到PC2的端到端带宽为64K;
(2)时延
$$
端到端总时延 = 发送时延 + 传播时延 + 处理时延 +排队时延
$$
(3)抖动
抖动与时延有关,但是又略有区别。所谓抖动,就是网络设备在发送数据包流量时的不均衡特性;
在一般的网络中,网络流量并不平稳,可能某段时间网络流量为10M/S,可能在另一段时间网络流量为100M/S,抖动就是衡量网络流量不均衡性的度量;
(4)丢包
在网络拥堵的时候,我们可能会发现,网络会出现丢包现象(网络设备对某些数据包不予转发,直接丢弃)。
一般而言,引起丢包的可能性有两点:
一是网络设备自身的软件队列和硬件队列都已经被数据包填满,此时若还有数据包发送进来,则网络设备将不能处理多余的数据包,此时就会发生丢包现象;
另一种情况就是网络设备预感到一会可能出现网络拥堵,为了保证部分高优先级的数据包传输,主动丢弃某些不重要的数据包。
4.2 常见应用的网络质量要求
QoS的作用就是为部分网络流量提供特殊服务,服务的效果使用上面四个参数衡量。
不同的网络流量对上述指标有不同的敏感性:
(1)交互式服务
交互式服务,诸如telnet、ssh等流量。对【带宽】要求比较低,对【时延】要求也比较高,对【丢包】要求也比较高,但是对【抖动】则没有太高的要求。
(2)批处理服务
批处理服务,诸如FTP等,对【带宽】要求比较高,但是对【时延】要求比较低,【丢包率】尽量不要太高,对【抖动】则没有要求。
(3)语音服务
对于语音服务,则对【带宽】要求不高,但是对【时延】要求非常苛刻,对【丢包】和【抖动】也有一定的要求
(4)视频服务
对于视频服务,则对【带宽】要求比较高,对【时延】要求也比较高,但是不像语音服务一样苛刻,对【丢包】和【抖动】也有一定的要求。
4.3 流量整形&流量监管
首先网络应当知道要对哪些网络流量提供特殊服务(也就是做服务质量保证),因此需要使用流量整形技术;
流量整形是指调节进入网络的数据流的平均速率和突发性并描述其流量模式采用的技术,简单来说就是客户描述了自己的流量是什么样子,服务提供者根据客户的描述对那种形状的流量提供特殊服务;
流量监管用于服务提供者判断客户是否遵守约定提供了客户描述的那种流量;
4.4 漏桶&令牌桶
前面我们提到过使用滑动窗口进行流量控制,下面介绍两种描述流量特征(也就是限制流量速率)更普遍的方式——漏桶和令牌桶;
令牌桶算法和漏桶算法的区别:
“漏桶算法”能够强行限制数据的传输速率(底部的孔只有那么大),而“令牌桶算法”在能够限制数据的平均传输速率外,还允许某种程度的突发传输(只要桶里面有水就可以多舀几瓢,但是舀水的速度有一个最大值称为最大输出速率)。在“令牌桶算法”中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的门限,因此它适合于具有突发特性的流量。
令牌桶算法是一个存放固定容量令牌(token)的桶,按照固定速率往桶里添加令牌。令牌桶算法基本可以用下面的几个概念来描述:
- 令牌将按照固定的速率被放入令牌桶中。比如每秒放10个。
- 桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃或拒绝。
- 当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上。
- 如果桶中的令牌不足n个,则不会删除令牌,且该数据包将被限流(要么丢弃,要么缓冲区等待)。
假设突发传输数据维持S秒,网络的传输速率为M Bps,令牌桶的容量为B字节(这个容量指的是令牌桶当前被填充到的容量,不是最大容量),令牌的输入速率为R Bps,
那么突发传输最多可以包含B+RS个字节,而S秒时间内以最大输出速率输出的突发长度为M * S,于是由以下等式
$$
B+RS=MS
$$
可算出突发时间S=B/(M-R)
考点是当我们计算出突发时间S后,使用MS计算出突发时间内传送的数据,接着使用令牌的输入速率R作为网络的传输速率传输剩余的数据
网络层(六)
1.概念辨析
数据报是网络传输的数据的基本单元,包含一个报头和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系。同一报文的不同分组可以由不同的传输路径通过通信子网,UDP基于数据报;
字节流方式指的是仅把传输中的报文看作是一个字节序列,在字节流服务中,由于没有报文边界,用户进程在某一时刻可以读或写任意数量的字节,TCP基于字节流;
UDP面向报文——UDP在面向报文的要求基础之上还要求报文作为基本处理单元,即应用层交给 UDP(用户数据报协议) 多长的报文, UDP 添加首部后原样发送,网络层交给运输层的报文,去除首部后直接就交给应用层,整个过程中对UDP报文既不会拆分,也不会合并;
2.DNS
DNS使用UDP的53端口;
一个域名可以对应多个IP地址——一台主机具备两个及以上的网卡且均接入网络 or 多台主机映射到同一个域名上(负载均衡减小服务器压力);
一台主机也可以映射到多个域名(虚拟机);
同一个MAC地址不能绑定到两个不同IP地址上;
因特网上的主机可以没有域名但一定要有IP地址;
正向解析:域名解析为IP地址
反向解析:IP地址解析为域名
权限域名服务器一定可以将其管辖的主机名转换为主机的IP地址——因为每台主机要上网必须在权限域名服务器处注册登记;
3.FTP
FTP允许客户指明文件的类型与格式,可以在不同类型的操作系统、异构网络之间传送文件;
FTP并不适合用于在两个计算机之间共享读写文件;
控制连接和数据连接是最重要的两个概念,FTP在工作时使用这个两个并行的【TCP连接】,控制连接先于数据连接建立,晚于数据连接释放;
控制连接在整个会话期间保持打开状态,传送完毕后关闭数据连接并结束数据传输进程;
控制连接和数据连接使用的服务器的端口号分别是21和20,而客户端的端口号是随机选择的;
4.电子邮件
电子邮件系统的三个主要组成构件:用户代理(电子邮件客户端软件-QQ邮箱)、邮件服务器(qq.com)以及协议(发送协议SMTP、读取协议IMAP)
常见的发送协议有HTTP、SMTP以及MIME
发送方的用户代理作为SMTP客户,与发送方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送邮件给发送方邮件服务器
发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接,使用SMTP协议来发送已收到的待转发邮件给接收方邮件服务器
接收方的用户代理作为POP3客户,与接收方邮件服务器中的POP3服务器进行TCP连接,然后基于这条连接使用POP3协议,从接收方邮件服务器读取邮件
4.1 SMTP
使用的TCP的25端口;
SMTP只能传输ASCLL文本数据,不能传送可执行文件或其他二进制对象、多媒体邮件、非英语文字等;
SMTP仅支持传输7bit ASCLL内容
MIME是一种邮件格式的拓展,将非二进制转换为二进制,可以传输多媒体文件等,不仅可用于SMTP也用于HTTP;
4.2 POP3
使用TCP的110端口;
用户只能选择:下载并删除方式 or 下载并保留方式 从邮件服务器下载邮件到用户计算机,不允许用户在邮件服务器上管理自己的邮件(与FTP不同);
POP3同样仅支持ASCLL码,并且是明文传输不会加密;
IMAP使用户可以在自己的计算机上操作邮件服务器中的邮箱;IMAP使用TCP熟知端口号143;
4.3 HTTP
用户无需安装专门的用户代理程序,只需要使用通用的万维网浏览器即可;
用户浏览器1->HTTP->邮件服务器1->SMTP->邮件服务器2->HTTP->用户浏览器2
用户浏览器1->HTTP->邮件服务器->HTTP->用户浏览器2
5.超文本传输协议HTTP
使用TCP的80端口;
万维网实际就是一个巨大的资料空间,内核部分由三部分构成:统一资源定位符URL(相当于自己电脑上的文件在网络上的路径)、超文本传输协议HTTP、超文本标记语言HTML;
URL常见格式:<协议>://<主机>:<端口>/<路径>
<主机>就是存放资源的主机在因特网上的域名或IP地址
特点:
HTTP是无状态的,使用Cookie来记住用户;
HTTP使用TCP,但是HTTP本身无连接,通信双方在交换HTTP报文之前不需要提前建立连接;
HTTP可以使用持续连接(HTTP1.1)或者非持久连接(HTTP1.0)
注意:
此处所说的HTTP无连接是指基于应用层面的沟通交互,TCP面向连接是基于网络底层的数据传输,两者互不影响;
这里可以用无连接的IP和面向连接的TCP来类比,网络模型中两层之间的协议不会相互干扰,TCP面向连接是指在发送端的传输层和接收端的传输层需要记住通信状态,而IP的无连接指的是在发送端的网络层和接收端的网络层不需要记住通信状态,只负责封装来自上层的数据包,因为记不住状态,所以网络层也就不可能具备差错控制;
HTTP请求报文格式:
请求行:
指明方法、浏览器请求浏览的URL以及HTTP的版本
常用方法主要如下:
HEAD 服务器只需要对请求报文进行响应,不需要返回请求对象(没有正文);
GET 获取服务器资源(有正文);
POST 向服务器提交数据修改服务器资源;
PUT 从客户端向服务器传送的数据取代指定的文档的内容;
首部行:
Host:指明服务器的域名
Connection:表示连接方式,Close表示非持续连接,keep-alive表示持续连接;
User-Agent:指明浏览器类型与版本
Accept-Language:中文文档优先
HTTP响应报文与请求报文的不同之处在于开始行不同,
响应报文开始行称为状态行,其中的状态码含义如下:
1表示服务器正在处理请求
2表示服务器处理成功
3表示服务器重定向
4表示客户端出错
5表示服务器出错
应用题(七)
1.计算单位
跟存储容量有关的就是1024,跟频率、网速、带宽有关的就是1000;
但是当题干已经给出1M=100 0000后我们就不要用上面的常识了,就算是容量也是1k=1000
2.时延
分组交换过程中:
(1)在同一段链路上连续发送n个bit,总时延=n个比特的发送时延+1个传播时延;
(2)在同一段链路上连续发送n个分组,总时延=n个分组的发送时延+1个传播时延;
(3)在m段链路上发送n个分组,总时延=n个分组的发送时延+1个分组的发送时延*(m-1)+m段链路的传播时延;
(需要注意的是,题干中说明要传送的报文为x比特,分组长度为p比特,有n个分组,只能说n*p约等于x;
与之相反,题干中说明要传送的报文为x比特,分组长度为p+h比特,其中p为数据部分长度,h为控制信息部分长度,有n个分组,则有n*p=x;
1个分组的发送/转发时延=分组长度/传输速率,注意是分组长度而不仅仅是数据部分的长度!并且与报文总长度x也没有关系)
电路/虚电路交换过程中:
假设电路建立连接/握手的时间为s,则在n段链路上发送x比特的总时延=s+x个比特/x个分组的发送时延+n段链路的传播时延
(电路交换与分组交换不同就在于花费时间建立连接后就不需要考虑中间的转发/发送时延)
3.协议分析
这种题型会模拟wireshark抓包的过程,给出捕获的通信流量,如IP数据报或TCP报文段,附录部分常常给出需要使用的IP首部格式以及TCP首部格式等,
所以我们需要做的事情是熟记常用首部格式字段的意思(比特数和位置都不用记,可以从图中读出)
(1)首先我们要知道DATA从应用层下来后,在传输层被添加TCP/UDP首部被封装为段,段在网络层被添加IP首部被封装为包,包在数据链路层被添加以太网帧头和帧尾被封装为帧;
(2)使用抓包工具抓包时抓取的都是帧,只不过在做题的时候为了简单有时候题目会直接去掉帧头和帧尾告诉我们抓取的是IP包;
如果是帧的话则结构为 【帧头->IP首部->TCP/UDP首部->DATA->CRC】
如果是IP包的话则结构为 【IP首部->TCP/UDP首部->DATA】
下面的给出常见格式字段分析
3.1 以太网V2帧格式
我们常用的以太网的帧(这里不讨论PPP协议的帧格式,很少用)格式有两种(802.3是V2的标准接纳),这两种差别不是很大,现在最常用的是以太网V2的帧格式也就是(a)
以太网帧的首部+尾部长度总共18字节
前导码:实现接收端和发送端时钟的同步同时标志帧开始;
目标地址:目的MAC地址;
源地址:起始MAC地址;
类型:指出DATA域中携带的DATA应该交给哪个网络层协议实体处理;
DATA:最小46字节,最大1500字节;
填充:当DATA不够46B时填充;
校验和(FSC):使用CRC,校验MAC帧的DATA、目的地址、源地址、类型字段,不校验前导码
3.2 *IP首部格式
IP首部长度20B~60B,IP数据报的首部长度一定是4字节的整数倍
版本:IP的版本号,目前基本都使用4号版本;
首部长度:描述IP首部的长度,单位为4B假如该字段值为5表示整个IP首部长度为5*32bit;
总长度:描述IP首部和DATA域的长度,单位为4B;
标识、标志、片偏移共同用于IP数据报分片:
- 标识:属于同一个IP数据报的各个分片具备相同的标识;
- 标志:
- DF:1表示不允许分片,0表示允许分片;
- MF:1表示后面还有分片,0表示后面无分片;
- 保留位:必须为0;
- 片偏移:指出分片的数据载荷部分相对其在原有数据报的位置的偏移,单位为8B;
首部校验和:IP首部的校验和只校验首部(这一点与应用层相同),不校验DATA域;
生存时间(TTL):IP数据报在网络中可通过路由器数量的最大值;
协议:指出DATA部分交给哪个传输层协议如:6代表TCP 17表示UDP 1表示ICMP 89表示OSPF
源地址:发送方IP地址;
目的地址:接收方IP地址;
3.3 *TCP首部格式
TCP首部长度20B~60B,TCP报文段首部长度一定是4B整数倍
源端口&目的端口:接收方和发送方应用进程的端口号;
序号seq:因为TCP面向字节流(传输时逐个字节传送),所以TCP连接传送的数据流中的每个字节都有一个序号,序号字段的值表示报文段发送的数据中的第一个字节的序号;
确认号ACKseq:在确认报文段中,确认号为N表示到序号N-1为止的所有数据都正确收到;
首部长度:也称为数据偏移,即TCP报文段中的DATA域距离TCP报文段起始处的距离,单位是32bit;
紧急位URG:URG=1表明紧急数据指针字段有效;
确认位ACK:只有ACK=1时确认号字段才有效;
推送位PSH:接收方TCP收到PSH=1的报文段,会直接将其交给应用进程,不等待缓存满;
复位位RST:RST=1表明TCP连接出现错误,需要释放连接重新建立连接;
同步位SYN:SYN=1表示这是一个连接请求报文或连接接收报文;
终止位FIN:用于释放连接,FIN=1表示此报文段的发送方的数据已发送完毕,要求释放连接;
接收窗口rwnd:用于流量控制,指出允许对方发送的数据量(也可以理解为接收方缓存还剩多少),单位为字节,其大小与网络的带宽和时延密切相关
校验和:校验的范围为首部和数据两部分
紧急数据指针:指出该报文段中的高优先级数据有多少(从DATA域的第一个字节到紧急指针所指的字节);
3.4 UDP首部格式
长度:整个UDP数据报的长度,最小值是8B(仅有首部);
校验和:传输层根据首部中的校验和对报文(首部和数据部分)进行差错检测
下面我们给出例题进行讲解:
3.5 协议分析实例
首先我们拿到题需要分析使用软件捕获到的是什么,需要注意什么:
- 我们可以发现8个都是IP包,也就代表着结构为 IP首部->TCP首部->DATA域;
- 接着题干中说到2 3 6是主机A收到的IP数据报——这意味着不一定是来自主机B的IP数据报(即没有过滤而捕获的数据报);
- 而1 4 5 7则全部主机A发送给主机B的IP数据报;
- 在做题之前我们将捕获的IP包手动划分为4组一段,也就是32bit一段,便于定位;
准备工作完成后我们依次做题:
- 首先要求我们求出A和B的IP点分十进制表示,我们需要使用A发送给B的数据包来分析(因为A收到的数据包不一定是来自B的),比如1数据包,源IP字段和目的IP字段分别在第4段和第5段,即c0 a8 0 15和c0 a8 00 c0,转化为点分十进制即为192.168.0.21和192.168.0.192
- 下面要求我们分析TCP的A B两个端口号,这里仍然用1数据包分析,首先我们需要定位到TCP首部,IP首部第一段的第一个字节的第二个十六进制数表示IP首部长度,可以看到是5,乘以单位4B得到IP首部长度为20B,于是我们偏移20B得到TCP首部从21B开始;TCP的源端口和目的端口在第一段的一、二字节和三、四字节,也就是0664和31ba;题干要求使用十六进制数表示则不用转化,否则使用幂次法转化为十进制即可;
- IP首部中TTL值位于第三段的第一字节,这里因为是看B的TTL,所以必须先定位到B发送给A的IP包,我们通过源IP地址和目的IP地址可以确定数据包3是主机B发送给主机A的包,其TTL字段值十六进制表现为40;
- 计算A发送的5个数据包的IP包头和TCP头的长度总和,需要我们定位了IP首部长度字段在第一段的第一个字节的第二个十六进制数,均为5;TCP首部长度在第四个字段的第一个字节的第一个十六进制数,分别是7 5 5 5 5,故总长度为5 * 54B+(7+5 * 4)4=208B
- 分析表中哪三个IP包实现了TCP的三次握手,涉及TCP所以直接看TCP首部,排除2、6不是A与B之间的通信,则只有3是作为TCP服务器的B发送给A的报文,其seq=5b 9f f7 1c ACKseq=22 68 b9 91,根据三握手的规则,只需要寻找seq=ACKseq-1=22 68 b9 90的IP包和ACKseq=seq+1=5b 9f f7 1d的A发送给B的包(如果有多个则根据,三握手中三个报文的特征是SYN字段分别为1 1 0,ACK字段分别是0 1 1确定唯一的报文),分别是1和4,所以三握手的数据包按顺序分别是1 3 4;
- 建立连接后,B发送给A的首字节的编号,也就是第一个字节的序号——因为TCP面向字节流对每个字节都会编码,而seq字段的值刚好就表示报文段发送的第一个字节的编号,建立连接后B发送给A的数据的序号应该是接着上次传送的seq开始的(中间是没有发送过数据的,不用担心序号被消耗,序号可能被消耗的阶段只存在于第三次握手及以后),上次传送的seq也就是第二次握手的seq=5b 9f f7 1c,所以这次的seq=5b 9f f7 1d;
- 第七题可能读不懂,意思就是A发送数据的包(不包括建立连接的第一个包1,没有计算4是因为4的大小刚好是最小20B没有包含任何数据)中含的应用层的DATA大小,应用层DATA=IP包长度-IP首部长度-TCP首部长度
- 8号IP包后,B给A发送的ACKseq应该是8的seq+8的TCP的DATA域长度也就是应用层的DATA=IP包长度-IP首部长度-TCP首部长度=72B-5 * 4B-5 * 4B=32B,则seq=22 68 b9 a1+ 00 00 00 32=22 68 b9 c1;
- 第九题只需要明白考点:首先是发送窗口在接收窗口Window size和MSS拥塞窗口中取小者,第二是7和8的seq是相同的所以8是7的超时重传所以导致拥塞控制拥塞窗口变为MSS,所给的65495无非是虚张声势罢了