前言
写在开篇
计算机网络可以说是我第二重视的专业基础课了,因为网络这个概念早已深入千家万户,在我没有正式进入计算机这个专业之前,就已经有了对网络的体会——网络为生活提供了不少便利,所以我对网络有一种亲切和敬仰的感觉
嗯?你问我为什么是第二重视的?因为第一是数据结构和算法啊——虽然我学的很烂就是了,不过我会努力补上的!
更新日志
2022/01/04 1月10号考试,现在基本上还算是零基础(对计网极其重视 ),教务处老师给个机会,我真的很热爱计网啊! 2022/01/04 真不错,明天下午考试,今天刚把视频粗略地刷了一遍,常考的大题看了一遍,笔记肯定是没时间写得非常细致了,这里先把重要的内容记下来吧!
基础概念
计算机网络
概念
计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 分散是指地理位置分散 独立功能是指组成计算机网络的各个计算机功能不同
上述内容可以简单总结为:
计算机网络是互连的、自治的计算机集合 互连 即 互联互通 自治 即 无主次关系
功能
1.数据通信 2.资源共享 3.分布式处理 4.提高可靠性 5.负载均衡
结构组成
硬件 软件 协议 三个部分
工作方式组成
1.边缘部分(用户直接使用) C/S方式 P2P方式 2.核心部分(为边缘部分服务) 相当于是边缘部分包裹的(用户与用户之间的)路由等等
功能组成
1.通信组成——实现数据通信 2.资源子网——实现资源共享(数据处理)
分类
性能指标
这里我用尽最大努力通俗易懂并且精简而非官方(至少自认为是这样)的语言进行解释
速率
也称为数据率,数据传输率,比特率等 即比特位的传输快慢 单位是kb/s, Mb/s, Gb/s等,需要注意,速率单位之间相差1000倍(存储空间单位之间才是1024倍)
带宽
比特位传输的最大速率
吞吐量
单位时间通过某特定位置的比特数目 (注意在全双工信道上要取来往比特数目之和
时延 注意,以下言论不区分信道和链路两个名词(虽然实际上有一定的区别)
俗称延迟 包括四类: 1.发送时延(传输时延) 注意传输时延这个别称,千万别和传播时延搞混了! 就是从主机或者路由器内部离开,来到信道上的用时 (具体就是从第一位离开,到最后一位离开的用时) 2.传播时延 就是在信道上传播的用时 3.排队时延 到达目的后,可能目的主机已经在处理其他信息,需要等待一段时间才能轮到自己 4.处理时延 处理这段信息所需要的时间
时延带宽积
这里的时延指的是传播时延,即传播时延 * 带宽 代表发送一条信息在信道上传播的时间,而带宽是单位时间内最大的比特传输速率 所以时延带宽积的意义就是 信道中能够同时容纳的比特数目的最大值 说白了就是和导线中电子和电流的关系一样,比特看做电子,时延带宽积就看做电流
往返时延
Round-Trip Time,简称RTT 不包括发送时延(传输时延),而是 传播时延 * 2 + 排队时延 + 处理时延 但是大部分时候,只考虑 传播时延 * 2
协议
概念
一般是指网络协议(因为“协议”不仅是计算机的专业术语),业内交流一般简称为协议 是为了进行网络中数据交换而建立的规则标准,比如HTTP、DCHP、ICMP等
构成
由三个部分构成: 1.语法:数据和控制信息的结构或者格式 2.语义:具体的需要做的事情,比如发出某种信息 3.同步(时序):定义做事的先后顺序
协议和服务
协议是水平的 协议是作用于对等实体(即同一层)之间的,比如HTTP只能做用于两个应用层之间 服务是垂直的 服务是指下层向上层提供能够实现某种特定功能的接口 (上层调用下层的接口是通过服务原语实现的)
三种模型 七层,四层,五层模型
OSI七层模型
Open System Interconnect 开放式系统互联,是一种理想化的模型
TCP/IP四层模型
Transmission Control Protocal / Internet Protocal, 传输控制协议/网际协议,实用性强,是如今普遍使用的模型
国内为了方便教学,结合了二者的特点,产生了一个五层协议:
学校的考试一般是基于五层模型的,所以我接下来以五层模型为标准,且自底向上地进行讨论
物理层
可以理解为,包含了一大堆关于各种硬件方面标准的一层,比如规定了接口电缆上电压的范围
由于学校期末考试不考这个,而且找工作面试也不怎么问这块,如果不打算深入研究计算机科学的话那这块相对次要,所以只挑出相对重要的概念说一说
重要的硬件
中继器、集线器
二者关系
中继器只有两端,一端进来一端出去,集线器则是有多个端口的中继器
功能
放大衰减的信号,增加信号传输距离 放大信号后会将其广播(发送给其他所有端口),不具备顶线传输
特点
通过同一个集线器连接的主机属于同一个冲突域(这个区域内,同一时刻只能有一个主机收或者发信息,否则冲突),冲突域内工作的主机会平分带宽 当然,如果不连接的话,每个主机自身就是一个冲突域
重要的概念
数据和信号
数据 要传送的内容,分为数字数据(离散的,方格)和模拟数据(连续的,平滑) 信号 数据的电气/电磁表现,一般是波,也分为数字信号和模拟信号
重要的单位
带宽、速率
上面说过了
码元
比如有00 01 10 11四种状态,那码元有四个,每个包括2个比特 所以n进制马元包括log2n个比特
数据链路层
三类服务
有三类: 无确认无连接服务 广播,收到数据不返回确认信息 有确认无连接服务 广播,收到数据返回确认信息 有确认面向连接服务 建立连接定向传输,收到数据返回确认信息
帧
在收到上层,即网络层来的IP数据报后,数据链路层为其添加帧首部和帧尾部,构成一个帧,而构成帧的这个过程,就叫组帧 其中,来自网络层的IP数据报的最大长度即为MTU(Max Transmission Unit 最大传输单元)
其中,添加帧首部和帧尾部(即组帧)的方式有四种
1.字符计数法
在帧首部添加一个计数的字段,表示包括这个字段在内这个帧的长度
2.字符填充法
SOH即帧的开始,EOT是帧结束,一对SOH和EOT则确定一帧 但是为了防止与帧内部数据内容出现二义性,可以在特殊的内容前加上ESC作为转义标识
3.零比特填充法
如果规定帧首部尾部的特殊标志是01111110(中间是6个1) 那么我们组帧的时候,在IP数据报,即帧的数据部分中,扫描到5个连续的1时,就在其后插入一个0,这样就避免出现6个1,也就避免数据部分和内容部分出现二义性 可以看做更好地解决了二义性的优化版字符填充法,因为为了避免出现二义性,字符填充法每次填充一个转义字符是8位,而零比特填充法每次只需要填充1位
4.违规编码法
从物理层入手,对信号进行处理,不在话下
差错和差错控制
类型 一共四种,和高中生物学的那个碱基对出错很像
差错控制
差错控制两种方式是 1.检错编码 常见的方式是通过奇/偶校验码 或 CRC循环冗余码检错 2.纠错编码 常见的方式是通过海明码纠错
共同之处都是通过添加冗余编码来检验,冗余编码可以理解为一些附加的信息
检错编码——奇/偶校验码
添加冗余编码 比如,对101和001采用分别奇校验,就是要在首部添加一位,使得1的个数为奇数 所以,处理结果分别是0101, 1001 偶校验同理,不再赘述
检验 (以奇校验为例)接收方拿到数据后开始检测1的个数,如果为1的个数变成偶数了,那么即可判定数据发送变化 (没错,这个方法并不能100%地检测错误,只能筛掉一部分错误数据)
检错编码——CRC循环冗余码
题目至少会给发送的数据,比如11010 11011, 还有生成多项式,比如10011(即x4+x + 1) 添加冗余编码 那么我们取发送数据的前5位(11010)与生成多项式异或,结果为01001,放回原位删去前驱零得到新的数据1001 11011,然后再取前5位与生成多项式异或…重复上述过程直到最终结果不足5位(即不能再进行异或) 由于生成多项式最高阶是4,若不足4位通过补前驱零补满4位,即得到CRC循环冗余 将FCS放到接收端尾部,即得到最终要发送的数据
检验 和上面进行一样的异或操作,如果最终结果为0,则帧没出错,否则出错
纠错编码——海明码
添加冗余编码
对于P1则看二进制的倒数第一位,看看Dx(x为1,2,3…)对应的二进制的倒数一位是否也是1,如果是,那么这个Dx将参与接下来的一次异或运算,该次异或运算是P1与所有满足条件的Dx异或且结果为0,这样就能求得P1的值 (这些满足条件的Dx即在P1纠错能力范围内) 同理,对于Pi则看二进制的倒数第i位,看看Dx对应的二进制的倒数第i位是否为1… 这样我们就求得了所有Pi的值,最终合在一起就是海明码
纠错 这里我们进行和刚才类似的异或操作,Pi和自己纠错能力范围内的Dx异或, 如图,结果依次是1010,但是要注意,我们之前总是提到Pi的二进制倒数第i位,所以这里是反着的,最终结果需要颠倒一下,即0101,也就是5 这表示第五位出错了,即D2出错,我们直接取反,D2由1变0,完成纠错
停止-等待协议 和 滑动窗口协议
停止-等待协议 如图,每传一帧之后都要等到收到确认帧(ACK)后才传下一帧 如果确认帧丢失或者出错,那么发送方可能就会一直等待——为了避免这种情况, 引入了
超时重传方法 每当发送一个帧,就启动一个计时器,如果在一定时间内没有收到正确的确认帧,那么就会重新发送 另外,如果确认帧迟到了,那么它将会作废处理直接被抛弃
滑动窗口协议 联想到同名的一个算法
相当于是停止-等待协议的改进,由一次发一个帧变为可以连续发多个帧 无论是GBN还是SR,滑动窗口都有 发送窗口和接受窗口 其中的数字是编号而非数据, 接收窗口收到0后,往后移动一位,并返回一个确认帧——发送窗口收到确认帧后,也往后移动一位 注意,只有第一位完成了上述过程窗口才发生移动
停止-等待协议可以看做发送窗口和接受窗口大小都是1 而GBN和SR的区别主要是在于处理确认帧和错误的方式
GBN后退N帧协议
Go Back N-Frames,也叫回退N步协议
接收窗口处理确认帧ACK 这里ACK采用累积确认,即ACK的值(此处记为x)代表已经收到 x及其前面的所有帧
发送帧丢失或出错 比如发送窗口连发了0 1 2 3 4,2在过程中丢失了,接收方就会回传一个ACK 1 代表已经收到了0 1号(当然,也可能会回传ACK 0),虽然3 4成功到达,但是接收窗口不接收… 在超时后,发送方只接收到了ACK 1,所以它知道从2开始就有帧丢失了,于是将 2 3 4全部重新发送——可以看做是后退了3帧这里,所以叫才后退N帧吧…
来看看一个例题
SR选择重传协议
没查到英文缩写是什么 SR可以看做改进版的GBN,因为上面GBN的例子中,有些帧明明就成功的到达了,却还要重传,这样就造成了资源浪费 具体改进就是,接收窗口会存下所有正确到达的帧,然后返回响应的确认帧,发送窗口收到确认帧后也会标记所有被确认帧 这样,当某个帧没有正确到达时,就能通过这些标记来确定该重发哪个(对,超时时,SR每次只重传一个)
局域网
以太网
以太网(Etherner)是局域网的一种 10BASE-T以太网指的是,10Mb/s的传送基带(BASE)的双铰链(T)以太网 提供无连接不可靠服务,速率范围是10Mb/s~10Gb/s,高于100Mb/s则为高速以太网——没错这个竟然考过选择题 以太网拓扑:逻辑上总线型,物理上星型
介质访问控制
其中静态划分信道只需要记住名字和缩写对应关系就好了 而动态分配信道只需要知道CSMA/CD协议即可
CSMA载波监听多点接入协议
Carrier Sense Multiple Access 多点接入是指接入一根总线
CSMA/CD协议
其中CD是指 Collision Detection 碰撞检测 检测方式是 发送帧之前,监听信道(半双工的)——空闲则立刻发送,忙着推迟发送
但是这并不意味着不会发生碰撞,因为监听的时候信道似乎是空闲的——但是这也可能是因为距离过程,占用信道的电磁波没进入监听范围,随后发送信号即产生碰撞
争用期
如果发生碰撞,要经过2τ-σ的时间发送方才能得知此次碰撞的发生,这个时间即争用期(也叫 冲突窗口/碰撞窗口) σ趋向零时,争用期趋向最大值
重传时机:截断二进制指数规避算法
如果碰撞后立即重传,那么可能又会碰撞,并且无休无止,所以需要一个算法求一个适当的时机重传信号,这个算法即截断二进制指数规避算法
网络层
电路交换、报文交换、分组交换
电路交换 唯一要提一下就是,一条链路中一个设备崩溃那么整个链路崩溃,即缺点3.不灵活
报文交换 报文:源应用发送的信息整体 分组交换 就是把报文切片了再发 分组交换其实还可以细分为
数据报方式(无连接) 无连接,不会事先确定传输路径,每个分组路径独立,彼此之间可能不通过 虚电路方式(连接) 实现会确定传输路径
发送同样的数据,分组交换一般比报文交换快
已知,链路传输速率为1000bps(bits per second,看到这个单位要知道就是b/s) 要发送的报文大小是10000bits,要经过的链路如上图所示,求报文交换和分组交换(假设分为1000片)的最短用时
报文交换 10000bits / 1000bps = 10s ,即在每段链路上传播要10s 很容易看出是30s 分组交换 10000bits/1000 = 10 bits,每一片10bits 10bits / 1000 bps = 0.01 s, 每小片在每段链路上传播要0.01 s 第一片走完全程要0.03s, 第一片和最后一片相差 999 片,也就是 9.99 s, 所以,最后一片到达重点需要10.02s 即10.02s
IP协议
Internet Protocal 网际协议
IP数据报
注意数据部分包括了TCP段和UDP段 IP数据报的最大长度即MTU,最大传送单元,以太网中MTU为1500Bytes 注意,片便宜的单位是8Bytes,所以记得除8 字段MF是More Fragments, DF是Don‘t Fragment,其值是布尔值 注意,通常我们认为不能出现全0或全1的网络号或者主机号,所以这里还得减去那么一两个(虽然有的可以用了,但是做题的时候我们依旧认为其不可用)
IPv4地址
全世界唯一的 32位/4字节 标识符,标识路由器主机的接口 形如01110000 11001100 11110000 11111111,一共32位 也可以写作形如112.204.240.255,则称为点分十进制记法 分为 网络号 和 主机号两部分
分类及区别
网络地址转换NAT
私有IP地址
对于私有IP地址,路由器是不会转发的
如果想要用私有IP地址和外部网络通信的话,就需要用到NAT了· NAT网络地址转换器
Network Address Translation 在专用网连接因特网的路由器上安装NAT软件,这个路由器就变成了NAT路由器,它至少拥有一个外部全球IP地址 能把LAN局域网IP转换为WAN广域网IP:
子网划分 和 子网掩码
子网划分
在主机号里抽一部分作为子网
CIDR无分类编址
CIDR,读作sider 能够延缓IPv4用尽的危机,作用机制如下: 以128.233.233.233/16的形式表示IP 其中末尾的**/16代表前16位是网络号**,这样一来就拜托了ABCDE类的束缚,更加灵活,更便于按需供给减少浪费 需要注意,在CIDR中,网络号也称前缀号
构成超网
也叫路由聚合 即多个子网聚合为一个大的子网,方法是缩短网络前缀
来个例题
运输层
应用层
|