阅读说明

  • 本文定位于就业向总复习,从整体上把握计算机网络的相关理论
  • 由于不同网络设备之间的实际配置可能存在很大差异,本文不涉及具体的网络设备配置,后续将发文以ensp模拟华为设备,有机会的话也会进行一些其他模拟器和设备的尝试
  • 本文不适合零基础入门或者进行专业学习
  • 本文的体系应该还是比较完善的,包括基本概念,通信过程及相关说明,可靠性,相关扩展
  • 不够详细之处还请自行搜索相关内容,以及就业向还是多背记题目扩充知识面也会有更深入的理解

参考王道考研计算机408-计算机网络
说明的结构会进行调整,简化一些内容并且扩充应用方面的知识

计算机网络理论

基本概念

计算机网络是软硬件结合实现数据通信和资源共享的系统

数据通信和资源共享是计算机网络的基本功能,资源共享中的资源包括软件,硬件和数据,常见应用如数据库,云盘,与计算等,包括通过分布式部署提高可靠性,负载均衡等都是先要基于数据通信和资源共享才能实现.这个似乎有很多种说法,但是大概意思是差不多的,理解即可.

网络分层

网络通信的过程极为复杂,网络分层可以将复杂的问题拆分为多个简单的部分,以便于进行针对性地处理和优化.
在分层之后,上层服务单向调用相邻下层服务,下层服务又基于下下层所提供的服务向上层提供服务.
通常所说的计算机网络分层是OSI七层模型和TCP/IP四层模型

OSI七层模型

层次 功能
应用层 用户交互产生网络流量
表示层 数据格式变换,数据加密解密,数据的压缩和恢复
会话层 建立,管理,终止会话
使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步
传输层 端到端可靠/不可靠传输,差错控制,流量控制,复用分用
网络层 路由选择,流量控制,差错控制,拥塞控制
数据链路层 成帧,差错控制,流量控制,访问控制
物理层 实现透明传输,即不管传输的内容是什么都能够实现传输

上述理论内容相对复杂,如果完全没有基础也可以先看后续内容再回过头来看这部分.

TCP/IP四层模型

osi七层模型是理论上的标准,很有学习意义,但是由于其理论过于冗余不便于实现,并且发布较晚,这时相对简单实用的TCP/IP模型已经占据市场.
TCP/IP相当于是将七层模型的上三层合并为应用层,下两层合并为网际接口层,同时TCP是一个协议簇.

学习过程中我们会结合这两个模型的优点,综合出TCP/IP五层模型:相当于只将七层模型的上三层合并为应用

协议

同一层实体进行数据交换的规则,类似于交通规则,包括语法,语义和同步.
语法:规定传输数据的格式
语义:规定所要完成的功能
同步:规定各种操作的顺序

TCP/IP协议簇

应用层
HTTP(超文本传输协议)
FTP(文件传输协议)
TFTP
SMTP(简单邮件传输协议)
SNMP(简单网络管理协议)
DNS(域名控制协议)

传输层
TCP(传输控制协议)稳定可靠
UDP(用户数据报文协议)效率更高

网络层
ICMP(国际控制报文协议)
IGMP(网络组管理协议)
IP
ARP(地址解析协议)
RARP(逆地址解析协议)

网络接口层
RJ45,PPP,HDLC,IEEE,VLAN

IP地址

ip地址是物理终端(如计算机)在网络中的唯一标识,由32位二进制组成,能够保证主机之间的通信.包括网络部分和主机部分,通常在后面标识子网掩码表示前面多少位是网络部分.当网络部分不同的时候就需要通过网关进行转发才能通信

关于网络分类,子网划分,ipv6,nat等将在最后的扩展部分进行说明,暂时就保持上述理解即可

MAC地址

可以简单地理解为"网卡"的地址,现在的主板一般自带网卡不需要单独的网卡设备,主机要进行通信必须有网卡,每一个网卡上都有一个唯一的mac地址,由48个二进制位表示,通常前24位是厂商标识,由IEEE分配,后面24位由厂商自己分配.

网络通信的基本过程

接下来我们以一个不同网段的数据传输过程为例,说明如何实现计算机网络的基本可用,其中涉及到的一些尚未说明的概念将用粗斜体标注,后面会进行说明,如何实现可靠将在后续进行补充说明.
在看完后续内容后也可以回过头来看这部分加深理解.

pc1的用户打算向pc2发送一个最简单的数据

  1. pc1用户与应用层交互,产生要发送的数据,然后一层层往下传输,每往下传输一层就增加一些内容用以实现本层需要实现的功能,传输到达新的设备之后又会一层层地往上解除掉已经不再需要的内容
  2. 传输层需要增加端口号,其数据单位是数据段,用以区分是主机上的哪个进程,例如微信应该接受的数据不能让qq收到,这样会产生严重的安全问题
  3. 网络层要增加ip地址,其数据单位是数据包,网络的规模非常庞大,无法实现让所有的设备能够直接通信,类比就像是你要找一个不认识的人,于是你先去找你的朋友问他认不认识这个人,你朋友也不认识就去问他的朋友,直到最后找到你要找的人.通常我们不会直接输入目标的ip,而是软件本身已经自带或者通过域名解析获得对应的目标ip地址
  4. 数据链路层增加mac地址,用以确定是哪台主机,其数据单位是数据帧.ip地址是一个逻辑上的地址,用于在网络上寻找设备,mac地址可以理解为"网卡"上的地址,用于在局域网内部寻找到设备.如果直接使用mac地址在网络上寻址非常困难现实中无法实现,需要将ip地址与mac地址绑定使用ip在网络上寻址,但是最根本的还是得通过mac地址.为了获取目标的mac地址需要广播arp,如果是在同一网段则直接根据目标ip地址获取mac地址;如果不是同一网段则需要先发送到网关,在经由网关设备选择合适的路径发送到目标ip地址,因此请求网关设备的mac地址
  5. 计算机世界的一切数据在底层都是通过二进制表示的,物理层用于实现二进制比特流的传输,但不是传输媒介,物理层为了识别帧需要机上一些用于区分帧开始结束的数据

到此已经完成了封装的过程,得到了主机要发送出去的数据包

家用的光猫是将光纤的光信号转换为网线的电信号,现在一般都是集成一体包含路由器功能,相当于主机设备直接连接在路由器上,但是通常企业环境下需要使用交换机.企业级的路由器也可以有很多端口,所以个人觉得不能单纯认为交换机端口数量很多就需要使用交换机.交换机是实现局域网内部通信的,而路由器主要是实现外部通信的,有一些功能只能通过交换机来实现,例如后面会提到的vlan等

  1. 逻辑上很多时候也可以将交换机视为不存在,这里为了更完整体现数据通信的过程体现进行说明,对于交换机而言有着网关地址的路由器其实也就相当于是主机,前面pc1已经通过广播arp获得了网关的mac地址,交换机将根据mac地址表将数据从对应的端口发送出去,mac地址表记录了mac地址与所连接的端口的绑定关系
  2. 路由器AR1接收到数据,进行解析,到网络层,发现数据不是自己直接相连的网段,于是重新封装,这个时候mac地址信息已经丢失,重新封装的时候源mac地址修改为路由器自己的mac地址,目标mac地址则再次通过arp请求获得AR2的mac地址填入并往下传.路由器是根据路由表选择要将数据往哪里发送,ip地址记录了要发往某个ip地址范围的数据包应该发送到哪一个设备的ip进行处理
  3. 路由器AR2接收到数据进行解析,到网络层,发现目标ip地址是自己直接相连的,这个时候mac地址也已经丢失,于是将源mac地址修改为自己的mac地址,于是在该范围内广播arp寻找到对应的mac位置,然后发送到目标主机.
  4. 交换机sw2根据mac地址表将数据从对应的端口发送出去到pc2
  5. pc2进行解析,到网络层发现这个数据包就是发给自己的于是去掉ip地址继续上传,虽然源mac地址和目标mac地址在网络上转发的过程中多次改变,但是源ip地址和端口始终都是相同的,需要回复数据的时候会用到,过程相当于反过来重复一次;到传输层,根据端口区分将数据交给哪一个进程处理.

应用层

域名解析

ip地址是用32位二进制表示的,即便是以点分十进制进行简化表示仍然十分难以记忆,域名就是为了简化记忆而出现的,dns则是将ip地址与域名绑定,例如输入www.baidu.com的时候就会解析为对应的ip地址,实际上访问的仍然是ip地址.

传输层协议

端口号

端口号用于区分不同的进程,只要是需要网络通信的进程必须要有对应的端口,单机的程序可以不需要端口.两个进程一个的传输层使用tcp协议另一个使用udp协议,可以根据协议类型区分是那个进程因此可以使用同一个端口,但是两个tcp或者两个udp不能使用同一个端口号,否则就会产生冲突,后起的进程无法正常启动.一台主机上可以有6万多个端口号,通常1~1024是一些服务所用,个人自定义使用端口时不应该使用这部分

TCP协议

传输层包括两个协议,tcp协议和udp协议,其中tcp协议是面向连接的协议,udp是面向连接的协议.面向连接的传输在进行传输之前先要建立连接,因此这种传输更加安全可靠,但是相对的处理速度更慢,最初我以为是对安全性要求高的使用tcp协议,例如我们要下载一个大型游戏但是不允许其中有任何的错误,否则下载了很久结果无法运行;当对安全性要求不高,即便丢失一些流量也不影响使用的时候使用udp,例如网络视频的时候;实际上当对传输速度要求较高的时候例如即时通信,就使用udp协议,虽然感觉就结论来说非常接近.

TCP数据段格式

端口:端口是运输层与应用层的服务接口
序号:发送端为每个字节进行编号,便于接收端正确重组
确认号:用于确认发送端的信息
首部长度:确定收不数据结构的字节长度,可以在20-60字节之间
保留:以后扩展使用
窗口大小:用来控制本地可接受数据段的数目,此值可以变化,流量控制机制就是靠此属性的大小实现的.

紧急比特URB:当URB的值为1时表明优先级较高
确认比特ACK:当ACK=1时确认号有效
推送比特PSH:接受TCP收到推送比特置1的报文段,就尽快的交付给接受应用进程,而不是等到整个缓存填满后再向上交付.
复位比特RST:当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因)必须释放连接再重新简历连接.
同步比特SYN:为1时表明这是一个连接请求或连接接受报文
终止比特 FIN:用来释放一个连接,当FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接.

校验和:检验和字段检验的范围包括首部和数据
紧急指针:支出本报文段中紧急数据的最后一个直接的序号
选项:长度可变,TCP之规定了一种选择,即最大报文段长度

TCP三次握手连接


第一次握手:主机A将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给主机B,主机A进入SYN_SENT状态,等待主机B确认。

第二次握手:主机B收到数据包后由标志位SYN=1知道主机A请求建立连接,主机B将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给主机A以确认连接请求,主机B进入SYN_RCVD状态。

第三次握手:主机A收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给主机B,主机B检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,主机A和主机B进入ESTABLISHED状态,完成三次握手,随后主机A与主机B之间可以开始传输数据了。

TCP四次挥手

为什么TCP协议终止链接要四次?
1、当主机A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FIN给主机B。
2、主机B收到A发送的FIN,表示收到了,就会发送ACK回复。
3、但这是B可能还在发送数据,没有想要关闭数据口的意思,所以FIN与ACK不是同时发送的,而是等到B数据发送完了,才会发送FIN给主机A。
4、A收到B发来的FIN,知道B的数据也发送完了,回复ACK, A等待2MSL以后,没有收到B传来的任何消息,知道B已经收到自己的ACK了,A就关闭链接,B也关闭链接了。

读者可能会感觉到语言风格的差异,那是因为有一部分是我自己的语言描述,有一部分是我学习的过程中从资料上ctrl+c/v下来的.

UDP协议

当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。UDP将数据从源端发送到目的端时,无需事先建立连接。UDP采用了简单、易操作的机制在应用程序间传输数据,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接收到重复数据的情况.
常见UDP协议及其端口

端口 协议 说  明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议
162、161 SNMP 简单网络管理协议
67、68 DHCP 动态主机配置协议
53 DNS 域名解析服务

网络层

路由表

路由器是基于路由表进行数据转发的,路由表记录了要发往某个网段的数据应该转发到哪个ip地址即下一跳的ip地址,因为下一跳的ip地址与本路由器上的某个端口的ip地址在同一网段,路由器可以将要发往这个ip地址的数据发往包含这个ip地址的网段所对应的接口.

路由表包含直连路由,静态路由和动态路由.
直连路由是路由器上某个端口所对应的网段,路由器可以直接学习到并且优先级最高;
静态路由是网络管理员手动配置的单向路由,配置麻烦,只适合小型网络环境,当网络拓扑发生变化时无法自动更新,但是可以提高安全性;
动态路由是让路由器宣告自己能够连接到哪些网段,然后相互学习彼此的路由信息,降低了网络管理的难度,但是占用了一定带宽.各种路由可以共同使用.

路由转发时首先根据最长子网掩码匹配的原则,将数据发送到匹配的路由条路中子网掩码最长的那个记录;
其次当子网掩码长度相同的时候,匹配优先级最高的那个,不同厂家的设备中不同类型的路由的优先级不同,也可以手动设置路由条目的优先级,根据优先级最高的记录进行转发,通常直连路由的优先级最高;
如果优先级相同则随机转发,实现负载均衡,也就是都干活不允许其中任何一个闲着.

默认路由是静态路由的特殊情形,表示所有前面不匹配的路由都可以根据这条路由转发,因为默认路由的子网掩码长度是0,即便手动设置了很高的优先级也是最后生效.

动态路由协议将在后续进行介绍.

ARP协议

arp协议在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。不过我们只需要关注他能干什么,arp通过广播的形式将ip地址转化为mac地址.
前面我们已经说过实现网络通信最根本的还是要通过mac地址,但是只靠mac地址根本无法与地理位置对应,很难确定数据应该如何转发,如果路由表中存储mac地址根本无法汇总,那么路由器表中就得存储大量的记录,即便容量允许查询转发的速度也非常慢,因此在网络层使用ip寻址确定如何转发.
但是最终还是要通过mac地址,arp协议就是将ip地址映射为mac地址.首先在网段内广播arp报文,其中包含目标设备的ip地址,在该网段内所有的设备都会收到这个请求,但是非目标主机会将收到的报文丢弃,只有目标主机会进行回应,回复自己的mac地址,于是发送方获得了目标的mac地址

IP数据包格式

数据链路层

mac地址/交换机转发原理

交换机是根据mac地址表进行转发的,当发送发送一个数据,如果交换机的mac地址表中没有对应的记录,就会学习记录这个mac地址与交换机端口的绑定关系.
交换机查询mac地址表是否有对应的目标mac地址的记录,如果有怎直接转发,如果没有则进行arp广播找到mac对应的端口并且记录到mac地址表中.

以太网帧格式

Ethernet_II 帧类型值大于等于1536 (0x0600),以太网数据帧的长度在64-1518字节之间.包括目标mac(6B),源mac(6B),协议类型(2B),数据(46-1500B),FCS4B.

IEEE802.3帧长度字段值小于等于1500 (0x05DC),数据帧的长度也在64-1518字节之间.包括目标mac(6B),源mac(6B),长度(2B),LLC(逻辑链路控制协议3B),SNAP(子网访问协议5B),数据(38-1492B),FCS4B.
LLC:目标SAP,源SAP,CONTTROL控制字段,定义LLC帧的类型:信息帧(I帧)、监控帧(S帧)和无编号帧(U帧).
SNAP:OrgCode3bB设置为0,type上层协议类型2B.

物理层

帧开始定界符

为了让物理层理解帧的开始与结束需要在物理层还要加上8B前导码(前导同步码7B帧开始定界符1B)

计算机网络的可靠性

前面我们已经对计算机网络通信的基本过程和相关概念有了了解,但是这只是最基本的过程,网络很复杂也很容易出错,要考虑如何应对这些错误

物理层编码

物理层通过编码实现了比特传输的同步,也就是确认比特的开始结束;同时通过帧开始定界符能够确认帧的开始和结束,但是不能够确保发送和接收的过程中没有出现错误.

编码方式 说明 评价
非归零编码 非归零码的编码规则为用高电平代表1,用低电平代表0 有连续的0或1时难以判断码元的开始和结束
曼彻斯特编码 曼彻斯特编码的每个周期都有一次电平的跳变。由高电平跳变到低电平代表1,由低电平跳变到高电平代表0。(高1低0) 电平的跳变可以作为同步信号,缺点是其占用的频带宽度是原始的基带宽度的两倍
差分曼彻斯特编码 同样包含电平的跳变。前半个码元与上一个码元的后半部分相同代表1,相反则代表0。(同1异0) 同上

流量控制与差错控制

流量控制:当发送方发送速度过快接收方来不及接收处理时,接收方通知发送方降低发送速度

差错控制:当信息传递出现错误,例如信息不可达或者信息校验失败时返回控制信息以便发送方进行处理,差错控制应该尽可能接近发送方避免错误信息占用网络带宽

在osi模型中数据链路层,网络层,传输层都有相关的内容,不难理解如果每一层都需要实现这样的功能会大大降低网络的响应速度,随着技术的发展和实践经验的积累,现在网络的出错率已经大大降低 ,很多时候只需要考虑在传输层实现这样的功能.

数据链路层

透明传输/封装成帧

透明传输是指设备就像看不见数据的内容一样,不管什么内容都能够正常发送.帧中的数据可能与帧开始定界的部分相同导致错误的识别,因此进行处理让,包括字符计数法,字符填充法,零比特填充法,违规编码法
字符计数法:在帧首部使用一个计数字段来表明帧内字符数。

方法 内容
字符计数法 在帧首部使用一个计数字段来表明帧内字符数,如果帧首部的数字突变了,就会造成毁灭性的连锁反应
字符填充法 在关键字段前增加一个转义字符,使得在数据传输过程中忽略掉数据部分中的控制字。
零比特填充法 零比特填充法的开始和结束标志都是一样的,都是01111110。它实现的方法是:在发送端,扫描整个信息字段,只要有5个1,就立即填入1个0,而在接收端,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。
违规编码法 曼彻斯特编码只有 “高-低” "低-高"两种,所以可以用“高-高”,“低-低”来定界帧的起始和众之

数据链路层差错控制

由于线路本身特性产生的所及噪声通过提高信噪比来减少或避免干扰;由于外界冲击导致的噪声是主要的噪声,通常利用编码技术解决.

编码方式包括两种纠错码奇偶校验码和crc循环冗余码,一种纠错码海明码.大概就是通过某种算法得到一串信息追加到原本的信息后面,接收方根据原本的数据和追加的信息,通过对应的算法计算是否出错,如果出错,那就一定出错,但是如果没错不一定没错.
类比:假设你小时候有个很好的朋友,你的性别为男,朋友的性别为男,追加信息为你们的性别相同;但是别人收到的信息是你的性别为男,朋友的性别为女,追加信息为你们性别相同,这就显然知道信息出错了.但是如果收到的信息是你的性别为女,朋友性别为女,追加信息为你你们性别相同,从接收方来看这个信息是没有问题的.通过编码方式的确可以具备一定的检错和纠错能力,但是这种能力是有限的.

由我来解释这三种编码细节略微困难,应该说这些在自己的使用中也很少,但是这个在计算机网络以外的部分,例如计算机组成原理这种学科中应该还是会有涉及,如果想要深入理解请自行搜索相关内容.

数据链路层可靠传输

可靠传输:当接收方接收数据失败时发送方会自动重传确保发送方发送的数据接收方全部正确接收

协议 说明 评价
停止等待协议 发送方发送一个数据帧,接收方接收到数据帧然后回复自己收到了这个数据帧,发送方收到接收方的确认就继续发送下一个数据帧.如果超出一定时间发送方还没有收到确认,就再次发送这个数据帧.如果发送方收到一个以前的确认就会将其丢弃.
接收方如果收到了以前的数据同样会丢弃,并且重新向发送方回复一个最新的确认,要求发送方继续发送下一个数据帧.
停止等待协议的逻辑十分简单,但是过程中可能有大量时间在等待确认,因此发送效率非常低.
后退n帧协议GBN 发送方有一个滑动的窗口,可以发送一批编号的数据帧同时等待确认,接收方并不需要逐个确认,而是返回一个累计的确认表示这个帧以及以前的帧都收到了,发送方收到确认后可以将窗口的开始部分滑动到第一个没有确认的数据帧,重复上述过程.
接收方如果没有接收到自己原本想要的那个帧就全部丢弃,并且返回一个最新的确认要求继续发送;发送方在一段时间后仍没有收到确认,那么就重新发送所有没有确认的帧.
虽然相比于停止等待协议已经有了进步,但是发生错误的时候还是需要重复发送原本可以接收到的数据帧
选择重传协议SR 发送方和接收方都维护一个滑动窗口,通常设置大小相等,发送方可以发送滑动窗口中的数据帧,接收方每收到一个数据帧就返回一个确认,并且将接收方滑动窗口滑动到第一个没有收到的数据帧的位置;发送方接收到一个确认,并且将窗口滑动到第一个没有确认的帧,超时后只重传没有收到确认的帧 相较于后退n帧协议降低了出错的重传成本

介质访问控制

通信过程中的相关概念
数据:要传递的信息内容
信号:信息的表现形式,例如光信号,电信号
信道:信息传递的介质,例如有线信道双绞线,同轴电缆,光纤,无线信道微波,红外线等
信源:信息的源头,发送信息的主机
信宿:信息的归宿,接受信息的主机

在局域网中,使用广播的方式进行通信,当不同的主机同时发送信息时就可能产生干扰冲突,介质访问控制就是协调不同主机何时以什么方式使用信道.

多路复用:把多个信号组合在一条物理信道上进行传输使得多个主机共享信道提高利用率

介质访问控制的类型包括静态和动态
静态介质访问控制:频分多路复用FDM,时分多路复用TDM,波分多路复用WDM,码分多路复用CDM

方法 内容 评价
频分多路分用FDM 给不同主机分配不同频率使得信道可以同时被多个主机使用 实现简单技术成熟,感觉类似于并行
时分多路复用TDM 给不同的主机分配不同的时间段进行通信 类似于并发,但是信道利用率可能很低,例如有多个主机就将信道时间均分为多少份,即便那个主机当时并没有要发送的数据
统计时分多路复用 在时分多路复用的基础上不给不需要发送数据的主机分配时间
波分多路复用WDM 感觉就是光信号版的频分多路复用
码分多路复用CDM 将信号量进行正交分解 数学上的理解较为麻烦,个人理解中假设用16个二进制位表示,那么最多也就只能容纳16个主机,如果多了装不下少了又浪费资源

动态介质访问控制:
随机访问:ALOHA CSMA CSMA/CD(冲突检测用于有线) CSMA/CA(冲突避免,用于无线)

方法 内容 评价
轮询 某个主机主动询问其他设备是否需要发送数据 存在单点故障问题,而且不发送数据的主机也会被询问占用时间
令牌传递 维护一个循环的令牌,只有得到令牌的时候才能够发送数据一段时间 在网络负载低的时候会出现空转,没有发送数据要求的主机占用时间而有发送需求的主机则需要等待一段时间
纯ALOHA 发送方不监听信道,随时可发,随机重发;如果发生冲突接收方不进行确认,超时之后发送方随机选择一段时间后重传 如果网络负载较重,那么就可能产生严重冲突,导致信道利用率低
时隙ALOHA 在纯ALOHA的基础上,把时间划分为若干个相同的时间片,接收到数据后先等到下个时间片开始才行进发送 略微降低了冲突
CSMA载波监听,多路访问 发送数据之前要检测总线上其他主机是否发送数据
当信道忙的时候,有三种处理方式:
1,坚持监听信道,只要信道空闲就发送数据
2,随机等待一段事件后再发送数据
3,监听信道,如果空闲则p概率发送,1-p概率随机等待后再发送
由于存在延迟仍然可能发生冲突,1可能一直冲突,2可能导致信道利用率低,适用于总线型网络
CSMA/CD
载波监听多路访问/碰撞检测
边监听边发送 适合以太网,半双工网络
CSMA/CA
载波监听堵路访问/碰撞避免
主机发送数据之前先询问是否有其他设备在发送数据,接收方在遇到多个设备发送信号时会回复跟哪个设备进行通信,同时预约与其他设备通信的时间 适合无线网

传输层

tcp/ip协议簇中网络层似乎不负责实现可靠传输,因此由传输层实现可靠传输.

TCP可靠传输

TCP通过校验(UDP相同),序号,确认,重传(超时重传和冗余重传)实现可靠传输
通过滑动窗口实现流量控制

TCP流量控制

与数据链路层相似,通过滑动窗口机制进行流量控制

TCP拥塞控制

如果所有节点都来不及接受分组而要丢弃大量分组,网络就处于拥塞状态,要采取一定措施缓解
发送方在网络通畅时缓慢增加发送窗口大小,在网络拥塞时急剧削减发送窗口大小.包括慢开始+拥塞避免/快重传+快恢复两种.

发送方会维持一个拥塞窗口cwnd的状态变量,拥塞窗口的大小取决于拥塞程度,并且会在收发包过程中动态的进行变化。
发送窗口=min{拥塞窗口,接收方窗口}

慢开始+拥塞避免:当发送小余拥塞窗口时会指数增,达到拥塞窗口大小时线性增,直到拥塞时,将新的拥塞窗口设置为原先拥塞时发包数量大小的一半,发包量减少至1,重复上述过程

快重传+快恢复:当发送小余拥塞窗口时会指数增,达到拥塞窗口大小时线性增,收到三个重复的冗余确认就将新的拥塞窗口设置为原先拥塞时发包数量大小的一半,发包数量减少至这时的拥塞窗口数量再继续线性增

vlan虚拟局域网技术

将局域网逻辑上分割局域网,分割广播域,提高安全性

类比:你在一个很大的办公室里有很多同事,现在你要找一个不认识的同事,你大喊对方的名字,所有人都会收到,只有对方会回应,但是其他人也会受到打扰(占用带宽),同时如果某人感冒了可能导致所有人被传染(木马病毒);分割广播域就相当于划分成了多个小的区域,相互隔离,你大喊找人只会影响一部分人,感冒传染也只会传染一部分.

虚拟局域网通常基于交换机实现,默认vlan1,可以自己启用2~4096

vlan帧格式

vlan帧格式是在以太网帧目标mac和协议中间增加vlan标签,但是只有交换机能够处理vlan,从主机往交换机发送数据时交换机会为其添加默认的vlan标签,而交换机在将数据发送给主机时会去掉vlan标签

可以通过交换机的接口设置链路属于哪个vlan或者能够通过哪些vlan的流量

STP生成树协议

通过多个交换机相连的设备,在逻辑上可以视为连接在同一个交换机上的,如果交换机之间存在多条路径就会产生环路,导致广播的数据流量循环转发

STP生成树协议可以自动协商,在逻辑上关闭一些链路(实际上是接口),在逻辑上消除环路,如果原本的链路故障则开启原先关闭的链路保证数据通信.

STP算法

每个STP网络中,都会存在一个根桥,其他交换机为非根桥.根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备.当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU,包含交换机在参加生成树计算时的各种参数信息.

STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) .桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成.在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768.优先级最高的设备(数值越小越优先)会被选举为根桥.如果优先级相同,则会比较MAC地址,MAC地址越小则越优先.

交换机启动后就自动开始进行生成树收敛计算.默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发.对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID.如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机.如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥.

端口类型

根端口选举

非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。

一般情况下,企业网络中会存在多厂商的交换设备,华为X7系列交换机支持多种STP的路径开销计算标准,提供最大程度的兼容性。缺省情况下,华为X7系列交换机使用IEEE 802.1t标准来计算路径开销。
运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(Port ID)可以用来确定端口角色。

每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。

如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。

指定端口

在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。

指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。

网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

预备端口

如果一个端口既不是指定端口也不是根端口,则此端口为预备端口.预备端口将被阻塞.

端口状态

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

RSTP和MSTP

收敛:网络层设备相互交换信息自动设置,最后达到稳定的状态

stp的收敛速度慢,rstp则时候在stp的基础上实现了快速收敛.

在多vlan的情况下,stp/rstp逻辑上断开链路可能导致部分vlan通信中断,选择次优路径等问题,因此改进出mstp多生成树协议,让不同的vlan可以通过不同的链路实现负载均衡.

Eth-trunk链路聚合技术

随着网络中部署的业务量不断增长,对于全双工点对点链路,单条物理链路的带宽已不能满足正常的业务流量需求.如果将当前接口板替换为具备更高带宽的接口板,则会浪费现有的设备资源,而且升级代价较大.如果增加设备间的链路数量,则在作为三层口使用时需要在每个接口上配置IP地址,从而导致浪费IP地址资源.

Eth-Trunk( 链路聚合技术 )作为一种捆绑技术,可以把多个独立的物理接口绑定在一起作为一个大带宽的逻辑接口使用,这样既不用替换接口板也不会浪费IP地址资源.

链路检测技术


如图假设PC1与PC2要通信可以走上面的链路也可以走下面的链路,并且默认上面的链路优先级更高,现在上面的链路故障了,发送数据的时候能够察觉到故障,于是走了下面的链路;但是回来的时候在路由器AR2那里并不知道下一段链路出现故障,于是将数据转发到路由器AR3,于是报文无法返回导致通信失败.链路检测就是让ar2知道上面链路的下一段故障从而走下面的链路返回数据.

VRRP

局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果此时默认网关设备发生故障,将中断所有用户终端的网络访问,这很可能会给用户带来不可预计的损失.

VRRP既可以实现网关的备份,又能解决多个网关之间互相冲突的问题。
VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份。
VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
VRRP协议报文(Advertisement报文): 其目的IP地址是224.0.0.18,目的MAC地址是01-00-5e-00-00-12,协议号是112

VRRP的基本结构

VRRP路由器(VRRP Router)
虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。
Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备
Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备

Priority:设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者,无法手工配置;设备缺省优先级值是100。
vrid:虚拟路由器的标识,如图中RouterA和RouterB组成的虚拟路由器的vrid为1,需手工指定,范围1-255。

虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IP Address Owner):如果一个VRRP设备将真实的接口IP地址配置为虚拟路由器IP地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,则它将一直成为Master。
虚拟MAC地址(Virtual MAC Address):虚拟路由器根据vrid生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{vrid} 。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。如RouterA和RouterB组成的虚拟路由器的vrid为1,因此这个VRRP备份组的MAC地址为00-00-5E-00-01-01。

状态机

VRRP协议状态机有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备状态)。

三种状态之间的转换条件如下:
Initialize->Master:Startup priority=255;
Initialize->Backup:Startup priority!=255;
Master->Initialize:设备关闭;
Master->Backup:收到比自己优先级更高的数据包;
Backup->Initialize:设备关闭;
Backup->Master:在超时时间内没有收到VRRP通告报文或者收到通告报文原Master优先级为0,或者收到的通告报文中的原Master优先级比自己的优先级低。

双热备

VRRP的工作过程如下:
选举出Master:
VRRP备份组中的设备根据优先级选举出Master。Master设备通过发送免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。
选举规则:比较优先级的大小,优先级高者当选为Master设备。当两台设备优先级相同时,如果已经存在Master,则其保持Master身份,无需继续选举;如果不存在Master,则继续比较接口IP地址大小,接口IP地址较大的设备当选为Master设备。

Master设备状态的通告(VRRP备份组状态维持):
Master设备周期性地发送VRRP通告报文,在VRRP备份组中公布其配置信息(优先级等)和工作状况。Backup设备通过接收到的VRRP报文来判断Master设备是否工作正常。 当Master设备主动放弃Master地位(如Master设备退出备份组)时,会发送优先级为0的通告报文,用来使Backup设备快速切换成Master设备,而不用等到Master_Down_Interval定时器超时。这个切换的时间称为Skew_Time,计算方式为:(256-Backup设备的优先级)/256,单位为秒。
当Master设备发生网络故障而不能发送通告报文的时候,Backup设备并不能立即知道其工作状况。等到Master_Down_Interval定时器超时后,才会认为Master设备无法正常工作,从而将状态切换为Master。其中,Master_Down_Interval定时器取值为:3×Advertisement_Interval+Skew_Time,单位为秒。

一个VRRP组里有多台备份设备时,短时间内可能产生多个Master设备,此时,设备将会对收到的VRRP报文中的优先级与本地优先级做比较,从而选取优先级高的设备成为Master。
设备的状态变为Master之后,会立刻发送免费ARP来刷新交换机上的MAC表项,从而把用户的流量引到此设备上来,整个过程对用户完全透明。

抢占模式(Preemption Mode):
控制具有更高优先级的备用路由器是否能够抢占具有较低优先级的Master路由器,使自己成为Master。缺省为抢占模式。
注意:存在的例外情况是如果IP地址拥有者是可用的,则它总是处于抢占的状态,并成为Master设备。
抢占延时(Delay Time):
抢占延迟时间,默认为0,即立即抢占。
图中RouterA故障恢复后,立即抢占可能会导致流量中断,因为RouterA的上行链路的路由协议可能未完成收敛,这种情况则需要配置Master设备的抢占延时。
另外,在性能不稳定的网络中,网络堵塞可能导致Backup设备在Master_Down_Interval期间没有收到Master设备的报文,Backup设备则会主动切换为Master。如果此时原Master设备的报文又到达了,新Master设备将再次切换回Backup,如此则会出现VRRP备份组成员状态频繁切换的现象。为了缓解这种现象,可以配置抢占延时,使得Backup设备在等待了Master_Down_Interval时间后,再等待抢占延迟时间。如在此期间仍没有收到通告报文,Backup设备才会切换为Master设备。

VRRP故障

下行链路和设备本身会引起主备切换,上行链路故障不会引起VRRP主备切换,这样会造成HostA访问Internet的流量在RouterA处被丢弃,所以利用VRRP的联动功能监视上行接口或链路故障,主动进行主备切换。

负载分担

负载分担是指多个VRRP备份组同时承担业务转发,VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。

与主备备份方式的不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备分担在不同设备上;单台设备可以加入多个备份组,在不同的备份组中扮演不同的角色。

动态路由算法

按照路由执行的算法分类可以将路由协议分为距离矢量路由协议和链路状态路由协议.

距离矢量路由协议
依据从源网络到目标网络所经过的路由器的个数选择路由RIP、IGRP

链路状态路由协议
综合考虑从源网络到目标网络的各条路径的情况选择路由OSPF、IS-IS

距离矢量路由只知道有那条路可以到达目的地但是不清楚路况如何,只根据经过路径器的数量来决定如何到达目的地,并且经过路由器数量有限值,最多15跳超过了就认为不可到达.收敛也很慢.

链路状态路由协议是获取路由的相关信息,独立计算到达目的地的最佳路径.

RIP距离矢量路由

rip路由协议中路由器首先知道自己直连网段的路由,然后每个一段时间向邻居路由器发送自己的路由信息(其中包含路由的跳数),这样层层传递,直到收到或者跳数超过15之后无效.

环路问题

使用rip协议的路由器之间可能会因为链路终端导致路由环路,路由环路和交换机环路成因不同,但结果都是无效信息占用网络带宽.rip协议中有许多方法组织路由环路的产生,包括水平分割,触发更新,最大跳数,毒性逆转,但是这些因为其算法本身的缺陷无法从根本上解决路由环路问题.

水平分割是指从一个接口学习到的路由信息,不会再从这个接口发送出去.
毒性逆转是指从一个接口学习到的路由信息,从这个接口传回去的时候将跳数设置为16.

路由器在学习到一条路由信息是也会产生于一个老化计时器(180s),再次学习到的时候就会重置老化计时器.如果时间到0还没有再次学习到,那么准备垃圾回收计时器(120s),此时这条路由是不可用的.如果期间再次学习到这条路由,就重置为老化计时器,否则就将这条路由丢弃.

链路状态路由算法OSPF

rip路由信息协议 缺点 改进思路 OSPF链路状态协议
逐跳收敛 收敛慢,故障恢复时间长 触发更新 路由信息传递与路由计算分离
分布式路由计算 缺少对全局网络拓扑的了解 路由器基于拓扑信息,独立计算路由 基于SPF算法
以跳数为度量 次优路径 将链路带宽作为选路参考值 以“累计链路开销”作为选路参考值

随着网络规模扩大,网络的异构化趋势加剧,网络可靠性要求提高,出现了比RIP协议更加优秀的OSPF链路状态路由协议.

开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。

OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。

所谓Link State(链路状态)指的就是路由器的接口状态。在OSPF中路由器的某一接口的链路状态包含了如下信息:
该接口的IP地址及掩码。
该接口的带宽。
该接口所连接的邻居。

实现过程

  1. 始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包LSA,该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
  2. 路由器间通过泛洪(Flooding)机制交换链路状态信息:各路由器一方面将其LSA数据包传送给所有与其相邻的OSPF路由器,另一方面接收其相邻的OSPF路由器传来的LSA数据包,根据其更新自己的数据库。
  3. 形成稳定的区域拓扑结构数据库:OSPF路由协议通过泛洪法逐渐收敛,形成该区域拓扑结构的数据库,这时所有的路由器均保留了该数据库的一个副本。
  4. 形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。

优缺点

  1. OSPF适合在大范围的网络:OSPF协议当中对于路由的跳数,它是没有限制的

  2. 组播触发式更新:OSPF协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成影响

  3. 收敛速度快:如果网络结构出现改变,OSPF协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF采用周期较短的HELLO报文来维护邻居状态。

  4. 以开销作为度量值:OSPF协议在设计时,就考虑到了链路带宽对路由度量值的影响。

  5. OSPF协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。

  6. 应用广泛

  7. OSPF协议的配置对于技术水平要求很高,配置比较复杂

  8. 路由其自身的负载分担能力是很低的。OSPF路由协议会根据几个主要的因素,生成优先级不同的接口。然而在同一个区域内,路由协议只会通过优先级最高的那个接口。

OSPF数据包类型

OSPF的包类型 描  述
Hello包 用于发现和维持邻居关系,选举DR和BDR
数据库描述包(DBD) 用于向邻居发送摘要信息以同步链路状态数据库
链路状态请求包(LSR) 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息
链路状态更新包(LSU) 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA
链路状态确认包(LSAck) 确认已经收到LSU,每个LSA需要被分别确认

DR与BDR

为了避免或减少连接到同一个网段的多个路由器之间的复杂链路和路由交换风暴,在路由器中选举DR和DR的备用路由器BDR,其他所有的路由器只与DR之间进行动态路由的交换.

DR和BDR的选举方法
自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR

手工选择DR和BDR
优先级范围是0~255,数值越大,优先级越高,默认为1
如果优先级相同,则需要比较Router ID
如果路由器的优先级被设置为0,它将不参与DR和DBR的选举

路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器,除非设备重启

OSPF区域

在大型网络中,随着多条路径的增加,包含完整网络结构的链路状态数据库也会越来越大,每一次路径的改变都使路由器不得不花大量的时间和资源去重新计算路由表这将有可能使路由器的CPU和内存资源彻底耗尽,从而导致路由器的崩溃。

为了适应大型的网络,OSPF在AS内划分多个区域,每个OSPF路由器只维护所在区域的完整链路状态信息

三种通信量:
域内通信量(Intra-Area Traffic)单个区域内的路由器之间交换数据包构成的通信量
域间通信量(Inter-Area Traffic)不同区域的路由器之间交换数据包构成的通信量
外部通信量(External Traffic)OSPF域内的路由器与OSPF区域外或另一个自治系统内的路由器之间交换数据包构成的通信量

路由器类型:
内部路由器:只保存本区域内的链路状态信息
区域边界路由器ABR:用来连接其他区域
自治系统边界路由器ASBR:用来连接OSPF的AS与外部其他路由器

常见链路状态LSA通告

每个路由器都创建了由每个接口、对应的相邻节点和接口速率组成的数据库
链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型

类型代码 描述 用途
Type 1 路由器LSA 由区域内的路由器发出的
Type 2 网络LSA 由区域内的DR发出的
Type 3 网络汇总LSA ABR发出的,其他区域的汇总链路通告
Type 4 ASBR汇总LSA ABR发出的,用于通告ASBR信息
Type 5 AS外部LSA ASBR发出的,用于通告外部路由
Type 7 NSSA外部LSA NSSA区域内的ASBR发出的,用于通告外部路由
区域的类型

区域ID
区域ID可以表示成一个十进制的数字
也可以表示成一个IP

Router ID
​ OSPF区域内唯一标识路由器的IP地址
​ Router ID选取规则
​ 选取路由器loopback接口上数值最高的IP地址
​ 如果没有loopback接口,在物理端口中选取IP地址最高的
​ 也可以使用router-id命令指定Router ID

骨干区域Area 0
负责区域间路由信息传播,在只有一个区域没有区域间路由交换的时候可以不是骨干区域

非骨干区域
为了解决环路问题,所有的非骨干区域都要直接连接到骨干区域,通过骨干区域实现路由交换,早期设计不规范的时候非骨干区域没有直接连接到骨干区域,可以通过建立vlink跨一个非骨干区域连接到骨干区域上.

根据能够学习的路由种类来区分
标准区域
末梢区域(stub)
完全末梢(Totally stubby)区域
非纯末梢区域(NSSA)
完全非纯末梢区域

满足以下条件的区域
只有一个默认路由作为其区域的出口
区域不能作为虚链路的穿越区域
该区域里无自治系统边界路由器ASBR
不是骨干区域Area 0
末梢区域
没有LSA4、5、7通告
完全末梢区域
除一条LSA3的默认路由通告外,没有LSA3、4、5、7通告
明确定义末梢区域和完全末梢区域的作用,其主要目的是减少区域内的LSA条目以及路由条目,减少对设备CPU和内存的占用;
需要明确末梢区域和完全末梢区域中ABR会自动生成一条默认路由发布到末梢区域或完全末梢区域中。

每一种区域中允许泛洪的LSA

区域类型 1&2 3 4&5 7
骨干区域(区域0) 允许 允许 允许 不允许
非骨干区域,非末梢区域 允许 允许 允许 不允许
末梢区域 允许 允许 不允许 不允许
完全末梢区域 允许 不允许* 不允许 不允许
NSSA 允许 允许 不允许 允许
完全NSSA 允许 不允许 不允许 允许

避免域间环路

为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则。
OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且骨干区域只有一个,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。
OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。
对于前文提到的ABR,OSPF要求ABR设备至少有一个接口属于骨干区域。
新建网络按照区域间的防环规则进行部署,可以避免区域间环路问题。但是部分网络可能因早期规划问题,区域间的连接关系违背了骨干区域和非骨干区域的规则。

虚连接vlink

骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域逻辑上连续。
虚连接可以在任意两个区域边界路由器上建立,但是要求这两个区域边界路由器都有端口连接到一个相同的非骨干区域。

路由重分发

引入外部路由到动态路由范围内

OSPF地址汇总的作用

​ 地址汇总也是通过减少泛洪的LSA数量节省资源
​ 可以通过屏蔽一些网络不稳定的细节来节省资源
​ 减少路由表中的路由条目

定时更新与触发更新

相关扩展

性能指标

速率是数据传输率,单位bit/s等,带宽是理论最大值,吞吐量是实际值.

时延(延迟)是从网络的一端到另一端的时间,单位s.
发送时延=数据长度/信道带宽
传播时延=信道长度/电磁波在信道上的速度
排队时延
处理时延
时延带宽积=传播时延带宽
往返时延RTT=传播时延
2+末端处理时间

信道利用率=有数据通过时间/总时间
网络利用率=信道利用率加权平均

进制

速率单位的进制是10^3例如1mbit/s=1000kbit/s
存储量单位的进制是2^10例如1Mb=1024Kb
1Byte=8bit
但是磁盘生产商为了计算方便计算存储量的时候也使用10^3作为进制,因此实际容量会缩水

通信方式与传输方式

单工:只能单方向通信
半双工:双方都能发送或接受,但是同一时间只有一方能够发送
全双工:双方能够同时发送和接收信息

串行传输:类比双向二车道
并行传输:类比双向八车道,速度快,成本高

物理层设备

中继器:信号传递会有衰减,中继器将衰减变形的信号进行还原重新发送
集线器(多口中继器):从一个端口收到的信息会向其他所有端口发送,相当于发送消息只能公开不能私聊,而且同时发送消息时会产生冲突

传输介质

传输媒体并不是物理层,在物理层之下.
导向性传输介质:光纤(高带宽,光信号),双绞线(常用,电信号),同轴电缆(抗干扰,电信号)
非导向性介质:无线电波(向所有方向传播,穿透性强,手机通信) ,微波(固定方向,基站,卫星通信),红外线和电磁波(固定方向,需要格式转换)

单模光纤和多模光纤

单模光纤纤芯细,速度快,需要激光作为光源,技术难度高,成本高
多模光纤纤芯粗,可以同时通过多条光线,可以使用发光二极管作为光源,技术难度低,成本低

双绞线

通常所说的网线,技术成熟造价低,包括:
五类100Mb网线
超五类1000Mb网线,抗干扰,衰减小
六类1000Mb
七类10,000MB

如果在双绞线中加上金属网膜形成抗电磁的屏蔽双绞线,一般环境用不上,而且增加成本

TB568B线序

如果要自己接水晶头:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕

奈氏准则和香农定理

码元:一个固定时长的信号波形,有n个状态就是n进制
失真是指信号变形,有的失真可以还原有的不行,影响因素包括:码元传输速率,距离,噪声.
信道带宽是信道允许通过的最高频率与最低频率之差
码间串扰是失真的一种情况,是接收端收到的波形信号失去了码元之间的清晰界限,信道存在能够通过的最高频率和最低频率

奈氏准则是在没有噪声的理想环境下,为了避免码间串扰的极限数据传输速率=2Wlog(2,V)
w为信道带宽 v是码元进制

香农定理是在有噪声的情况下在有噪声的情况下为了不产生误差的极限数据传输率=W*log(2,1+S/N)
信噪比=S/N

数据发送方式

数据链路层基于MAC地址进行帧的传输.
单播:mac第八位是0
组播:mac第八位是1
广播:mac全1
当主机接收到的数据帧所包含的目的MAC地址是自己时,会把以太网封装剥掉后送往上层协议.

数据交换方式

如果让局域网中的主机两两相连直接通信成本很高甚至不可能实现,因此采用一个中间设备,让主机设备通过中间设备间接通信

电路交换

建立一条直接相连的相连的物理通道,需要先建立独占的这条线路的连接,在使用过程中拒绝其他连接,类比打电话的时候对方正在通话中.电路交换的连接建立后,即便没有数据发送也会继续占用线路,因此不够灵活且利用效率不高,如果中间节点故障则整个线路无法使用,但是没有复杂的处理过程,发送效率很高.

存储转发

将发送的数据进行存储,然后计算报文应该选择怎样的路径进行转发,并不会独占线路,而且可以兼容不同传输速率的信道,但是增加了处理过程,效率降低,包括报文交换和分组交换.

报文交换

报文内容直接整个进行发送,报文长度可能差异巨大,降低工作效率,并且网络设备未必能够存储过于巨大的报文.

分组转发

将报文拆分为长度有限值的部分,提高兼容性,但是效率进一步降低.

虚电路

在分组交换的基础上建立一条逻辑的交换电路,以后转发都无需计算路径直接经过这条链路,在分组交换的基础上提高效率.但是虚电路途径的设备故障时,经过这个节点的所有虚电路均无法正常工作.

拓扑

拓扑:只考虑要素之间的相关关系的一种抽象数学模型,更容易理解,只有当其他要素造成的影响小可忽略不计才能直接使用拓扑
星型拓扑:易于扩展和维护,但是中心节点压力大
树形拓扑:多级星型拓扑
总线型拓扑:将所有设备通过一根总线进行连接,类比就像过道和房间
网状拓扑:不容易发生单点故障,实现成本高
环型拓扑:不利用扩展,传输延迟高

局域网和广域网

局域网是指在某一区域内由多台计算机互联成的计算机组,使用广播信道,覆盖的地理范围小,通常是用有线传输介质传输速率高,时延小,各节点平等共享传输信道,决定因素:网络拓扑,传输介质,信道访问控制.

广域网包含多个局域网,存在网络层,使用点对点通信方式,分组交换,有PPP协议和HDLC协议,都只支持全双工

以太网

以太网(Ethernet)是基带总线局域网规范,是当今局域网最通用的通信协议标准,感觉就是有线局域网?
以太网(网卡)成本低,应用广泛,构造简单,满足网速要求10Mb/s~10Gb/s
以太网提供无连接的,不可靠的服务,差错由高层控制.

无线局域网

冲突域与广播域

冲突域是物理层的概念,处于同一冲突域中的设备同时发送数据时会产生冲突,需要介质访问控制
广播域是数据链路层的概念,处于同一广播域的节点能够不借助网络层实现广播通信

数据链路层设备

数据链路层设备,可以分隔冲突域,连接在网桥不同端口发送数据不会产生冲突

交换机基于mac地址表进行转发,当主机发送数据数据时:

  1. 如果交换机mac地址表中不存在主机的mac记录,会记录主机的mac地址与所连接的交换机接口;
  2. 然后查找mac地址表,将数据发送到到目标mac所对应的端口,如果没有记录则向发送方所连接的端口以外的所有建立了连接的端口发送消息查找目标mac;
  3. 非目标mac的主机接收到信息发现不是给自己的就丢弃,目标主机则对交换机进行回应,交换机在mac地址表中记录目标主机的mac与所连接端口.
    然后就可以通信了

mac地址表的容量是有限的,mac地址的记录也有生命周期,当某条记录长期不用之后就会删除

IP地址

ip地址有类划分

ip地址分为ABCDE五类:

A类地址第一组为网络地址,其他三组为主机地址,范围从0.0.0.0—126.255.255.255,其中10.x.x.x是私有地址,127.x.x.x是保留地址,用作循环测试.

B类地址前两组为网络地址,其他两组是主机地址,范围从128.0.0.0—191.255.255.255,其中172.16.0.0-172.31.255.255是私有地址,169.254.x.x是保留地址,如果在网络上没有找到可用的DHCP服务器就会获得其中一个地址.191.255.255.255是广播地址,不能分配.
169.254是如果动态获取ip地址但是没有成功时获得的地址,该地址在内网中也是可以进行通信的

C类地址前三组是网络地址,第四组是主机地址,范围从192.0.0.0-223.255.255.255,其中192.168.x.x是私有地址.
私有地址是为了缓解ip地址不够用而发展的,在企业用户在内部网络中使用,可以重复,不能在互联网上使用,通过nat(网络地址转换)技术转换为公网ip,通过端口号进行区分.

D类地址:多目的广播地址(28位网络地址),以1110开头,从224.0.0.0到239.255.255.255

E类地址:保留用于试验和将来使用,以11110开头,从240.0.0.0到247.255.255.255
同网段主机之间将数据直接发送给对方,不同网段之间将数据发送给网关后进行转发.

子网划分/ip地址无类划分

子网划分是为了满足不同网络对ip地址的需求,实现网络的层次性,节省IP地址,相较于前面ABCDE这种明确的分类,又被称为无类划分
原理是从主机位借位到网络位.

子网掩码用于表示有多少位是网络位,通常有直接用数字表示的,或者将网络位的二进制全1,主机位全0并且转换为点分十进制的形式,有类划分也可以用这种方式表示.例如192.168.1.0/24等价于192.168.1.0 255.255.255.0
判断可用IP,就是根据ip地址和子网掩码判断主机数,网络号和广播地址.
IP地址汇总是将多个子网汇聚成一个更大范围的网络,路由器通过这种方式减少路由表中的记录,加速路由转发

nat

网络地址转换技术NAT(Network Address Translation)是将IP数据报文头部中的IP地址转换为另一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能。

NAT一般部署在连接内网和外网的网关设备上。当收到的报文源地址为私网地址、目的地址为公网地址时,NAT可以将源私网地址转换成一个公网地址。这样公网目的地就能够收到报文,并做出响应。此外,网关上还会创建一个NAT映射表,以便判断从公网收到的报文应该发往的私网目的地址。

NAT的优点
节省公有合法IP地址,处理地址重叠,增强灵活性,安全性

NAT的缺点
延迟增大,配置和维护的复杂性,不支持某些应用,可以通过静态NAT映射来避开

nat的种类 说明
静态nat 静态NAT实现了私有地址和公有地址的一对一映射。一个公网IP只会分配给唯一且固定的内网主机。如果希望一台主机优先使用某个关联地址,或者想要外部网络使用一个指定的公网地址访问内部服务器时,可以使用静态NAT。但是在大型网络中,这种一对一的IP地址映射无法缓解公用地址短缺的问题。
动态nat 动态NAT基于地址池来实现私有地址和公有地址的转换。动态NAT地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。这种方法同样不能缓解ip地址短缺
动态NAT的ip复用/NAPT 网络地址端口转换NAPT(Network Address Port Translation)允许多个内部地址映射到同一个公有地址的不同端口,ip复用至少要外网接口ip地址以外两个额外的ip地址,NAPT需要一个。
EASY-IP Easy IP适用于小规模局域网中的主机访问Internet的场景。小规模局域网通常部署在小型的网吧或者办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网IP地址。Easy IP可以实现内部主机使用这个临时公网IP地址访问Internet。
NAT Server NAT在使内网用户访问公网的同时,也屏蔽了公网用户访问私网主机的需求。当一个私网需要向公网用户提供Web和SFTP服务时,私网中的服务器必须随时可供公网用户访问。

ipv6

ipv4数量少不够用,于是有了ipv6,由于有nat等技术进行缓解ipv4不够用的问题,ipv6发展缓慢,但是随着物联网等的发展还是需要更多的ip地址.

Pv6地址长度为128比特,每16比特划分为一段,每段由4个十六进制数表示,并用冒号隔开。
IPv6地址包括网络前缀和接口标识两部分。

每一组中的前导“0”都可以省略。
地址中包含的连续全为0的组,可以用双冒号“::”来代替。

冒号十六进制表示法
把128比特划分成8段,每段为16比特用十六进制表示
CDCD:910A:2222:5498:8475:1111:3900:2020
1030:0:0:0:C9B4:FF12:48AA:1A2B
2000:0:0:0:0:0:0:1
压缩表示法
将多个连续分段的0用双冒号表示
2000::1
地址前缀表示法
23E0:0:A4:/48 路由前缀
23E0:0:A4:/64 子网前缀
少于64位前缀要么是路由前缀要么是地址范围

地址范围 描述
2000::/3 全球单播地址
FC00::/7 唯一本地地址
FE80::/10 链路本地地址
FF00::/8 组播地址
::/128 未指定地址
::1/128 环回地址

ipv6帧格式


IPv6的基本报头在IPv4报头的基础上,增加了流标签域,去除了一些冗余字段,使报文头的处理更为简单、高效。
IPv6扩展报头是跟在IPv6基本报头后面的可选报头,可以有一个或多个。

IPv4与IPv6通信

使用双协议栈或者nat

ICMP

ICMP是一个“错误侦测与回馈机制”,是通过IP数据包封装的,用来发送错误和控制消息,并对于收集各种网络信息,诊断和排除各种网络故障等方面起着至关重要的作用.平时使用ping来测试网络连通性就是这个协议,此外还有tracert命令来探测报文途径哪些网络节点.此外该命令在内网才有实际意义,另外linux操作系统上的命令有所不同

icmp类型

icmp是封装在ip报文中的,icmp格式


8位的类型字段标识了该ICMP报文的具体类型,8位的代码字段进一步指出产生这种类型ICMP报文的原因,每种类型报文的产生的原因都可能有多个,就拿目的站不可达报文来说,产生的原因可能有主机不可达、协议不可达、端口不可达等;16位校验和字段包括整个ICMP报文,即包括ICMP首部和数据区域.首部中的剩余4个字节在每种类型的报文中有特殊的定义

DHCP

手工配置网络参数需要每个用户都手动配置IP地址、掩码、网关、DNS等多个参数,人员素质要求高,容易出错,灵活性差,IP地址资源利用率低,工作量大.

动态主机配置协议(DHCP:Dynamic Host Configuration Protocol)实现了网络参数配置过程的自动化,具有效率高,灵活性强,易于管理的优点.

基本原理


自治系统AS

网络规模巨大,需要进行分层,包括内部路由选择协议IGP和外部网关协议EGP,内部网关协议可以是静态路由,RIP和OSPF的组合;

网络层设备

路由器

路由器是标准的网络层设备,是进行路由转发的主要设备,相关概念已经在前面说过.

三层交换机

通常所说的交换机是指二层交换机,三层交换机是拥有路由功能的交换机,通过三层交换实现跨vlan通信比通过路由器实现单臂路由效率更高,个人(学习状态)并不喜欢这种"什么都能干"的设备,实际使用中还是需要使用路由器和交换机,那么三层交换机的定位就很模糊,配置上也很麻烦.如果不是很必要那么更倾向于网络层的任务交给路由器,物理层的任务交给交换机.

实际使用中似乎存在另一种应用,将企业内部的网络划分为:
接入层,使用二层交换机,主机通过接入层连入公司内部网络;
汇聚层:使用三层交换机,接入层的二层交换机可以通过多条链路连接到汇聚层的三层交换机,避免单点故障
核心层:连接外部网络,主要是路由器,防火墙等

应用层

网络应用模型

网络应用模型

p2p端到端模型
c/s客户端/服务器模型

DNS

ip地址难以记忆,通过域名进行记忆就容易得多,dns服务可以实现域名和ip地址的映射,将域名解析为ip地址或者将ip地址反向解析为域名.
域名包括根域. 顶级域(国家域cn,通用顶级域名com,gov,org,edu等) 三级域名等

域名服务器

包括主服务器可读可写,从服务器可读,缓存服务器可高速读

当主机指定dns服务器后,如果目标服务器没有对应的记录,则有限走转发器转发到服务器对应的dns服务器,否则转向根域名服务器,再依次经历顶级域名服务器等最后返回结果.

主机的查询是递归查询,服务器的查询是迭代的查询

STP文件传输协议

默认端口20,21,存在主动模式和被动模式,首先客户端向服务器21端口发起连接请求,主动模式是服务器先确定自己的端口,让客户端连接这个端口;被动模式是让客户端先确定自己的端口,服务器连接客户端这个接口

TFTP简单文件传输协议

使用udp协议,体量小配置简单,但是不可靠,适合传输少量小文件.

SMTP

为了便于对工作的记录和追溯需要使用电子邮件服务,SMTP传输邮件到服务器,pop3从服务器将邮件读取到本地,但是SMTP无法传输二进制对象,服务器会拒绝超长邮件,不能传输非英文等,扩展了MIME

IMAP可以允许用户只读取邮件中的一部分

计算机网络(就业向总复习)相关推荐

  1. 计算机网络总复习(一)——选择篇

    计算机网络总复习--选择篇 1.最早的计算机网络是( ). A.Internet B.Intranet C.局域网 D.ARPANET 2.计算机网络中使用最广泛的数据交换技术是( ). A.电路交换 ...

  2. 计算机网络前三章试题,计算机网络前三章复习试题PPT课件.ppt

    计算机网络前三章复习试题PPT课件 前三章复习;1.Internet最早起源于 .A.ARPAnet B.MILnet C.NSFnet D. ANSnet2.广域网中广泛采用的拓扑结构是.A.树状 ...

  3. 计算机网络(西工大复习)更新

    计算机网络(西工大复习) 能用到的 <王道计算机网络>学习笔记总目录+思维导图 计算机网络总结 知识点 名词解释 CRC校验 每章重点 1.应用层 2.运输层 1.名词解释 单工,半双工, ...

  4. Java总复习(二)

    总复习 1.抽象类和接口 2.异常处理 3.Object类中的方法 4.类加载 5.String类 1.抽象类和接口 接口和类是并列的结构 抽象类 接口 区别 abstract修饰 interface ...

  5. CISSP考前总复习

    CISSP考前总复习 转载于:https://blog.51cto.com/victorlau/59404

  6. 高等数学第七版-习题解答:总复习3

    习题解答:总复习3 18*. 已知f′′(x)f''(x)f′′(x)存在,证明 lim⁡x→x0f(x0+h)+f(x0−h)−2f(x0)h2=f′′(x0)\lim_{x \rightarrow ...

  7. 大学不挂科c语言题库及答案,C语言期末总复习,保你不挂科!

    C语言期末总复习 总体上必须清楚的:- 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)- 2)读程序都要从main()入口, 然后从最上面顺序往下读 ...

  8. 负数比较大小_小升初总复习第七个基础模块:负数的认识

    今天我们开始第七个基础模块的复习:负数的认识 负数的认识一共分为3个知识考点. 第一,正负数的意义 以前我们学过的6,10,7,85.....这样大于0的数叫做正数.正数前面也可以 加"+& ...

  9. 计算机应用基础126题,2015-2016年全国计算机应用基础总复习.

    20152015--2016年全国年全国计算机应用基础总复计算机应用基础总复习 人的生命是有限的,但是为人民服务是无限的,我要把有限的生命投入到无限的为人民服务中去 笔试分为四种题型:(1)单选题:( ...

最新文章

  1. rpcgen的简单讲解及例子程序
  2. 喜报!神策数据入选“中国科创企业百强榜”前 3 名
  3. php-5.6.26源代码 - opcode处理器,“函数调用opcode”处理器,如何调用扩展模块的函数...
  4. 一位资深程序员的成长故事
  5. Tomcat 7 'javax.el.ELException' 的解决方式(failed to parse the expression [${xxx}])
  6. linux下能运行python,(转)Linux下运行python
  7. linux网卡主备,linux网卡bounding的主备模式下上层路由端需要什么设置?
  8. 外呼机器人起名_电销外呼机器人如此受欢迎,今天终于知道原因了
  9. 树莓派 cuda加速_用树莓派4b构建深度学习应用(四)PyTorch篇
  10. Atitit.wrmi web rmi框架新特性
  11. matlab getdata 仿照一个曲线 提取图像中的曲线数据
  12. 怎么把外部参照合并到图纸_如何在CAD制图中将两个图合并到一个图纸上
  13. iOS高仿app源码:纯代码打造高仿优质《内涵段子》
  14. Echarts 关系图谱示例
  15. 计算机如何通过手机连接网络,主编教您手机怎么通过usb连接电脑上网
  16. 2020央行全面降准,货币政策操作仍有较大空间
  17. leaflet怎么获取矩形的中心点位 getCenter()
  18. memcmp函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )
  19. caniuse-lite is outdated. Please run next command `npm update`
  20. 独立产品灵感周刊 DecoHack #022 - 截图应用如何在一个月收入 8000 美元

热门文章

  1. eXtremeDB内存式实时数据库简介!
  2. html边框复合属性,HTML TABLE边框属性
  3. SOCKS 4协议中文文档意译版
  4. 构建e-Health 3.0灾备生态圈——浪擎勇当领航者
  5. 用python实现线性回归算法
  6. java魅族面试题_魅族2016Java互联网方向其中一道笔试题--青蛙跳台阶问题
  7. 如何写用户导向的互联网文案?
  8. 允许网站使用相机和麦克风_Windows 10 相机、麦克风和隐私
  9. c#开发安卓之一——加速器开启
  10. Unable to add window android.view.ViewRootImpl -- permission denied for this window type