计算机网络笔记
感谢徒弟yky的整理,他的博客:https://gitee.com/YanKeyon/YanKeyon
计算机网络笔记
概述
三个阶段
-
第一阶段:从单个网络ARPANET向互连网发展的过程。
1983年TCP/IP协议成为ARPANET上的标准协议,互联网诞生。
1990年ARPANET正式宣布关闭。
internet(互连网)泛指多个计算机网络互连而成的计算机网络;Internet(互联网/因特网),指采用TCP/IP协议的特定互连网,前身是ARPANET。
-
第二阶段:建成了由主干网、地区网和校园网(或企业网)组成的三级结构的互联网。
-
形成多层次ISP(Internet Service Provider)结构的互联网。
ISP负责分发IP到用户,使其能够通过本地ISP,连接到地区ISP,或主干ISP,实现与其他用户的通信。
为了降低ISP向上转发产生的费用,减少迟延,出现了互联网交换点IXP(Internet eXchange Point),可以实现对等地交换分组,使数据流量分布更为合理。
互联网组成
根据工作方式可分为:
- 边缘部分。由所有连接在互联网上的主机构成。
- 核心部分。由大量网络和连接这些网络的路由器组成。(提供连通性和交换)
边缘部分的通信方式有多种:
-
C/S(Client/Server)
客户-服务器方式,是一种客户机请求服务,服务器做出响应提供服务的方式。
-
P2P(Peer to Peer)
对等连接是指两台主机在通信时不区分哪一个是服务请求方哪一个是服务提供方,即双方无主从之分。只要都运行了P2P软件,就可以进行对等连接通信,下载对方的共享资源。
-
B/S(Browser/Server)
浏览器-服务器方式是Web兴起后的一种网络结构。将系统功能的核心部分集中到服务器后台程序中。对于客户机,只需要安装一个浏览器就能访问。
交换方式
路由器(router)是实现分组交换的关键构件,其任务是转发收到的分组。
先说电路交换,例如电话机。每部电话连接到交换机,交换机采用交换的方式实现不同用户间的通信,构成了电信网。
交换是按照某种方式动态地分配传输线路的资源。经过建立连接(占用通信资源)、通话、释放连接(归还通信资源)三个步骤实现通信。
电路交换的一个重要特点是在通话的全部时间内,通信双方始终占用着一个通信资源。如果用电路交换传送计算机数据,其线路的传输效率就会很低,因为计算机数据的突发式出现导致通信资源绝大部分时间都是空闲的。
分组交换则采用存储转发技术。表示把一个报文划分为几个分组(packet)后再进行传输。每个分组(也叫包)由首部(header)和数据段组成。首部包含目的地址和源地址等重要控制信息。
对于一条链路,只是当分组正在此链路上传送时才被占用。路由器根据目的地址与路由表,选择一条链路进行传输,并最终到达目的地址。
报文不进行分组的交换为报文交换,相较分组交换而言,时延大,不灵活。
电路交换
Circuit switching
过程
- 建立连接(建立/占用一条物理通信线路)
- 连接方式:每部电话直连交换机。
- 通信
- 释放连接(释放占用的通信资源)
特点
-
通过交换机动态分配传输线路的资源
-
电路交换的用户始终占用端到端的通信资源
电路交换为什么不适合传送计算机数据
- 计算机数据具有突发性,导致在传送数据时通信线路利用率很低。
报文交换
整个报文先传输到相邻的结点,全部存储下来后查找转发表,转发到下一个结点。
报文交换是分组交换的前身。
分组交换
采用存储转发技术。
过程
- 发送端将报文切分为固定、较短的数据段
- 每一个数据段前添加上首部构成分组Packet
- 通过路由器将分组转发出去。
- 接收端接收、校验、拼接数据,还原成报文。
特点
- 高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用。
- 灵活:为每一个分组独立地选择最合适的转发路由。
- 迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。
- 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性。
路由器处理分组过程
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找到某个目的地址应该从哪个端口转发出去;
- 把分组送到适当的端口转发出去。
问题
- 分组在各结点存储转发时需要排队,会造成时延。
- 分组必须携带首部,增加开销。
三种交换方式的比较
- 若要连续传送大量数据,且传送时间远大于连接建立时间,则电路交换的传输速率较快。
- 报文交换和分组交换不需要预先分配带宽,在传送突发数据时可提高整个网络的信道利用率。
- 由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小, 同时也具有更好的灵活性。
交换方式示意图⭐⭐⭐
计算机网络分类⭐
根据作用范围可分为:
- 广域网WAN(Wide Area Network)
- 城域网MAN(Metropolitan Area Network)
- 局域网LAN(Local Area Network)
- 个人区域网PAN(Personal Area Network)
根据网络使用者可分为:
- 公用网
- 专用网
此外还有用来把用户接入到互联网的网络:接入网AN(Access Network)。
网络拓扑结构分类
- 星型结构
- 环形结构
- 总线型结构
- 网状结构
性能指标⭐
度量计算机网络性能常用的七个性能指标:
速率
速率是计算机网络中最重要的一个性能指标,指的是数据的传送速率,它也称为数据率 (data rate) 或比特率 (bit rate)。
单位
- bit/s 或bps(bit per second)。
换算⭐
- $ 1Kb =10^3b $
- $ 1Mb =10^3Kb $
- $ 1Gb=10^3Mb $
- $ 1B = 8bit ⭐$
带宽
在计算机网络中,带宽(bandwidth)用来表示网络中某通道传送数据的能力,即最高速率。单位是 bit/s。
吞吐量
吞吐量(throughput)表示单位时间内通过某通道的实际数据量。
单位
- bit/s, byte/s, 帧数/s
时延
时延(delay或latency)是指数据从端到端传输的时间,也叫延迟或迟延。
时延分为
-
发送时延
发送时间 = 数据帧长度(bit) / 发送速率(bit/s)
-
传播时延
传播时延 = 信道长度(m) / 电磁波在信道上的传播速率(m/s)
-
处理时延
主机或路由器处理收到的分组时的时间
-
排队时延
分组进入路由器排队等待处理的时间
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
时延带宽积
若发送方连续发送数据,则在发送的第一个比特即将到达终点时,发送方已经送了的比特数为时延带宽积。
往返时间
往返时间 RTT (round-trip time) 表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
利用率
信道利用率:某信道有百分之几的时间是有数据通过的。
网络利用率:全网络的信道利用率的加权平均值。
信道利用率并非越高越好,根据排队论,当某信道利用率增大时,该信道引起的时延也就迅速增加。
计算机网络体系结构
OSI七层协议与TCP/IP四层协议。
学习采用五层协议,综合OSI与TCP/IP优点。
包括:应用层、传输层、网络层、数据链路层和物理层。
分层特点
- 低层提供服务,高层调用服务
分层优点
- 复杂任务划分为相对简单的子任务,更易于实现
- 各层之间相互独立,彼此不必了解对方细节,通过接口调用服务
- 灵活性好,接口不变,内部实现方式可以改变
分层缺点
- 数据分层传递,降低效率
- 功能在不同层次可能重复,产生额外开销
各层主要功能
- 差错控制
- 流量控制
- 分段和重装
- 复用和分用
- 连接建立和释放
传输过程图
TCP/IP发展
IPv4与IPv6
IPv4:32位,每8位划分为一段,一般以点分十进制表示。
192.168.1.1
IPv6:128位,每16位划分为一段2007:1022:Bc50:0000:0000:3987:3335:1234
常见协议
应用层
协议 | 低层协议 | 默认端口 |
---|---|---|
HTTP(Hypertext Transfer Protocol) 超文本传输协议 | TCP | 80 |
FTP(File Transfer Protocol) 文件传输协议 | TCP | 20/21 |
TELNET 网络终端协议 | TCP | 23 |
SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议 | TCP | 25 |
DNS 域名系统 | TCP/UDP | 53 |
SNMP(Simple Net Manager Protocol) 简单网络管理协议 | UDP | 161 |
TFTP(Trivial File Transfer Protocol) 简单文件传输协议 | UDP | 69 |
SSH(Secure Shell) 安全外壳协议 | TCP | 22 |
传输层
- TCP 传输控制协议
- UDP 用户数据报协议
应用层
数据传输效率问题⭐
长度100字节的应用层数据交给运输层传输,需加上20字节的TCP首部,再交给网络层传送,需加上20字节的IP首部,最后交给数据链路层的以太网传送,需加上首部和尾部共18字节。求数据的传输效率。
若应用层数据为1000字节呢?
数据传输效率分别为63.29%和94.52%。
传输单元越大,数据传输效率越高,但不是越高越好。大包的丢包率高,占用链路时间长影响其他主机的通信。
最终标准以太网帧选择一个折中的长度:1518字节。对应IP的packet就是1500字节。这就是最大传输单元MTU的由来。
如果IP层有数据包要传输,且包长超过MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。
除了MTU,还有一个对应的值,MRU最大接收单元。
一般情况下MTU=MRU。
参考文章:
万维网WWW
万维网/环球信息网(World Wide Web)是基于互联网之上的一项服务,将服务器资源通过URI标识,通过HTTP协议传输给用户。
HTTP⭐
超文本传输协议发展历史:
版本 | 产生时间 | 内容 | 发展现状 |
---|---|---|---|
HTTP/0.9 | 1991年 | 不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求 | 没有作为正式的标准 |
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 | 正式作为标准 |
HTTP/1.1 | 1997年 | 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 | 2015年前使用最广泛 |
HTTP/2 | 2015年 | 多路复用、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
特点:
- HTTP基于TCP/IP协议之上
- 基于客户/服务器模式
- 面向连接
- 一次性连接
- 无状态协议
处理过程:
- 客户与服务器建立连接
- 客户向服务器提出请求
- 服务器接受请求,并根据请求返回相应的文件作为应答
- 客户与服务器关闭连接
协议状态码:
- 1xx:信息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
报文格式
两种类型:请求报文、响应报文。
-
请求报文:
方法:OPTION、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT
-
响应报文:
状态编码:三位数字,200 OK 、 404 NotFound等
URI、URL⭐
URI:统一资源标识符
URL:统一资源定位符
URL格式:
<协议>://<主机>:<端口>/<路径>
协议:ftp、http、https、News
主机:域名或IP地址
端口:服务端开放的访问端口
URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集。
HTTP的非持续连接和持续连接
非持续连接:每个TCP连接只用于一个请求消息和响应消息。
持续连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态。
持续连接的两种工作方式:
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求。服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
- 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使 TCP 连接中的空闲时间减少,提高了下载文档效率。
HTTP/1.1默认使用持久连接的流水线版本
DNS服务
DNS(Domain Name System)服务协议提供域名到IP地址之间的解析服务。
浏览器
组成部分:控制程序、客户程序、解释程序、缓存。
控制程序:解释鼠标的点击和键盘的键入,执行用户操作。
客户程序:HTTP、FTP客户程序、电子邮件客户程序等。
解释程序:HTML解释程序
缓存:将请求到的每一个页面副本都放入本地磁盘的缓存中。
浏览器缓存技术
将请求到的每一个页面副本都放入本地磁盘的缓存中。
当用户请求某个网页,浏览器首先检查磁盘的缓存。若有则直接得到而不必从网络获取,提高效率。
缓存的对象可能不是最新的,HTTP允许浏览器证实缓存的对象是否是最新的。
Cookie技术
HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
Cookie技术的四个组成部分:
- 在HTTP响应报文中有Set-cookie首部行。
- 在HTTP请求报文中有Cookie首部行。
- 客户端有Cookie文件,记录网站和识别码的对应关系。
- 服务器维护Cookie数据库。
HTTP与HTTPS
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
传输层
传输层两大协议:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)
传输层为两个主机上运行的应用进程之间提供通信服务。“通信的真正端点不是主机而是主机中的进程”。
传输层存在的原因:
- 为两个端主机中运行的应用进程之间提供数据通信;
- 可灵活选择适当的协议保证通信的可靠性
TCP与UDP
UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
TCP 则提供面向连接、可靠的服务,可以处理报文段出错、丢失等异常情况,并能根据接收方的接受能力、网络的拥堵状况自动调节自身发送速度。因此也增加了许多的开销,不仅使报文段的首部增大,还要占用处理机资源。
端口号(Port)
为了主机间通信而采取用端口号对TCP/IP体系的应用进程进行标识。
16位端口号,范围从0~65535。
端口分类:
- 公认端口(Well Known Ports) :从0到1023 ,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
- 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
- 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
UDP
数据报格式:
首部8个字节,4个字段。
在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
破坏了分层的法则,但检查了重要数据
通过端口实现UDP的多路复用与多路分解。
多路复用:多个应用进程使用同一个UDP协议发送数据。
多路分解:由UDP协议将UDP报文根据目的端口的不同发送给不同的应用进程。
特点:
- 无连接
- 无差错控制、流量控制、拥塞控制。
- 延迟短、简单、速度快(无流量、拥塞控制,全速发送)。
应用范围:
- 流式多媒体(丢失几帧画面影响不大,但要求低延迟)
- 因特网电话
基于UDP的协议:实时传送协议RTP,传递音频、视频。
TCP
特点:
- 面向连接
- 全双工通信
- 点对点通信
- 面向字节流(无结构、有序的字节流)
- 多路复用、多路分解
- 差错控制、流量控制、拥塞控制
数据报格式:
序号:
- 4字节,指出本报文段中的数据的第一个字节在发送方本次TCP连接上发送的数据流中的位置。
确认号:
-
4字节,期望收到对方下一个报文段的第一个数据字节的序号,与ACK=1配合使用。
-
确认号隐含的确认了所有前面的字节序号
TCP头部长度(数据偏移):
- 4比特,指出以4字节为单位的报文头部长度,如没有选项,则为5即20Bytes。该域是针对变长的“选项”域设计的。
紧急标志位URG(URGent):
- 当URG=1时,表明此报文是紧急数据,应尽快传送出去,接收方应优先处理。
确认标志位ACK:
- 只有当ACK=1时确认号字段才有意义。当ACK=0时,确认号没有意义。
推送标志位PSH(PuSH):
- 当PSH=1时,该包连同传送缓冲区的其它包应立即进行传送,而无需等待缓冲区满了才送,接收端必须尽快将此数据交给程序处理。
重建标志RST(ReSeT):
- 当RST=1时,表明出现严重差错,复位产生差错的连接
同步标志位SYN:
- 当SYN=1而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则在发回的报文中使将SYN和ACK标志位同时置1。
终止标志位FIN(FINal):
- 当FIN=1时,表明数据已经发送完毕,并请求释放连接。
窗口-用于流量控制:
- 2字节,接收数据方告诉发送数据方它的接收窗口大小(接收缓冲区大小),其单位为字节。
校验和:
- 2字节,校验和字段检验的范围包括TCP报文的头部、数据区和伪包头。
紧急指针:
- 2字节,当URG= 1 的时,紧急指针就会指示出紧急数据所在位置。
可选项:
- 长度可变,可选项的长度要么是 0 ,要么就是 32bit 的整倍数。TCP规定了一种选项,即最长报文段MSS(Maximum Segment Size),限定了每个TCP报文段中数据字段的最大长度。
- 为了避免发送主机对IP报文进行分片,限定TCP报文段中数据量的最大长度,与数据链路层MTU有关。
- Mss不是强制数据,双方无法达成一致,默认为536字节
TCP建立连接⭐
TCP是面向连接的传输层协议,发送数据前必须建立连接。
三次握手⭐
- 客户端发请求:SYN=1,ACK=0,seq=x
- 服务端接请求,分配缓存和变量,回响应:SYN=1,ACK=1,seq=y
- 客户端接响应,分配缓存和变量,回响应:SYN=0,ACK=1,seq=x+1
三次握手时,序号的取值比较特别, 依次加一,正式传递数据后,根据数据块的大小确定确认号。
TCP要求连接每一方随机选择一个初始序号,防止黑客猜测出初始序号进行攻击。
保活定时器:避免TCP连接长时间空闲,在服务器端设定保活定时器。一般设定为2小时,超时后服务器就不断发送探测报文,连发10个若还没有收到客户端响应,服务器就关闭连接。
TCP释放连接
四次握手:
差错控制⭐
异常情况的检测与采取措施。
可以连发多个报文段,进行累积确认。
当接收到数据,首先进行差错检测; 若数据正确,返回确认;错误则不进行响应确认.
若数据丢失,如何解决?
发送方每发送一个报文段,就启动一个重传定时器。
若报文段出错,发送方在超时重传时间RTO内未收到确认,定时器超时,重传报文段。
若确认丢失,如何解决?
若确认丢失,发送方定时器超时重传;接收方通过数据包的序号判断接收到重复数据包,丢弃该包,返回确认。
发送方:每次发送一个数据包,就会启动一个重传定时器,如果在规定的时间内,没有收到相应的确认信息,立即重传;
接收方:当收到一个正常包,返回确认;当收到错误包,不响应;当收到序号重复的包,丢弃,返回确认;
确认丢失的特殊情况
累积确认在超时前到来。
关键是在超时1以前收到,就无需重传了;如果在超时1之后收到确认,仍要重传,超时1超时2超时3不同
总结:tcp的差错控制:每传送一个报文段就启动一个重传定时器,若正常,确认一定会在超时之前到来,如果超时则重传,接收方对于重复的数据丢弃
总结:
发送方每发送一个报文段,就启动一个重传定时器;
接收方当接收到数据,首先进行差错检测; 若数据正确,返回确认;若数据错误,直接丢弃;
发送*在重传定时器超时前收到确认,则传输成功;否则,重传报文段。
超时重传时间RTO⭐
估算从发出数据到接收到确认的往返时间RTT(Round Trip Time), RTO要略大于RTT,估计过小会引起不必要的重传,估计多大会降低通信效率。
估算算法:
- 原始算法 (实验使用)
- Karn/Partridge 算法
- Karn修正算法
Karn修正算法:⭐
流量控制⭐
根据接收方当前的接收能力,控制发送方发送数据的速度,使接收数据方缓冲区不发生溢出。
**滑动窗口技术:**⭐
允许发送方在未获得确认的情况下连续发送多个数据包,但是限制连发多包的最大数目;从而缓和传输效率与流量控制的矛盾
- 大小固定的滑动窗口技术:提高了通信效率,但未考虑接收方的缓存情况,无法进行流量控制
- 窗口大小可变的滑动窗口技术:能流量控制。
TCP接收方通过报文段头部的窗口字段将接收方当前可用缓存大小反馈给发送方,从而改变发送端滑动窗口的大小,进行流量控制/
发送窗口大小=接收窗口大小(RcvWindow)
接收窗口大小表明接收方当前可用的缓存空间大小
发送窗口大小表明发送方未获确认的情况下可连发数据大小
如何滑动:
TCP的发送方通过接收方返回的确认号,明确对方已经收到的哪些字节,控制发送窗口的左边向右移动。
不一定返回了确认窗口就一定能增大,不一定没返回确认窗口就没变大。
窗口大小的变化跟接收方向应用进程提交数据有关。
坚持定时器:假如接收方返回给发送方的带非零通告窗口的报文丢失,发送方就不能发送数据。发送方接收到通告窗口为零报文时启动坚持定时器,避免进入死锁状态.一旦定时器超时,发送方就不断发送探测报文。
基于滑动窗口技术的差错控制:
当对报文段的确认超时,根据发送方采取措施的不同,差错控制分为两种:
- 回退N差错控制(GBN)
- 选择重传差错控制(SR)
回退N差错控制(GBN)
某个报文段的确认超时,发送方按序重发该包以及其后所发的所有包。接收方只允许顺序接收,丢弃乱序的数据包;接收方可以累积确认 。
优点:发送方、接收方处理简单
缺点:导致某些已正确接收的数据重传通信效率较低
选择重传差错控制(SR)
某个报文段的确认超时,发送方只重传定时器超时的那一个报文段接收方可以暂存序号在出错报文段之后(在接收窗口内)的数据,直到收到正确的,排好序后上传应用层;接收方不采用累积确认。
优点:有选择的重传,效率高
缺点:发送方和接收方实现复杂
TCP的序号是采用的累积确认,需要接
收方告知对方那些数据需要重传。
TCP会不断地发ACK 2,发送方在接收到三个ACK2后,就会快速重传该报文段,不必等待超时。
TCP实现综合两种差错控制方法的优势:1.累积确认,接收方就只需要记录一个最后收到的序号2.进行缓存,可以有选择的重传
本节的思路:
停等技术----滑动窗口技术(对于窗口大小) -----大小固定的滑动窗口
-----大小可变的滑动窗口---------TCP采用
滑动窗口技术(对于超时重传)----回退N的滑动窗口
----选择重传的滑动窗口— TCP采用二者混合
拥塞控制⭐
拥塞
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。
拥塞原因
- 某结点缓存容量太小
- 某链路带宽不足
- 某些处理机处理效率太慢
- 拥塞会累积,不断加剧。
增加资源并不能从根本上解决拥塞,还可能会使网络性能更坏。
拥塞控制
网络拥塞主要指网络路由器由于排队报文过多而丢弃报文,拥塞控制是指发送方采取措施避免网络拥塞的发生或者对已经发生的拥塞做出的响应。即 防止过多数据注入网络,使网络中的路由器或链路不致过载。
是一个全局性的过程。
控制思路
-
开环控制
在设计时考虑。力争避免
-
闭环控制
根据当前运行状态采取相应措施。力争消除。(基于反馈环路的概念)
TCP拥塞控制
- 拥塞避免:拥塞发生前,发送方在发送速度增加到一定程度后主动减缓发送速度的一种预防措施。
- 拥塞控制:拥塞发生后,发送方探测到拥塞状况后,进行降速。
发送方如何探测拥塞状况?
发送方根据超时重传事件的发生,判定网络拥塞。
发送卡如何控制发送速度?
利用拥塞窗口变量(cwnd)控制发送速度。
发送窗口的大小(未获确认可连发多少数据)=Min(cwnd, rwnd)
cwnd:拥塞窗口变量
rwnd:接收方反馈的窗口大小
当rwnd<cwnd,是接收方的接收能力限制发送窗口的最大值。
当cwnd<rwnd,是网络的拥塞限制发送窗口的最大值。
用什么算法进行拥塞控制?
慢开始、拥塞避免、快速重传、快速恢复。
TCP每条连接都会维持两个变量:
- 拥塞窗口变量cwnd
- 慢开始门限ssthresh
慢开始(旧):初始cwnd=1至2个发送方的最大报文段SMSS(Sender Maximum Segment Size)的数值。
慢开始(新):初始cwnd=不超过2至4个SMSS。
慢开始算法思路:由小到大逐渐增大拥塞窗口cwnd数值。
cwnd每次的增加量=MIN(N,SMSS)
N表示先前未被确认的,但现在被刚接收到的确认报文段所确认的字节数。
当N <SMSS,拥塞窗口增加量要小于SMSS
好处:使分组注入到网络的速率更加合理。
图解:
慢开始阶段,cwnd从1开始呈指数型增长,每经过一个传输轮次,cwnd就加倍。
传输轮次:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认,算一次传输轮次。
慢开始门限ssthresh(状态变量):防止cwnd增长过大引起网络拥塞。
当cwnd>=ssthresh时,慢开始阶段结束,进入拥塞避免阶段。
拥塞避免
算法思路:让cwnd呈线性缓慢增长,每经过一个RTT,cwnd就加1。
拥塞出现
当发送方判断出网络出现拥塞时,无论是在慢开始阶段,还是拥塞避免阶段,都会执行以下步骤:
- ssthreth = cwnd / 2
- cwnd = 1
- 执行慢开始算法
目的:迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间处理积压的分组。
快重传算法:FR(Fast Retransmission),可以让发送方尽早知道发生了个别报文段丢失的情况。
快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传(即“快重传”),这样就不会出现超时,发送方也不就会误认为出现了网络拥塞。
使用快重传可以使整个网络的吞吐量提高约20%。
不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。
快恢复算法:当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复算法。
- 慢开始门限ssthresh=cwnd/2
- 新的拥塞窗口cwnd = ssthresh
- 开始执行拥塞避免算法。
加法增大,乘法减小 (AIMD)
可以看出,在拥塞避免阶段,拥塞窗口是按照线性规律增大的。这常称为“加法增大” AI (Additive Increase)。
当出现超时或3个重复的确认时,就要把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。这常称为“乘法减小”MD (Multiplicative Decrease)
二者合在一起就是所谓的 AIMD 算法。
⭐拥塞控制流程图
????习题
-
主机甲和主机乙之间已建立一个TCP连接,TCP最大段长度为1000字节,若主机甲的当前拥塞窗口为4000字节,在主机甲向主机乙连续发送2个最大段后,成功收到主机乙发送的第一段的确认段,确认段中通告的接收窗口大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是1000。
解析:
发送窗口的大小(未获确认可连发多少数据)=Min(cwnd, rwnd)
此时主机乙具有一个2000B的空闲缓冲区,即此时主机乙最大还可以接收2000B的数据。由于主机乙还未对主机甲发出第2个报文段进行确认,因此这2000B的空闲缓冲区还需预留出1000B用于接收第2个报文段,即此时主机甲还可以向主机乙发送的最大字节数只有1000B。
-
假定一个用户正在通过HTTP下载一个网页,该网页没有内嵌对象,TCP协议的慢启动窗口门限值为30个报文段大小。该网页长度为14个报文段大小,用户主机到服务器之间的往返时延RTT为1s,不考虑其它开销(如域名访问、报文段处理等),用户下载该网页大概需要多长时间? 若TCP协议的慢启动窗口门限值为6个报文段大小,用户下载该网页大概需要多长时间?
若TCP协议的慢启动窗口门限值为6个报文段大小:
-
设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1轮次到第15轮次传输的各拥塞窗口大小。你能说明拥塞窗口每一次变化的原因吗?
第1轮次,cwnd=1,第15轮次,cwnd=9。
-
TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示:
cwnd 1 2 4 8 16 32 33 34 35 36 37 38 39 n 1 2 3 4 5 6 7 8 9 10 11 12 13 cwnd 40 41 42 21 22 23 24 25 26 1 2 4 8 n 14 15 16 17 18 19 20 21 22 23 24 25 26 - 试画出拥塞窗口与传输轮次的关系曲线。
- 指明TCP工作在慢开始阶段的时间间隔
- 指明TCP工作在拥塞避免阶段的时间间隔
- 在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
- 在第1轮次、第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
- 在第几轮次发送出第70个报文段?
- 假设在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大?ssthresh=cwnd/2=4, cwnd=ssthresh=4
网络层
IP地址概念
IP 地址就是给每个连接在因特网上的主机(或路由器)的接口分配一个唯一的 32 位的标识符。(IPv4)
IP地址编制方式演变
- 分类地址
- 子网划分、路由聚合
- 无类地址
IP地址结构
32位二进制数,采用点分十进制x.x.x.x表示,每个x为8位,其十进制值为0~255。
IP地址由网络号与主机号两部分组成。
网络号和主机号的界限:最早是靠分类地址硬性定义的,子网划分出现后靠子网掩码定义,无类地址出现后靠网络前缀。
分类地址⭐
A类地址:网络标识占8位,第一位固定为0。
B类地址:网络标识占16位,前两位固定为10。
C类地址:网络地址占24位,前三位固定为110。
D类地址:组播地址,IP地址前四位固定为1110。
E类地址:保留地址,IP地址前五位固定为11110。
广播地址:主机标识全为1 (作为目的地址,表示该网络内的所有主机,
可用于远程广播)
网络地址:主机标识全为0 (表示网络标识对应的某个网络。路由器中的路由表大多采用此类地址。)
特定主机地址:网络标识全为0(作为目的地址,表示本地网络上的特定主
机,会被本地路由器过滤)
受限广播地址:255.255.255.255 标识全为1(指本地网络(拥有相同网络号)的所有主机,常用于分组的本地网络广播,但是路由器不
予向其他网段转发)
全零地址:0.0.0.0 标识全为0(全零地址用于动态配置IP的网络上。当工作站启动时,未被分配到IP地址的主机在发送IP报文时用作源IP地址)
环回地址:127.x.x.x (作为目的地址,报文不离开本
机,用于本地软件的换回测试。例如127.0.0.1)
环回地址的应用:
- ping 127.0.0.1 测试IP协议是否能正常发送数据
- http://127.0.0.1/default.html 测试在同一主机上的客户端进程和服务器进程通信情况
分类地址弊端:A类地址能够很好地覆盖机构内的2^24台主机,但是试问世界上有多少个机构能有这么大容量,因此A类地址造成了许多浪费。对于C类地址而言,一个C类地址最多容纳256台主机,这样的容量又太小,不能让人满意。
????习题
-
A类地址:网络标识占 8 位,主机标识占 24 位;IP地址范围从0.0.0.0 到127.255.255.255 ;按照编址方案,除去网络号各位全为0和全为1两种情况,共有 126 个可用的A类网络;每个A类网络中,除去主机标识各位全为0和全为1两种情况,可用的IP地址有 -2 个,即一个A类网络可以容纳 -2 即16777214个主机。
-
B类地址:网络标识占16位,主机标识占16位;IP地址范围从128.0.0.0到191.255.255.255;按照编址方案,其中不使用128.0.0.0网络,共有-1 (16383)个可用的B类网络;每个B类网络中,除去主机标识各位全为0和全为1两种情况,可用的IP地址有-2 (65534) 个,即一个B类网络可以容纳65534个主机。
-
C类地址:网络标识占24位,主机标识占8位;IP地址范围从192.0.0.0到223.255.255.255;按照编址方案,其中不使用192.0.0.0网络,共有 -1 (约200万) 个可用的C类网络。每个C类网络中,除去主机标识各位全为0和全为1两种情况,可用的IP地址有254个,即一个C类网络可以容纳254个主机。
-
判断下列IP地址属于哪类地址:138.24.163.23;125.6.3.5;193.65.23.9
看138=128+8+2,二进制前8位为1000 1010,为B类地址。
看125=64+32+16+8+4+1,二进制前8位为0111 1101,为A类地址。
看193=128+64+1,二进制前8位为1100 0001,为C类地址。
-
说明下列IP地址表示的意义:
136.78.0.0(网络地址)
136.78.255.255(广播地址)
127.0.0.1(环回地址)
255.255.255.255(受限广播地址)
0.25.63.39(特定主机地址)
13.24.12.15(普通地址)
子网划分⭐
好处:
- 有效利用IP地址资源
- 减小广播域范围和网络流量,优化网络性能,提高了网络安全性
- 简化管理,便于排错
如何划分?
从IP地址的主机标识借位作为子网号。
如何明确子网号与主机号的分界线?或者说如何知道子网号有几位?这需要通过子网掩码来明确界限。
网络号与子网号位置取1,主机号位置取0,图示例子的子网掩码就写作255.255.255.0或者根据1的个数写作/24
子网掩码表示方式:
- 点分十进制表示 255.255.255.192
- /x表示:在IP地址后写/x,x为子网掩码中1的个数 202.164.75.25/24
????习题
-
将C类网络221.64.137.0划分为4个子网,求子网掩码。
已知C类网络网络号24位,划分4个子网需要子网号至少2位,所以子网掩码/26即255.255.255.192
掩码运算
将二进制的IP地址与子网掩码按位进行“与”运算,所得结果就是主机所在的网络地址(包括网络地址和子网地址)
**常用计算公式(考试用,速答)**⭐
设x表示子网号位数,y表示主机号位数。
- 该子网掩码将产生多少个子网?
- 每个子网可容纳的主机数?
- 每个子网ID是?
- 块大小 = 256 - 子网掩码(取最大的块大小)
- 子网ID = N*块大小(N表示第N个子网,可取0、1、2、…)
- 每个子网的广播地址是?该子网的下一个子网ID - 1
- 每个子网的有效地址范围是?
- 忽略子网中主机地址全为0和全为1的地址,剩余的就是合法的主机地址。
- 第一个有效主机地址 = 子网ID+1
- 最后一个有效主机地址 = 下一个子网ID - 2(或该子网的广播地址 - 1)
????习题
-
已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。
解析:通过掩码运算,得网络地址为141.14.64.0。
-
已知:主机1的IP地址为146.26.27.71;
主机2的IP地址为 146.26.27.170;
子网掩码均为255.255.255.192;判断:主机1和主机2是不是在同一个子网上
解析:子网掩码为/26,确定主机1和2的前26位是否相同。显然不同,不再同一子网。
-
对C类地址212.26.220.0进行子网划分,子网号3位,问:
- 子网掩码是?
- 每个子网的子网ID是?
- 每个子网的广播地址是?
- 每个子网可用的IP地址(有效IP范围)是?
- 每个子网可容纳的主机数是?
每个子网的广播地址是子网中主机位全为1的IP。
每个子网可用的IP为除了主机位全为0和全为1的地址。例如子网1的有效IP范围是212.26.220.1~212.26.220.30
每个子网可容纳的主机数 =
变长子网掩码VLSM
作用:引入VLSM(Variable Length Subnet Mask)可进一步提高IP地址资源的利用率。
引入原因:
某公司申请了一个C类地址:202.60.31.0,供三个部门使用:销售部门有主机100台,设计部门有主机50台,财务部门有主机50台,请为三个部门划分子网,给出每个子网的掩码、子网ID和每个子网可用的IP地址范围。
若仍采用定长子网掩码划分子网,三个子网需要子网号2位,剩余6位作主机号,每个子网最多容纳62个有效主机地址,不足以为销售部门使用。
采用变长子网掩码,将00与01两个子网合并为一个子网,以共同的一位0作为子网号,剩余7位作主机地址,可容纳126个有效主机地址。而10与11两个子网不变,还是2位子网号。
分配注意事项:
VLSM地址表的最小单元是4个地址,即子网号最少2位。再少没有划分的意义。对于定长子网掩码同样要注意。
????习题
-
某个单位申请了一个C类地址202.60.31.0分配给5个物理网络,这5个物理网络分别连接的主机数是60、60、60、30、30,给出子网划分方案(包括子网地址、子网掩码、每个子网可用的IP地址)。
先尝试定长子网编码,发现不够分配,故采用变长子网掩码。
若子网号划分2位,共4个子网,每个可容纳62个主机,故将最后一个子网拆成两个可容纳30个主机的子网。
子网1ID:202.60.31.0/26 可容纳62个主机
子网2ID:202.60.31.64/26 可容纳62个主机
子网3ID:202.60.31.128/26 可容纳62个主机
子网4ID:202.60.31.192/27 可容纳30个主机
子网5ID:202.60.31.224/27 可容纳30个主机
划分子网后如何路由?
凡是从其他网络发送给本单位某个主机的 IP 数据报,划分子网后,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单网络上的路由器。然后此路由器再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后就将 IP 数据报直接交付目的主机。
对外仍呈现为一个完整的网络,对内则分为各个子网。
无分类编址CIDR
有类地址的缺点:不能灵活的根据用户需求来分配地址,造成IP地址资源的浪费。
发展:在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无类域间路由 CIDR (Classless Inter-Domain Routing)。
编址思想:将剩余的IP地址空间不再进行分类,而是根据用户的需求分为大小不同的地址块,用户可以申请到合适的地址块。
例如:某组织需要2000个地址,它可以获得一个含2048个地址的地址块(211), 即主机标识站11位,网络地址占21位,子网掩码255.255. 248.0。而不是需要一个B类网络,或者去申请8个C类网络。
特点:
- 消除了传统的 A 类、B 类和 C 类地址,根据用户的需求进行分配,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀” 来代替分类地址中的子网掩码。
表示方法:网络前缀,即/x,x表示子网掩码中1的个数。
路由聚合(构成超网)
定义:一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示多个(例如上千个)原来传统分类地址的路由。
别名:路由聚合也称为构成超网(supernetting)、路由汇总。
特点:允许路由协议用一个地址标识多个网络,进行通告。
优点:
- 减少了路由表中的路由条目
- 进行路由解析时,占用资源少,耗费时间短
核心思想:求同存异
计算方法:
示例:
NAT网络地址转换技术
NAT(Network Address Translation)
由于公用IP地址资源匮乏, 因特网管理机构定义了专用内部网络地址(即私有地址)来满足内部网络通信需求.这些网络地址在单位或组织内部使用,局部唯一即可,且无需申请。
NAT私网地址块:
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
NAT的功能:当内部网络需要与外部公网通信时,由于因特网上的路由器都不转发目的地址是私网地址的IP数据报,所以需要利用NAT技术,将内部网络地址转换为全球唯一的公网地址。
转换流程:
- 主机A(10.0.0.1)的想通过3345端口发送数据报给处于公网上的IP为128.119.40.186的80端口。
- 数据报传送至路由器,路由器通过NAT技术修改数据报中的报头,将IP转换为全球唯一的公网地址,并更新至NAT转换表中。
- 接收到138.76.29.7, 5001的响应。
- 通过查NAT转换表,知道是10.0.0.1, 3345主机,修改数据报的报头,将IP转换成10.0.0.1,端口3345,并发送给目标主机A。
NAT的优势:
- 利用极少的IP地址使多个用户接入Internet有效的节约了IP地址资源。
- 内网对外网不可见,安全性较好。
NAT的特殊性:
- NAT路由器更换了数据报的源IP或目的IP地址。
- NAT路由器在做一对多的映射时,还要查看和转换传输层的端口号。
IP数据报格式
一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
报头固定部分:
-
版本:占用4比特,当前IP的版本是IPv4,IP协议的下一个重要版本是IPv6。
-
头部长度:以4字节为一个单位的报头的长度;占用4比特, 报头20-60字节长。
-
服务类型:用来获得更好的服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段。
-
总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。实际上,总长度不能超过最大传送单元 MTU。
-
标识(identification):占16位,每产生一个数据报,通过一个计数器赋值给标识字段。但IP是无连接服务,不存在按序接收,该字段是为了处理分片报文段合并,当数据报长度超过MTU值时进行分片,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
-
标志(flags):占3位,但只有2位有意义。
- 最低位MF(More Fragment):MF=1即表示后面还有分片的数据报;MF=0表示这是若干分片数据报的最后一个。
- 中间一位DF(Don’t Fragment):DF=0表示允许分片;DF=1表示不能分片。
-
片偏移:占13位。指出某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片在整个数据报中的相对位置。片偏移以8个字节为偏移单位。这就是说,除了最后一个分片,每个分片的长度一定是8字节(64位)的整数倍。
-
生存时间(TTL:Time-to-live):表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。TTL最初存的是存活秒数,后来改为跳数限制(每转发一次跳数限制减1)。当TTL值减少到0就丢弃这个数据报,不再转发。TTL最大值255。可通过灵活修改TTL值来达到跟踪数据报传送路径(tracert跟踪路由命令)
-
协议:占8位。指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。它是网络层与传输层的粘合点,实现IP协议的多路复用和分解。(TCP的ID为6 UDP的ID为17 OSPF的ID为89)
-
首部检验和:占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
-
源地址:占32位。
-
目的地址:占32位。
报头可变部分:
-
选项:增加IP数据报的功能(IPv6中去掉了)
- 安全和处理限制(用于军事领域)
- 记录路径(让每个路由器都记下它的IP地址)
- 时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)
- 宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址)
- 严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)
- 填充:占7位,前面字段加起来不是4的整数倍时,该字段填充全0补齐为4字节的倍数
IP数据报分片与重组
IP数据报可能要通过多个不同的物理网络,而不同的物理网络对通过它的帧的大小有规定.当数据报大小超过限定值MTU时,路由器将对数据报进行分片,并由目的主机完成数据报的重组。
MTU最大传输单元:参考上文中数据传输效率问题,不同网络的MTU可能不同,以太网的MTU默认为1500字节。
分片前提:当数据报的长度大于MTU时,需要进行分片。
执行对象:路由器分片,目的主机重组。
报头相关域:
- 标识(identification)
- 标志(flags)
- 片偏移(fragment offset)
IP数据报的交付形式
- 直接交付:当源主机与目标主机在同一网络下,或之间隔着一个路由器时可直接交付
- 间接交付:源主机与目标主机不再同一网络下,需经最近路由器转发至其他路由器进行交付。
为什么同一网络可直接交付?通过主机ARP模块得到网卡地址,通过交换机送到。
路由表构成与匹配⭐
构成:
- 目的地址
- 子网掩码
- 下一跳地址
- 输出接口
记录类型:
根据目的地址不同进行分类:
- 特定主机路由:目的地址是某一特定主机的IP地址,即前缀长度为32的路由表记录(202.197.10.2/32 直接传送 a)
- 网络前缀路由:把目的主机所在的网络地址作为路由表的目的地址的路由表记录(202.197.10.0/24 直接传送 a)可以减少路由表内容,简化查询过程。
- 默认路由(缺省路由):前缀长度为0的路由表记录,可以匹配任何目的IP地址。(0.0.0.0/0 202.197.11.2 c)一般用于不符合路由表中其他目的地址的数据报所采用的路由,减少路由表的占用空间,加快处理速度。
路由匹配规则:
如何命中一条记录?
- 即IP分组目的地址与前缀长度对应的网络掩码进行与运算,如果得到的结果和该记录的目的地址一致,则匹配该记录。
- 若有多条路由表项匹配,选择匹配的前缀长度最长的表项。(最长前缀匹配规则)
- 若最终只匹配到默认路由,则将分组发送给路由器中指明的默认路由器;若没有默认路由,则报告转发分组出错。
最长前缀匹配规则,WHY?:因为网络前缀越长,其地址块就越小,因而路由就越具体 。
????习题
-
设某路由器建立了如下路由表:
记录序号 目的地址 子网掩码 下一跳 1 202.32.75.0 255.255.255.128 f0/0 2 202.32.75.128 255.255.255.128 s2/0 3 118.96.40.0 255.255.255.128 f0/2 4 198.4.153.0 255.255.255.192 s3/0 5 0.0.0.0(默认) 0.0.0.0 f0/0 现收到三个分组,其目的地址分别为:
①202.32.75.160 ②198.4.153.17 ③198.4.153.90
④201.35.64.3, 试分别计算出下一跳。解析:
步骤:1. 掩码计算 2. 命中匹配 3. 最长网络前缀原则 4. 得到下一跳
分组①经掩码计算得到202.32.75.128/25,命中记录2和记录5,根据最长网络前缀原则,取记录2,下一跳接口为s2/0
分组②经掩码计算得到198.4.153.0/26,命中记录4和记录5,根据最长网络前缀原则,取记录4,下一跳接口为s3/0
分组③经/26掩码计算得到198.4.153.64/26,无命中纪录,但有默认路由0.0.0.0,故命中记录5,下一跳接口为f0/0
分组④无命中记录,但又默认路由0.0.0.0,故命中纪录5,下一跳接口为f0/0
路由分类
- 直连路由:与路由器直接连接的路由,路由器本身可自行学习到。
- 静态路由:由网络管理员在路由器上手工添加路由信息以实现路由目的。
- 动态路由:根据网络结构或流量的变化,路由协议会自动调整路由信息以实现路由
静态路由
- 优点:
- CPU、内存,无管理开销。
- 路由器间无带宽占用
- 增加安全性,可有选择的允许路由只访问特定网络
- 简单易于配置
- 缺点:
- 管理员必须真正了解网络,配置易出错
- 对于新添网络配置繁琐
- 对于大型网络工作量巨大
- 配置命令:
- 增加一条记录:
Router(config)#ip route destination-network [mask] {next-hop address | interface}[administrative-distance] [permanent]
- 例如:
- 查看路由表:
show ip route
- 增加一条记录:
????习题
-
静态路由配置练习
r1:r1可直接学习到r2的s0与pc1、pc2;
对于pc3、pc4通过路由聚合成一条记录,目的地址192.168.2.2/24,下一跳为s0;
对于pc5、pc6通过路由聚合成一条记录,目的地址192.168.3.2/24,下一跳为s0;
r2:r2可直接学习到r1的s0、r3的s1、pc3、pc4;
对于pc1、pc2、pc5、pc6需要配置
r3:略
动态路由
动态路由选择算法:
- 距离矢量路由选择算法
- 链路状态路由选择算法
距离矢量路由选择算法
路由表结构
- 目的地址
- 最短时延(距离/费用)
- 下一跳结点
路由表初始化
- 初始时,每个路由器只能测量其邻居路由器的距离,对于其他路由器的距离视为无穷大。
路由表更新
- 通过与邻居不断交换路由表,获得其他全部路由器的距离。
- 更新原则:设路由器Y从邻居路由器X收到路由表,其中XL表示X估计的从X到路由器L的时间, Y测量出它到邻居X需要Nms,则Y得知经过邻居X到达L需要(XL+N) ms
- 更新时间:周期性交换路由表进行更新。
- 路由表更新事件触发:比如邻居路由器超过180秒没有监听到,则认为邻居死机,更新自己的路由表后,向邻居告知此事
无穷计算问题(慢收敛)
距离矢量路由选择算法对拓扑变化的好消息反应迅速,但对坏消息的反应迟钝。
本质:慢收敛的问题本质上是由于该算法路由信息交换的不充分,只是从邻居那里获得了部分网络拓扑信息;该问题难以从本质上解决;而链路状态型可以获取整个网络拓扑结构,信息充分,不会存在这样问题;
解决方案:
- 限定无穷大
- 限定网络最大跳数为N,当跳数大于N时视为无穷大。
- 缺点是N的值难以确定。设小了,网络规模受限;设大了,收敛慢。
- 水平分割
- 任何一个节点不把从其邻居路由器学到的路由再回送给那些邻居路由器
- 毒性反转+触发更新
- 把C从其邻居路由器B学到的路由再回送给邻居B,在C给B的距离矢量表中,把C经B到A的代价设置为无穷大,来确保B不会使用C到达A的路由。
- 为了加强毒性反转的效果,同时采用触发更新机制,一旦某一节点 检测到网络故障,就立即发送距离矢量表,不用等到下一个周期。
- 带毒性反转的水平分割
链路状态路由选择算法
开放式最短路径优先 Open Shortest Path First(OSPF)
步骤
- 发现邻居
- 使用HELLO分组,发现邻居路由器
- 测试到邻居的距离
- 组装链路状态分组
- 路由器标志
- 序号
- 年龄
- 邻居结点列表
-
发布链路状态分组
- 每个路由器向邻居广播链路状态分组,邻居路由器当收到分组后,保存,然后发往除输入链路之外的所有链路。
- 序号:防止收到重复或过时的分组
- 年龄:防止分组长时间在网络传播
- 计算新路由
- Dijkstra算法,算出所有目的节点的最短路径
特点
- 当网络拓扑结构发生变化时能快速收敛,适用于大规模的网络
- 支持负载均衡,如果到同一个目的网络有多条相同代价的路径,可以将通信量分配给这几条路径
- 所有在OSPF路由器之间交换的分组都具有身份鉴别的功能
- 支持可变长度的子网划分和误分类编址CIDR
- 分布式链路状态协议
OSPF的区域
OSPF是分布式链路状态协议,需要以广播的形式发布链路状态分组。当网络规模较大时,通信负载重。
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统划分为若干个更小的范围叫做区域(area)。
一个自治系统内的所有网络属于一个组织或机构管辖,在现在的互联网环境下,一个大的ISP就是一个自治系统,每个自治系统有权自主决定采用哪种路由选择协议。
划分区域
每一个区域有一个32位的区域标识符。
区域不能太大,一个区域内的路由器最好不超过200个。
OSPF使用两级层次结构的区域划分
- 上层区域叫 主干区域(backbone area)
- 下层区域叫 常规区域(regular areas)
- 主干路由器:R3、R4、R5、R6、R7
- 区域边界路由器:R3、R4、R7
- 自治系统边界路由器:R6
划分区域的好处
- 利用洪泛法交换链路状态信息的范围局限在每一个区域而不是整个自治系统,减少了整个网络的通信量。
- 一个区域内的路由器只需知道本区域的完整拓扑,不用知道其他区域的拓扑。
分层次的路由选择协议
- 内部网关协议IGP(Interior Gateway Protocol)
- 外部网关协议EGP(External Gateway Protocol)
ICMP协议
为了更有效的转发IP数据报和提高交付成功的机会,在网络层使用ICMP协议。
主要用途
- 发生差错的路由器利用ICMO向IP数据报的源主机报告差错或意外情况。
- 主机利用ICMP查询信息
工作原理
ICMP工作在网络层,封装在IP数据报中进行传送。
IP Protocol字段
- 1:ICMP协议
- 6:TCP协议
- 17:UDP协议
- 89:OSPF协议
特点
- ICMP本身是网络层的一个协议。
- ICMP不能纠错,只是报告差错。差错处理需要高层协议去完成
- ICMP并不能保证所有的IP数据报都能够传输到目标主机。
报文格式
- 类型
- 差错报告报文
- 终点不可达(type=3)
- 超时报文(type=11)
- 参数出错(type=12)
- 源抑制报文(type=4)
- 重定向报文(type=5)
- 查询报文
- 回应请求/应答报文(type=8/0)
- 时戳请求/应答报文(type=13/14)
- 差错报告报文
ICMP应用
- ping命令:测试目的主机或路由器是否可达
- tracert(windows环境下)/ traceroute(Linux环境下)
ping命令
向目的IP地址发送一个ICMP请求回显报文(type=8,code=0)
目的主机收到ICMP请求回显报文后,立即生成一个ICMP回显应答报文(type=0,code=0),返回给源主机。
tracert/traceroute命令
跟踪从源端到目的端的整个路径上的路由器
路由器访问安全
https://wenku.baidu.com/view/abd688ee102de2bd960588e3.html
数据链路层
Data Link Layer
数据链路层服务功能可以分为:
- 为网络层屏蔽物理层采用的传输技术的差异性。
- 为网络层提供无差错的数据链路。
- 通过帧控制字段实现对网络链路的控制和管理。
信道
- 点对点信道
- 一对一的点对点通信方式
- 广播信道
- 一对多的广播通信方式
- 交换式信道
封装成帧
封装成帧就是在一段数据的前后添加首部和尾部,确定帧的界限。
帧定界
帧定界有多种方法:
-
字符计数法
-
字符填充的首尾界符法
-
比特填充的首尾界符法
用一组比特作为帧的起始和结束,如01111110。
透明传输
不管用户希望传送什么数据,都可以放在帧中传递过去。
字符型协议解决透明传输问题
如果数据部分出现控制字符SOH/EOT,会被误认为是一个控制字符而丢弃后面的。
解决方法有:
数据中出现的控制字符前面插入一个ESC转义字符。如果转义字符也是数据一部分,那应当在转义字符前也插入一个转义字符。
接收方收到数据部分后,删除转义字符。
比特型协议解决透明传输问题
利用0比特插入法。
发送方的数据部分,若出现连续的5个1,则在后面填充一个0。保证数据部分不会出现01111110。
接收方对于数据部分的处理是,如果存在111110,则删除0,最终得到真实的数据部分。
字符型协议与比特型协议对比
面向字符型的数据链路层协议有以下缺点:
- 使用不同字符集的系统难以通信
- 增加功能需要增加新的控制字符,扩展困难
面向比特型的数据链路层协议有以下优点:
- 控制字段包含协议已定义的帧结构,也可以扩展其他帧结构用于链路控制。
- 无需转义,插入的位相对较少,减轻网络负担,误码率更低。
差错检测
差错种类
- 随机差错:随机热噪声引起
- 突发差错(主要原因):冲击噪声引起
差错检测编码
- 检错码(简单,应用广)
- 纠错码(复杂,应用少)
编码性能指标
- 编码效率: $ R=k/(k+r) \space\space 信息位(k),冗余位®$
- 漏检率:信息位出错但是接收者漏检的概率
检错码
- 奇偶校验码
- **循环冗余校验码(CRC)**⭐
CRC循环冗余校验码
Cyclic Redundancy Check
基本原理
- 已知一个被传输数据块DATA, k位长,已知除数P, n+1位长。
- 发送方要产生一个n位长的检错码FCS。
- 把检错码FCS加到数据DATA后面,组成一个包
含有k+n的发送帧T,使T能被已知数P整除。 - 发送帧T。
- 当接收器把接收到的帧T’除以P,若能整除,则认为T’无差错。
检错码的计算
计算采用模二运算,模二运算法则:
- 加法不进位,减法不借位
- 比特序列乘以2的k次幂,就是将比特序列左移k个位置,其后逐位填零
计算步骤:
已知 被传输数据块DATA,包含有k位;P是发送方和接受方均已知的除数,它的第一位和最后一位必须是1,共n+1位。
- 将DATA乘以 $ 2^n $ ,即将DATA左移n位逐位补零。
- 用DATA除以P,采用模二运算,得到n位余数R(不足则前补零)就是DATA的CRC码。
- 将DATA与CRC码组合,得到最终传输的数据:$ DATA_T = DATA_0 + R $,它必能被P整除。
检验差错
接收端收到 $ DATA_T^{’} = DATA_0^{’} + R^{’} $
如果 $ DATA_T^{’} $ 能被P整除,则认为没有传输差错。
举例
CRC生成多项式的表达方式
常用生成多项式G(x)来描述除数P。
n位除数P对应一个n-1次多项式。
对应关系如下:
已知除数P为“1010001”,则生成多项式G(x)描述为6次多项式:$ x6+x4+1 $
检错能力
K为生成多项式的最高次数。
- CRC校验码能检查出全部单个错;
- CRC校验码能检查出全部离散的二位错;
- CRC校验码能检查出全部奇数个错;
- CRC校验码能检查出全部长度小于或等于K位的突发错;
- CRC校验码能以$ [1 - \frac{1}{2}^{K-1}] K+1 $位的突发错误;
- 如果K=16,则该CRC校验码能全部检查出小于或等于16位的所有突发差错,并能以$ 1-\frac{1}{2}^{16-1}=99.997% $的概率检查出长度为17位的突发错,漏检概率为0.003%;
标准CRC生成多项式
- CRC-12
- CRC-16
- CRC-CCITT
- CRC-32
补充
OSI的观点是必须把数据链路层做成是可靠传输的。因此在CRC检测基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。
这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。
因特网广泛使用的数据链路层协议都不适用确认和重传机制,即不要求数据链路层向上层提供可靠传输的服务(因为这要付出的代价太高,不合算)。如果在数据链路层传输数据时除了差错并且需要进行改正,那么改正差错的任务就由上层协议(如,运输层TCP协议)来完成。实验证明,这样可以提高通信效率。
PPP点对点协议
在点对点链路上,现在使用的最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
PPP 协议有三个组成部分
- 一个将 IP 数据报封装到串行链路的方法。
- 一个链路控制协议 LCP (Link Control Protocol)
- 一套网络控制协议 NCP (Network Control Protocol)
帧格式
- 标志字段F=0x7E
- 地址字段A只置为0xFF
- 控制字段C通常置为0x03
PPP协议对于透明传输问题,采用零比特填充法,具体细节在上文。
工作流程
- 当用户拨号接入ISP时,就建立一条物理连接
- PC机向路由器发送一系列的LCP分组(封装成多个PPP帧),建立LCP连接。
- 再进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,使PC机成为因特网上的一个主机。
- 通信完毕时,NCP释放网络层链接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层连接。
局域网
定义:将小区域内的各种通信设备、主机互联在一起形成的通信网络。
特点:
- 具有广播功能。
- 高传输速率
- 低误码率
- 设备位置灵活
- 企业、学校等独立建设和拥有,易于维护管理
拓扑结构
- 总线型
- 介质访问冲突问题
- 星型网
- 中心结点负责转发从结点的数据。
- 交换局域网是一种典型的星型拓扑结构
- 环型网
- 多个结点共享一条环通路,数据延某一方向传送。
- 令牌环网是一种典型的环形拓扑结构。
- 存在共享介质访问控制问题。
传输介质
同轴电缆
优点:传输距离远,抗干扰能力强,技术成熟
缺点:电缆安装困难,成本高
双绞线
- 中、高速局域网
优点:非屏蔽双绞线最常用,易安装、成本低。
光纤
- 远距离传输
优点:速度快、距离远,抗干扰能力强,损耗低
缺点 :成本高,施工复杂
无线传输
方式:
- 无线(radio)
- 微波(microwave)
- 红外(infrared)
- 可见光(visible light)
介质访问控制
多个结点在同一介质上传输数据时,为了防止冲突,需要进行介质访问控制。
重点解决三个问题:
- 当前哪个结点发送数据?
- 发送时能否避免冲突?
- 出现冲突如何解决?
控制方法:
- 信道划分协议
- TDMA 时分多址(路)
- FDMA 频分多址(路)
- CDMA 码分多址(路)
- SDMA 空分多址(路)
- 轮流协议
- 轮询、令牌
- 随机争用协议
- ALOHA
- CSMA
- CSMA/CD⭐
抽象举例:
这是高通公司为了让大家理解CDMA而举的一个很经典的例子。高通把各种无线技术比喻成在一个大厦中聚会。
频分多址就好比把聚会大厅分成一个个小房间,房间里面的双方可以很清楚的听到对方讲话,但是这种方式的缺点也很明显,就是能够容纳的客人太少了,只有20个房间就把大厅占满了,其他人都没法进场了啊;
时分多址就是在频分多址的基础上,规定每个房间的人只能连续讲10分钟的话,超过10分钟就要让给下一对儿,等下次轮到你了,你再占用这个房间讲话。通过这种方式,可以有更多的人参加到酒会里来,只要间隔时间(例子中的10分钟)在你可以忍受的范围内,那么就不会有什么问题;
CDMA即码分多址是指,大家都在大厅里,没有小房间了,大厅里可以容纳很多很多人,但是,你和张三说中国话,alice和bob说英文,cici和coco说意大利语,虽然大家都叽叽喳喳的说着话,但是你还是可以很清楚的听明白张三说的什么,因为你只能听懂中国话,听不懂英文和意大利语,就把其他语言当成噪音直接过滤掉了。
原文链接:https://blog.csdn.net/weixin_40228289/article/details/83024292
局域网模型
为什么局域网数据链路层要分两层?
LLC层的主要作用:保证站点之间数据传输的正确性,包括数据链路层通用的内容。
MAC层的主要作用:解决多个站点对共享信道的访问问题。
逻辑链路控制LLC子层和介质访问控制MAC子层,使LAN体系结构能适应多种传输介质。
对各种类型的局域网来说,其物理和MAC子层需要随着所采用介质和访问方法的不同发生改变,而这些不同对于LLC子层来说都是透明的。
“以太网”应当是指符合 DIX Ethernet V2 标准的局域网
前导符与起始符⭐
7个10101010字节尾随1个10101011字节,用来同步收发双方的时钟速率,稳定收发电路状态。
CSMA/CD协议
载波侦听多路访问/冲突检测
Carrier Sense Multiple Access with Collision Detection
基本思想
- 某站点想要发送数据,它必须首先侦听信道;
- 如果信道空闲,立即发送数据;如果信道忙,则继续侦听信道,直到信道变为空闲,立即发送数据;
- 站点在发送过程中继续检测信道,若一直未检测到碰撞,则把该数据成功发送完毕;如果检测到冲突,立即停止发送数据,发送干扰信号,然后执行指数退避算法,等待一随机长的时间,重新侦听信道,返回第2步。
技术实现
- 先听后发:载波侦听技术
- 方案1:通过判断总线的电平是否出现跳变来判断总线忙闲,实现载波侦听
- 边发边听:碰撞/冲突检测技术
- 方案1:检测电平信号变化幅度是否超过一定的门限值
- 方案2:编码违例法检测冲突。接收总线上的信号,检测编码是否符合曼彻斯特编码规则,不符合就认定为发生冲突。
- 冲突停止:发送干扰信号
- 延迟重发:截断二进制指数退避算法
曼彻斯特编码
以太网采用曼彻斯特编码传送数据,编码本身带有同步信号。
规则
- 每比特的周期T分为前T/2与后T/2两部分;
- 通过前T/2传送该比特的反码,通过后T/2传送该比特的原码(或相反);
- 通过前T/2传送该比特的反码,通过后T/2传送该比特的原码(或相反);
编码违例法
编码违例法解决边发边听时,如何检测冲突的问题。
接收总线上的信号,检测编码是否符合曼彻斯特编码规则,不符合就认定为发生冲突。
冲突避让
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
冲突原因
冲突从产生到发现,有一个传播时延。
冲突窗口
在一个局域网中,A、B两结点是距离最远的两点,相距D,信号传播速度V,A在发送数据后最多在W时间后可以检测出所有可能的冲突。
$ W=\frac{2D}{V} $ ,W被称为冲突窗口(争用期)
若在冲突窗口内内有检测到冲突,则可以确认自己竞争到了总线的使用权,不会再与其他站点发生冲突。
冲突停止
发送干扰信号
- 如果发送节点检测到冲突,则停止发送数据,并发出一个4字节或6字节的阻塞信号来加强冲突,增加编码违例的位数,使其他站点快速检测到。然后等待随机长的时间后再重新侦听信道。
延迟重发
截断式二进制指数退避算法
- 确定基本退避时间片B,一般取冲突窗口值2 $ \tau $ (两倍的端到端时延)
- 定义参数k,即k=Min[重传次数,10]
- 从离散的整数集合 $ [0,1,…,(2^k-1)] $中等概率随机取出一个数,记为r
- 重传所需的时延就是r倍的基本退避时间,即r*B
- 当重传达16次仍不能成功时,则丢弃该帧,并向高层报告
- 当冲突少时,结点可以以较少的时间延迟发送数据;
- 当冲突严重时,r可以获得更大的取值范围,有助于避免再次冲突;
- 当冲突次数大于10时,为了避免过长的延迟时间,所以限制K=10
集线器Hub
采用星形拓扑的以太网,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器。
使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线。
集线器很像一个多接口的转发器,工作在物理层。
集线器是共享总线型设备,是半双工的。
以太网MAC帧格式
1. 前导符和起始符
8个字节
7个10101010字节尾随1个10101011字节,用来同步收发双方的时钟速率,稳定收发电路状态,并进行帧定界。
2. 源地址和目的地址
发送主机和接收主机的物理MAC地址,每个地址6个字节。
3. 类型
2个字节
以太网支持多个网络层协议,每个网络协议有固定编号。
接受方收到帧后,会根据协议类型将数据帧交给相应的网络层协议。
类型字段值 | 协议 |
---|---|
0800 | IP |
0806 | ARP |
8137 | Novell IPX |
809b | AppleTalk |
0835 | RARP |
4. 数据
长度46~1500字节
以太网的MTU为1500字节
为了确保64字节的最小帧长,当数据的字节数不够时进行填充。
5. FCS
4个字节
采用32位的CRC校验。
其他
64 - 目的地址6字节 - 源地址6字节 - 类型2字节 - CRC4字节 = 46Bytes
64字节的最小帧长度是在传统以太网中的限制。
以太网最小帧长度问题⭐
问题描述
若帧过短,会导致在冲突信号返回前数据已传送完毕,发送方会认为数据已被成功的传送。
为了保证正确传输,发送方需要缓存已发送的帧,并在冲突窗口内侦听冲突信号。
已知条件
帧的传输时长t = 数据帧长度 / 数据传输速率
信号传播时延T = 两站点的距离 / 信号传播速度
解决方案
保证在帧的传输过程中,检测到冲突,即:
$ t >= 2*T $
结论
-
在一个最大长度为2500米,具有4个中继器的10Mbps局域网,往返一周大约是50微妙,大约是传递500比特所需要的时间,为保证安全,将最小帧定为512比特,即64字节作为该类型以太网的最小帧长度(不含前导字符和起始字符)
-
在以太网中,由于冲突窗口的限制,最小帧长$ F_{min} $ 、传输速率R、网络跨距S三者之间必须满足一定的关系:
$ F_{min} = kSR \space\space\space\space k:系数 $
可以看出:
- 最小帧长度不变时,传输速率越高,网络跨距就越小
- 传输速率固定时,网络跨距越大,最小帧长度应越大
- 网络跨距固定时,传输率越高,最小帧长度应越大
局域网扩展
- 在物理层扩展局域网——集线器
- 在数据链路层扩展局域网——网桥、交换机
冲突域
网络中的一组设备集合;域内的不同设备同时发出的以太网帧会互相冲突;特点为:每台主机的可用带宽很低,网上冲突成倍增加,信息传输安全得不到保证。
广播域
网络中的一组设备集合;当这些设备中的一个发出一个广播时,所有其他的设备都能接收到这个广播帧。
1. 集线器扩展
优点:
- 增加了局域网中接入的主机数
- 扩大了局域网覆盖的地理范围
缺点:
- 冲突域增大了,冲突严重了
- 不同数据传输速率的以太网无法通过集线器互联
2. 交换机扩展
优点:
- 利用交换机连接以太网段或直接连接主机,把共享式以太网转变为交换式以太网,解决了冲突问题,提高了网络带宽利用率,允许不同速率的以太网互联。
交换式以太网⭐
交换机工作原理
- 生成与维护交换机表
- 数据帧转发
- 端口安全
- 环路避免
交换机表
表结构
MAC地址 | 端口 | 时间 |
---|---|---|
数据的生成与维护
- 交换机表初始为空
- 当又主机生成数据帧发送到交换机的某一端口,若表中没有该MAC地址的记录,则生成记录。
- 若有该MAC地址的记录,更新该记录的端口与时间。
定时器
- 定时检测交换机表中过时的记录,删除。
- 优点:这有利于节省存储空间,及时地反映当前网络状况。
数据帧转发
场景
不同域的数据帧转发
A->F:交换机表中存在,只向目的端口转发,而不是广播
A->B:同一端口下的通信,不需要转到其他端口,1端口与2端口下的内部通信相互不干扰,减小了冲突域
A->G:交换机表中不存在,需要发送广播获取该主机的信息,广播帧发往各个端口,所以一个交换机下是一个广播域
接收帧处理
-
交换机从X端口接收到数据帧A,获取其目的MAC地址 MAC-A,判断A是否是广播帧
-
若帧A是广播帧,交换机向其他所有端口转发帧A
-
若帧A不是广播帧,根据帧A的目的地址,搜索交换机表,查找MAC-A所连接的端口Y
-
若查找到记录
-
若X、Y为不同端口
交换机将数据帧A转发到Y端口的缓冲队列
-
若X、Y为同一端口
交换机丢弃数据帧A(过滤帧,减小冲突域)
-
-
若查找不到记录
将数据帧A 广播到除了输入端口外的其他所有端口
-
-
端口安全
交换机端口安全特性可以阻止非授权用户将集线器、交换机等设备接入到交换式局域网中。
可以配置交换机端口,使得当具有非法MAC地址的设备接入时,交换机会自动关闭接口或者拒绝非法设备接入,也可以限制某个端口上接入的最大的MAC地址个数。
生成树协议STP⭐
生成树协议(Spanning Tree Protocol)是为了解决网络环路问题,以及环路引起的广播风暴。
思路
在局域网中生成树形结构,将某些端口置于阻塞状态, 避免环形结构存在,防止数据在交换机之间循环传送,解决广播风暴问题
步骤
-
选举根桥:标识符最小的交换机当选。
桥标识符 = 桥优先级 + 桥MAC地址
-
选择所有非根桥的根端口:比较非根桥的每一个端口到根桥的路径代价,代价最小的来做根端口
-
选出每个网段中唯一的指定端口:比较该网段中每一个端口到根桥的路径代价,代价最小的做指定端口
-
所有未被选作根端口或指定端口的端口成为非指定端口,进入阻塞状态,完成生成树的构造
交换机转发方式
-
存储转发方式
交换机完整的接收数据帧,进行差错检测、查表、转发
优点:进行差错检测,避免传递错误帧
缺点:交换延迟时间长
-
直通转发方式
交换机只检测到目的地址字段就立即将该帧转发,不进行差错检测
优点:交换延迟时间短
缺点:没有差错检测,可能传递错误帧
交换机的特点
- 交换机依据帧中的地址信息进行转发,是数据链路层的网络连接设备
- 每个端口为一个独立的冲突域,减少了冲突范围,提高了通信效率
- 交换机能够同时在多对端口间无冲突地交换数据帧
- 交换机支持不同数据传输率端口之间的数据传输;
- 交换机不限制广播帧
- 有可能产生广播风暴,必须采用生成树算法解决
- 适用于小型网络到大型园区网络
- 大型网络中需解决广播问题
集线器与交换机的比较
- 集线器工作在物理层,逐位复制比特,不关心数据帧的内容;交换机工作在数据链路层,能针对数据帧进行识别、学习和转发。
- 集线器不能减小冲突域的范围
- 集线器不支持多端口的并行转发
- 集线器不支持不同数据传输率端口之间的数据传输
- 集线器不限制广播帧
- 集线器适用于小型网络
- 集线器是共享总线型设备,是半双工的,交换机是通过内部交换矩阵实现独享带宽的设备,是全双工的
网桥与交换机的比较
网桥的工作原理与交换机类似:
- 网桥在数据链路层上实现局域网互连
- 自学习构造MAC表
- 过滤本网段帧(隔离冲突域)
- 转发异网段帧(交换)
- 广播未知目的地址的帧(寻找目的站点)
- 采用生成树算法解决环路带来的广播风暴
不同点在于:
- 网桥是基于软件进行数据帧的转发,速度慢;交换机基于硬件进行转发,速度快;
- 网桥的端口密度小,交换机端口密度大;
- 交换机是多端口的高速网桥,网桥是多网卡的计算机;
- 网桥一般用于连接LAN,交换机一般直接连主机
虚拟局域网VLAN
问题的提出
- 当网络中广播域内节点数量增多时,网络中广播包将严重影响网络通信的效率,如何缩小广播域呢?
- 广播域增大,如何提高安全性?
- 用户的逻辑分组发生变化,是否就一定要改变物理接线?
VLAN的划分方法
示意图
划分
- VLAN将同一个交换机上或不同交换机上的多个计算机划分为一个逻辑组;
- VLAN内主机之间的通信就像在一个局域网一样,且可以广播;
- VLAN外主机之间不能进行数据链路层的通信,不能广播,需要经过路由器转发,限制了广播域的范围;
- 一个VLAN = 一个广播域 = 一个逻辑网段 (子网)
效果
- 当 B1 向 VLAN2 工作组内成员发送广播时,工作站 B2 和 B3 将会收到广播的信息。
- B1 发送数据时,工作站 A1, A2 和 C1都不会收到 B1 发出的广播信息。
虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息而引起性能恶化。
具体划分方法分为
- 静态VLAN:用端口号定义虚拟局域网
- VLAN10:1、3、4端口
- VLAN20:2、5、6端口
- 动态VLAN:用MAC地址等定义虚拟局域网
- VLAN10:MAC2、MAC3、MAC4
- VLAN20:MAC1、MAC5、MAC6
VLAN的运行与Trunk链路
-
访问端口:access
只能属于某一个VLAN, 它只能承载某一个VLAN的流量。
-
中继端口:trunk
能够承载多个VLAN的流量,一般指交换机之间或交换机与路由器之间的链路。
VLAN的配置步骤
- 全局配置模式下,输入VLAN ID,进入VLAN配置模式:
Switch(config)#vlan {vlan-id}
- 为VLAN设置名字(可选):
Switch(config-vlan)#name {vlan-name}
- 创建VLAN之后, 把交换机端口分配到特定的VLAN里. 若把端口分配进了不存在的VLAN里,那么新的VLAN将自动被创建.
Switch(config)#interface {interface}
- 定义VLAN端口的成员关系,把它定义为访问端口:
Switch(config-if)#switchport mode access
- 把端口分配进特定的VLAN里:
Switch(config-if)#switchport access vlan {vlan-id}
- 定义端口为中继端口:
Switch(config-if)#switchport mode trunk
- 配置中继端口,定义封装协议:
Switch(config-if)#switchport trunk encapsulation dot1q
通过将虚拟子接口划分到VLAN中并为其配置封装协议。
VLAN间路由概述
不同VLAN间的通信需要借助第3层具有路由功能的设备。
路由实现方案
- 使用路由器,采用单臂路由模式
- 三层交换机(实践中较多采用)
单臂路由模式
节省端口但转发速率慢。
步骤:
- 交换机配置VLAN划分
- 在路由器的一个端口上设置子接口,并为子接口配置IP地址,此IP地址成为各VLAN的网关。
三层交换机
转发速率快。
三层交换机通常采用硬件来实现。
VLAN的作用
-
端口隔离,控制广播数据
VLAN能够提供隔离广播的逻辑域,提高网络通信效率; - 增强了网络的安全性
不同VLAN的设备将不能直接通信,杜绝了广播信息的不安全性; - 实现虚拟工作组,提高管理效率
用户的工作地点不必在同一个物理地点;
可在企业内建立灵活的、动态化的组织结构。
更改用户所属的网络不必重新布线,用软件设置即可,方便网络用户管理;
VLAN与子网划分的比较
- 子网划分是在网络层,作用是隔离不同网段之间的通信;
- VLAN划分是在数据链路层,作用是隔离不同VLAN之间的以太网帧的通信;
- IP层已经可以有效隔离通信,VLAN划分主要是用于广播隔离,便于管理与识别;
- 实际情况中,子网划分与VLAN划分经常做成一样的,一个VLAN配一个IP子网;
- 子网划分不能取代vlan划分,因为隔离广播域是提升带宽利用率的重要手段;
- VLAN划分取代子网划分理论上是可以,但是我认为并不实用,因为子网划分通过IP和掩码很轻易就能看出,这种易识别性在日常管理中是很重要的。而vlan划分由交换机配置和主机的接入端口共同确定,难以观察识别,管理维护成本较高。
物理层
数据传输方式
按信号分类
- 模拟通信
- 数字通信
按一次传输的数据位数
- 串行通信
- 并行通信
按信号传送的方向与时间的关系
- 单工通信:方向固定的通信
- 半双工通信:方向不固定但不能同一时间通信
- 全双工通信:方向不固定且可同时通信
数字通信
数字通信
- 抗干扰能力强、无噪声积累
- 便于加密处理
- 便于存储、处理和交换
- 设备便于集成化、微型化
串行与并行通信
串行:远距离、可靠、速度慢、易于实现
并行:近距离、不可靠、速度快、成本高
计算机内部使用并行通信;
远程通信使用串行通信。
基带传输
基带传输:在数字通信信道上,直接传送基带信号的方法。
基带信号:信源发出的没有经过调制的原始电信号,频率低,含大量的交流分量。
由于在近距离范围内基带信号的衰减不大,从而信号内容不会发生变化。基带信号中交流分量极其丰富,所以不适合长距离传输。
信号
- 模拟信号:连续值
- 数字信号:离散值
- 调制:把数字信号转换为模拟信号的过程
- 解调:把模拟信号转换为数字信号的过程
- 信号的时域特性
- 信号的频域特性
调制
基本调制方法有:
- 调幅(AM):载波的振幅随基带数字信号而变化。
- 调频(FM):载波的频率随基带数字信号而变化。
- 调相(PM) :载波的初始相位随基带数字信号而变化。
频谱特性
- 时域法:电压u与时间t的关系
- 频域法:振幅E与频率f的关系
频域法的研究工具:傅里叶分析
傅里叶分析的结论
- 一个周期性的函数可以分解为无数个正弦和余弦函数的和;如矩形脉冲信号是直流分量、基波、多次谐波等无数个频谱分量的叠加。
- 一个非周期性的函数可以分解为无数个正弦和余弦函数的和。
信道
- 有线信道和无线信道
- 模拟信道和数字信道
截止频率/带宽
定义:把信号在经过一定距离的信道传输过程中某个分量的振幅衰减为原来的0.707时所对应的频率称为信道的截止频率,亦即该信道的带宽。
信道的截止频率和带宽反映了信道固有的物理属性。
信道带宽越宽,意味着通过的衰减不大的谐波分量越多,信号传输的失真越小。
数据传输速率
两种表示方式:
- 波特率、比特率
波特率B:指单位时间内通过信道传输的码元个数。
码元是在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形。
一个数字脉冲就是一个码元。
比特率R:指单位时间内通过信道传输的比特数, 单位为比特/秒,简记为b/s或bps
两者关系:
速率与带宽?
在任何信道中,码元传输的速率是有上限的,传输速率超过此上限(带宽),就会出现严重的码间串扰问题,使得接收方对码元的判决成为不可能。
奈奎斯特定理⭐
Nyquist
前提
- 有限带宽无噪声的通信信道
已知
- 信道带宽H(Hz),被传输信号电平分为V级(信号状态数为V个)
公式⭐
- 该信道的最高数据传输率Rb为:
用途
- 估算已知带宽的信道最高速率(远高于实际速率)
举例
-
一个无噪声的信道带宽为3kHz,传输四进制(四电平)信号,它的最大传输速率为多少?
-
[解析]
香农定理⭐
Shannon
前提
- 有限带宽有噪声的通信信道
已知
- 信道带宽为H(Hz),信噪比为S/N:S表示信号功率,N表示噪声功率。
- 一般信噪比 以分贝的形式给出,转换公式为:
- 信噪比越大,极限传输速率越高
公式
用途
- 估算有噪声信道的最大数据传输速率,该值为理论极限,只考虑了白噪声。
信道复用技术
定义:信道复用是指在一条物理线路上同时传输多路信息。
目的:提高通信线路的利用效率,降低通信成本。
Multiplex多路复用
多路复用分类
- 频分多路复用(FDMA)
- 波分多路复用(WDMA)
- 时分多路复用(TDMA)
- 码分多路复用(CDMA)
(数据链路层 - 介质访问控制一节简单概述了一下,抽象举例复制过来再看看)
抽象举例:
这是高通公司为了让大家理解CDMA而举的一个很经典的例子。高通把各种无线技术比喻成在一个大厦中聚会。
频分多址就好比把聚会大厅分成一个个小房间,房间里面的双方可以很清楚的听到对方讲话,但是这种方式的缺点也很明显,就是能够容纳的客人太少了,只有20个房间就把大厅占满了,其他人都没法进场了啊;
时分多址就是在频分多址的基础上,规定每个房间的人只能连续讲10分钟的话,超过10分钟就要让给下一对儿,等下次轮到你了,你再占用这个房间讲话。通过这种方式,可以有更多的人参加到酒会里来,只要间隔时间(例子中的10分钟)在你可以忍受的范围内,那么就不会有什么问题;
CDMA即码分多址是指,大家都在大厅里,没有小房间了,大厅里可以容纳很多很多人,但是,你和张三说中国话,alice和bob说英文,cici和coco说意大利语,虽然大家都叽叽喳喳的说着话,但是你还是可以很清楚的听明白张三说的什么,因为你只能听懂中国话,听不懂英文和意大利语,就把其他语言当成噪音直接过滤掉了。
原文链接:https://blog.csdn.net/weixin_40228289/article/details/83024292
频分多路复用
Frequency Division Multiple Access
原理
把传输介质的可用带宽分割为多个频段(子信道),分配给每一路输入信号,输入信号被调制成不同频率的信号,在子信道中传输。
在子频段之间要留有一定的空闲频带,作为保护频带,减少各路信号之间的相互干扰。
波分复用
Wavelength Division Multiplexing
原理
波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号。
时分复用
Time Division Multiplexing
原理
将传输线路的可用时间分成多个时间片,每个用户获得时间片,利用信道的全部带宽传输数据。
时分多路复用可分为
- 同步时分多路复用SynchronousTime Division Multiplexing
- 目前电信网络中广泛应用
- 统计时分多路复用Statistical Time Division Multiplexing
同步时分复用-资源浪费问题
当某个子信道没有数据传输时,仍然占用时间片。
解决方案-统计时分复用STDM
将传输线路的可用时间分成多个时间片(时隙),动态的根据每个子信道的通信需求分配
码分多路复用⭐
Code Division Multiple Access
各用户使用经过特殊挑选的不同码型,彼此同时同频带使用不会造成干扰。
这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
码片序列
Chip Sequence
每个比特时间划分为m个短的间隔,称为码片(Chip)。
每个站被指派一个唯一的m bit 码片序列。
- 如发送比特1,则发送自己的m bit 码片序列。
- 如发送比特0,则发送该码片序列的二进制反码。
例如,S站的8bit码片序列是00011011。
- 发送比特1时,就发送序列00011011。
- 发送比特0时,就发送序列11100100。
按惯例,将码片中的1写为+1,0写为-1,S站的码片序列可记为(-1-1-1+1+1-1+1+1)
码片序列的正交关系
每个站分配的码片序列不仅必须各不相同,并且还必须相互正交。
已知两个码片向量S与T。
两个不同站的码片序列正交,就是向量 S 和T 的规格化内积都是 0(向量 S 和T 的反码规范化内积也为0)
例如S=(-1-1-1+1+1-1+1+1),T=(-1-1+1-1+1+1+1-1)
S与T正交,等于1+1-1-1+1-1+1-1=0
正交关系的其他特性:
- 任何一个码片向量和该码片向量自己的规格化内积都是1 。
- 一个码片向量和该码片反码的向量的规格化内积值是–1。