计算机网络
计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善软件实现资源共享和信息传递的系统。
计网具有的功能包括:数据通信、资源共享、分布式处理、提高可靠性、负载均衡
计算机网络的发展时期:ARPA的ARPAnet->internet->ARPAnet接收TCP/IP->Internet->美国国家科学基金会组建了NSFNET(三层Net)->ISP
计算机网络包括:硬件、软件、协议
工作方式:边缘部分(C/S和P2P方式)、核心部分
根据功能组成分为:通信子网(实现数据通信)和资源子网(实现资源共享和数据处理)
计算机根据分布类型分类可以分为:WAN(交换技术)、MAN、LAN(广播技术)、PAN。按使用者分为公用网和专用网。按交换技术分为电路交换、报文交换、分组交换(使用存储转发)。按拓扑结构分为总线型、星型、环形和网状型。传输技术:广播式、点对点。
RFC到互联网标准的阶段:因特网草案-建议标准(成为RFC文档)-草案标准-互联网标准
相关组织:
性能指标:
- 速率(数据率、比特率)单位时间传送数据位数的速率
- 带宽最高数据率
- 吞吐量单位时间内某个网络的数据量(受带宽或额定速率限制 )
- 时延从一端到另一端的时间(发送时延(数据长度/信道带宽)、传播时延(传播速度和链路长度)、排队时延 、处理时延)
- 时延带宽积(传播时延*带宽)链路中的比特量
- 往返时延RTT(往返传播时延+末端处理时间)从发送方发送数据到发送方收到接收方的确认的时延
- 利用率(信道利用率数据通过时间/整体时间 网络利用率信道利用率加权和)
利用率增大会使得时延迅速增大。
计网层次结构(根据功能描述)
使用的是TCP/IP4层,标准是OSI7层。
ISO/OSI模型的起源:诸多公司提出体系-ISO提出OSI。
应用层:能和用户交互产生流量。表示层:用于处理在两个通信系统中交换信息的表示方式(语法和语义)。会话层:向表示层的实体/用户进程提供建立连接并在连接之上有序地传输数据(建立同步)。传输层:负责两个进程的通信(端到端通信),传输单位是报文段或用户数据包。网络层“把分组从源传送到目的,以分组交换网上不同主机提供的通信服务。数据链路层:把网络层的数据报封装成帧。物理层:物理媒体上实现比特流的透明传输。
OSI和TCP/IP的不同点在于:
我们学的是这个:
物理层
物理接口特性考选择题:
数据通信系统的通信方式分三种:单工、半双工、全双工。传输方式分两种:串行传输(速度慢费用低适合远距)、并行传输。传输模式可以分为同步传输(需要先送出同步字符再送出数据)和异步传输(直接将数据分组发送,分布包含终止位和起始位)。
数据通信的术语:
- 码元:1码元可以携带多个比特的信息量(承载信息量的基本信号单位)
- 码元传输速率(Baud)、信息传输速率(b/s)。若一个码元携带n bit信息量,则M Baud马原传输速率对应的信息传输速率为M*n bit/s。
- 带宽:最高数据率bps
失真程度的因素:码元传输速率、信号传输距离、噪声干扰、传播媒体质量
码间串扰:接收端收到的信号波形失去了码元之间清晰界限的现象(带宽受限无噪声)
可以得出:码元传输速率有上限,频带越宽,理想速率越高,可以想办法使每个马原携带更多的比特的信号量。但是并没有给出信息传输速率的限制。
香农定理:噪声影响,昕号较强不容易受噪声影响,需要控制信噪比:信号的平均功率/噪声的平均功率S/N=dB:(条件:带宽限制有噪声)
W也是带宽。带宽信噪比越大极限速率越高,只要信息的传输速率低于信道的极限传输速率就有无差错的传输,香农定理给出的是理论的极限传输速率。
奈式准则属于内部问题,香农定理属于外部干扰
编码和调制
近距离使用基带传输,远距离使用宽带信号。
数子数据编码为数字信号:NRZ(非归零编码)、曼切斯特、差分曼切斯特 RZ归零编码NRZI反向不归零编码4B/5B编码(80%效率)
非归零编码不能同步,曼切斯特一个周期变化两次,导致数据传输速率只有调制速率的一般。
数字数据调制为模拟信号
模拟数据转为数字信号:PCM 抽样(采样频率>=2倍信号最高频率) 量化 编码
模拟数据调制为模拟信号,频分复用等技术。
数据交换的方式包括:电路交换、报文交换、分组交换(数据报、虚电路)。
报文交换:
由于分组交换还可以分为数据报方式和虚电路方式
虚电路结合了数据报和电路交换的邮电
传输介质:是设备的物理通路。分为导向性传输介质和非导向型传输介质。对于导向型传输介质,分为:
-
双绞线:
-
同轴电缆
- 光纤:带宽远高于前两个,需要激光器和光检测器。传输损耗小、抗干扰强等特点
非导向性传输介质:无线电波、 微波、红外线/激光
物理层的设备只有中继器和集线器:
数据链路层 重要之一
封装成帧和透明传输
透明传输是指在组帧时并不关心其中的内容。组帧的方式很多:
- 字符计数法:帧首部指出帧长(8位)但是一旦前面出问题后面全部都会故障
- 字符填充法:使用SOH和EOT来说明帧头帧尾。但是传输的数据可能会包含这两个东西中的内容,所以需要字符填充:发送时在文本中添加转义字符
- 零比特填充法:首部和尾部均为01111110。数据中出现时只要有连续5个1就填一个0。接收端先找到头尾,发现连续5个1时去除0
- 违规编码法:在物理层使用不会用到的方式来表示
数据链路层还需要实现差错控制:由于噪声引起,会导致如下问题:
链路层的差错控制可以在任意一个结点实现:
差错控制的方式有奇偶校验、循环冗余校验、海明码
奇偶校验码看1的个数,只能检测奇数个错误。
接收端只需要除以多项式看余数是否为0即可。(接收端数据链路层接收的帧均无差错)
纠错编码——海明码:可以找到错误、找到位置、纠正错误。
检错 | 纠错 |
---|---|
d | d |
d+1 | 2d+1 |
海明码:
流量控制和可靠传输机制(关键是滑动窗口):
流量控制就是匹配发送方和接收方的速度。在链路层的流量控制是点对点的,而传输层的流量控制是端到端的。链路层的流量控制如果接收段收不下就不回复确认而传输层则需要接收端给发送端一个窗口公告。
链路层的窗口数量是固定的。
停止等待协议用于解决丢包问题(每次发送完一个分组就停止发送,等待对方确认)停止等待协议有效,但是信道利用率太低
接收方未收到的帧由超时来处理
GBN中的重点:累积确认;接收方只按序接收;确认序列号最大的、按序到达的帧;发送窗口大小限制。 为了解决需要传输多个数据的问题,就有了选择重传机制。SR需要响应三件事:
对于接收方:无视顺序接收:
SR滑动窗口的限制:过大会导致溢出,过小就没有意义了
信道划分访问介质一系列概念:前面提到了传输数据使用点对点和广播式链路。介质访问控制就是采取措施使得节点之间的1通信不会相互干扰:
FDM对不同通信同一时间使用不同频率,TDM不同通信轮流使用时间,STDM统计需要来进行划分轮流时间(注意,这里的STDM帧是物理层划分的比特流),WDM(对于光纤)类似FDM利用光的频分多路复用,最后一个是CDM码分复用其中包含CDMA(码分多址)的方法
接下来是动态的分配信道(并非在用户通信时固定分给用户),其中的随机访问介质访问控制(都可以占用全部带宽随时发送信息)分为四种协议:纯ALOHA协议,
但是发送如果发生冲突仍然会保持着发送出去。CSMA/CD就比较不错:
通过传播延迟t可以计算出最迟才能知道碰撞的时间2t(争用期、冲突窗口、碰撞窗口)。
CSMA/CA不是重点
最后是轮询访问机制:不产生冲突且在发送时占用全部带宽。主要有轮询协议和令牌
轮询协议就是主结点轮流“邀请”从属结点发送数据(轮询开销、等待延迟(后面的等前面的)、单点故障)。
接下来时局域网基本概念和体系结构(概念多)
常用的还是总线型。
局域网采用MAC方法主要有CSMA/CD、令牌总线(对于总线型按照一定顺序形成逻辑环)、令牌环
关于无线局域网使用的IEEE标准,主要着重与:802.3(CSMA/CD)、802.5(令牌环网)、802.8(光纤技术咨询)、802.11重点
接着是以太网
注意,以太网提供无连接、不可靠的服务(无握手、不编号、不确认、差错帧直接丢弃)
以太网的拓扑在逻辑上是总线型的在物理上是星型的。一些名词
无线局域网的主要是802.11协议,有以下重点
传统的局域网存在广播的流量隔离机制、且难以用户管理、路由器成本较高,所以有了虚拟局域网:
要想实现VLAN的通信,需要借助路由器、三层交换机(存储一个VLAN表)。根据VALN表中存储不同的值端口、MAC地址分为基于端口和基于MAC的VLAN实现(常见基于端口的):
广域网貌似不考了。。。
链路层设备算是一个重点了:物理层扩展以太网的方式包括使用光纤来拓展长度或是使用集线器增加冲突域
两种网桥:
不过常用的是存储转发式交换机(和网桥的效果一样,但是有多个接口),超过生存周期就会消失。
网络层
具有较为复杂的功能,也因此难度较大。好在重点只有基于路由选择的转发。
2022年的新考点:SDN
数据平面只进行转发。控制平面分为传统方法/每路由器法或SDN(软件定义方法 )
SDN需要实现的功能:
路由算法是另一个重点
在进一步了解路由选择算法之前,还需要先了解一下IP数据报格式。TCP/IP协议栈如图
IP数据报格式分为首部和数据部分,而首部又分为固定部分和可变部分。具体的首部如图:
以太网的最大传送单元为1500,所以需要对数据部分进行分片。前面提到了IP数据报的格式,其中标识、标志、片偏移就是与之相关的。
IP地址格式:
nat(网络地址转换)延续了ipv4的生命:在专用网连接到因特网的路由器上安装NAT软件,其至少需要一个外部全球IP地址,工作原理如下:
子网划分用于解决IP地址空间利用率较低和两级IP地址不够灵活的问题,但是子网的多级划分又会导致难以识别的问题,所以又有了子网掩码:
目前常用的子网划分地址就是CIDR,主要是由于B类地址的分配和路由表中项目急剧增长引起的,所以只使用了无分类编址CIDR
CIDR的应用是组成超网:将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合(将所有网络地址求交集)。最长前缀匹配:根据子网掩码与,选择最长网络前缀的路由,越长越详细
然后就是诸多协议了,首先是ARP协议:ARP高速缓存负责存储IP地址到MAC地址的映射,当需要添加MAC地址时添加,如果没有找到对应的MAC时则广播ARP请求分组,其中填充的MAC是下一跳的设备MAC
接着是DHCP:动态分配IP(虽然是应用层协议,但是对于了解网络层比较有用)
ICMP主要用于声明错误:
IPv6彻底解决地址不够用的问题,同时也能提高性能:
IPv6的格式,连续四个0可以用一个0表示,一连串的0可以用冒号取代。IPv6的地址格式分为单播、多播和任播
接下来是路由选择协议RIP、OSPF和BGP
首先是RIP
RIP同样是应用层协议,具体的报文格式可以不记忆,但是要注意其协议中的内容是存储在UDP报文中的。RIP存在一些问题:网络出现故障时比较长的时间才能传送到所有路由器即慢收敛。
接着是OSPF(开放最短路径优先协议)
最后所有的路由器都能建立一个链路状态数据库,即网络拓扑。算法流程如下:
OSPF是网络层协议,放在IP数据报中。
在完成AS内的网关协议之后就有了外部网关协议BGP
BGP报文分版本,主要学习BGP-4:
IP组播:形象说明,分为两种情况:在局域网上硬件组播、在因特网的范围内进行组播
组播的地址如何设计?
关于硬件组播:
组播实现的协议包括IGMP和组播路由选择协议
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。
常用的算法有:基于链路状态的路由选择、基于距离向量的路由选择和协议无关的组播(稀疏/密集)
移动IP保持IP地址不变:
最后一点就是网络层设备——路由器:
传输层
接近终点了。
传输层只有主机才有
首先是简单的UDP:
UDP会添加一个伪首部用于校验:
接着是TCP:
TCP协议是面向字节流的,发送方和接收方都会设置一个TCP缓存,在发送数据时加入TCP头进行传输。
然后是蛋疼的TCP报文首部格式:
TCP连接建立的方式采用客户服务器方式,需要进行三次握手
连接释放需要四次握手:
TCP实现了可靠传输,即保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。其实现可靠传输的机制是:校验(伪首部)、序号、确认、重传
其它机制或多或少已经有所了解了,一个没有过多说明的是确认机制:服务端和客户端均会维护一个TCP缓存,只有当客户端向服务端发送确认后才会使服务端删除对应的数据缓存,当发送的报文中有部分丢失时,采用累计确认机制,即发送缺失的开头,服务端从开头之后发送而不关心是否后面有没有被成功接收。重传则使用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
关于这里使用的窗口协议,在数据链路层已经了解过了。
TCP使用滑动窗口机制实现流量控制,
举个例子:
上面是流量控制,下面是拥塞控制(两者不相同):
拥塞控制使用了四种算法:慢 开始、拥塞避免、快重传、快恢复
应用层
DNS算是一个比较重要的应用
域名:
查询方式
为了方便查找,一般都会维护一个高速缓存来缓存域名对应的ip,同时需要设置定时器,进行不断地更新。
FTP是老协议了:
FTP的传输模式只有文本模式:文本模式和二进制模式
邮件主要涉及到了三种协议:
最后一个:
上面显示的是非流水线的传输,连续不断地发送请求就是流水线传输