2022-06-29 计算机思考心得体会顿悟
计算机单机有传输数据的需要,于是加上连接的介质(电缆或者网线),就形成了网络。
突破了物理局限的网络就出现两种情况,需要分析(1、网络是否通畅或者故障,需要从发送的信息约定的应答状态进行判断 2、数据被监听)
计算机是把电信号转换成0、1来存储或者说传输数据,写是写入了,存是存好了,但是怎么读取呀。。于是按照约定,ASCII码(1967年发布)对照表就能把传输中的0、1字节流翻译成对应的字符。
具体怎么读取呀。。那么长的0和1得有个划分呀。 于是就有了8位bit读一下的约定(一开始不是8位,ibm后来先用了8位的描述,让0 1代码每隔8位断一下,像竹节一样,就是byte, 字节 的意思)。
但是由于0、1去表示还是有点复杂。于是就演变出了16进制。16进制怎么得来的?
0000 0000 -1111 1111 二进制 ,范围为 -128 到127 共256种情况
0000 0000 表示8位8bit, 其每一位,只能是0或者1两种情况,一旦超过就要进位到上一位。这就是二进制。
为什么一个字节是8位的bit呢? 是历史原因
因为byte 这个单词“字节”是IBM 1956年左右发明的,IBM 当时在自己的计算机中 定义了 一个字节是八个bit 。
其实 字节 相当于 一个容器封装包 目的就是 最好能实现 一个字节能展示一个字符,所以做成多长都行,只要能满足需求(功能需求和成本需求)。。 不引入字节定义的话,一长串代码都是0和1,不好读取判断翻译啊,于是就决定每隔多少位加个逗号,看上去像竹节一样,就翻译成了字节吧。
这个 8Bit 后来就能容纳ASCII码表,所以被沿用了。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
奇校验:就是让原有数据序列中(包括你要加上的一位)1 的个数为奇数,偶校验:就是让原有数据序列中(包含你要加上的一位)1 的个数为偶数
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号 。
标准ASCII编码是7位的,所以有2^7=128个字符(包括一些不可显示字符)。但是电脑里1 Byte = 8 bit,有8位。早期的电脑不太可靠,数据经常出错,所以这1 Byte 的8位中最高位就用来做数据校验,一般是奇偶校验。在标准ASCII中,其最高位(b7)(一般从0开始数,最低位是第0位,最高位为b7)用作奇偶校验位。
所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
但是后来的电脑变得可靠了,校验的意义就没有那么大了,因此有了一个扩展ASCII字符集。扩展ASCII字符集包含2^8=256个字符,编码是8位的。扩展ASCII字符集中的前128个字符与原来的ASCII字符集相同(就是原来的ASCII字符集的7位编码前面加一个0),而后面128个字符高位都是1。
(因为要用一个封包(里面装填成什么不用管)就能表示所有的字符(当时是美国的字符),就要制作一个字符表,经过制作后,形成了ASCII码表,标准ASCii字符集:有96个打印字符,和32个控制字符组成;一共96+32=128个;就是2的7次方,一共7位。)(猜想)
(美国根据自己的26个字母,规定了一套共128个字符的编码,叫ASCII码。每个ASCII字符占用1 个字节,而一个字节能够表示256个字符,所以标准的ASCII码只使用了一个字节的后面7位,最前面的1位统一规定为0。英语用128个符号编码就够了,但是用来表示其他语言,128个符号很多时候是不够的。所以有些国家就把ASCII码字节中闲置的最高位也编入新的符号,这样就可以表示最多256个符号了。我们把利用128--255这一段的叫做扩展ASCII码。)
(既然bit 的变化就能表示新的字符,那么就牵涉到对于bit的运算。此时发现,负数的运算不容易处理,需要在首位添加一个符号位,于是7位bit就成了8位bit... 8位Bit的首位是符号位,0表示正数,1表示负数。)(猜想)
(计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 [1] 。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理)(猜想)
8位的二进制太复杂,于是进行左右拆分, 左边4位表示一个, 右边4位也表示一个, 那么 就从8变成了2 ,节约了 75%的表达空间。
左边4位最大能代表多少呢?
0000 最后一位最大能代表2的1次方,就是2种结果,倒数第一位加上倒数第二位最大能代表2的2次方,即4种结果,依次类推, 倒数第四位加上其他几位,最多能代表2的4次方,也就是222*2=16种结果
那么就需要对这16种结果进行定义。。 用16种符号来一一对应这16种结果,于是出现了16进制(英文单词hex)。,是为了方便描述和表达。 对照ASCII码表,也能将其翻译为abcd等字符。
在十六进制中,需要十六个数字来表示 0 到 15 这些数字,0 到 9 比较好处理,但是从 10 到 15,我们就需要找一些记号来表示,于是人们就想到用 A,B,C,D,E,F 这几个字母来分别表示 10 到 15 这个 6 个数字。
十六进制数据,使用后缀字母 H 来表示,有些场合也可以使用前缀 0x 来表示,本质上没有区别。例如:十六进制数字 1A2BH(或者写作 0x1A2B)
wireshark就是按照OSI 七层模型,对数据进行层层解包分析的(相当于自身就是一个网卡,然后按照国际公开协议,解开了对方计算机发来的0、1字节流)
在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚好为1比特。
高低电平是数字电路里的逻辑关系,因为电脑只能识别0,1两个逻辑状态。
举个简单例子,我们规定分闸为0,合闸为1,假如485通讯,它的传输电平是-12到+12,那么如果取-12到0为低电平,0到+12为高电平,装置收到-6V的信号,它转给电脑就是0,那么判断为开关是分闸状态。
很多逻辑电路(元件)厂商会为高低电平下的输出或输出量规定一个具体的电量值范围,很多人将这个电量值也称为电平。
电平和电压是有差别的,就提如下: 电子电路中高电平是电压高的状态,一般记为1;电子电路中低电平是电压低的状态,一般记为0
高低电平的划分对于TTL来说高电平是:2.4V-5.0V;低电平是:0.0V-0.4V。对于CMOS来说高电平是:4.99-5.0v;低电平是:0.0-0.01v。
对于高低电平之间的电压属于不定电压,在这个电压下会使器件工作不稳定,比如有时电脑开机后有不正常现象,但重新启动后又没问题了.,就是因为数字电路有时因为器件遇到了这个不定电压而无法识别发生紊乱
ipv4的ip表示方法,
传输数据的时候,每8位bit读取一次。
所以是 0000 0000 . 0000 0000 . 0000 0000 . 0000 0001,代表 0.0.0.1 长度一共是32位
每一个8位代表一段,范围是0-255
IPv6的地址长度为128位,传输数据的时候,每8位bit读取一次。表示为
0000 0000 . 0000 0000 . 0000 0000 . 0000 0000.
0000 0000 . 0000 0000 . 0000 0000 . 0000 0000.
0000 0000 . 0000 0000 . 0000 0000 . 0000 0000.
0000 0000 . 0000 0000 . 0000 0000 . 0000 0001
但是用这么多的0 1表示太长了,于是采用十六进制表示比较好。
每一个4位bit就能用一个十六进制字符表示(或者说每一个8位bit就能用两个十六进制字符表示)
于是就表示成了 类似于 (IPV6不是用点号隔开,是用冒号隔开)。
AAAA:AAAA:
AAAA:AAAA:
AAAA:AAAA:
AAAA:AAA1
相当于AAAA:AAAA:AAAA:AAAAAAAA:AAAA:AAAA:AAA1
IPV6是IPv4地址长度的4倍,共128个bit位。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。
一、冒分十六进制表示法
格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16个bit位,用十六进制书写表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
这种表示法中,每个X的前导0是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二、0位压缩表示法
在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
FF01:0:0:0:0:0:0:1101 → FF01::1101
0:0:0:0:0:0:0:1 → ::1
0:0:0:0:0:0:0:0 → ::
三、内嵌IPv4地址表示法
为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96个bit位中,压缩0位的方法依旧适用
———
字
在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字,字反映计算机一次并行处理的一组二进制数。字通常分为若干个字节(每个字节一般是8位)。在存储器中,通常每个单元存储一个字,因此每个字都是可以寻址的。字的长度用位数来表示。[9]
在计算机的运算器、控制器中,通常都是以字为单位进行传送的。字在不同的地址出现,其含义是不相同。例如,送往控制器去的字是指令,而送往运算器去的字就是一个数。[9]
字节
字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。在微型计算机中,通常用多少字节来表示存储器的存储容量。