计算机原理
互联网协议
计算机原理
机器数与真值
一个数在计算机中的二进制表示,叫做这个数的机器数。
机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1.
比如,十进制中的数 +3,计算机字长为8,转换成二进制就是00000011。如果是-3,就是10000011。这里的00000011和10000011就是机器数
真值:将带符号位的机器数对应的真正数值称为机器的真值。
00000001的真值为 +00000001 = +1
10000011的真值为 -00000001= -1
原码、反码、补码
人们为了将符号位参与运算,并且只保留加法,从而简化计算机运算,发明了原码,反码和补码。
原码,反码和补码都是有符号的用二进制表示数的方法,均由符号位和数值位构成。
1.原码:
原码是符号位上真值的绝对值,即用第一表示符号位,其余位表示值,比如如果是8位二进制:
【+1】原码为 0000 0001 【-1】原码为 1000 0001
第一位是符号位,余下7位是数值位。因为第一位是符号位,所以8位二进制数的取值范围就是:
[11111111,01111111]即是 【-127,+127】
2.反码:
反码的表示方法为:
正数的反码是其本身;
负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
【+1】原码为[0000 0001] 反码为 0111 1110
【-1】 原码为[1000 0001] 反码为 1111 1110
3.补码:
补码的表示方法为:
正数的补码是其本身,
负数的补码是其原码的基础上,符号位不变,其余各位取反,最后+1,(即在反码的基础上+1)
【+1】原码为[0000 0001] 反码为 0111 1110 补码为 0111 1111
【-1】 原码为[1000 0001] 反码为 1111 1110 补码为 1111 1110
补码的绝对值:
-65的补码是 10111111
若直接将10111111转换成十进制,发现结果并不是-65,而是191。
事实上,在计算机内,如果是一个二进制数,其最左边的位是1,则我们可以判定它位负数,并且是用补码表示,若要得到一个负二进制补码的数值,
只要对补码全部取反并加1,就可得到其数值。
如:二进制值:10111111(-65的补码)
各位取反:01000000 加1: 01000001(+65)
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
0000 0011 1000 0011 1111 1101 正数的补码是他本身 负数的补码是 反码(保留符号位,其余位数取反),然后最后一位加+1。也就是说 比如 数字3 它的正数补码,加上,负数补码,刚好是 0 从而把减法的运算转换成了加法的运算
互联网协议
物理层: 物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
数据链路层:数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
数据链路层的功能:定义了电信号的分组方式以太网协议:早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernetethernet规定一组电信号构成一个数据包,叫做‘帧’每一数据帧分成:报头head和数据data两部分head包含:(固定18个字节)发送者/源地址,6个字节接收者/目标地址,6个字节数据类型,6个字节data包含:(最短46字节,最长1500字节)数据包的具体内容head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送mac地址:
head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
网络层:
网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址,IP地址。通过子网掩码判断是否处于同一个局域网。
arp协议:
但是在以太网协议中,发送信息,需要事先知道目标mac地址,此时就通过arp协议获取:
传输层:
传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,
那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
传输层功能:建立端口到端口的通信
socket:
我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。
我们在理解网络传输的时候,是从物理层开始理解从直到应用层,
但是如果我们在使用应用程序时候,应用程序发出的信息,要从应用层一层层解析,最后变为物理层的电信号进行传输。