bit、进制、位、时钟(窗口)、OSI七层网络模型、协议、各种码

本文详细解释了比特、进制在信息技术中的作用,涉及物理层数据传输、二进制与位的概念,时钟与窗口机制,OSI七层网络架构,TCP/UDP协议,IP地址与子网掩码,以及HTTPS加密等。文章还介绍了AI在不同层协议通信中的应用以及各种数值表示法如原码、反码、补码和移码。
摘要由CSDN通过智能技术生成

1.bit与进制  (个人理解,具体电路是非常复杂的)

物理层数据流,bit表示物理层数据传输单位,

一个电路当中,通过通断来表示数字1和0

两个电路要通讯,至少要两根线,一根作为电势参照,一根或者多根作为高低电势判断

以两根举例,他一次只能传输一个信号,所以系统间通讯是二进制,如果是N根(包括参考电线),那么系统间通讯是2^(N-1)进制,(3根  4进制   , 4根  8进制,  5根   16进制。。。。。)

网线是8根,实际有效是四根(不包括参考电线),所以网络传输是16进制(范围:0-F)

2.进制与位

计算机系统存储、运行、计算(寄存器、内存等)都是用的二进制,所以数据接受过来之后,要进行进制转换,比如16进制 的 C 转换为二进制 是  11000 , 原本16进制只要一位就能表示,转换之后需要5位表示。位就是数字再该进制下表示所需要的长度。

注:进制越大,1bit传输的数据越多,因为1bit指的就是1位

3.bit与时钟 (窗口)  (个人理解)

时钟是一个振荡器,cpu去处理数据只能是再周期内完成,一个周期只能处理一个指令,但是系统有很多线程、进程、应用程序,不可能cpu只处理A程序,完了之后再去处理B程序,这样会导致很多阻塞,所以cpu是一个周期内处理一下这个,下过周期处理另外一个。。。。

这样会有问题,假设两个系统通讯,A系统要发送给B系统,但是某个时刻A系统发送了数据过去,B系统在处理别的,这样会丢失数据,所以有了窗口概念,也就是B会有一个缓存区,缓存B系统一个周期或者多个周期间接收到的数据,等B开始处理这边数据的时候就从窗口缓存中读取处理,然后清空或者清理部分缓存出来。

(tcp协议发起建立链接之后,服务端回复ack会带窗口大小等信息,防止客户端一直不停的发消息)

4.OSI七层网络架构:

物理层、链路层、网络层、传输层、会话层、表现层、引用层

上面讲了物理层,链路层就是我数据包从A发送到B,期间有很多网卡,链路就是网卡间数据传输(物理地址)比如 我电脑连了wifi,我发数据到百度,先是我这边通过网线把数据给到交换机,然后路由器再把数据给到上一层网络,层层上传一直到百度服务器。物理地址:A->B ->C->D->百度的物理地址(有冲突域、广播域,这里不说了)

网络层:ip协议,有IPV4 \ IPV6  一般是IPV4 ,他是数据包从一个ip(主机)到指定的ip(主机),不同局域网有相同的ip,为了确定网络位置,有了网络位置、主机位置、子网掩码

如果N台电脑全部用集线器链接起来,分配ip是有限的,所以要网络分层,然后有了子网、掩码、寻址。比如 192.168啥的都是内网用  127.0.0.1啥的都是本地回环地址  (具体ip段用作什么可以自行百度),然后为了广播快就有了掩码,把同一层网络的主机,根据ip掩码进行广播(网络位置)

比如某一层有五个主机  43.120.4.1、43.120.5.1、43.120.8.1,那么,五个主机的掩码可以为 255.255.255.0也就是只要前面三段来判断网络位置  43.120.4 、  43.120.5、  43.120.8

比如这一层来了个数据包要去 43.120.5.14这个ip的,他会判断是那些网络位置,这里就是43.120.5这个网络位置,然后他就只会给43.120.5这个下面的主机进行广播。

如果你把43.120.8.1的掩码改成了255.255.0.0,那么他的网络位置就是43.120,也会进行广播

大概是这样,不过数字可能有问题,他是二进制的,掩码是要连续的1111和000两部分组成

比如 11111111.11111111.11111111.00000000 或者11111111.11111111.11111000.00000000

然后他去判断网络位置也是通过上面主机的ip二进制和掩码进行截取(&逻辑)

注:baidu.com是不能传输的,所以要进行dns去查询这个域名对应的ip然后封装数据包

传输层:协议一般是TCP\UDP(具体端口到端口的数据传输)

是端口对端口的,基于网络层协议,UDP是不稳定的,他不会占用端口一直等回复的,TCP是要等回复的ACK (所以会有DOS攻击) 半链接攻击是发送SYN,然后服务器发送SYN+ACK包(服务等待)然后我这边不发ACK包故意让服务器等,让他占资源 ;全链接攻击是服务器发了SYN+ACK包之后,我回复ACK包(服务器会进入接收数据状态),然后不发数据也不发FIN包。伪造攻击是别人TCP正常沟通中,我伪造客户端ip,发送rest包(前提是要能拿到客户最新的序列号,然后+1发过去,一般要处于网络中间位置截获),让服务器清空正常的窗口数据。

DDOS攻击就是一堆肉鸡一起对某个服务器同时发起DOS攻击

会话层:系统给其他系统或用户开的一个会话窗口(session,服务要保存会话状态、身份认证)

 HTTP\HTTPS协议  HTTP数据是可以抓的,明文的,HTTPS是在TCP和HTTP之间加了一层SSL/TSL协议,对数据加密,他是服务器生成公钥、私钥和一段明文,然后将明文HASH(报文)再私钥加密生成密文(签名),然后把签名、公钥、明文交给CA机构签发证书(包括生效、失效等信息)。浏览器访问https链接会下载安装证书 ,然后校验签名:明文HASH(报文)  然后  公钥解密签名得到“报文”,比对两个HASH报文是否一致,一致就说明服务器是信任的,然后客户端也要生成秘钥(对称加密的)然后通过公钥加密发给服务端,服务端拿到 “对称加密秘钥”的密文 之后用私钥解密出 对称加密秘钥 ,然后双方使用对称加密秘钥进行通讯

表现层:(具体的内容了,有不同表示形式,就有了不同协议,比如html是超文本协议、doc是文本、excel表格、exe可执行文件、zip压缩包等)

浏览器自己根据http头拿到格式进行内容解析显示出来就是表现层

应用层:(系统间的状态、协议等)

前端服务、微服务之间、以及项目服务与数据库之间的交流协议等等。

注:不同应用间数据交流用到的协议层数未必都要七层,比如多台计算机用集线器链接,只需要物理层就可以了(鼠标、键盘、网卡等),主机到主机(局域网内,通过交换机连接)只需要物理层+链路层就可以了

个人理解AI: 就是为了能和支持不同层协议系统进行沟通,比如:AI和网站沟通就要充当浏览器等,和DOC文档沟通,就要把自己当作个文件,输出相关内容给doc应用程序,保存doc的修改等;要和浏览器沟通,就要充当网站;最终是与人沟通,就要充当人,就要会发声、语义解析等

原码、反码、补码、移码  (对于二进制数据而言的) 校验码

原码:原本的数字表示 比如    0 1100011  负数是    1  1100011   (第一位是符号位)

反码:正数是他本身,负数是除了符号位,其他取反  比如  0 1100011       1  0011100(其他位和符号位异或运算)

补码: 正数补码是他自己,负数的补码是反码+1

校验码:校验数据包的正确性,以及纠错,有奇偶校验、海明校验、循环冗余校验(CRC ) 这里不细说了;

为啥要反码:因为计算机只有加法器,减一个数就相当于加该数的负数  结果再取反。

补码待会说

原理:负数的反码是(最高数-他)  比如(八位数,除去符号位是七位)  

0001100  取反就是  1111111-0001100 = 1110011

然后加上被减数(带符号位) 就是  被减数(符号位0)+(最高数-减数)(符号位1)

注:符号位在第八位,这里定义的最高数是七位的最高数(所以加符号位也就是最高数+1)

相当于 

结果 = 被减数+最高数-减数+最高数+1

= (最高数+最高数+1)+(被减数 - 减数)

注:(最高数+最高数+1) 相当于是(11111111八位) 最高数+1 是(10000000)八位  再加个最高数就是(11111111八位) 所以多加一就会进一位到第九位(高于八位会舍去),

所以,当被减数 - 减数 >= 1 的时候

会近一位到第九位,舍去(相当于减去了一个(100000000 九位)),也就是(高位数+1)*2 

高位数加1 是 (10000000 八位)左移一位相当于是乘以2

此时:

结果 = (最高数+最高数+1)+(被减数 - 减数)-(高位数+1)*2 

=最高数+最高数+1+被减数-减数   -   2*最高数   -  2

=被减数 - 减数 -1

他是正数,且符号位正好是0 ,取反码就是他自己,这里多减了1,所以才有补码(反码+1)

当被减数 - 减数 <1 的时候取反逻辑:

不会进位到第九位,

此时:

结果=(最高数+最高数+1)+(被减数 - 减数)

= 最高数+最高数+1 +被减数-减数

由于 被减数 - 减数<1 也就是 0 或者负数,这时候没有进位,最高位是1(符号位)

表示他是负数,

然后取反:也就是最高数(七位) - 结果(不带符号位的),然后补上符号位

结果不带符号位也就是(减去了 10000000)最后补上符号位也就是(加上了10000000)

也就是= 最高数 - (最高数+最高数+1+被减数-减数 - (最高数 + 1))+最高数+1

= 最高数 - (最高数+被减数-减数)+最高数+1

= 减数 - 被减数 + 最高数+1

其中(最高数+1)是符号位 ,减数-被减数  负数取了相反数  正好

补码会不会影响这里呢,不会,因为减数取补码+1,然后最终结果是负数取相反数+1

也就是减1再加了1,正好。

然后byte为啥是 -128 到 127 ,因为反码逻辑下,负数表示是  -127 到 -0 ,正数 是 +0 到 127

然后0重复表示了,

然后补码是:比如 -1的补码是  11111111(原码10000001 反码11111110)

 -2的补码是  11111110(原码 10000010 反码11111101)

依次类推,补码是-1  原码 +1   

   一直到  -1*(2^8-1)反码能表示的极限(相当于int的-127) 10000001(原码11111111 反码 10000000)

在-1的时候,反码是不能减了,他符号位不能动的,但是补码还可以-1,此时是

-1*2^8  (相当于int的-128) 10000000(原码 100000000 九位了,表示不了,反码也就没了)

因此规定 int的-128没有原码和反码,只有补码,记做1000000......(原本是-0的反码)

移码

用于小数表示,科学计数法

比如 十进制 31.415926 的科学计数法是   3.1415926*10^1 (底数是 0-10之间的数(不包括0和10))

这里的底数是3.1415926   指数是 1

二进制表示: 比如  111.00101  科学计数法是  1.1100101*2^2 (底数是0到2之间的数)

底数是1.1100101   指数是 2

由于二进制底数的整数部分只能是1,所以在存储的时候 只要记录符号、小数部分和指数就可以

float是32位  符号一位  指数位8位 23位尾数

由于指数也有负数,这里没有用补码形式表示,用的移码,也就是有个偏移量 127

原本范围是 0 到 2^9-1  

现在都减去127,就成了   -127   到 2^9 - 128 范围

比如  -3.125   表示二进制是  -11.001(整数短除法,小数乘法去换算)

  科学计数法是  -1.1001*2     尾数是   1001  指数 是 1  符号位是 1

指数的移码是  1   对应的原码要+127  = 128 = 2^7  对应二进制 (10000000八位)

所以 他的表示是   1 10000000 10010000000000(后面一堆0不写了)

duble是64位   1个符号位  11位指数位  52位尾数位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值