文章目录
文章地址:https://hupc.site/?p=720
计算机网络是一些互相链接的、自治的计算机的集合
比较通俗的定义:
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
连通性 、共享
bit Kbit Mbit Gbit之间的换算 (进制是2^10)
1Gbit =
2
10
2^{10}
210Mbit =
2
10
2^{10}
210 x
2
10
2^{10}
210Kbit
bit/s Kbit/s Mbit/s Gbit/s之间的换算 (进制是10^3)
1Gbit/s =
1
0
3
10^3
103Mbit/s =
1
0
3
10^3
103 x
1
0
3
10^3
103Kbit/s
指的是理想状态下,一定时间内网络信道能通过的最大数据量
速率往往指的是额定速率或标称速率,非实际运行速率
频域概念
信道具有的频带宽度
单位是赫(千赫、兆赫、吉赫等)
某信道允许通过的信号频带范围称为改信道的带宽
带宽是实际的传输能力,可能比速率大也可能比速率小
时域概念
网络中某通道传送数据的能力,表示在单位时间内网络中某信道所能通过的“最高数据率”
单位就是数据率的单位bit/s
吞吐量
单位时间内通过某个网络(或信道、接口)的实际数据量
受网络的带宽或网络的额定速率的限制
时延
指数据(一个报文或者分组,甚至比特)从网络(或链路)的一端传到另一端所需的时间
包括
发送时延(也叫传输时延)
发送数据时,数据块从结点进入到传输媒体所需要的时间
也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需要的时间
发送时延
=
数据帧长度(
b
i
t
)
发送速率(
b
i
t
/
s
)
发送时延=\frac{数据帧长度(bit)}{发送速率(bit/s)}
发送时延=发送速率(bit/s)数据帧长度(bit)
传播时延
电磁波在信道中需要传播一定的距离而花费的时间
传播时延
=
信道长度(米)
信号在信道上的传播速度(米
/
秒)
传播时延 = \frac{信道长度(米)}{信号在信道上的传播速度(米/秒)}
传播时延=信号在信道上的传播速度(米/秒)信道长度(米)
处理时延
交换结点为存储转发而进行一些必要的处理所花费的时间
排队时延
结点缓存队列中分组排队所经历的时延
排队时延的长短往往取决于网络中当时的通信量
数据经历的总时延就是以上几个时延的总和
总时延 = 发送时延+传播时延+处理时延+排队时延
容易混淆的概念
对于高速网络链路,我们提高的仅仅是数据的发送速率而不是比特在链路上的传播速率
提高链路带宽是减小了数据的发送时延
时延带宽积
时延带宽积 = 传播时延 * 带宽,即按比特计数的链路长度。
往返时间RTT
表示从发送方发送完数据,到发送方收到来自接收方的确认总共经历的时间。
有效数据率
=
数据长度
发送时间
+
R
T
T
有效数据率 = \frac{数据长度}{发送时间 + RTT}
有效数据率=发送时间+RTT数据长度
利用率
信道利用率是指某信道有百分之几的时间是被利用的(即有数据通过)。完全空闲的信道利用率是零。
网络利用率是指全网络的信道利用率的加权平均值
根据排队论,当某信道的利用率增大时,时延会迅速增加
如下图所示
令
D
0
D_0
D0表示网络空闲时的时延,
D
D
D表示网络当前的时延,则在适当的假定条件下,可以用下面的简单公式表示
D
D
D和
D
0
D_0
D0之间的关系:
D
=
D
0
1
−
U
D = \frac{D_0}{1-U}
D=1−UD0
U是网络利用率,数值在0到1之间
计算机网络是非常复杂的系统,而分层可以将庞大而复杂的问题,转化为若干较小的局部问题,所以就引出来计算机网络的体系结构
分层要遵循抽象分层、统一标准、模块独立的原则
计算机网络的体系结构是计算机网络的各层和协议的集合,是这个计算机网络及其部件所应完成的功能的精确定义。(不涉及实现)
实现是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。
网络协议(Network Protocol),简称协议,是为进行网络中的数据交换而建立的规则、标准、或约定。
组成要素:
语法 规定数据与控制信息的结构或格式
语义 规定需要发出何种控制信息,完成何种动作以及做出何种响应
同步 规定各种操作的顺序,又称为时序,解决什么时间什么条件下做什么特定操作的问题
划分层次的原则
层次适度
层次少,层次功能多,实现困难;层次多,层次功能少,开销大。
功能明确
每个层次有自己的分工,并且有确定的方式完成这些工作
层次独立
每个层次的工作和变化不影响其他层次
层次关联
相邻层次间存在一种工作上的联系
层次对等
双方要有完成相同功能的对等层次
层次协议
对等层次要遵守一系列共同的规约(协议)
层次接口
相邻层次间通过接口交互信息
TCP/IP模型未明确区分服务、接口和协议等核心概念;不适用于描述TCP/IP之外的其他协议栈;物理层和数据链路层是非常重要的部分而被一起定义为网络接口层,而且并没有具体内容。
ISO/OSI协议实现起来过于复杂,而且运行效率很低;制定周期太长,使得按OSI标准生成的设备无法及时进入市场;OSI的层次划分也不合理,有些功能在多个层次中重复出现。
所以,我们往往采取折中的办法,综合两者的优点,采用一种只有五层的协议体系结构。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHQNHdVI-1682242628243)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/541679152471_.pic_.png “3种协议体系结构的对比”)]
下面的协议对上面的服务是透明的
协议是水平的,即协议是控制对等实体之间的通信的规则。
服务是垂直的,即服务是由下层向上层通过层间接口提供的。
物理层的主要任务是确定与传输媒体的接口的一些特性,即:
机械特性
指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。
电气特性
指明在接口电缆的各条线上出现的电压的范围。
功能特性
指明某条线上出现的某一电平的电压表示何种意义。
过程特性
指明对于不同功能的各种可能事件的出现顺序。
我们可以看到数据通信系统的模型中包含三大部分:
源系统(发送端、发送方)、传输系统(传输网络)和目的系统(接收端、接收方)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XtoZgxCL-1682242628244)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/4c994414496c673adebb35fb549e254.png “数据通信系统”)]
数据通信常用术语:
信道是信号的传输通道(传输媒介),按照数据信号在信道上传递方向与时间的关系,传输方式可以分为三类:
单工通信(单向通信) 只能有一个方向的通信而没有反方向的交互。
半双工通信(双向交替通信) 通信的双方都可以发送消息,但不能双方同时发送(当然也就不能同时接收)。
全双工通信(双向同时通信) 通信的双方可以同时发送和接收信息。
基带信号和带通信号
以上几个概念可以用下面的一个图简单总结下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sECqz5DZ-1682242628246)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/41609277dbc960065d33097e381936d.png “编码和调制”)]
常用编码方式
不归零制:正电平表示1,负电平表示0
归零制:正脉冲表示1,负脉冲表示0 没有自同步能力
曼彻斯特编码:位周期中心的向上跳变表示0,位周期中心的向下跳变表示1。也可以反过来定义。 有自同步能力
差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变表示0,而位开始边界没有跳变表示1 有自同步能力
基本的带通调制方法
调幅(AM):载波的振幅随基带数字信号而变化。
调频(FM):载波的频率随基带数字信号而变化。
调相(PM):载波的初始相位随基带数字信号而变化。
码元:在使用时域的波形表示数字信号时,代表不同离散数值的基本波形。
使用二进制编码时,只有两种不同的码元:0状态,1状态
1码元可以携带多个比特的信息量
当码元的离散状态有M个时(M>2),此时码元称为M进制码元。
任何实际的信道都不是理想的,在传输信号时会产生各种失真以及带来多种干扰。
码元传输的速率越高,或信号传输的距离越远,在信道的输出端的波形的失真就越严重。
失真的原因:
信号传输的距离远
传输媒体质量越差
噪声干扰
码元传输速率高(不可能以任意高的速率进行传送)
限制码元在信道上的传送速率有两个因素:
奈氏准则:
带宽W(Hz)的理想低通信道中(无噪声、带宽受限)
码元传输的最高速率 = 2W(码元/秒)
信道的频带越宽,也就是能够通过的信号高频分量就越多,那么就可以用更高的速率传送码元而不出现码间串扰
码间串扰:接收端收到的信号波形失去了码元之间的清晰界限。
奈氏准则给出了码元的传输速率的限制,但是没有对信息传输速率给出限制。
v进制码元情况下,理想低通信道下的极限数据传输率 =
2
W
l
o
g
2
v
(
b
/
s
)
2Wlog_2v(b/s)
2Wlog2v(b/s)
信噪比就是信号的平均功率和噪声的平均功率之比,记为S/N,用分贝(dB)作为度量单位。即:
信噪比(
d
B
)
=
10
l
o
g
10
(
S
/
N
)
(
d
B
)
信噪比(dB) = 10log_{10}(S/N)(dB)
信噪比(dB)=10log10(S/N)(dB)
当S/N = 10时,信噪比为10dB,而当S/N = 1000时,信噪比为30dB。
信道的极限信息传输速率C可表达为:
$ C = Wlog_2(1+S/N)(bit/s)$ 香农公式
W 信道的带宽(Hz)
S 信道内所传信号的平均功率
N 信道内部的高斯噪声功率
香农公式表明:信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高
香农公式的意义在于:只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。
奈氏准则和香农定理的意义不同:
奈氏准则:激励工程人员不断探索更加先进的编码技术,使每个码元携带更多比特的信息量;(理想状态下)
香农公式:告诫工程人员在有噪声的信道上,任何编码技术,不能突破香农定理给出的信息传输速率。
电磁波被导引沿着固定媒体传播
常见分类:
双绞线
同轴电缆
光缆(光纤)
指自由空间。即无线传输
无线传输所使用的的频段很广。
短波通信主要是靠电离层的反射,但短波信道的通信质量较差。
微波在空间主要是直线传播
地面微波接力通信
卫星通信
为什么要信道复用
信道资源是有限的,实际网络中,多对用户往往需要利用相同的信道资源传输数据。
不同的信号同时在同一信道中传输会产生严重的相互干扰,导致传输失败。
什么是信道复用
多路复用技术:把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。
允许用户使用一个共享信道进行通信,降低成本,提高利用率。
时分复用可能会造成线路资源的浪费
使用时分复用系统传送计算机数据时,由于计算机数据的突发性质,用户对分配到子信道的利用率一般是不高的。
如下图所示:
每个用户可能会间隔很久才会有数据发送,但是每个时分复用帧的时间却是固定的,及时没有数据也要等待。
即在时分复用的基础上,对每个用户做一下检测,如果没有数据则跳到下一个用户数据,直到把一个时分复用帧填满再发送。
STDM不是固定分配时隙,而是按需动态分配时隙。
如下图所示:
波分复用就是光的频分复用
每一个用户可以在同样的时间使用同样的频带进行通信
各用户使用经过特殊挑选的不同码型,因此不会造成干扰。
当码分复用信道为多个不同地址的用户所共享时,就称为码分多址CDMA(Code Division Multiple Access)
CDMA工作原理:
将每一个比特时间划分为m个短的间隔,称为码片(chip)。
为每个站指派一个唯一的m bit码片序列。
例如,S站的8bit码片序列是00011011。
发送比特1时,就发送序列00011011.
发送比特0时,就发送序列11100100.
S站的码片序列:(-1 -1 -1 +1 +1 -1 +1 +1)
每个站分配的码片序列:各不相同,且必须相互正交。
任何一个码片向量和该码片向量自己的规格化内积都是1.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-btviDArY-1682242628252)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/fa31400827978009259eb55be434d84.png “自己和自己的规格化内积是1”)]
一个码片向量和该码片反码的向量的规格化内积值是-1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wnXNjOsD-1682242628253)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/462bf5286c6b396fd00cf0ba3295ae8.png “自己和自己的反码的规格化内积是-1”)]
链路:是结点间的物理通道,无源的物理线路,中间无任何其他交换结点。
数据链路:是节点间的逻辑通道,是把实现控制数据传输的协议的硬件和软件加到链路上,即链路+协议。
数据链路层:负责通过一条链路从一个结点向物理链路直接相邻的相邻结点传送帧。
帧: 链路层协议数据单元,封装网络层的数据报。
点对点信道
广播信道
就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界
最大传送单元MTU(Maximum Transfer Unit):规定了所能传送的帧的数据部分长度上限。
成帧的方式:
字节计数法
带字节填充的定界符法
带比特填充的定界符法
物理层编码违例
用控制字符作为帧定界符
控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始
控制字符EOT(End Of Transmission)放在一帧的末尾,表示帧的结束
但是如果数据部分包含与“定界符”相同的字节,就会导致帧识别错误。
透明:指一个实际存在的事物看起来好像不存在一样
在数据链路层中透明传输表示:无论发送什么样的比特组合的数据,这些数据都能按照原样没有差错地通过这个数据链路层。
用字节填充法解决透明传输的问题
发送端的数据链路层在数据中出现控制字符**“SOH”或者“EOT”的前面插入一个转义字符“ESC”**(其十六进制编码是1B)
接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
在传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)
误码率与信噪比有很大的关系
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
纠错码:主要用于错误发生比较频繁的信道上,如无线链路
检错码:主要用在高可靠、误码率较低的信道上,例如光纤链路
常用的检错码方法:CRC循环冗余检验 详细讲解:点这里
这里的差错控制并不是可靠传输
现在全世界使用得最多的数据链路层协议是点对点协议PPP
简单 —— 这是首要的要求
封装成帧
透明传输
差错检测
能够承载不同的网络层分组
能够在多种链路上运行
检测链接状态
最大传送单元
网络层地址协商
数据压缩协商
PPP协议的组成
一种将IP数据报封装到同步/异步串行链路的方法
链路控制协议LCP(Link Control Protocol) —— 用来建立、配置和测试数据链路的链路控制协议,通信双方可协商一些选项,最重要的功能之一是身份验证
网络控制协议NCP(Network Control Protocol) —— 其中每个协议支持一种不同的网络层协议,如IP、OSI的网络层
标志字段F是 0x7E —— 二进制表示是01111110
地址字段A是 0xFF 地址字段实际上并不起作用
控制字段C是 0x03
PPP是面向字节的,所有的PPP帧的长度都是整数字节。
协议字段是2字节
透明传输问题
当PPP用在异步传输时,使用字节填充法
当PPP用在同步传输时,使用比特填充法
同步传输:面向比特
异步传输:面向字节
1. 字节填充法
将信息字段中出现的每个0x7E字节转变成为2字节序列(0x7D,0x5E)
若信息字段中出现一个0x7D的字节,则将其转变成为2字节序列(0x7D,0x5D)
若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变
2. 零比特填充法
具有广播功能,从一个站点可很方便地访问全网
便于系统的扩展和逐渐演变
提高了系统的可靠性、可用性和生存性
静态划分信道
动态媒体接入控制(多点接入)
现在802委员会制定的逻辑链路控制子层LLC(即802.2标准)的作用已经不大了。
很多厂商生产的适配器上就近装有MAC协议而没有LLC协议。
网络接口板又称为通信适配器或网络接口卡或网卡
适配器的重要功能:
以太网发送的数据都使用曼彻斯特编码,便于同步
背景:
最初的以太网是将许多计算机都连接到一根总线上。
当初认为这样的连接方法既简单又可靠,因为总线上没有有源器件。
使用CSMA/CD协议的以太网不能使用全双工通信而只能使用半双工通信。
但是这样会造成信号碰撞的问题。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rm9uaJNG-1682242628260)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/e88627eec8f74fe03c8706e382354fe.png “最初的以太网采用总线的拓扑结构”)]
CSMA/CD(Carrier Sense Multiple Access With Collision Detection):
载波监听多点接入/碰撞检测
问题1:既然发送钱已经监听过信道,为什么还要进行碰撞检测?
因为信号有传播时延,监听信道空闲,但信道可能并非真正空闲。
问题2:A发送数据后,至少要多少时间内收到数据才说明没有碰撞?
以太网的端到端往返时延==2τ称为争用期,或碰撞接口。
具体的争用期时间 = 51.2μs(以5km的10M以太网计算)
由此,我们可以计算出争用期的长度
对于10Mb/s的以太网,在争用期内可以发送521bit的数据,也就是64字节==。所以,争用期的长度就是64B。
在以太网发送数据时,若前64字节没有发生冲突,则后续的数据就不会发生冲突。
所以,以太网规定最短有效帧长为64字节。
凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。
问题3:碰撞后什么时候重传?
截断二进制指数退避(Truncated Binary Exponential Backoff)
发生碰撞的站停止发送数据后,要退避一个随机时间后再发送数据。
强化碰撞
当发送数据的站一旦发现了碰撞时:
先听后发、边听边发、冲突停止、延迟重发
传统以太网采用粗同轴电缆到细同轴电缆再到后来的双绞线;
这种以太网采用星形的拓扑结构,并在此基础上增加了集线器(Hub)来进行扩展
集线器的特点:
集线器是使用电子器件来模拟实际电缆线工作,实际上还是一个传统的以太网
使用集线器的网络在逻辑上还是一个总线网,各站点采用CSMA/CD协议,并共享逻辑上的总线
集线器就想很多接口的转发器,工作在物理层
由上图可知,要提高以太网的信道利用率,就必须减少τ与 T 0 T_0 T0的比值,以太网中定义了参数a,它就是τ与 T 0 T_0 T0的比值。
a = τ T 0 a = \frac{τ}{T_0} a=T0τ
信道利用率最大值 S m a x S_{max} Smax为:
S m a x = T 0 T 0 + τ = 1 1 + a S_{max} = \frac{T_0}{T_0 + τ} = \frac{1}{1 + a} Smax=T0+τT0=1+a1
在局域网中,硬件地址又成物理地址或者MAC地址
MAC地址一共48位。它的通用名称是EUI-48
IEEE的注册管理机构RA负责向厂商分配地址中的前3个字节(即高位24位)
地址中的后3个字节(即低位24位),由厂商自行指派,称为扩展标识符。必须保证生产出的适配器没有重复地址。
以太网的帧格式:
无效的MAC帧
数据字段的长度和长度字段的值不一致
帧的长度不是整数个字节
用收到的帧检验序列FCS查出有差错
数据字段的长度不在46 ~ 1500字节之间
MAC帧的长度不在64 ~ 1518字节之间
检查出无效的MAC帧,以太网就直接丢弃。以太网不负责重传丢弃的帧。
帧间最小间隔
帧间最小间隔为9.6um,相当于96bit的发送时间
一个站在检测到总线空闲之后,还要等待9.6um再开始发送数据
这样做是为了刚刚接收帧的站的接收缓存来得及清理,做好接收下一帧的准备
在物理层扩展主要是用==集线器==的方式
优点:
使原来属于不同碰撞域的局域网上的计算机能够跨碰撞域进行通信
扩大了局域网覆盖的地理范围
缺点:
碰撞域增大了,但是总的吞吐量并未提高
如果不同的碰撞域使用不同的数据率,那就不能用集线器将他们互联起来
在数据链路层扩展以太网使用的是==网桥==
网桥工作在数据链路层,它根据MAC帧的目的地址对帧进行转发
网桥的优点:
过滤通信量
扩大物理范围
提高了可靠性
可互联不同物理层、不同MAC子层、不同速率的局域网
可以隔离碰撞域
网桥的缺点:
存储转发增加了时延
在MAC子层并没有流量控制功能
具有不同MAC子层的网桥接在一起时时延更大
容易产生广播风暴
多接口网桥 —— 以太网交换机
以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式
每个接口在通信时是独占带宽
虚电路服务与数据报服务对比
| 对比内容 | 虚电路服务 | 数据报服务 |
|---|---|---|
| 可靠传输的保证 | 可靠通信由网络保证 | 可靠通信由主机保证 |
| 链接的建立 | 必须要 | 不需要 |
| 地址 | 每个分组含有一个短的虚电路号 | 每个分组需要有源地址和目的地址 |
| 状态信息 | 建立好的虚电路要占用子网表空间 | 子网不存储状态信息 |
| 路由选择 | 分组必须经过建立好的路由发送 | 每个分组独立选择路由 |
| 分组顺序 | 总是按序到达 | 可能乱序 |
网际协议IP是TCP/IP体系中最重要的协议之一。与IP协议配套使用的还有四个协议
一个IP数据报由首部和数据两部分组成。
首部共20字节
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6OdsvupV-1682242628263)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/571680332861_.pic_.png “IP首部”)]
IP由网络号和主机号组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVsactt4-1682242628263)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/551680332446_.pic_.jpg “IP地址的组成”)]
分类的IP地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r5a9S9EC-1682242628271)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/561680332446_.pic_.jpg “分类的IP地址”)]
从主机号借用若干个位作为子网号,而主机号也就相应减少了若干个位。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GNUl747C-1682242628272)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/581680334124_.pic_.png “划分子网思路”)]
从一个IP数据报的首部无法潘丹源主机或者目的主机锁连接的网络是否进行了子网划分。
使用==子网掩码==可以找出IP地址中的子网部分。
( IP 地址) AND(子址网掩码) = 网络地址 AND:按位与运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8Zor5DL-1682242628273)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/591680334786_.pic_.png “子网掩码计算”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GwMezaCd-1682242628274)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/601680335161_.pic_.jpg “题解”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trkrxjyx-1682242628275)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/611680335294_.pic_.png “题解”)]
结论:不同的子网掩码可以得出相同的网络地址。但不同的掩码的效果是不同的。
划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在1992年因特网仍然面临三个必须尽早解决的问题,那就是:
IP 地 址 := { < 网 络 前 缀 >, < 主 机 号 > }
CIDR还 使 用 “ 斜 线 记 法”(slash notation),它又 称为CIDR记法,即在IP 地址面加上一个斜线“ 然后写 上网络前缀所占的位数 (这个数值对应 于 三级编址中子网掩码中 1 的个数)。
CIDR 把网络前缀都相同的连续的 1P 地址组成 “CIDR 地址块”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rwHlnfMr-1682242628276)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/621680337131_.pic_.png “CIDR应用举例”)]
这个ISP 共有64 个C 类网络。如果不采用CIDR 技术,则在与该ISP 的路由器交 换路由信息的每 一个路由器的路由表中,就需要有64 个项目。但采用地址聚合后, 只需用路由聚合后的1个项目206.0.64.0/ 18 就能找到该ISP。
ICMP报文格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZJXDYr6-1682242628276)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/631680337720_.pic_.png “ICMP报文的格式”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ihf83f8-1682242628277)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/641680338212_.pic_.png “mac下的ping命令”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FvmGv0WE-1682242628278)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/661680340056_.pic_.png “Mac下traceroute命令”)]
自治系统 AS (Autonomous System)
路由信息协议RIP 是内部网关协议IGP 中最先得到广泛使用的协议。
优点:
缺点:
OSPF是分布式的链路状态协议
BGP 是不同自治系统的路由器之间交换路由信息的协议。
BGP 发言人(BGP speaker)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZ914YkK-1682242628280)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/671680341461_.pic_.png “BGP发言人和自治系统AS的关系”)]
IP多播需要两种协议
10.0.0.0到10.255.255.255
172.16.0.0到172.31.255.255
192.168.0.0到192.168.255.255
用隧道技术实现虚拟专用网
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o644xaZQ-1682242628280)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/681680343023_.pic_.png “VPN原理简单说明”)]
从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
两个主机进行通信实际上就是两个主机中的应 用进程互相通信。
应用进程之间的通信又称为端到端的通信。
运输层有两个不同的协议:
运行在计算机中的进程是用进程标识符来标志的。
解決这个问题的方法就是在运输层使用协议端口号(protocol portnumber),或通常简称为端口(port)。
UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。
UDP的主要特点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ABX7tNS7-1682242628281)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/701681622899_.pic_.png “UDP数据报首部格式”)]
TCP最主要的特点
套接字(socket)
端口号拼接到(contatenatedwith)IP地址即构成了套接字。
套接字socket = (IP地址:端口号)
TCP的链接
每一条TCP连接唯一地被通信两端的两个端点 (即两个套接字)所确定。即:
TCP连接::= (socket 1, socket2) = {(IP1: port1), (IP2: por 2)}
同一个名词socket有多种不同的意思
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vIiKAdSN-1682242628281)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/711681623768_.pic_.png “停止等待协议示意图”)]
确认丢失和确认迟到
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uz9ER6M6-1682242628282)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/721681623859_.pic_.png “确认丢失和确认迟到”)]
注意
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
这种可靠传输协议常称为自动重传请求ARQ(AutomaticRepeat reQuest)。
ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。
停止等待协议的优点是简单,但缺点是信道利用率太低。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xH99VJjn-1682242628282)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/731681624236_.pic_.png “停止等待协议信道利用率示意图”)]
$U = \frac{T_D}{T_D + RTT + T_A} $
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YvbzAZ0p-1682242628283)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/741681624445_.pic_.png “连续ARQ协议”)]
Go-back-N(回退N)
TCP可靠通信的具体实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NyKMlxKH-1682242628283)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/751681625752_.pic_.png “TCP报文段的首部”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5baMWOiF-1682242628284)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/013319b7f1940778829d5d1386dc1fe.png “滑动窗口示意图”)]
重传机制是TCP中最重要和最复杂的问题之一。
TCP每发送一个报文段,就对这个报文段设置一次计时器。
只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。
重传时间的选择是TCP最复杂的问题之一。
TCP采用了一种自适应算法,它记录一个报文段发出的时间, 以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT。
TCP保留了RTT的一个加权平均往返时间
R
T
T
s
RTT_s
RTTs(这又称为平滑的往返时间) 。
第一次测量到RTT样本时,
R
T
T
s
RTT_s
RTTs值就取为所测量到的RTT样本值。以后每测量到一个新的RTT样本,就按下式重新计算一次
R
T
T
s
RTT_s
RTTs:
新的 R T T s RTT_s RTTs = (1-α) x (旧的 R T T s RTT_s RTTs) + α x (新的RTT样本)
式中, 0 <= α < 1。 若α很接近于零, 表示RTT值更新较慢。若选择α接近于1,则表示RTT值更新较快。
RFC2988推荐的α值为1/8, 即0.125。
RTO(Retransmission Time-Out)应略大于上面得出的加权平均往返时间 R T T S RTT_S RTTS。
RTO = R T T S RTT_S RTTS + 4 x R T T D RTT_D RTTD
R T T D RTT_D RTTD是RTT的偏差的加权平均值。
RFC2988建议这样计算 R T T D RTT_D RTTD。第一次测量时, R T T D RTT_D RTTD值取为测量到的RTT样本值的一半。在以后的测量中, 则使用下式计算加权平均的 R T T D RTT_D RTTD:
新的 R T T D RTT_D RTTD = (1 - β) x (旧的 R T T D RTT_D RTTD) + β x | R T T S RTT_S RTTS - 新的 RTT 样本|
β是个小于1的系数,其推荐值是1/4,即0.25。
问题:
若收到的报文段无差错, 只是未按序号,中间还缺少一些序号的数据, 那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?
答案是可以的。 选择确认SACK(Selective ACK)就是一种可行的处理方法。
接收方收到了和前面的字节流不连续的两个字节块。
如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。
流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fQ7Tdefa-1682242628284)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/9dc59a8576b0abdb15ae831e8fb9da2.png “滑动窗口流量控制示例”)]
可能发生死锁
B 向 A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间。 于是 B 向 A 发送了 rwnd =400 的报文段。
但如果这个报文段在传送过程中丢失了。 A 一直等待收到 B 发送的非零窗口的通知, 而 B 也一直等待 A 发送的数据。 ——死锁局面。
如果没有其他措施, 这种互相等待的死锁局面将一直延续下去。
为了解决这个问题, TCP 为每一个连接设有一个持续计时器 (persistence timer)。
持续计时器
TCP 为每一个连接设有一个持续计时器 (persistence
timer) 。
只要 TCP 连接的一方收到对方的零窗口通知, 就启动该持续计时器。
若持续计时器设置的时间到期, 就发送一个零窗口探测报文段(仅携带 1 字节的数据) , 而对方就在确认这个探测报文段时给出了现在的窗口值。
若窗口仍然是零, 则收到这个报文段的一方就重新设置持续计时器。
若窗口不是零, 则死锁的僵局就可以打破了。
目的不同; 涉及因素不同
拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。
拥塞控制所要做的都有一个前提, 就是网络能够承受现有的网络负荷。
拥塞控制是一个全局性的过程, 涉及到所有的主机、 所有的路由器, 以及与降低网络传输性能有关的所有因素。
流量控制往往指点对点通信量的控制,是个端到端的问题。
流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收(接收端控制发送端)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t8dYnaQ8-1682242628284)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/a680b9f64486625807f23608f53ae2e.png “拥塞控制所起的作用”)]
控制方法: 开环控制和闭环控制
开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
闭环控制方法是基于反馈环路的概念。 属于闭环控制的有以下几种措施:
监测网络的拥塞的指标
上述这些指标的上升都标志着拥塞的增长。
TCP 采用基于窗口的方法进行拥塞控制。 该方法属于闭环控制方法。
TCP发送方维持一个拥塞窗口 CWND (Congestion Window)
真正的发送窗口值 = Min(公告窗口值, 拥塞窗口值)
TCP拥塞控制算法
设置慢开始门限状态变量ssthresh
慢开始门限ssthresh 的用法如下:
• 当cwnd<ssthresh时,使用慢开始算法。
• 当cwnd >ssthresh 时,停止使用慢开始算法而改用 拥塞避免算法。
• 当cwnd =ssthresh 时,既可使用慢开始算法,也可 使用拥塞避免算法。
• 拥塞避免算法的思路是让拥塞窗又cwnd 缓慢地增大, 即每经过一个往返时间 RTT 就把发送方的拥塞窗又 cwnd 加1,而不是加倍,使拥塞窗又cwnd 按线性规律缓慢增长。
为了集中讨论拥塞控制, 假定传输是在单向, 接收窗口足够大(发送窗口由拥塞控制决定) 的理想条件下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4h5ysoBm-1682242628285)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/811682131735_.pic_.png “TCP拥塞控制示意图”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJYJ53zB-1682242628285)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/821682133617_.pic_.png “TCP建立连接的三次握手”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7JRS98BN-1682242628285)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/831682134408_.pic_.png “TCP四次握手释放连接”)]
数据传输结束后,通信的双方都可释放连接。 现在A的应用进程先向其TCP 发出连接释放 报文段,并停止再发送数据,主动关闭TCP 连接。
TCP连接必须经过时间2MSL后才真正释放掉。
TCP 有限状态机的图中每一个方框都是TCP 可能具有的状态。
每个方框中的大写英文宇符串是 TCP 标准所使用的TCP 连接状态名。状态之问的箭头表示可能发生的状态变迁。
箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s84382wd-1682242628286)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/841682135005_.pic_.png “TCP的有限状态机”)]
图中有三种不同的箭头。
• 粗实线箭头表示对客户进程的正常变迁。
• 粗虛线箭头表示对服务器进程的正常变迁。
• 另一种细线箭头表示异常变迁。
… . 三级域名 . 二级域名 . 顶级域名
主机向本地域名服务器的查询一般都是采用递归查询。
本地域名服务器向根域名服务器的查询通常是采用迭
代查询。
每个域名服务器都维护一个高速缓存, 存放最近用过的名
字以及从何处获得名字映射信息的记录。
超文本标记语言 HTML (HyperText MarkupLanguage)使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面, 并且能够在自己的计算机屏幕上将这些页面显示出来。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuBtF50x-1682242628286)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/807d8120bb324bcc2979b4f10995b4a.png “URL的一般格式”)]
用户点击 www.tsinghua.edu.cn 之后发生的事情
(1 ) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的
IP 地址。
(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:
GET /chn/yxsz/index.htm。
(6) 服务器给出响应, 把文件 index.htm 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“清华大学院系设置” 文件 index.htm
中的所有文本。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYVrth2Z-1682242628287)(https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2023/03/1877a29bf00538bb8249b27257bf483.png “HTTP请求报文示意图”)]
请求示例
GET /chn/yxsz/index.htm HTTP/1 .1
Host:www.tsinghua.edu.cn
Connection:close
User-Agent:Mozilla/5.0
Accept-Language: cn
空行
HTTP 请求报文的一些方法
| 方法(操作) | 意义 |
|---|---|
| OPTION | 请求一些选项的信息 |
| GET | 请求读取由 URL所标志的信息 |
| HEAD | 请求读取由 URL所标志的信息的首部 |
| POST | 给服务器添加信息(例如, 注释) |
| PUT | 在指明的 URL下存储一个文档 |
| DELETE | 删除指明的 URL所标志的资源 |
| TRACE | 用来进行环回测试的请求报文 |
| CONNECT | 用于代理服务器 |
HTTP状态码
CGI 程序
动态主机配置协议 DHCP 提供了即插即用连网(plug-and-play networking)的机制。
这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。
网络管理包括对硬件、 软件和人力的使用、 综合与协调, 以便对网络资源进行监视、 测试、 配置、 分析、 评价和控制,这样就能以合理的价格满足网络的一些需求, 如实时运行性能, 服务质量等。
网络管理并不是指对网络进行行政上的管理。
参考教材:《计算机网络》 谢希仁 (电子工业出版社)
参考视频教程:B站UP主:方方方已经存在了 (计算机网络合集)
文章地址:https://hupc.site/?p=720
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in
给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT