Java计算机⽹络⾯试题及其答案
1.计算机⽹络的性能
我们所说的计算机⽹络的性能⼀般指的是它的七个重要的性能指标:
1) 速率:就是数据传输的速率,单位bit
滑槽导轨2) 带宽:在计算机⽹络中,带宽⽤来表⽰某通道传输数据的能⼒,⽹络带宽表⽰在单位时间内⽹络中的某信道所能通过的“最⾼数据率”。
3) 吞吐量:它表⽰在单位时间内通过某个⽹络的实际的数据量。
4) 时延:指数据从⽹络的⼀端传送到另⼀端所需的时间。
总时延=发送时延+传播时延+处理时延+排队时延
其中发送时延是主机或路由器发送数据桢所需要的时延,传播时延是电磁波在信道中传播⼀定的距离需要花费的时间,处理时延是主机或路由器在收到分组时要花费⼀定的时间进⾏处理,排队时延是主机在经过⽹络传输时,要经过许多路由器,但分组在进⼊路由器后要先在输⼊队列中排队等待处理。
5) 时延带宽积:顾名思义就是 传播时延*带宽
6) 往返时间RTT
7) 利⽤率:它有信道利⽤率和⽹络利⽤率两种。 信道利⽤率指出信道有百分之⼏的时间是被利⽤的。 ⽹络利⽤率则是全⽹络的信道利⽤率的加权平均值。
2.计算机⽹络体系结构
应⽤层:它的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。 应⽤层协议定义的是应⽤进程间通信的和交互的规则。 对于不同的⽹络应⽤有不同的应⽤层协议,例如万维⽹的HTTP协议,电⼦邮件的SMTP协议等等。(注意,我们把应⽤层交互的数据单元称为报⽂(message))
运输层:它的任务就是负责两台主机中进程之间的通信提供通⽤的数据传输服务。它主要有两个协议:UDP和TCP协议。
⽹络层:负责为分组交换⽹上的不同主机提供通信服务,在发送数据时,⽹络层把运输层产⽣的报⽂段或⽤户数据报封装成分组(或包)。在TCP/IP体系中,由于⽹络层使⽤的是IP协议,因此分组也可以叫IP数据报(简称数据报)。⽹络层的另⼀个任务就是到合适的路由,使源主机运输层所传下来的分组能够通过⽹络中的路由器到⽬标主机。
3.>UDP / TCP 协议
答:这两个协议是TCP/IP体系结构中的运输层协议, 运输层的任务就是负责向两台主机中进程(程序)之间的通信提供通⽤的数据传输服务,应⽤程序利⽤该服务传送应⽤层的报⽂(应⽤层交互的数据单元)。
1) UDP中⽂名叫⽤户数据报协议。当使⽤它来传送数据之前主机间不需要先建⽴连接,远地主机的运输层在接收到UDP报⽂后也不需要给出任何确认。 简单来说就是不可靠传输。(优点:开销⼩,可⼴播)
2) TCP中⽂名叫传输控制协议。 它与UDP不同,它为主机间提供了可靠的传输,在使⽤它传送数据之前必须先建⽴连接,在数据传输结束后释放连接,这样的话它就能保证实现点对点通信。(缺点:开销⼤)
在实际的应⽤中我们可以根据场景来选择那种协议,例如:
4.三次握⼿
答:我们都知道TCP是⾯向连接的协议,TCP运输连接有三个阶段:建⽴连接,数据传送,释放连接。
1) TCP建⽴连接的过程叫做握⼿,⽽握⼿需要在客户端和服务器之间交换三个报⽂段,所以有了三
次握⼿的叫法。具体的过程是这样的:我们假定主机A运⾏的是客户程序,B运⾏的是服务器程序,开始A,B的TCP进程都处于关闭状态。
⼀开始,B的TCP服务器进程先创建传输控制块TCB,然后进⼊监听准备接受客户进程的连接请求。 (其中TCB存储了每⼀个连接中的⼀些重要的信息,如:TCP联结表,指向发送和接受缓存的指针,指向重传队列的指针,当前发送和接受序号等等).
同样A的TCP客户进程也是⾸先创建TCB,然后在打算建⽴TCP连接时向B发出连接请求报⽂段,报⽂段的⾸部中的同步位SYN=1,同时选择⼀个初始序号seq=x.(因为TCP规定SYN=1的报⽂段不能携带数据,但要消耗掉⼀个序号),这时TCP客户进程进⼊同步已发送状态。
然后B收到连接请求报⽂段后,如果同意建⽴连接,它会向A发送确认报⽂(确认报⽂中的SYN和ACK位都置为1,确认号为ack=x+1,同时也为⾃⼰选择⼀个初始序号seq=y,同样,它不能携带数据且要消耗掉⼀个序号),发送后TCP服务器进程进⼊同步收到状态。
然后TCP客户进程收到B的确认后,还要向B给出确认。确认报⽂段的ACK置为1,确认号ack=y+1,⽽⾃⼰的序号seq=x+1(TCP的标准规定,ACK报⽂段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下⼀个数据报⽂段的序号仍是seq=x+1.)这时,TCP 的连接已经建⽴,A进⼊已建⽴连接状态。
当B收到A的确认后,也进⼊已建⽴连接状态。
上⾯的建⽴连接过程就叫三次握⼿。⽤图形象的表⽰就是:
注意:在上图中的B发送给A的报⽂段,也可拆成两个报⽂段。可以先发送⼀个确认报⽂段(ACK=1,ack=x+1),然后再发送⼀个同步报⽂段(SYN=1,seq=y)这样的过程就变成了 四次握⼿,但效果⼀样。
5.Socket
在计算机⽹路中:
47的原码怎么算每⼀条TCP连接有两个端点,⽽这个端点就叫套接字(socket),根据RFC 793的定义:端⼝号拼接
到IP地址即构成了套接字。例如:若IP 地址是192.3.4.5⽽端⼝号是80,那么得到的套接字就是(192.3.4.5:80) 故 套接字socket = (IP地址:端⼝号)
每⼀条TCP连接唯⼀地被通信两端地两个端点所确定,即是:
java常见笔试题TCP连接::={socket1,socket2}
但随着互联⽹地不断发展和技术进步,socket被赋予了额外很多意思,例如
1) 允许应⽤程序访问联⽹协议地应⽤程序接⼝API
2) 在socketAPI中有⼀个函数名也叫socket
3) 调⽤socket函数时,其返回值称为socket描述符,可简称为socket
4) 在操作系统内核中联⽹协议地Berkeley实现,也称为socket实现
注意:RFC是互联⽹标准⽂档。
6. tcp time wait,tcp还有哪些状态(主机名称参照前⾯三次握⼿题⽬)
网上上课平台免费webgl和canvas性能比较答:TCP 的TIME-WAIT状态是出现在TCP的连接释放过程中的,具体是这样的:
当数据传输结束后,通信的双⽅在未释放连接时还是处于已建⽴连接状态,现在我们需要释放连接,释放过程如下:
A的应⽤程序先向其TCP连接发出连接释放报⽂段并停⽌发送数据,主动关闭TCP连接。 A把连接释放报⽂段⾸部的终⽌控制位FIN置1,其序号seq=u(它等于前⾯已传送过的数据的最后⼀个字节的序号加1),这时A进⼊FIN-WAIT-1(终⽌等待1)状态,等待B的确认。
vb中str函数然后B收到连接释放报⽂段后⽴即发出确认,确认号是ack=u+1,⽽这个报⽂段的序号是seq=v(等于B前⾯已传送过的数据的最后⼀个字节的序号加1).然后B进⼊CLOSEWAIT(关闭等待)状态。B的TCP服务器进程这时应通知应⽤程序,因⽽从A到B这个⽅向的连接就释放了,这时的TCP连接处于半关闭状态(就是A已经没有数据要发送了,但B如果发送数据,A仍然要接受,换句话说,B到A的连接未关闭)
其次A收到来⾃B的确认后,A就进⼊FIN-WAIT-2(等待终⽌2)状态,等待B发出连接释放报⽂段。
如果B没有要向A发送的数据,其应⽤程序就会通知TCP释放连接,这时B发出的连接释放报⽂段必须让FIN=1。现在假定B的序号为w,B 还必须重复上次已发送过的确认号ack=u+1.这时B进⼊LAST-ACK(最后确认)状态,等待A的确认。
然后A在收到B的连接释放报⽂段后,必须对此发出确认。在确认报⽂段中把ACK置1,确认号ack=w+1,⽽⾃⼰的序号是seq=u+1,然后进⼊TIME-WAIT(时间等待)状态。 这时TCP连接还没被释放掉,必须经过时间等待计时器设置的时间2MSL(最长报⽂段寿命,RFC 793建⽴2分钟)后,A才进⼊到CLOSED状态 。
⽤图形象的表⽰为:
7.HTTP状态码
状态码都是三位数字,分为5类,这5类的状态码都是以不同的数字开头的:
1XX表⽰通知消息,如请求收到了或者正在进⾏处理
2XX表⽰成功
3XX表⽰重定向,如要完成请求还必须采取进⼀步的⾏动
4XX表⽰客户的差错,如请求中有错误的语法或者不能完成
5XX表⽰服务器的差错,如服务器失效⽆法完成请求
(具体的请⾃⾏百度学习)
8.HTTP协议
HTTP是⼀个应⽤层协议,它使⽤TCP连接进⾏可靠的传送。它定义了浏览器怎样向万维⽹服务器请求万维⽹⽂档以及服务器怎样把⽂档传送给浏览器,从层次的⾓度看,HTTP是⾯向事务的应⽤层协议,它是万维⽹上能够可靠地交换⽂件的重要基础。(注意HTTP不仅传送完成超⽂本跳转所必须的信息,⽽且也传送任何可以从互联⽹上得到的信息,如⽂本,超⽂本,声⾳和图像等)。
万维⽹的⼤致⼯作过程如图:
那么它是如何通过TCP进⾏通信的呢?
每个万维⽹⽹点都有⼀个服务器进程,它不断地监听TCP的端⼝80,以便发现是否有浏览器向它发出连接建⽴请求,⼀旦监听到连接建⽴请求并通过TCP建⽴连接后,浏览器就可以向万维⽹服务器发出浏览某个页⾯的请求,服务器接着就返回所请求的页⾯作为响应。 最后TCP连接就被释放了。
HTTP⽆状态含义:HTTP协议本⾝是⽆连接的,虽然HTTP使⽤了TCP连接,但是通信双⽅在交换HTTP报⽂之前不需要建⽴HTTP连接。也就是说,同⼀个客户第⼆次访问同⼀个服务器上的页⾯时,服务器的响应和第⼀次访问是⼀样的(因为服务器并不记得曾经访问过的这个客户,也不记得该客户曾经服务过多少次),正是因为这个原因,往往会造成很多不必要的开销。
我们先来粗略的估计⼀下⼀次请求完成需要的时间:⽤户在点击⿏标链接到某个万维⽹⽂档时,HTTP
协议⾸先和服务器建⽴TCP连接(这需要三次握⼿ ,需要花费时间),然后进⾏传输HTTP报⽂:
从图中可以看出请求⼀个万维⽹⽂档所需的时间是该⽂档的传输时间加两倍的往返时间RTT(这就是不必要的开销)
好在在HTTP/1.1中较好的解决了这个问题,它使⽤了持续连接,就是万维⽹服务器可以继续在发送响应后仍然在⼀段时间内保持这条TCP 连接,使同⼀个客户和该服务器可以继续在这条连接上传送后续的数据传输。 其中持续连接有两种⼯作⽅式:⾮流⽔线⽅式和流⽔线⽅式,⾮流⽔⽅式的特点是客户在收到前⼀个响应后才能发出下⼀个请求。 流⽔⽅式的特点是客户在收到HTTP的响应报⽂之前就可以接着发送新的请求报⽂。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论