位和字节,字符与字节

文章 3年前 (2021) admin
0
位和字节,字符与字节

Q1:172.16.0.1/23 是什么意思?后面的/23是什么意思?后面的/23是什么怎么来的?

23表示23个二进制中的“1”,当255.255.0.0变为二进制时,表示16个1后跟16个0,所以写成172.16.0.1/16。IP地址格式在点分十进制表示法中相同:255.0.0.0或255.255.255.128。在IP地址后添加“/”符号和数字1-32,其中数字1-32表示子网掩码中网络标识位的长度。例如,子网掩码192.168.1.1/24也可以表示为255.255.255.0。扩展数据:子网掩码的设置必须遵循一定的规则。与二进制IP地址一样,子网掩码由1和0组成,它们是连续的。子网掩码的长度也是32位,左边是网络位,用二进制数“1”表示,1的个数等于网络位的长度。右边是主机位,用二进制数“0”表示,零的个数等于主机位的长度。这样做的目的是在掩码和IP地址之间做按位AND运算时,用0覆盖原来的主机数量,不改变原来的网段数量,很容易通过0的位数来确定子网中的主机数量。(主机号2的幂是-2的幂,因为当所有主机号都是1时,表示网络广播地址,当所有主机号都是0时,表示网络的网络号,这是两个特殊的地址)。只有通过子网掩码,我们才能显示出一台主机所在的子网与其他子网的关系,这样网络才能正常工作。参考来源:百度百科-IP参考来源:百度百科-子网掩码。

Q2:IP/UDP/TCP/ICMP数据报协议的校验和的区别和计算

首先,IP、ICMP、UDP和TCP消息头都有校验和字段,大小都是16位,算法基本相同:发送数据时,为了计算数据包的校验和。应采取以下步骤:(1)将校验和字段设置为0;(2)将待验证数据视为以16位为单位的数字组合,依次进行二进制反码的求和;(3)将获得的结果存储在校验和字段中。接收数据时,计算数据包的校验和比较简单,具体如下:(1)将报头视为16位数字,依次对二进制补码求和,包括校验和字段;(2)检查计算的校验和结果是否为0;(3)如果等于0,说明是可分的,验证正确。否则,校验和是错误的,协议栈应该丢弃这个数据包。以上四种报文的校验和算法虽然相同,但作用范围不同:IP校验和只检查20字节的IP头;而ICMP校验和覆盖了整个消息(ICMP报头ICMP数据)。而且UDP校验和不仅覆盖了整个报文,还有一个12字节的IP伪头,包括源IP地址(4字节)、目的IP地址(4字节)、协议(2字节,第一个字节加0)和TCP/UDP包长(2字节)。此外,UDP和TCP数据报的长度可以是奇数字节,因此在计算校验和时需要在末尾添加填充字节0(注意,填充字节仅用于计算校验和,可能无法传输)。此外,UDP的校验和是可选的。当校验和字段为0时,表示UDP报文不使用校验和,所以接收方不需要校验和检查!UDP校验和的结果为0怎么办?书中有句话:“如果校验和的计算结果为0,则存储的值全部为1(65535),这在二进制倒数码计算中是等价的。”说到这里,这个校验和是如何计算的?1.二进制反码的和是多少?对于无符号数,先求它的反码,然后从低位到高位一点一点加。如果有溢出,它将向高位前进1(就像一般的二进制加法规则一样)。如果最高位有进位,它将前进1到最低位。首先,这里的反码似乎和我们之前学过的有符号数的反码不一样(即正数的反码是本身,负数的反码是基于其原码,符号位不变,其余位颠倒)。这里的正数和负数没有区别,每一位都是直接反转的!上面加粗的句子和我们一般的加法规则不太一样:如果最高位有进位,它就会去最低位加1。有一些疑虑。你为什么要这么做?仔细分析后(为便于解释,以4-4位二进制补码之和为例),上述运算使得加法进位溢出发生时溢出值不是10000而是1111。也就是说,当加法结果超过1111时,就会溢出,这也解释了为什么0000和1111都表示0(你也可以发现二进制反码中任意一个数和这两个数相加的结果就是原数,正好符合数字0的加法意义)。这里有两种二进制反码求和运算:原码加法3(0011)5(0101)=8(1000)3(1100)5(1010)=8(0111)8(1000)9(1001)=1(0001)。当有溢出时,结果就不一样了。原码溢出10000以上,反码溢出1111以上,所以差正好是. 1。只是为了直观地观察二元倒数和的运算规则,至于为什么定义这样的规则,以及运算规则中还存在哪些其他特征,可能需要一些与代数理论相关的东西(呜呜~ ~数学理论学得不好,只能表面分析)。另外,关于二进制反码的和运算,有一点需要说明的是,结果和先加后加后否定是一样的!(其实在我们的编程算法中,几乎都是先加后反。
) 2.校验和算法的实现谈到什么是二进制补码求和,所以校验和算法的实现要简单得多。废话少说,直接编码:【cpp】查看普通//计算校验和ushort校验和(ushort * buffer,int size){无符号长校验和=0;while(size 1){ cksum=* buffer;size-=sizeof(USHORT);} if(size) { cksum=*(UCHAR *)缓冲区;}//将32位数字转换为16 while(cksum 16)cksum=(cksum 16)(cksum0x ffff);return(USHORT)(~ CK sum);} buffer是指向要验证的数据缓冲区的指针,size是要验证的数据的总长度(以字节为单位)。4~13行代码按16位累加和数据。由于最高位的进位需要加到最低位,cksum必须是32位无符号长类型,高16位用于在累加过程中保存进位;此外,代码的第10~13行处理大小为奇数的情况!14~16行代码的作用是将cksum的高16位加到低16位,即累加时最高位的进位加到最低位。这里,使用while循环来判断cksum的高16位是否非零,因为当执行第16行代码时,仍然有可能携带cksum的高16位。有些地方是通过以下两个代码实现的:ck。sum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16);这里只进行了两次相加,即可保证相加后cksum的高16位为0,两种方式的效果一样。事实上,上面的循环也最多执行两次!17行代码即对16bit数据累加的结果取反,得到二进制反码求和的结果,然后函数返回该值。3. 为什么使用二进制反码求和呢? 好了,最后一个问题,为什么要使用二进制反码来计算校验和呢,而不是直接使用原码或者补码? 这个问题我想了很久,由于水平有限实在弄不明白,于是在百度上一阵狂搜,什么都没有(不知道是百度不给力,还是大家都不关注这个问题呢?)。果断换google,敲了3个关键词:why checksum tcp,嘿嘿 结果第二篇就是我想要的文章了!!!先把链接给大家吧:http://www.netfor2.com/checksum.html这篇文章主要介绍二进制反码求和(the 1"s complement sum)与补码求和(the 2"s complement sum)的区别,另外还说明了在TCP/IP校验和中使用反码求和的优点。It may look awkword to use a 1"s complement addition on 2"s complement machines. This method however has its own benefits.Probably the most important is that it is endian independent. Little Endian computers store hex numbers with the LSB last (Intel processors for example). Big Endian computers put the LSB first (IBM mainframes for example). When carry is added to the LSB to form the 1"s complement sum (see the example) it doesn"t matter if we add 03 + 01 or 01 + 03. The result is the same.Other benefits include the easiness of checking the transmission and the checksum calculation plus a variety of ways to speed up the calculation by updating only IP fields that have changed.上面是原文的一部分,说明在TCP/IP校验和中使用反码求和的一些优点: a. 不依赖系统是大端还是小端。 即无论你是发送方计算或者接收方检查校验和时,都不需要调用htons 或者 ntohs,直接通过上面第2节的算法就可以得到正确的结果。这个问题你可以自己举个例子,用反码求和时,交换16位数的字节顺序,得到的结果相同,只是字节顺序相应地也交换了;而如果使用原码或者补码求和,得到的结果可能就不相同! b. 计算和验证校验和比较简单,快速。说 实话,这个没怎么看明白,感觉在校验和计算方面,原码或者补码求和反而更简单一些(从C语言角度),在校验和验证上面,通过一样的算法判断结果是否为全 0,确实要方便一些,所以可能从综合考虑确实反码求和要简便一些。另外,IP报文在传输过程中,路由器经常只修改TTL字段(减1),此时路由器转发该报 文时可以直接增加它的校验和,而不需要对IP整个首部进行重新计算。当然,可能从汇编语言的角度看,反码求和还有很多高效的地方,这里就不在深入追究 了~~~

Q3:关于路由方面

看看你的调制解调器有没有路由,买一个有路由的调制解调器,然后买一个集线器。

Q4:已知一台电脑IP地址为192.168.2.73/255.255.255.192求其网络号

将IP地址与子网掩码转换成二进制后按位相与后就可以得到网络号(主机ID)为:192.168.2.64,具体见下面:

Q5:IP地址包含的信息有哪些?

与IP地址关联的最明显的个人信息就是地理位置信息。连接到互联网是通过一个共享的IP地址,这样精确地理位置并未暴露。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。从理论上而言,ISP可以找出很多关于用户的上网活动记录。或者,一些广告商可以通过结合某个特定IP的一些在线活动记录,来定位推送广告。在某些当局的帮助下,可以发现更多的信息,而不是去推测。例如,OPC在美国当局的缓引下的一个案例,在只知道IP地址的情况下,通过ISP找到了发送骚扰邮件的具体身份。找到一个IP地址比较容易,但是从IP地址找到真正可以操作性的信息还是需要一些专业技巧。扩展资料:IP地址是互联网上一个连接者的唯一标识符。每台连网的计算机都有自己的IP地址,通过命名系统,计算机可以互联共享数据。一个标准的IP地址(用IPV4举例)包含4个用点分开的十进制数字。虽然计算机被分配了IP地址,但是外部计算机很少直接访问它。实际上,个人计算机是通过路由器与互联网中的其它计算机互联。路由器,可以想象成连接自己内网和外界互联网的桥梁。当收发电子邮件、访问网站是,被共享的IP地址是ISP提供给你本地路由器的地址,而不是分配给自己计算机的地址。与此同时,计算机或网络的地址上的数字都能告诉别人使用者身份和曾经浏览了哪些网站的信息。参考资料来源:百度百科—IP地址

Q6:路由器的起始IP 终止IP 下载速率KB/s 上传速率KB/s 什么意思?怎么设置?

起始IP和终止IP就是子网掩码为0对应的位置从1到254,1的那个就是起始IP,254的那个是中止IP,其中有一个地址为网关,下载速率KB/s就是路由器接收数据的速度,上限是你网速÷8的数。现在越来越多的路由器都带上了QOS的这个功能。作为网络管理人员。QOS这个词已经越来越多的出现在我们的耳边。究竟什么是QOS流量控制?今天我们来学习一下。简单的来说。QOS用来解决带宽解决网络延迟和阻塞等问题的一种技术,一般里面包含优先级别(小包优先、IP/网段优先、端口优先、剩余带宽抢占优先级)、弹性带宽管理等等。小包优先:小包通常指小于64K的包,如:ping包。请求包、响应包等。在上网过程中。会出现很多请求,响应。这些包优先后,给我们的感觉就会快很多。IP/网段优先:可针对源IP、目的IP。或者段来设置优先级别。比如。局域网中。我首先保证我的WEB服务器的带宽。再保证客户机的带宽,再保证服务器的带宽。都可以进行设置。端口优先:可针对源端口、目的端口进行设置优先的级别。一般来说。网吧都是玩游戏为主。那么我可以针对一些主流游戏的端口。优先这些游戏的带宽。剩余带宽抢占优先级:顾名思义指在使用中。当网络的带宽有剩余的时候。剩余的这些带宽可以分配给某些IP,某些端口。这样,可以让你充分的使用带宽。而不浪费!弹性带宽管理:以下载限速为例,比如总带宽为 10Mbit (总最大下载速度为 1000 KBytes/s)。共20人使用,限速为保证下载速度 100KBytes/s, 最大下载速度 200KBytes/s。详细阐述如下:1、带宽空闲时, 速度可达到“最大速度”如果带宽有空闲(上网的人比较少,带宽使用率在 50% 左右,比如只有10人在线),则下载速度最大可以达到 200K, 200K 是下载的峰值速度,即使带宽只有一个人在使用,也不会超过这个峰值速度。这 200K 里面的 100K 是暂时借用他人的,当别人需要时,将会自动退让出来。2、带宽有一定的使用率,速度在“保证速度”和“最大速度”之间如果带宽有一定的使用率(有一定的上网人数,带宽使用率在 80% 左右,比如有15人在线),则下载速度会降低到“保证下载速度”和“最大下载速度”之间,即 100K ~ 200K。通常,这种情况占多数。3、带宽使用率较高或全部使用,速度等于或小于“保证速度”如果带宽使用率比较高(上网的人比较多,带宽使用率在 90% 以上,比如20人全部上线),则下载速度将会不会超过 100K,即:如果总带宽不能满足每人都可以达到“保证速度”,那么最终每个人的速度将会小于“保证速度”(平均分配后)。例如,如果20人全部同时下载,1000KBytes/s 的总下载速度,即每人分得 50K 的速度。另外,往往还有一个全局带宽的设置。这个是用来统计你的带宽总量。如果不设置的话。路由无法计算你的总带宽,也没法进行弹性带宽管理等等设置了。所以QOS中。全局设置一定要设置。而且。最好是真实的带宽。不要过小,也不要过大。

版权声明:admin 发表于 2021年10月28日 下午8:26。
转载请注明:位和字节,字符与字节 | 热豆腐网址之家

相关文章