基础知识
高低电平
计算机容量单位
在物理层面,使用高低电平记录信息,1表示高电平,0表示低;如上面的《高低电平》
所以计算机理论上只认识0/1两种状态
0/1称为bit(比特位)
因为bit太小了,因此发展出来更大的单位
字节 1byte=8bits
网络速度

cpu的速度
字符与编码集
ASC||码
使用7个bits就可以完全表示 ASC||码码
包含95个可打印字符
33个不可打印字符 包含控制字符
33+95=128=2^7
所以7个bits就可以完全表示 ASC||码码

扩展的ASC||码
由于 数学符号等等需要表示,对ASC||码进行扩展,从原来7bits变成8bits表示,
这样就从原来的2^7 变成2^8=256个可表示的字符了。
中文编码集
第一个是GB2312
第二个GBK 向上兼容 GB2312
Unicode
Unicode 是兼容全球的字符集,也是全球字符规范,称为 统一码 万国码 单一码。
Unicode 定义了世界通用的符号集,UTF-*实现了编码
UTF-8以字节为单位对Unicode进行编码
UTF-8
UTF-8的编码中一个中文字符或符号,是用三个字节表示的,以此可知 三个字节能表示的字符有2^24=16777216个,足够使用了,UTF-8是万国码,包含中文 韩文日文。
组成篇
计算机结构


计算机存储器分类
下图中,从上往下分别为:
cpu的寄存器以及高速缓存
计算机的内存
外部存储设备 如磁盘 u盘 移动硬盘,
速度从上往下由高到低。
存储器之间的通讯:

当前使用的数据存储在主存上,不使用的数据放在辅存里面。
辅存是为了解决主存容量的不足。
内存
主存储器 即内存,是RAM 随机存取存储器,
RAM通过电容存储数据,必须隔一段时间刷新一次
如果断电,那么一段时间后将丢失所有数据

操作系统位数与内存容量的关系
按照地址总线的位数,操作系统分为32和64位系统,
由上图可知 内存是通过地址总线与cpu通讯的,
因此 32位系统 只支持 2^32=42^30=4GB 的内存;
64位系统 能支持 2^32=2^342^30=2^34GB 的内存;
高速缓存
高速缓存 其实就是内存,是cpu将一部分内存转换为高速缓存。
字 是指存放在一个存储单元中的二进制代码组合
字块 存储在连续的存储单元中而被看作是一个单元的一组字
一个字有32个位(bit)组成
一个字块假设有B个字
主存共M个字块
如下图:
主存的总容量就是 BM32
主存 其实就是内存
主存与缓存的联系与区别
主存容量远大于缓存
缓存来自于主存的复制
存储的逻辑结构类似 都是由字和字块构成
缓存速度更快
cpu
控制器

运算器

计算机网络
海底光缆的网站
OSI七层模型与tcp/ip四层模型
由于设计和推广的问题,OSI七层模型 并没有被广泛运用,
反而是 tcp/ip四层模型 用的比较广泛。
二者之间的关系
从一个计算机发出信息 到达另外一个计算机的过程

网络拓扑
两种请求模式
- 普通的客户端发起请求到服务器
- 对等连接模式p2p
比如迅雷下载等,每一个客户端安装迅雷,进行下载后,这个客户端也就变成了一个服务器端,
当另外一个客户端发起迅雷下载请求时,就从你的客户端中获取你之前下载的迅雷资源。
MAC地址
每个设备都拥有唯一的mac地址
mac地址是物理地址,硬件地址
mac地址一共有48个比特位大小,十六进制表示;
查看mac地址,下面的物理地址 就是mac地址:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58# 执行 ipconfig /all 命令,注意使用cmd
Windows IP 配置
主机名 . . . . . . . . . . . . . : WINDOWS-HQKMGPA
主 DNS 后缀 . . . . . . . . . . . :
节点类型 . . . . . . . . . . . . : 混合
IP 路由已启用 . . . . . . . . . . : 否
WINS 代理已启用 . . . . . . . . . : 否
DNS 后缀搜索列表 . . . . . . . . : DHCP HOST
以太网适配器 以太网:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Realtek PCIe GbE Family Controller
物理地址. . . . . . . . . . . . . : C8-5B-88-88-B7-42
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . : DHCP HOST
描述. . . . . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 3165
物理地址. . . . . . . . . . . . . : B8-11-11-A5-3B-C4
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::8da0:c9ea:204f:6cb3%16(
首选)
IPv4 地址 . . . . . . . . . . . . : 192.168.0.103(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2022年9月19日 20:17:06
租约过期的时间 . . . . . . . . . : 2022年9月19日 23:30:05
默认网关. . . . . . . . . . . . . : 192.168.0.1
DHCP 服务器 . . . . . . . . . . . : 192.168.0.1
DHCPv6 IAID . . . . . . . . . . . : 129532312
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-28-2D-54-1F-C8-5B-76-38-B7-42
DNS 服务器 . . . . . . . . . . . : 192.168.1.1
192.168.0.1
TCPIP 上的 NetBIOS . . . . . . . : 已启用
以太网适配器 vEthernet (Default Switch):
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter
物理地址. . . . . . . . . . . . . : 00-12-86-E9-2A-99
DHCP 已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::551:d2cf:49a4:163e%27(首
选)
IPv4 地址 . . . . . . . . . . . . : 172.21.80.1(首选)
子网掩码 . . . . . . . . . . . . : 255.255.240.0
默认网关. . . . . . . . . . . . . :
DHCPv6 IAID . . . . . . . . . . . : 452990301
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-28-2D-54-1F-C8-5B-76-38-B7-42
DNS 服务器 . . . . . . . . . . . : fec0:0:0:ffff::1%1
fec0:0:0:ffff::2%1
fec0:0:0:ffff::3%1
TCPIP 上的 NetBIOS . . . . . . . : 已启用
以太网协议
是一种局域网技术;
应用于数据链路层的协议
使用以太网可以完成相邻设备的数据帧传输
局域网内设备数据传输:以太网与mac地址
局域网内的电脑A如何发送数据给同在局域网内的B电脑,
其实路由器就是通过mac地址进行查找
报文为何要被一层层封装
页面发送一个http请求,要经历 七层模型:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层。
其实这每一层都有自己这一层的地址标记信息,通过这些标记信息,
才能准确找到接收端。
接收端会反过来 把信息 一层层拨开。
例如数据链链路层,会为 ip数据报文 的头尾加上 帧首部、尾部,
帧的首部、尾部 标记了接收端的地址信息,
路由器通过解析 帧首尾部信息,将报文数据发送给对应的接收端:
关于数据链路层重要作用之一:封装成帧

网络层
为什么需要网络层
在上面《以太网协议》中,我们已经提到
使用以太网可以完成相邻设备的数据帧传输
而以太网就是数据链路层的协议。
也就是说,在局域网内,从一个设备发送数据给另外一个设备,这两个设备就是相邻设备。
我们只需通过数据链路层就可以完成了。
但数据链路层却无法将数据 传输到 局域网之外的设备。
如何解决这个问题呢,
因此就有了网络层。
IP协议
虚拟互连网络
- 实际的计算机网络是错综复杂的
- 物理设备通过使用ip协议,屏蔽了物理网络之间的差异
- 当网络中的主机使用ip协议连接时,则无需关注网络细节
如下实际上的A与B电脑之间传输的网络是非常复杂的:可是由于网络层各方的硬件设备等都遵守了ip协议,
因此我们不用去关心A和B之间复杂的网络传输拓扑,
只需要关注ip协议本身即可,
我们不用关心以上复杂的网络传输拓扑,我们将它简化为一个虚拟的互连网络即可:
于是ip协议有以下特性:
- IP协议使得复杂的实际网络变成一个虚拟互连的网络
- IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
比如不用关心数据是通过无线网络还是有线网线传输 等等。 - IP协议解决了在虚拟网络中数据报传输路径的问题。
OSI七层模型的相互屏蔽设计
每一层相当于一个独立的黑箱,
每一层之间只通过约定好的协议api或接口进行通信;
每一层都不用关心其他层内部如何实现;
就好比 数据链路层与网络层交互时,二者是独立黑箱,只通过约定的协议或接口进行通信。
其实这种设计 也是现在计算机或软件设计的一种经典原则。
比如 无论是 window、还是mac OS 操作系统,无论这些操作系统内部如何封装计算机的硬件指令,
但这些操作系统 最终暴露给软件开发的底层协议 都是一样的。
同样的一个软件,在window、MAC OS 上都能正常运行。
网络层(ip协议)传输过程实例
一个五层一个三层
首先需要了解下,路由器只有三层;
OSI是七层模型,但计算机实际上 只有5层;
逐跳
网络层其实就是ip协议传输过程:
ip协议的转发流程 有一个特点,就是逐跳(hop-by-hop):
下面A到B的过程,就是从中间每个设备之间进行逐个转发,最终传输到B,这就是逐跳:
mac地址表
在上面两个相邻设备之间传输的过程,知道在数据链路层有一个mac地址表,
设备之间通过mac地址表进行寻址传输:
路由表
计算机或路由器都拥有路由表。
单从网络层角度看传输过程


从数据链路层、网络层角度看传输过程




mac地址与ip联系与区别
在以上过程中:
数据帧的每一跳的mac地址都在变化;
ip数据报每一跳的ip地址始终不变;
这也侧面说明了 mac地址与ip地址的区别和作用。
mac地址与ip地址还有一个不同:
当你电脑在家的时候,ip是一个地址;
在公司的时候又是一个地址,但mac地址都不变。
ip地址
ip地址的2进制表示:


子网(网络号)与主机号
特殊的主机号

特殊网络号

如此可以看到, 开头为0、127、128.0、192.0.0 都有特殊用途;
或者后三位全为 0.0.0 或 255.255.255 也都是特殊ip;
本地回环地址:

除去上述特殊ip后,实际的数量:

特殊用途的D、E类地址
子网
为什么要有子网
为什么不造成ip浪费,比如一个公司要申请100个ip地址,
如果按网络段A、B、C类申请,会造成ip地址浪费。
此时给A、B、C类设置网络号,公司只申请每个大类下面的网络号数量,
那么就不浪费了。
首先我们要搞清楚,网络号是啥,其实下图中,主机号是对应左侧网络号段下能用的ip数量,
我们申请ip的时候,都是申请某个网络号下的所有主机号,
比如C类网络号范围是 192.0.1 - 223.255.255;
那么我们申请时,都是申请上述范围内的一个网络号,比如 192.0.9, 然后这个网络号,可以分配254个ip号(也就是分配给电脑的主机号)。
这就是网络号的概念,网络号其实就是用来给 ip更精细的划分。
另外假如一个公司只有100人,那么按照上面的网络号进行申请,那么得到了254 ip ,这样就浪费了,
为了更加精细划分网络号,那么就有了子网的概念,我们将主机号的二进制的第一位 按照0和1划分为该网络号下的子网,
那么此时每个子网对应的主机号就只有254/2 = 127个,
一百个人的公司按 子网去申请,就有127个ip,ip就没有浪费多少了。


子网掩码
有了子网后,我们需要通过ip确定该ip的子网号,
如何判断呢,
这个时候就有了子网掩码的产生,
我们可以通过 ip和子网掩码的 二进制ip,进行与的运算,可以得到 改ip号的对应子网号。
无分类编址CIDR
无分类编址CIDR 是相对 子网掩码更加灵活的一个子网划分方式,其中的子网、超网就是它的概念,
目前运用广泛的也是 CIDR 这种。
网络地址转换NAT技术



网络地址转换NAT技术 用于多个主机通过一个公有ip访问互联网的私有网络中。
NAT减缓了ip地址的消耗,但增加了网络通信的复杂度
ICMP协议
ping 与 ICMP协议
ping应用运用的就是ICMP协议,检查自己的网络问题:
ping 回环地址127.0.0.1 检查自己的网络驱动器是否正常;
ping 网关地址,这里的网关指路由器, 检查电脑与路由器连接是否正常;
网关就是路由器
ping 远端地址,比如百度,检查是否能上网;
Traceroute 与 ICMP协议
Traceroute应用运用的就是ICMP协议,检查到达目的ip地址,经过了哪几跳。可查看本文的《逐跳》
或者说是探测ip数据报在网络中走过的路径。
Traceroute的工作原理,
Traceroute 为了探测ip路径。
首先它会封装一个 TTL为1的报文,
到达n1后,因为 TTL 的特性是每经过一跳,就减1,所以 TTL 变成0,
TTL变成0后,中型网络 n1 就会向源机器A发出一个 ICMP 终点不可达报文,
机器A 收到报文后, Traceroute 会再发一个 TTL 为2的报文;
经过n1 到达 n2 的时候,TTL 变成 0, n2向机器A发送一个 ICMP 终点不可达报文,
如此往复
当到达机器B时,机器B将发送一个回应的报文,说明你发的数据我收到了。
此时 Traceroute 就知道了整个ip路径。
1 | tracert github.com |

RIP协议



OSPF协议
