如果有两2468四个数字相乘积最大最小是多少3和4,要想使得这三个数相乘等于24

  数学成绩决定孩子的理科综合能力,影响到理化生等多学科的成绩,小学阶段适时进行奥数训练,更有助于孩子初高中理科成绩的提升。不要让我们的孩子进入初中后因为数学影响总排名,进而影响到中考成绩!小学毕业前必须要掌握这些方法。

  第1节 个位数比十位数大1乘以9的运算

  方法:前面因数的个位数是几,就把第几个手指弯回来,弯指左边有几个手指,则表示乘积的百位数是几。弯指读0,则表示乘积的十位数是0,弯指右边有几个手指,则表示乘积的个位数是几。

  口诀:个位是几弯回几,弯指左边是百位,弯指读0为十位,弯指右边是个位。

  第2节 个位数比十位数大任意数乘以9的运算

  方法:凡是个位数比十位数大任意数乘以9时,仍是前面因数的个位数是几,将第几个手指弯回来,弯回来的手指不读数,作为乘积的十位数与个位数的分界线。前面因数的十位数是几,从左边起数过几个手指,则表示乘积的百位数就是几,弯指左边减去百位数,还剩几个手指,则表示乘积的十位数是几,弯指的右边有几个手指,则表示乘积的个位数是几。

  口诀:个位是几弯回几,原十位数为百位。左边减去百位数,剩余手指为十位。弯指作为分界线,弯指右边是个位。

  第3节 个位数和十位数相同乘以9

  方法:凡是个位数和十位数相同乘以9时,它的个位数是几则将第几个手指弯回来。弯指左边有几个手指则表示乘积的百位数是几。弯回来的手指读9,作为乘积的十位数。弯指右边有几个手指,则表示乘积的个位数是几。

  口诀:个位是几就弯几,弯指左边是百位。弯指读9是十位,弯指右边是个位。

  第4节 个位数比十位数小乘积9的运算

  方法:计算时只要将前面因数的十位数减1写在百位上,前面因数的个位数是几,写在乘积的十位上,前面因数于与100的差数,写在乘积的个位即可。

  如果是80几乘以9,因80几与100差10几,则在乘积的十位数上加1.如果是70几乘以9,因70几与100差20几,则应在乘积的十位上加2。其他依次类推。

  口诀:十位减1写百位,原个位数写十位。与百差几写个位,如差几十加十位。

  第1节 加大减差法

  方法:在一个加式里,如果被加数或加数有一个接近整十、整百、整千等,都以整数来加,然后再减去这个差数(即补数),这样计算起来十分方便。

  口诀:用第一个加数加上第二个加数的整十、整百、整千……再减去第二个加数与整十、整百、整千……的差,等于和。

  第2节 求只是两个数字位置变换两位数的和

  方法:在一个两位数的加式里,如果被加数的十位数和加数的个位数相同,而被加数的个位数又和加数的十位数相同,就将被加数的十位数和个位数相加之和再乘以11,即为这个加式的和。

  口诀:(首+尾)×11=和

  第3节 一目三行加法

  方法:若三行数在一起相加,未加之前先虚进1,把第一位和末尾第二位之间的数看作中间数,凑9弃掉,剩几写几,末尾一位数凑10弃掉,剩几写几,即为所求三行之和。

  口诀:提前虚进1,中间弃9,末尾弃10。

  相加不够9的用分段法:直接相加,并要提前虚进1;

  中间数相加大于19的(弃19),前面多进1;

  末位数相加大于20的(弃20),前边多进1.

  第1节 减大加差法

  方法:在一个减式里,如果被减数的后几位数值较小,而减数的后几位数值较大,往往要向前借好几位时,则应将减数中加上一个数(即补数)变成整数,从被减数中减去,然后再加上这个补数,即得最终差数。

  口诀:用被减数减去减数的整十、整百、整千……再加上减数与整十、整百、整千……的差,等于差。

  第2节 求只是数字位置颠倒两个两位数的差

  方法:在一个两位数的减式里,如果被减数的十位数值与减数的个位数值相同,而被减数的个位数值又与减数的十位数值相同时,用被减数的十位数值,减去被减数的个位数值,再乘以9等于差。

  口诀:用被减数的十位数减去它的个位数,再乘以9,等于差。

  第3节 求只是首尾换位,中间数相同的两个三位数的差

  方法:被减数的百位数减去个位数的差乘以9,分别将乘积的十位数值作为百位数,将乘积的个位数值仍作为个位数,两数中间写上一个9(即十位),便是这个减式的差。

  口诀:用被减数的百位数减去它的个位数,再乘以9,得到一个两位数,再在这个数中间写上9,就等于这两个数的差。

  第4节 求两个互补数的差

  如何求一个数的补数?从十位数起向左边,无论有多少位数,都给它凑成9,个位数(即末尾一个数)凑成10即可,这就是它的补数。

  互补的概念:两数相加(和)等于整10、整100、整1000……叫互补。

  求补数的方法:前凑9,后凑10。

  口诀:两位互补的数相减:减50后,再乘以2等于差;

  三位互补的数相减:减500后,再乘以2等于差;

  四位互补的数相减:减5000后,再乘以2等于差;

  第1节 十位数相同,个位数互补的乘法运算

  方法:在一个两位数的乘式里,凡是十位数相同,个位数互补时,在前面因数的十位数上加上一个1,再和另一个因数的十位数相乘,所得的积写在乘积的前两位。然后个位和个位相乘的积,写在后两位,即为乘式的最终积。

  口诀:前面数十位加个1,和另一个数十位乘得积,后写两个个位积,即为所求最终积。

  第2节 十位数互补,个位数相同的乘法运算

  方法:在一个两位数的乘式里,如果前面因数和后面因数的十位数互补,它们的个位数相同时计算方法:首先十位数与十位数相乘的积再加上个位数写前边,后写它们两个数个位相乘之积,即为所求最终积。

  口诀:十位相乘加个位,个位相乘写后边。十位数没有要添个0(例2)。

  第3节 一个数十位与个位互补,另一个数相同的乘法运算

  方法:在互补的十位数上加个1,和另一数十位乘得积,后面写上两个数个位相乘的积,即为所求的最终积。

  (1)补数在上面还是在下面,必须在互补数十位加个1,上下相乘,即可。

  (2)对于多位数都相同的数,中间有几个数(除首尾两个),直接写在积得中间即可。

  口诀:互补数十位加个1,和另一数十位乘得积,后续两个个位积,即为所求最终积。

  第4节 11的乘法运算

  方法:凡任何一个数乘以11时,最高位是几,就向前位进几。最高位数和第二位数相加写在第二位,第二位数和第三位数相加写在第三位。相加超10前面加1,个位是几还写几,依此类推,就是11的乘积。

  口诀:高位是几则进几,两两相加挨次写。相加超十前加1,个位是几还是几。

  第5节 十位数是1的乘法运算

  方法:在一个两位数的乘式里,如果两个数十位都是1,个位是任意数,可将个位与个位相乘,得数写后面;个位与个位相加之和写中间;十位与十位相乘得积,写前边(有进位的加进位),即为这个乘式之积。

  口诀:个位相乘写个位,个位相加写十位,有进位的加进位。十位相乘写百位,有进位的加进位。

  第6节 个位数是1的乘法运算

  方法:在一个两位数的乘式里,如果两个数的个位数都是1,而且十位数是任意数时,可按三步计算:(1)将个位数相乘写个位,(2)十位数相加写十位,(3)十位数相乘写百位(有进位的加进位)。即为乘式的最终积。

  口诀:个位相乘写个位,十位相加写十位,十位相乘写高位(有进位的加进位)。

  第7节 特殊数的乘法运算

  方法:在一个乘式里,前面的因数缩小几倍,后面的因数就扩大几倍,其积不变。

  口诀:任何数乘以15、35或45,就把这个任何数缩小2倍,再把15、35或45扩大2倍,其积不变。

  任何数乘以25,就把这个任何数缩小4倍,再把25扩大4倍,其积不变。

  任何数乘以125,就把这个任何数缩小8倍,再把125扩大8倍,其积不变。

  第8节 任意两位数乘以两位数的万能法

  方法:任意两位数乘以两位数可分三步完成

  (1)首先个位数上下相乘

  (2)个位数和十位数交叉相乘相加(有进位的加进位)

  (3)十位数上下相乘(有进位的加进位)

  口诀:个位数上下相乘;个位数和十位数交叉相乘积相加(有进位的加进位);十位数上下相乘(有进位的加进位)。

  第9节 任意三位数乘以两位数的万能法

  方法:(1)个位数上下相乘

  (2)个位数和十位数交叉相乘积相加(有进位的加进位)

  (3)后面因数的个位数和前面因数的百位数交叉相乘再加上十位数上下相乘(有进位的加进位)

  (4)后面因数的十位数和前面因数的百位数交叉相乘(有进位的加进位)。

  口诀:个位数上下相乘;

  个位数和十位数交叉相乘积相加(有进位的加进位);

  个位数和百位数交叉相乘再加上十位数上下相乘(有进位的加进位);

  十位数和百位数交叉相乘(有进位的加进位)。

  第10节 任意三位数乘以三位数的万能法

  (1)个位数上下相乘;

  (2)个位数和十位数交叉相乘积相加(有进位的加进位);

  (3)个位数和百位数交叉相乘加上十位数上下相乘(有进位的加进位);

  (4)十位数和百位数交叉相乘积相加(有进位的加进位);

  (5)百位数上下相乘(有进位的加进位)。

  第11节 数值越大越好算

  方法:只要是同位数9自乘,无论是多少位,只将9的位数减1位剩几个9写几个9,后面写一个8,前面有几个9,后面就写几个0,末位只写一个1,即为乘式最终积。如三个9自乘时,需写两个9,一个8,两个0,一个1.而六位9自乘时,需写五个9,一个8,五个0,一个1。

  口诀:先求两数各补数;交叉相减减补数(减一次)写前边;补数相乘写后边。

  第12节 数值小了也好算

  口诀:百位数乘以百位数写高位;

  百位数和个位数相乘的积,扩大两倍写中间;

  个位数乘个位写后面;

  大于100要进位。

  第1节 2的乘法运算

  方法:凡2乘以5以下的数字,应直接写出它的倍数来,遇到大于4的数字如5、6、7、8、9等,都要在前一位上加一个1.在算前一位(即高位)时,必须要看后位(即低位)是否大于5,决定有无进位,大者在前位上加1.

  口诀:1、2、3、4只写倍,后数大5或等于5前加1。5个为0、6个为2、7个为4、8个为6、9个为8要记牢,算前看后莫忘掉。

  第2节 3的乘法运算

  方法:3的进位律是3的循环小数,无论3后面有几个3,但最后只要出现4或比4大的数,则前边就要进1,无论3循环到几个位数,最后是比3小的数字,都按不进位计算。

  67也是一样,大于6的循环小数就进2,即6以后无论循环几位,只要后位有7或比7大的数就进2,6的循环小数是6或小于6以下都按不进2计算,但不进2必能进1。

  数字上点圆点的,表示该数是循环小数,而后位数则表示无论前数循环几位,而见到后数即按大者计算,无论循环到几位不见后数,都按小于此数计算。

  口诀:1、2、3数直写倍,后大34前加1,大于67要进2,循环小数要记准:4个为2;5个为5;6个为8;7个为1;8个为4;9个为7.算前看后莫忘记。

  (3的乘法运算) (4的乘法运算)

  第3节 4的乘法运算

  方法:凡是用4乘1和2时,应直接写出它的倍数。4的进位律是大25进1,大50进2,大75进3。但必须记住:任何偶数乘以4时,其本个位都是它的补数。如见4是6;见6是4;见2是8;见8是2。而任何奇数乘以4时,其本个位都是它的凑数。如:1+4=5;3+2=5;5+0=5;7+8=15(个位是5);9+6=15(个位是5)。

  口诀:1数2数直写倍,后大25前加1,大于5数要进2,后大75将3进,偶数个位皆互补,奇数个位凑5齐。

  第4节 5的乘法运算

  方法:根据乘法的性质原理:前面因数缩小几倍,后面因数扩大几倍,其积不变。凡是任何数乘以5时,先将前面因数缩小两倍,再乘后面因数5,扩大两倍变成10计算起来,就更简便了。

  口诀:任何数乘以5,等于它的半数加零。

  第5节 6的乘法运算

  方法:因为6是3的两倍,那么3的进位律是大34进1,大67进2。而6的进位律却是大34进2,大67进4。

  口诀:167数要进1;后大34将2进;大5一定要进3;后大67将4进;834数要进5;循环小数要记准。

  (6的乘法运算) (7的乘法运算)

  第6节 7的乘法运算

  方法:7的进律较难记,必须从中找窍门。7的进位律是:

  口诀:1428续57。进2、14搬后位。进3,将头按在尾。进4,57移前位。进5,将尾接在首。进6,分半前后移。偶数本个皆2倍,1-7;3-1;5本身;7-9;9-3要记牢,两位三位先相比。

  第7节 8的乘法运算

  方法:4的两倍,那么4的进位律是大25进1;大50进2;大75进3;而8的进位律是大25进2;大5进4;大75进6。本身加5本个同的意思是:个位数相同。如:

  口诀:125数要进1,后大25将2进。375数要进3,后数大5将4进。625数应进5,后大75将6进。875数要进7,本身加5本个同。1、6个8;2、7-6;3、8个4;4、9-2。

  第8节 9的乘法运算

  方法:9乘任何数时,要看两位数,才能决定是进几,前位数值小于后位数值时,前位的数值是几则进几(照数进)。如果前位数值大于后位数时,无论是大几,在前位上只减一个1,余数即是应进的数,即称为前大于后要减1。

  口诀:前小于后照数进,前大于后要减1。各数本个皆互补,算到末尾必减1。

  周根项速算大师乘法口诀

  这几天在电视上看了速算大师周根项教给学生们的乘法口诀速算方法,个人觉的很有用,值得和大家分享一下:

  两位数相乘,在十位数相同、个位数相加等于10的情况下,如62×68=4216

  一分钟速算口诀中对特殊题的定理是:

  任意两位数乘以任意两位数,只要魏式系数为“0”所得的积,一定是两项数中的尾乘尾所得的积为后积,头乘头(其中一项头加1的和)的积为前积,两积相邻所得的积。

  如(1)33×46=1518(个位数相加小于10,所以十位数小的数字3不变,十位大的数4必须加1)

  如(2)84×43=3612(个位数相加小于10,十位数小的数4不变 十位大的数8加1)

  两积相邻组成:3612

  两积组成:1248

  两积组成:60025

  “头乘头,尾乘尾,合零为整,补余数。”

  1.先求出魏式系数

  2.头乘头(其中一项加一)为前积 (适应尾相加为10的数)

  3.尾乘尾为后积。

  4.两积相连,在十位数上加上魏式系数即可 。

  如:76×75,87×84吧,凡是十位数相同个位数相加为11的数,它的魏式系数一定是它的十位数的数 。

  如:76×75魏式系数就是7,87×84魏式系数就是8。

  如:78×63,59×42,它们的系数一定是十位数大的数减去它的个位数。

  例如第一题魏式系数等于7-8=-1,第2题魏式系数等于5-9=-4,只要十位数差一,个位数相加为11的数一律可以采用以上方法速算。

  例题2 78×63,计算方法:7×(6+1)=49,3×8=24,两积组成4924,然后在十位数上2减去1,最后的积为4914

  下面是摘抄了几节实例:

  如(1)33×46=1518(个位数相加小于10,所以十位数小的数字3不变,十位大的数4必须加1)

  如(2)84×43=3612(个位数相加小于10,十位数小的数4不变 十位大的数8加1)

  两积相邻组成:3612

  两积组成:60025

  (一)十几与十几相乘

  证明:设m、n 为1 至9 的任意整数,则

  (二)十位数字相同、个位数字互补(和为10)的两位数相乘

  证明:设m、n 为1 到9 的任意整数,则

  个位之积4×6=24,

  注意:两个数之积小于10 时,十位数字应写零。

  (三)用11 去乘其它任意两位数

  证明:设m、n 为1 至9 的任意整数,则

  注意:当两位数字之和大于10 时,要进到百位上,那么百位数数字就成为m+1,

}

计算机网络、计算机操作系统这两个“兄弟”是所有开发岗位都需要“结拜”的,不管你是 Java、C++还是测试。对于后端开发的童鞋来说,计算机网络的重要性不亚于语言基础,毕竟平时开发经常会和网络打交道,比如:抓个包等等。所以对这一块知识点的准备还是要抱着敬畏之心,不要放过任何一个漏网之题。下面分享下我的学习过程:

1. 看书:对于计算机比较基础的模块,我都是比较推荐找一本经典的书籍来好好学习下,不可以只看面经就去面试了。我一共看了两本书:汤小丹的《计算机操作系统》和《图解HTTP》。《计算机操作系统》是教科书,所以知识点相对比较基础,覆盖范围也比较广,非科班的学生还是很有必要看一看的。《图解HTTP》这本书用很多插图将一些知识点讲的通俗易懂,看起来也很快,还是比较推荐的。

2. 做笔记:计算机网络的知识点还是比较多的,需要看书的时候做好笔记,方便复习。而且做笔记的时候可以就这个知识点去百度下,看看有没有自己遗漏的点,再给补充进来。在这里说下,我为什么一直强调做笔记?好处 1:做笔记是第 1 次你对书中的知识点的回顾,加深记忆;好处 2:而且如果你是发表在公关社区的肯定要保证最大限度的正确性,就需要再去看看这个知识点,核对下自己是否有理解偏差和遗漏等,这样就完成了知识点的深挖;好处3:正在到面试复习的时候,你是不太可能重新看一本书的,那么笔记就显得很重要了,自己做的笔记,复习起来很快,而且最好在笔记里能有一些自己区别于面经的理解。

3. 看面经:经常刷一刷牛客,看看对于计算机网络,面试官们都是怎么问的?很多问题你可能会,但是不懂面试官的问法,也会回答不上来;问到的题目自己是否准备了?而且对于计算机网络和计算机操作系统会因为公司和岗位的不同而有所侧重的,多看看面经就会发现还是有一点规律的,但是这都不是绝对的,最后还要看面你的面试官的喜好。

1、谈下你对五层网络协议体系结构的理解?

学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。

运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。

由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。

在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP / IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。

数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如:同步信息,地址信息,差错控制等)。

在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。控制信息还使接收端能够检测到所收到的帧中有无差错。如果发现差错,数据链路层就简单地丢弃这个出了差错的帧,以避免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在链路层传输时出现差错(这就是说,数据链路层不仅要检错,而且还要纠错),那么就要采用可靠性传输协议来纠正出现的差错。这种方法会使链路层的协议复杂些。

在物理层上所传送的数据单位是比特。物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

2、简单说下每一层对应的网络协议有哪些?

计算机五层网络体系中涉及的协议非常多,下面就常用的做了列举:

3、ARP 协议的工作原理?

网络层的 ARP 协议完成了 IP 地址与物理地址的映射。首先,每台主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:如果有,就直接将数据包发送到这个 MAC 地址;如果没有,就向本地网段发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。

此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址。网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址;源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

4、谈下你对 IP 地址分类的理解?

IP 地址是指互联网协议地址,是 IP 协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP 地址编址方案将 IP 地址空间划分为 A、B、C、D、E 五类,其中 A、B、C 是基本类,D、E 类作为多播和保留使用,为特殊地址。

每个 IP 地址包括两个标识码(ID),即网络 ID 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机 ID 与其对应。A~E 类地址的特点如下:

A 类地址:以 0 开头,第一个字节范围:0~127;

B 类地址:以 10 开头,第一个字节范围:128~191;

C 类地址:以 110 开头,第一个字节范围:192~223;

D 类地址:以 1110 开头,第一个字节范围为 224~239;

E 类地址:以 1111 开头,保留地址

5、TCP 的主要特点是什么?

1. TCP 是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);

2. 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一);

3. TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复、并且按序到达;

4. TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;

5. 面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

6、UDP 的主要特点是什么?

2. UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数);

4. UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 直播,实时视频会议等);

5. UDP 支持一对一、一对多、多对一和多对多的交互通信;

6. UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的运输服务(TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如:QQ 语音、 QQ 视频 、直播等等。

8、TCP 和 UDP 分别对应的常见应用层协议有哪些?

  • 1. TCP 对应的应用层协议

FTP:定义了文件传输协议,使用 21 端口。常说某某计算机开了 FTP 服务便是启动了文件传输服务。下载文件,上传主页,都要用到 FTP 服务。

Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于 DOS 模式下的通信服务。如以前的 BBS 是-纯字符界面的,支持 BBS 的服务器将 23 端口打开,对外提供服务。

SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么 SMTP 端口设置这个栏,服务器开放的是 25 号端口。

POP3:它是和 SMTP 对应,POP3 用于接收邮件。通常情况下,POP3 协议所用的是 110 端口。也是说,只要你有相应的使用 POP3 协议的程序(例如 Fo-xmail 或 Outlook),就可以不以 Web 方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163 邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。

HTTP:从 Web 服务器传输超文本到本地浏览器的传送协议。

  • 2. UDP 对应的应用层协议

DNS:用于域名解析服务,将域名地址转换为 IP 地址。DNS 用的是 53 号端口。

SNMP:简单网络管理协议,使用 161 号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

9、详细说下 TCP 三次握手的过程?

TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个 TCP 报文段。

最初客户端和服务端都处于 CLOSED(关闭) 状态。本例中 A(Client) 主动打开连接,B(Server) 被动打开连接。

一开始,B 的 TCP 服务器进程首先创建传输控制块TCB,准备接受客户端进程的连接请求。然后服务端进程就处于 LISTEN(监听) 状态,等待客户端的连接请求。如有,立即作出响应。

第一次握手:A 的 TCP 客户端进程也是首先创建传输控制块 TCB。然后,在打算建立 TCP 连接时,向 B 发出连接请求报文段,这时首部中的同步位 SYN=1,同时选择一个初始序号 seq = x。TCP 规定,SYN 报文段(即 SYN = 1 的报文段)不能携带数据,但要消耗掉一个序号。这时,TCP 客户进程进入 SYN-SENT(同步已发送)状态。

第二次握手:B 收到连接请求报文后,如果同意建立连接,则向 A 发送确认。在确认报文段中应把 SYN 位和 ACK 位都置 1,确认号是 ack = x + 1,同时也为自己选择一个初始序号 seq = y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时 TCP 服务端进程进入 SYN-RCVD(同步收到)状态。

第三次握手:TCP 客户进程收到 B 的确认后,还要向 B 给出确认。确认报文段的 ACK 置 1,确认号 ack = y + 1,而自己的序号 seq = x + 1。这时 ACK 报文段可以携带数据。但如果不携带数据则不消耗序号,这种情况下,下一个数据报文段的序号仍是 seq = x + 1。这时,TCP 连接已经建立,A 进入 ESTABLISHED(已建立连接)状态。

10、为什么两次握手不可以呢?

为了防止已经失效的连接请求报文段突然又传送到了 B,因而产生错误。比如下面这种情况:A 发出的第一个连接请求报文段并没有丢失,而是在网路结点长时间滞留了,以致于延误到连接释放以后的某个时间段才到达 B。本来这是一个早已失效的报文段。但是 B 收到此失效的链接请求报文段后,就误认为 A 又发出一次新的连接请求。于是就向 A 发出确认报文段,同意建立连接。

对于上面这种情况,如果不进行第三次握手,B 发出确认后就认为新的运输连接已经建立了,并一直等待 A 发来数据。B 的许多资源就这样白白浪费了。

如果采用了三次握手,由于 A 实际上并没有发出建立连接请求,所以不会理睬 B 的确认,也不会向 B 发送数据。B 由于收不到确认,就知道 A 并没有要求建立连接。

11、为什么不需要四次握手?

有人可能会说 A 发出第三次握手的信息后在没有接收到 B 的请求就已经进入了连接状态,那如果 A 的这个确认包丢失或者滞留了怎么办?

我们需要明白一点,完全可靠的通信协议是不存在的。在经过三次握手之后,客户端和服务端已经可以确认之前的通信状况,都收到了确认信息。所以即便再增加握手次数也不能保证后面的通信完全可靠,所以是没有必要的。

接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。

SYN 是 TCP / IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement[汉译:确认字符,在数据通信传输中,接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误])消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。

13、传了 SYN,为什么还要传 ACK?

双方通信无误必须是两者互相发送信息都无误。传了 SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要 ACK 信号来进行验证。

14、详细说下 TCP 四次挥手的过程?

据传输结束后,通信的双方都可以释放连接。现在 A 和 B 都处于 ESTABLISHED 状态。

第一次挥手:A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的终止控制位 FIN 置 1,其序号 seq = u(等于前面已传送过的数据的最后一个字节的序号加 1),这时 A 进入 FIN-WAIT-1(终止等待1)状态,等待 B 的确认。请注意:TCP 规定,FIN 报文段即使不携带数据,也将消耗掉一个序号。

第二次挥手:B 收到连接释放报文段后立即发出确认,确认号是 ack = u + 1,而这个报文段自己的序号是 v(等于 B 前面已经传送过的数据的最后一个字节的序号加1),然后 B 就进入 CLOSE-WAIT(关闭等待)状态。TCP 服务端进程这时应通知高层应用进程,因而从 A 到 B 这个方向的连接就释放了,这时的 TCP 连接处于半关闭(half-close)状态,即 A 已经没有数据要发送了,但 B 若发送数据,A 仍要接收。也就是说,从 B 到 A 这个方向的连接并未关闭,这个状态可能会持续一段时间。A 收到来自 B 的确认后,就进入 FIN-WAIT-2(终止等待2)状态,等待 B 发出的连接释放报文段。

第三次挥手:若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。这时 B 发出的连接释放报文段必须使 FIN = 1。假定 B 的序号为 w(在半关闭状态,B 可能又发送了一些数据)。B 还必须重复上次已发送过的确认号 ack = u + 1。这时 B 就进入 LAST-ACK(最后确认)状态,等待 A 的确认。

第四次挥手:A 在收到 B 的连接释放报文后,必须对此发出确认。在确认报文段中把 ACK 置 1,确认号 ack = w + 1,而自己的序号 seq = u + 1(前面发送的 FIN 报文段要消耗一个序号)。然后进入 TIME-WAIT(时间等待) 状态。请注意,现在 TCP 连接还没有释放掉。必须经过时间等待计时器设置的时间 2MSL(MSL:最长报文段寿命)后,A 才能进入到 CLOSED 状态,然后撤销传输控制块,结束这次 TCP 连接。当然如果 B 一收到 A 的确认就进入 CLOSED 状态,然后撤销传输控制块。所以在释放连接时,B 结束 TCP 连接的时间要早于 A。

1. 为了保证 A 发送的最后一个 ACK 报文段能够到达 B。这个 ACK 报文段有可能丢失,因而使处在 LAST-ACK 状态的 B 收不到对已发送的 FIN + ACK 报文段的确认。B 会超时重传这个 FIN+ACK 报文段,而 A 就能在 2MSL 时间内(超时 + 1MSL 传输)收到这个重传的 FIN+ACK 报文段。接着 A 重传一次确认,重新启动 2MSL 计时器。最后,A 和 B 都正常进入到 CLOSED 状态。如果 A 在 TIME-WAIT 状态不等待一段时间,而是在发送完 ACK 报文段后立即释放连接,那么就无法收到 B 重传的 FIN + ACK 报文段,因而也不会再发送一次确认报文段,这样,B 就无法按照正常步骤进入 CLOSED 状态。

2. 防止已失效的连接请求报文段出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个连接中不会出现这种旧的连接请求报文段。

16、为什么第二次跟第三次不能合并, 第二次和第三次之间的等待是什么?

当服务器执行第二次挥手之后, 此时证明客户端不会再向服务端请求任何数据, 但是服务端可能还正在给客户端发送数据(可能是客户端上一次请求的资源还没有发送完毕),所以此时服务端会等待把之前未传输完的数据传输完毕之后再发送关闭请求。

17、保活计时器的作用?

除时间等待计时器外,TCP 还有一个保活计时器(keepalive timer)。设想这样的场景:客户已主动与服务器建立了 TCP 连接。但后来客户端的主机突然发生故障。显然,服务器以后就不能再收到客户端发来的数据。因此,应当有措施使服务器不要再白白等待下去。这就需要使用保活计时器了。

服务器每收到一次客户的数据,就重新设置保活计时器,时间的设置通常是两个小时。若两个小时都没有收到客户端的数据,服务端就发送一个探测报文段,以后则每隔 75 秒钟发送一次。若连续发送 10个 探测报文段后仍然无客户端的响应,服务端就认为客户端出了故障,接着就关闭这个连接。

18、TCP 协议是如何保证可靠传输的?

1. 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;

2. 对失序数据包重排序:既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层;

3. 丢弃重复数据:对于重复数据,能够丢弃重复数据;

4. 应答机制:当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;

5. 超时重发:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;

6. 流量控制:TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP 使用的流量控制协议是可变大小的滑动窗口协议。

19、谈谈你对停止等待协议的理解?

停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组;在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。主要包括以下几种情况:无差错情况、出现差错情况(超时重传)、确认丢失和确认迟到、确认丢失和确认迟到。

20、谈谈你对 ARQ 协议的理解?

  • 自动重传请求 ARQ 协议

停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为自动重传请求 ARQ。

连续 ARQ 协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。

21、谈谈你对滑动窗口的了解?

TCP 利用滑动窗口实现流量控制的机制。滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。

TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0 时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。另一种情况是发送方可以发送一个 1 字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。

22、谈下你对流量控制的理解?

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

23、谈下你对 TCP 拥塞控制的理解?使用了哪些算法?

拥塞控制和流量控制不同,前者是一个全局性的过程,而后者指点对点通信量的控制。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。

拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致于过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

为了进行拥塞控制,TCP 发送方要维持一个拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个。

TCP 的拥塞控制采用了四种算法,即:慢开始、拥塞避免、快重传和快恢复。在网络层也可以使路由器采用适当的分组丢弃策略(如:主动队列管理 AQM),以减少网络拥塞的发生。

慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd 初始值为 1,每经过一个传播轮次,cwnd 加倍。

拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢增大,即每经过一个往返时间 RTT 就把发送方的 cwnd 加 1。

没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。

有了 FRR,就不会因为重传时要求的暂停被耽误。当有单独的数据包丢失时,快速重传和快恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。

在进行 Java NIO 学习时,可能会发现:如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况。

1. TCP 是基于字节流的,虽然应用层和 TCP 传输层之间的数据交互是大小不等的数据块,但是 TCP 把这些数据块仅仅看成一连串无结构的字节流,没有边界;

2. 从 TCP 的帧结构也可以看出,在 TCP 的首部没有表示数据长度的字段。

基于上面两点,在使用 TCP 传输数据时,才有粘包或者拆包现象发生的可能。一个数据包中包含了发送端发送的两个数据包的信息,这种现象即为粘包。

接收端收到了两个数据包,但是这两个数据包要么是不完整的,要么就是多出来一块,这种情况即发生了拆包和粘包。拆包和粘包的问题导致接收端在处理的时候会非常困难,因为无法区分一个完整的数据包。

25、TCP 黏包是怎么产生的?

采用 TCP 协议传输数据的客户端与服务器经常是保持一个长连接的状态(一次连接发一次数据不存在粘包),双方在连接不断开的情况下,可以一直传输数据。但当发送的数据包过于的小时,那么 TCP 协议默认的会启用 Nagle 算法,将这些较小的数据包进行合并发送(缓冲区数据发送是一个堆压的过程);这个合并过程就是在发送缓冲区中进行的,也就是说数据发送出来它已经是粘包的状态了。

接收方采用 TCP 协议接收数据时的过程是这样的:数据到接收方,从网络模型的下方传递至传输层,传输层的 TCP 协议处理是将其放置接收缓冲区,然后由应用层来主动获取(C 语言用 recv、read 等函数);这时会出现一个问题,就是我们在程序中调用的读取数据函数不能及时的把缓冲区中的数据拿出来,而下一个数据又到来并有一部分放入的缓冲区末尾,等我们读取数据时就是一个粘包。(放数据的速度 > 应用层拿数据速度)

26、怎么解决拆包和粘包?

分包机制一般有两个通用的解决方法:

2. 在包头首都添加数据包的长度。

如果使用 netty 的话,就有专门的编码器和解码器解决拆包和粘包问题了。

tips:UDP 没有粘包问题,但是有丢包和乱序。不完整的包是不会有的,收到的都是完全正确的包。传送的数据单位协议是 UDP 报文或用户数据报,发送的时候既不合并,也不拆分。

27、你对 HTTP 状态码有了解吗?

1. 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。

2. 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。

2. 401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。

2. 503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

28、HTTP 状态码 301 和 302 代表的是什么?有什么区别?

301,302 都是 HTTP 状态的编码,都代表着某个 URL 发生了转移。

Forward 和 Redirect 代表了两种请求转发方式:直接转发和间接转发。

直接转发方式(Forward):客户端和浏览器只发出一次请求,Servlet、HTML、JSP 或其它信息资源,由第二个信息资源响应该请求,在请求对象 request 中,保存的对象对于每个信息资源是共享的。

间接转发方式(Redirect):实际是两次 HTTP 请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个 URL 发出请求,从而达到转发的目的。

直接转发就相当于:“A 找 B 借钱,B 说没有,B 去找 C 借,借到借不到都会把消息传递给 A”;

间接转发就相当于:"A 找 B 借钱,B 说没有,让 A 去找 C 借"。

客户端发送的 请求报文 第一行为请求行,包含了方法字段。

1. GET:获取资源,当前网络中绝大部分使用的都是 GET;

2. HEAD:获取报文首部,和 GET 方法类似,但是不返回报文实体主体部分;

4. PUT:上传文件,由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。

5. PATCH:对资源进行部分修改。PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。

8. TRACE:追踪路径。服务器会将通信路径返回给客户端。发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪)。

GET 和 POST 本质都是 HTTP 请求,只不过对它们的作用做了界定和适配,并且让他们适应各自的场景。

本质区别:GET 只是一次 HTTP请求,POST 先发请求头再发请求体,实际上是两次请求。

1. 从功能上讲,GET 一般用来从服务器上获取资源,POST 一般用来更新服务器上的资源;

2. 从 REST 服务角度上说,GET 是幂等的,即读取同一个资源,总是得到相同的数据,而 POST 不是幂等的,因为每次请求对资源的改变并不是相同的;进一步地,GET 不会改变服务器上的资源,而 POST 会对服务器资源进行改变;

3. 从请求参数形式上看,GET 请求的数据会附在 URL 之后,即将请求数据放置在 HTTP 报文的 请求头 中,以 ? 分割 URL 和传输数据,参数之间以 & 相连。特别地,如果数据是英文字母/数字,原样发送;否则,会将其编码为 application/x-www-form-urlencoded MIME 字符串(如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用

4. 就安全性而言,POST 的安全性要比 GET 的安全性高,因为 GET 请求提交的数据将明文出现在 URL 上,而且 POST 请求参数则被包装到请求体中,相对更安全;

5. 从请求的大小看,GET 请求的长度受限于浏览器或服务器对 URL 长度的限制,允许发送的数据量比较小,而 POST 请求则是没有大小限制的。

32、在浏览器中输入 URL 地址到显示主页的过程?

1. DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地址:具体过程包括浏览器搜索自身的 DNS 缓存、搜索操作系统的 DNS 缓存、读取本地的 Host 文件和向本地 DNS 服务器进行查询等。对于向本地 DNS 服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询;

2. TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手;

3. 发送 HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求;

4. 服务器处理请求并返回 HTTP 报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

5. 浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

33、DNS 的解析过程?

1. 主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。

2. 本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的 IP 地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,本地域名服务器得到了所要解析的 IP 地址或报错,然后把这个结果返回给发起查询的主机。

34、谈谈你对域名缓存的了解?

为了提高 DNS 查询效率,并减轻服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

由于名字到地址的绑定并不经常改变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项(例如:每个项目两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管理该项的域名服务器绑定信息。当权限服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名解析的正确性。

不仅在本地域名服务器中需要高速缓存,在主机中也需要。许多主机在启动时从本地服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机应当定期地检查域名服务器以获取新的映射信息,而且主机必须从缓存中删除无效的项。由于域名改动并不频繁,大多数网点不需花精力就能维护数据库的一致性。

35、谈下你对 HTTP 长连接和短连接的理解?分别应用于哪些场景?

在 HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web 资源(如:JavaScript 文件、图像文件、CSS 文件等),每遇到这样一个 Web 资源,浏览器就会重新建立一个 HTTP 会话。

而从 HTTP/1.1 起,默认使用长连接,用以保持连接特性。使用长连接的 HTTP 协议,会在响应头加入这行代码

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

Keep-Alive 不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如:Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

1. HTTP1.0 经过多年发展,在 1.1 提出了改进。首先是提出了长连接,HTTP 可以在一次 TCP 连接中不断发送请求。

2. 然后 HTTP1.1 支持只发送 header 而不发送 body。原因是先用 header 判断能否成功,再发数据,节约带宽,事实上,post 请求默认就是这样做的。

3. HTTP1.1 的 host 字段。由于虚拟主机可以支持多个域名,所以一般将域名解析后得到 host。

1. HTTP2.0 支持多路复用,同一个连接可以并发处理多个请求,方法是把 HTTP数据包拆为多个帧,并发有序的发送,根据序号在另一端进行重组,而不需要一个个 HTTP请求顺序到达;

2. HTTP2.0 支持服务端推送,就是服务端在 HTTP 请求到达后,除了返回数据之外,还推送了额外的内容给客户端;

3. HTTP2.0 压缩了请求头,同时基本单位是二进制帧流,这样的数据占用空间更少;

1. 客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了;

2. 服务器从中选出一套加密算法和 hash 算法以及自己的身份信息(地址等)以证书的形式发送给浏览器,证书中包含服务器信息,加密公钥,证书的办法机构;

3. 客户端收到网站的证书之后要做下面的事情:

  • 3.1 验证证书的合法性;
  • 3.2 果验证通过证书,浏览器会生成一串随机数,并用证书中的公钥进行加密;
  • 3.3 用约定好的 hash 算法计算握手消息,然后用生成的密钥进行加密,然后一起发送给服务器。

4. 服务器接收到客户端传送来的信息,要做下面的事情:

  • 4.1 用私钥解析出密码,用密码解析握手消息,验证 hash 值是否和浏览器发来的一致;
  • 4.2 使用密钥加密消息;

5. 如果计算法 hash 值一致,握手成功。

1. 开销:HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费;

2. 资源消耗:HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 ssl 加密传输协议,需要消耗更多的 CPU 和内存资源;

3. 端口不同:HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443;

4. 安全性:HTTP 的连接很简单,是无状态的;HTTPS 协议是由 TSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

2. HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性;

3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

1. HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近 50%,增加 10% 到 20% 的耗电;

2. HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

3. SSL 证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用;

4. SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗;

5. HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。

40、什么是数字签名?

为了避免数据在传输过程中被替换,比如黑客修改了你的报文内容,但是你并不知道,所以我们让发送端做一个数字签名,把数据的摘要消息进行一个加密,比如 MD5,得到一个签名,和数据一起发送。然后接收端把数据摘要进行 MD5 加密,如果和签名一样,则说明数据确实是真的。

41、什么是数字证书?

对称加密中,双方使用公钥进行解密。虽然数字签名可以保证数据不被替换,但是数据是由公钥加密的,如果公钥也被替换,则仍然可以伪造数据,因为用户不知道对方提供的公钥其实是假的。所以为了保证发送方的公钥是真的,CA 证书机构会负责颁发一个证书,里面的公钥保证是真的,用户请求服务器时,服务器将证书发给用户,这个证书是经由系统内置证书的备案的。

42、什么是对称加密和非对称加密?

对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方。

非对称加密指使用一对非对称密钥,即:公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性。但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

}

第一章 第一节 手与数的认识
1
食指 中指 无名指 小指四个手指叫群指。
2
数字的认识:数字又称数码,用于记数的符号,计算用的阿拉伯数字,共有10个,它们是0 1 2 3 4 5 6 7 8 9第二节 手指表示数的规定
1
拇指表示5,即一个拇指相当于一只手的手指数,其余群指一个均表示1
2
左手表示十位,右手表示个位。 第三节 数的组成及运算
2
学习凑数 补数 齐数 翻数 尾数 凑数:两数之和等于5,称这两数互为凑数。 齐数:将10 100 1000……..的数叫齐数
补数:两数之和等于齐数就称这两数互为补数,将两数之和等于10的数称一位补数。 翻数:将原屈的手指伸,伸的变屈,称翻手。翻手所得的数,称原数的翻数。特点,两数之和为9
尾数:小于10,超过5的数,都可以分成5和了另一个数,把该数与5相减所得的数叫做该数的尾数。因该数由拇指和群指组成,将拇指去掉,只剩群指(尾)所以叫尾数。 第四节 直接加法 直接减法
1
直接加法定义:两数相加,加数在手上可直接伸出得的和。 运算程序: 直接加法真容易 加几手指伸出几
2
直接减法定义:两数相减时,减数可直接减得到差。 运算程序: 直接减法真容易 减几手指屈回几
8-3= 19-7= 第五节:伸拇屈凑加法 屈拇伸凑减法
1
伸拇屈凑加法:两数相加时,加数在手上不能直接伸出,要伸出拇指(加5)与群指调换才能得出和,此类加法为伸拇屈凑加法。 运算程序: 直加群指若不够 伸出拇指减去凑
1
伸拇屈4 2伸拇屈3 3伸拇屈2 4伸拇屈1
2
屈拇伸凑减法:两数相减,减数小于5而大于被减树的尾数时,要先屈回拇指(减5),再将多减去的数加在手上,多减去的数正是减数的凑数,即伸出凑数。 运算程序: 直减群指若不够 屈回拇指加上凑
1
屈拇伸4 2屈拇伸3 3屈拇伸2 4屈拇伸1
1
1屈补加法:两数相加,只用右手上的手指不足时,就用向左手进1(加10),右手减去加数补数的方法来计算。当补数可以直接从右手上减去时,即称进1屈补加法。 运算程序: 直加手指若不足 21屈拇伸尾加法:两数相加,直接用右手加手指不够时,在向左手进1减去补数时,必须和拇指调换才能减去补数,称该类加法为进1屈拇伸尾加法。

运算程序: 1无法直屈补 伸尾同时屈回拇
6
1屈拇伸1 71屈拇伸2 81屈拇伸3 91屈拇伸4
1
退1伸补减法:两数相减,右手上手指表示的数比减数小时,就将左手退1(减10),右手加上减数的补数。当补数可以直接加到右手上时,即称直接退1伸补减法。 运算程序: 直减右手若不够 3 退1伸拇屈尾减法:两数相减,当左手退1,将补数加在右手上时,需用伸拇指调换才能加上补数,称该类减法为退1伸拇屈尾减法。 运算程序: 退1 无法直伸补 屈尾同时伸出拇
6
退1伸拇屈1 7退1伸拇屈2 8退1伸拇屈3

第二章 第一节 不进位两位树加法 不退位两位数减法
1
不进位两位数加法:两数相加,十位个位都不进位的加法。 运算程序: 十位加起分两手 十位加左个加右
2
不退位两位数减法:两数相减,十位个位都不退位的减法。 运算程序: 十位减起分两手 十位减左个减右
86-23= 56-32= 第二节 任意两位数加法 任意两位数减法
1
任意两位数加法运算程序; 高位加起分两手 十位加左个加右 左手满十用脑记 右手满十左加1
2
任意两位数减法运算程序; 高位减起分两手 十位减左个减右 左手不够百位借 右手不够借左手
1
两位数混合运算程序: 十位加(减)左 个加(减)右
1
一百元与整元数的找零 运算程序:用钱多少手算出 左手报屈右报补
100
元钱,买钢笔28元,买本子26元,买文具盒17元,应找回多少钱?
2
一百元与角分找零的手算 运算程序: 高位减起逐位算 算哪位用手示出 报出屈后再下位 最后一位报补数
100
元钱买5763分的商品,应找多少钱?

    准备:教师在带读以下口诀并做相关手指游戏前,需发出口令“清零”,幼儿马上双手击掌,然后紧握双拳在胸前,聚精会神做好准备。(注意:手心朝里,两拳间隔距离以方便双手出指为准,既不要太近,也不要太远。)

右手定个位,从一数到九;加减很方便,计算不用愁。

六畜兴旺,七上八下,八仙过海,九牛一毛,十万火急。

六神无主,七上八下,八面玲珑,九牛一毛,十全十美。

   (注:念到“十万火急”或“十全十美”时,右手握拳,左手出“1”,代表进位。)

   (注:念到“一百”时,双手击掌,然后紧握双拳在胸前。)

   (注:根据各年龄段幼儿认知水平,选择出数的大小。)

注意:在做加法练习时,比如“3+5”,右手先出“3”,“+5”的过程是:嘴里念“加1”,出小拇指;嘴里念“加2”,四指一提伸大拇指(注意在出指的过程中大拇指只代表“1”,只有在定数的时候,大拇指才当成“5”);嘴里念“加3”,出食指;嘴里念“加4”,出中指;嘴里念“加5”,出无名指。此时开始定数,右手手指只有小拇指未打开,结果即为“8”。

3)一百以内加法混合练习

    减法很简单,小指开始减,退位要记住,指法要熟练。

在加法中注意四十九和一百的进位方法,在减法中注意百位和五十的退位方法。

一、个位数字的和为十,其他各位数字相同的两个数的速算方法。个位前的数字加1乘自己的积的末尾添上个位上的数字的积。如:56×54 5166×530,在30的末尾添上个位上的数46的积24,得到3024,这样56×543024。再如:61×69 61×6421×99,当个位上的数相乘的积是一位数时,仍要占两位,故在9的前面还应添一个0。故61×694209 二、十位相同,个位数字和不为10的两位数乘两位数的速算方法。
用一个数加上另一个数的个位上的数,乘以由十位上的数字组成的整十数,再加上个位上两个数的积。例如:53×54=(534×503×457×50122850122862
三、个位上的数字相同,十位上的数字和为10的两个两位数相乘的速算方法,十位相乘加个位,末尾添上个位积。(个位积不足两位,积前添0补足两位),例如:24×84 十位相乘加个位:2×8420,个位积是:4×416,故24×842016。练习:35×75 17×97 48×68 四、各位数字和为10的两位数,与各位数字相同的两位数相乘的速算方法。
数字和为10的两位数的十位加1乘以各位相同的两位数的十位的积的末尾添上两个个位数的积。(个位积不足两位添0补足两位)如:46×33 数字和为10的两位数的十位加1乘以各位相同的两位数的十位的积:(41×315,个位数字的积为:3×618,故46×331518
五:个位上的数和为10,十位上的数相差1的两个两位数相乘的速算方法。大数十位上的数乘10后的平方减去大数个位数的平方。如:46×34=(4×10×4×10)-6×61600361564

两位数乘法速算口诀 一般口诀:首位之积排在前,首尾交叉积之和十倍再加尾数积。如37x64=+7x6)x10=2368 1、同尾互补,首位乘以大一数,尾数之积后面接。 如:23×27=621 2、尾同首互补,首位之积加上尾,尾数之积后面接。87×27=2349 3、首位差一尾数互补者,大数首尾平方减。如76×64=4864 4、末位皆一者,首位之积接着首位之和,尾数之积后面接。如:51×21=1071------- “几十一乘几十一”速算 特殊:用于个位是1的平方,如21×21=441 5、首同尾不同,一数加上另数尾,整首倍后加上尾数积。23×25=575 1)首位皆一者,一数加上另数尾,十倍加上尾数积。17×19=323---- “十几乘十几”速算 包括了十位是1(即11~19)的平方,如11×11=121---- “十几平方”速算 2)首位皆二者,一数加上另数尾,廿倍加上尾数积。25×29=725----“二十几乘二十几” 速算 3)首位皆五者,廿五接着尾数积,百位再加尾数之和半。57×57=3249----“五十几乘五十几” 速算 4)首位皆九者,八十加上两尾数,尾补之积后面接。95×99=9405----“九十几乘九十几” 速算 5)首位是四平方者,十五加上尾,尾补平方后面接。46×46=2116---- “四十几平方”速算 6)首位是五平方者,廿五加上尾,尾数平方后面接。51×51=2601---- “五十几平方”速算 6、互补乘以叠数者,首位加一乘以叠数头,尾数之积后面接。37×99=3663 7、末位是五平方者,首位加一乘以首,尾数之积后面接。如65×65= 4225---- “几十五平方”速算 8、某数乘以一一者,首尾拉开,首尾之和中间站。如34×11=3 3+4 4=374 9、某数乘以十五者,原数加上原数的一半后后面加个0(原数是偶数)或小数点往后移一位。如151×15=2265246×15 =3690 10、一百零几乘一百零几,一数加上另数尾,尾数之积后面接。如108×107=11556 11、俩数差2者,俩数平均数平方再减去一。如49x51=50x50-1=2499 12、几位数乘以几位九者,这个数减去(位数前几位的数+1)的差作积的前几位,末位与个位补足几个01)一个数乘9:这个数减去(个位前几位的数+1)的差作积的前几位,末位与个位补足10 4×9=36 想:个位前是0, )一个数乘999:可以依照上面的方法进行推理:这个数减去(百位前几位的数+1),末三位凑×99911234-11+1)=11222,末三位是=766

81上面的口诀小朋友们已经会了吗?小学一年级可能只学了加法,二年级第一学期数学就要学乘法口诀了。其实很多家长可能在小朋友没上学时就教会了上面的口诀了。但是小朋友有没有再细看一下上面的口诀有什么特点呢?从上面的口诀口有没有看到从19任何一个数和9相乘的积,个位数和十位数的和还是等于9。你看上面的:0 9,或许小朋友们会问,发现这个秘密有什么用呢?我的回答是很有用的。这是锻炼你们善于观察、总结、找出事物规律的基础。下面我们再做一些复杂一点的乘法:  ?关于两位数的乘法,可能要等到3年级才能学到,但小朋友是不是看到了上面的题目中,前面的乘数都是9的倍数,而且个位和十位的和都等于9。这样我们能不能找到一种简便的算法呢?也就是把两位数的乘法变成一位数的乘法呢?我们先把上面这些数变一变。18 = 1 × 10 + 9,当然如果知道口诀你们可以直接把18 = 2 × 9,这里主要是为了让小朋友学会把一个数拆来拆去的方法。同样的方法你们可以拆出下面的数,也可以背口诀,你们自己回去练习吧。27 = 3 × ,81 = 9 × 9 ,为了找到计算上面问题的方法,我们把上面的式子再变一次。18 = 2×(10-1);27 = 216,是不是把一个两位数的乘法变成了一位数的乘法?而且可以通过口算就得出结果?小朋友们可以自己试一试吗?我用这种方法教威威算乘法,他只需要我算这一个,后边的题目就自己会算了。上面我们的计算好象很麻烦,其实现在总结一下就简单了。看下一个题目: 27 × 12 = 972,我们再看看上面的计算结果,小朋友发现什么了吗?,我们把一个两位数乘法变成了一位数的乘法。其中一个乘数的个位和十位的和等于9,这样变化以后的数中一位数的那个乘数,都是正好比前面的乘数大1。而后面的一个两位数也有一个特点,就是一个连续数(12),12是连续的。能不能找到一种更简便的计算方法呢?为了找到一种更简便的算法。我在这里给小朋友引入一个新的名词——补数。什么是补数呢?因为这个名词很简单,所以就算是幼儿园的小朋友也很快会明白的。,1 10;从上面的几个加法可见,如果两个数的和等于10,那么这两个数就互为补数。,也就是说19为补数,28为补数,37为补数,46为补数,5的补数还是5就不用记了,只要记4个就行了。现在我们再看看上面的计算结果:,拿一个 举例吧,结果的最前面一个数是7(不用管它是什么位),是不是正好等于第一个乘数(63)中前面的数加1  6 + 1 = 7,结果的后两位怎么算出来的呢?如果拿这个7去乘后面那个乘数(12)的最后一位的补数(8)会是什么? 7 × 8 = 56呵呵,我们现在不用再分解了,只要把第一个乘数(63)中前面的数加1就是结果的最前面的数,再把这个数乘以后面那个乘数(12)的最后一位的补数(8)就得到结果的后两位。这样行吗?如果行的话,那可真是太快了,真的是速算了。试一试其他的题: ——结果最前面的数2去乘第二个乘数(12)的后面的数(2)的补数(8):2×8=16结果就是 216。看一看上面对吗? 27 × 972,计算结果是不是和上面的方法一样?小朋友从结果中还能看出什么?,是不是计算结果的三位数的和还是等于9或者是9的倍数?自己算一下看是不是?,看我这篇文章的小朋友,下面我给你们出几个题,看你们掌握了方法没有。
,通过这个题目,我主要是为了让小朋友能从一个题目中举一反三,举一反十,从中发现规律性的东西。这样不需要做太多的题目就可以快速掌握数学的加、减、乘、除运算。上面的题目如果再扩展一下,把后面的连续数扩大到多位数。,如:123234345234534567123456、等等,看一看有没有什么运算规律,或许你们都能找出快速的计算方法。
 这样的题目你们用口算就能快速计算出结果来。  我相信只要不断总结科学的方法,个个小孩都是天才!如果不能找到方法,我明天再帮你们寻找速算的方法

一、两首位相同,两尾数和是10的两位数乘法,(被乘数首位加1),然后两首位相乘得一积,两尾数相乘再得一积,两积连起来就是所求之积。例如: 72 63 84× 78 × 95 ×95=9025二、两位数相同,两尾数和不等于10的两位数乘法,首先两尾数相乘得一积,然后两尾数之和与被乘数的首位相乘又得一积,最后两首位相乘(首位数的平方)再得一积,三积连加起来即为所求之积。例如52 61 73× 53 × 62 × 745402,注:两位数的平方尾数不是5的亦可用此法。如: 22 66× 22 × 66484 4356三、被乘数首尾相同,乘数首尾和是10的两位数乘法:(乘数首位加1)然后两尾数相乘得一积,两首位再相乘又得一积,最后两积相连就是所求之积。如: 22 44 88× 418 四、两首位和是10,两尾数相同的两位数乘法,首先两尾数相乘得一积,两首位相乘之积再加上一个相同的尾数,又得一积,两积连来就是所求之积。如: 26 76 47× 86 × 35 × 6749五、两首位相差是1,两尾数和是10的两位数乘法 85×75=6375六、任意两位数乘法:(十字相乘法或对角线相乘法)首先用十字相乘法得和数(被乘数首位与乘数尾数相乘之积加上被乘数尾数与乘数首位数相乘之积)加上两首位数相乘与两尾数相乘之积。如: 43×85=3655七、三位数乘法,首位和中间数相同,尾数之和等于10的三位数乘法,首先两尾数相乘得一积,(给被乘数中加1)再两中位相乘又得一积。然后两中位数相加再和被乘数首位相乘得一积,最后两首位相乘得一积,四积连起来就是所求之积。112×118=13216112× 11813216,八、任意数与11相乘:任意数与11相乘,在计算的过程中:首尾数字不变然后两相邻数相加,满十向前进一。如:12468×11=13714825124×11=276364
九、999999等与任意数相乘:即首先找出任意数的补数(两个数之和为10,这两个数互为补数),然后将补数连在999999等数末位,最后由所得新数最高位减去补数,就是所求之积。如:999×999=998001

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请。

}

我要回帖

更多关于 2468四个数字相乘积最大最小是多少 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信