好文档 - 专业文书写作范文服务资料分享网站

2020面试题总结网络篇_一目斋

天下 分享 时间: 加入收藏 我要投稿 点赞

2020面试题总结——网络篇1、http1.0和http1.1的区别。主要是如下的8点:

????可拓展性。缓存。

带宽优化,带来了分块传输。

长连接,HTTP1.1支持长连接(默认开启Connect:keep-alive)和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。消息传递。Host头域。错误提示。内容协商。

????2、TCP三次握手和四次挥手的流程,为什么断开连接要四次,如果握手只有两次,会出现什么。三次握手:

主要流程为:

??第一次握手(SYN=1,seq=x),发送完毕后,客户端进入SYN_SEND状态。第二次握手(SYN=1,ACK=1,seq=y,ACKnum=x+1),发送完毕后,服务器端进入SYN_RCVD状态。

?第三次握手(ACK=1,ACKnum=y+1),发送完毕后,客户端进入

ESTABLISHED状态,当服务器端接收到这个包时,也进入ESTABLISHED状态,TCP握手,即可以开始数据传输。

为什么TCP连接需要三次握手,两次不可以么,为什么?

为了防止已失效的连接请求报文突然又传送到了服务端,因而产生错误。

?客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。

若不采用“三次握手”,那么只要Server发出确认数据包,新的连接就建立了。由于Client此时并未发出建立连接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。

若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立连接。

??四次挥手:

主要流程为:

?第一次挥手(FIN=1,seq=a),发送完毕后,客户端进入FIN_WAIT_1状态。

?第二次挥手(ACK=1,ACKnum=a+1),发送完毕后,服务器端进入CLOSE_WAIT状态,客户端接收到这个确认包之后,进入FIN_WAIT_2状态。

第三次挥手(FIN=1,seq=b),发送完毕后,服务器端进入LAST_ACK状态,等待来自客户端的最后一个ACK。

第四次挥手(ACK=1,ACKnum=b+1),客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入TIME_WAIT状态,等待了某个固定时间(两个最大段生命周期,2MSL,2MaximumSegmentLifetime)之后,没有收到服务器端的ACK,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入CLOSED状态。服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态。

??为什么需要四次挥手:因为TCP连接是全双工的网络协议,允许同时通信的双方同时进行数据的收发,同样也允许收发两个方向的连接被独立关闭,以避免client数据发送完毕,向server发送FIN关闭连接,而server还有发送到client的数据没有发送完毕的情况。所以关闭TCP连接需要进行四次握手,每次关闭一个方向上的连接需要FIN和ACK两次握手。

握手过程如果只有两次,可能会出现已失效的连接请求报文突然又传送到了服务端,因而产生错误。

在三次握手过程中,为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。3、TIME_WAIT和CLOSE_WAIT的区别。

TIME_WAIT表示主动关闭,CLOSE_WAIT表示被动关闭。

TCP协议规定,对于已经建立的连接,网络双方要进行四次挥手才能断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:CLOSE_WAIT和TIME_WAIT。

?TIME_WAIT是主动关闭链接时形成的,等待2MSL时间,约4分钟。一方面是为了把原来的连接里面的重复数据包都已经在网络中消逝。避免老的连接的数据影响新建立的连接(新老连接的IP和端口号相同,新的被称为老的连接到化身)。另一方面,假如客户端回复的ACK丢失,服务端会重发FIN,客户端此时还能接收到FIN,还能再回复一个ACK(此时time_wait会重新计时)(MSL是指一个包的最大存活时间,一般是两分钟。)

另一种对于TIME_WAIT的解释:如果没有TIME_WEIT这个等待,释放的端口可能会重连刚断开的服务器端口,这样依然存活在网络里的老的

?TCP报文可能与新TCP连接报文冲突,造成数据冲突,为避免此种情况,需要耐心等待网络老的TCP连接的活跃报文全部死翘翘,2MSL时间可以满足这个需求(尽管非常保守)!

?CLOSE_WAIT是被动关闭连接是形成的。根据TCP状态机,服务器端收到客户端发送的FIN,则按照TCP实现发送ACK,因此进入CLOSE_WAIT状态。但如果服务器端不执行close(),就不能由

CLOSE_WAIT迁移到LAST_ACK,则系统中会存在很多CLOSE_WAIT状态的连接。此时,可能是系统忙于处理读、写操作,而未将已收到FIN的连接,进行close。此时,recv/read已收到FIN的连接socket,会返回0。

参考链接:TIME_WAIT和CLOSE_WAIT状态区别

4、说说你知道的几种HTTP响应码,比如200,302和404。HTTP响应码主要分为五种:

???1XX:请求处理中,请求已被接收,正在处理。

2XX:请求成功,请求被成功处理。比如200,OK,表示客户端请求成功。

3XX:重定向,要完成请求必须进行进一步处理。比如301,Moved

Permanently,永久重定向,使用域名跳转;302,Found,临时重定向,未登录的用户访问用户中心重定向到登陆界面。

4XX:客户端错误,请求不合符。比如400,BadRequest,客户端请求有语法错误,不能被服务器所理解;401,Unauthrized,请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用;403,Forbidden,服务器收到请求,但是拒绝提供服务;404,NotFound,请求资源不存在,输入了错误的URL。

5XX:服务器端错误,服务器不能处理合法请求。比如500,InternalServelError,服务器发生不可预期的错误;503,ServerUnavailable,服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

??5、当你用浏览器打开一个链接(如:http://www.http://www.wencool.cn/)的时候,计算机做了哪些工作步骤。

计算机的工作主要是将域名解析成ip地址。主机解析域名的顺序依次是:

???浏览器缓存。找本机的hosts文件。路由缓存。

2020面试题总结网络篇_一目斋

2020面试题总结——网络篇1、http1.0和http1.1的区别。主要是如下的8点:????可拓展性。缓存。带宽优化,带来了分块传输。长连接,HTTP1.1支持长连接(默认开启Connect:keep-alive)和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。消息传递。Host头域。错误提
推荐度:
点击下载文档文档为doc格式
3fanj5ydxy0sr9z0p01l1xu1x81ds800o9f
领取福利

微信扫码领取福利

微信扫码分享