IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络 -> 正文阅读

[网络协议]计算机网络

前言

写在开篇

计算机网络可以说是我第二重视的专业基础课了,因为网络这个概念早已深入千家万户,在我没有正式进入计算机这个专业之前,就已经有了对网络的体会——网络为生活提供了不少便利,所以我对网络有一种亲切和敬仰的感觉

嗯?你问我为什么是第二重视的?因为第一是数据结构和算法啊——虽然我学的很烂就是了,不过我会努力补上的!

更新日志

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, 传输控制协议/网际协议,实用性强,是如今普遍使用的模型

TCP/IP四层模型和OSI七层模型
国内为了方便教学,结合了二者的特点,产生了一个五层协议:
五层模型

学校的考试一般是基于五层模型的,所以我接下来以五层模型为标准,且自底向上地进行讨论

物理层

可以理解为,包含了一大堆关于各种硬件方面标准的一层,比如规定了接口电缆上电压的范围

由于学校期末考试不考这个,而且找工作面试也不怎么问这块,如果不打算深入研究计算机科学的话那这块相对次要,所以只挑出相对重要的概念说一说

重要的硬件

中继器、集线器

二者关系

中继器只有两端,一端进来一端出去,集线器则是有多个端口的中继器

功能

放大衰减的信号,增加信号传输距离
放大信号后会将其广播(发送给其他所有端口),不具备顶线传输

特点

通过同一个集线器连接的主机属于同一个冲突域(这个区域内,同一时刻只能有一个主机收或者发信息,否则冲突),冲突域内工作的主机会平分带宽
当然,如果不连接的话,每个主机自身就是一个冲突域

重要的概念

数据和信号

数据
要传送的内容,分为数字数据(离散的,方格)和模拟数据(连续的,平滑)
信号
数据的电气/电磁表现,一般是波,也分为数字信号和模拟信号

重要的单位

带宽、速率

上面说过了

码元

比如有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,则帧没出错,否则出错

纠错编码——海明码

添加冗余编码
确定海明码校验位位数r

确定海明码中校验码和数据的位置
求海明码中校验码的值
对于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,完成纠错

停止-等待协议 和 滑动窗口协议

停止-等待协议和滑动窗口协议GBN和SR

停止-等待协议
如图,每传一帧之后都要等到收到确认帧(ACK)后才传下一帧
如果确认帧丢失或者出错,那么发送方可能就会一直等待——为了避免这种情况,
引入了

超时重传方法
每当发送一个帧,就启动一个计时器,如果在一定时间内没有收到正确的确认帧,那么就会重新发送
另外,如果确认帧迟到了,那么它将会作废处理直接被抛弃

滑动窗口协议
联想到同名的一个算法
后退N帧协议GBN和选择重传协议SR

相当于是停止-等待协议的改进,由一次发一个帧变为可以连续发多个帧
无论是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
IP数据报格式
注意,片便宜的单位是8Bytes,所以记得除8
字段MF是More Fragments, DF是Don‘t Fragment,其值是布尔值IP数据报分片
注意,通常我们认为不能出现全0或全1的网络号或者主机号,所以这里还得减去那么一两个(虽然有的可以用了,但是做题的时候我们依旧认为其不可用)最大可用主机数

IPv4地址

全世界唯一的 32位/4字节 标识符,标识路由器主机的接口
形如01110000 11001100 11110000 11111111,一共32位
也可以写作形如112.204.240.255,则称为点分十进制记法
分为 网络号 和 主机号两部分

分类及区别

IPv4地址分类

网络地址转换NAT

私有IP地址

对于私有IP地址,路由器是不会转发的
IPv4的私有IP地址

如果想要用私有IP地址和外部网络通信的话,就需要用到NAT了·
NAT网络地址转换器

Network Address Translation
在专用网连接因特网的路由器上安装NAT软件,这个路由器就变成了NAT路由器,它至少拥有一个外部全球IP地址
能把LAN局域网IP转换为WAN广域网IP:
NAT网络地址转换

子网划分 和 子网掩码

子网划分

在主机号里抽一部分作为子网
子网划分
子网划分
子网划分

CIDR无分类编址

CIDR,读作sider
能够延缓IPv4用尽的危机,作用机制如下:
以128.233.233.233/16的形式表示IP
其中末尾的**/16代表前16位是网络号**,这样一来就拜托了ABCDE类的束缚,更加灵活,更便于按需供给减少浪费
需要注意,在CIDR中,网络号也称前缀号

构成超网

也叫路由聚合
即多个子网聚合为一个大的子网,方法是缩短网络前缀

来个例题
CIDER路由转发

运输层

应用层

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-12 00:25:08  更:2022-01-12 00:27:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:34:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码