网络-常见的面试- 高频-1

1.TCP三次握手机制是什么?为什么三次?

三次握手是确保服务端发出的消息,客户端能收到。目的是确认自己和对方的发送和接收都是正常的,从而保证了双方能够进行可靠通信。第三次握手可以携带数据。

若采取两次握手的话,当第二次握手后就建立连接的话,此时客户端知道服务器能够正常接收到自己发送的数据,而服务器并不知道客户端是否能够收到自己发送的数据。

如果没有第三次握手告诉服务端,客户端已经收到了服务端传输的数据的话,服务器端的端口就会一直开着,等到客户端因超时重新发出请求时,服务器端就会重新开启一个端口连接。长此以往,这样的端口越来越多,就会造成服务器开销的浪费。

总结:如果没有第三次握手,由于第二次的握手过程中数据可能存在丢失问题,导致客户端没有收到,但是服务器端以为客户端收到了,实际上客户端没有收到,因此客户端就在一直等服务器发送数据,如果超时,就会重新发起新的三次握手连接请求。但是服务端在第二次握手完成后,即服务端发送完报文后,它以为客户端能够接收到自己发送的报文段,它以为他们之间已经建立了连接,所以就一直在等客户端发送数据,导致整个过程循环,由于客户端在不停的创建连接,服务端的会一直打开新的端口,长此以往,这样的端口越来越多,造成服务端资源的浪费。

2.能否简单介绍下HTTP协议中缓存的处理流程?

1.浏览器第一期请求URL,若此资源正常,服务器将返回状态200,并获取存储与缓存相关的属性,用于以后的请求;

2.浏览器第二次请求URL,首先会比较Expires(记录超时时间)的时间与当前请求时间,若未超时,则直接读取缓存,不与服务器交互;

3.若已经超时或缓存失效,浏览器将请求URL。同时带了属性,用于检测文件是否更新;

4.若If-None-Match(即ETag(服务器中此URL对应文件的唯一标识))未改变,且If-Modified-Since(此URL对应文件在服务器的最近更新时间)该事件之后文件未被修改过,则服务器仅返回状态304,意思就是,不用更新,从缓存中拿。这样做的好处是,不用重复传输文件内容了,提高了加载速度又确定了文件与服务器一致,另外,也重新计算Expires的值;

5.若If-None-Match值改变,或比较If-Modified-Since时间发现文件被修改,则文件已更新,服务器将重新发出资源,返回和第一次请求流程类似。

3.在地址栏键入URL后,网络世界发生了什么?

1.浏览器拿到网页URL之后,通过DNS服务器找到URL中域名对应的IP地址;

2.拿到IP地址后,即可通过IP地址和默认端口号与对应的服务器建立TCP连接;

3.发送数据(封装过程):

​ 1.**应用层:**为数据加上对应的应用层协议头;

​ 2.**传输层:**将数据分段,标序号,添加端口号;

​ 3.**网络层:**添加IP协议头,源IP,目的IP;

​ 4.**数据链路层:**为数据添加帧头帧尾以及MAC地址。

4.接收数据(解封过程):与封装过程相反;

5.传输完毕后断开TCP连接。

4.使用HTTP长连接有哪些优点?

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来数,较适用长连接。

短连接对于服务器来书管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和宽带。

5.介绍下CLOSE_WAIT状态产生原因

在被动关闭连接情况下,在已经接受到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。

出现大量CLOSE_WAIT的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙于读或者写,没有关闭连接。代码需要判断socket,一旦读到0,断开连接,read返回负,检查一下errno,如果不是AGAIN,就断开连接。

6.服务器的最大并发连接数是多少?

由TCP四元组决定

2^48个

7.TCP和UDP协议如何选择?

TCP与UDP的基本区别

1.基于连接与无连接

2.TCP要求系统资源较多,UDP较少

3.UDP程序结构较简单

4.流模式(TCP)与数据报模式(UDP)

5.TCP保证数据正确性,UDP可能丢包

6.TCP保证数据顺序,UDP不保证

UDP应用场景

1.面向数据报方式

2.网络数据大多为短消息

3.拥有大量Client

4.对数据安全性无特殊要求

5.网络负担非常重,但对响应速度要求高

如何选择

1.要求数据完整,不允许任何错误发生

​ (1)应用层协议开放模式:建议选择tcp

​ (2)应用层协议封闭模式:

​ (a)大量连接

​ 1)长连接

​ a)少量数据传输:优先使用可靠udp传输,

​ b)大流量数据传输:只有在10000连接以下可以考虑tcp,其 他优先使用udp可靠传输

​ 2)短连接

​ a)少量数据传输:使用udp标准模式加入序列号

​ b)大流量数据传输:10000以下考虑tcp

​ (b)有线连接

​ 1)长连接:tcp

​ 2)短连接:tcp

2.允许数据丢包,甚至可以乱序

​ (1)对实时性要求较高的使用udp

​ (2)部分数据允许丢包,部分数据要求完整,部分有实时性要求,使用基于udp协议改造的udp多路可靠传输。

​ (3)部分数据优先传输,部分可丢失数据在规定时效内传输,udp。

8.TLS/SSL协议是怎样保障信息安全的?

1.TLS/SSL数据加密:

(1)对称加密:加密解密使用同一个密钥,这个密钥既能加密又能解密;

(2)非对称加密:加解密使用一对密钥,密钥分公钥和私钥,公钥加密只有私钥能解,私钥加密只有公钥能解。

9.HTTP2协议有哪些优点?

1.二进制传输:HTTP2传输数据量的大幅减少,主要要有两个原因:以二进制方式传输和Header压缩。HTTP2采用二进制格式传输数据,而不是HTTP1中的纯文本形式的报文,二进制协议解析起来更高效。HTTP2将请求和响应数据分割成更小的帧,并且它们采用二进制编码。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。

2.**Header压缩:**在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送;首部表在HTTP2的连续存储区内始终存在,有客户端和服务器共同渐进的更新。

3.**多路复用:**很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也更容易实现全速传输。

4.**服务器推送:**服务器不再是完全被动地响应请求,也可以新建“流”主动给客户端发送消息。当然,客户端也有权利选择是否接收。

5.**提高安全性:**但是不强制加密。

10.TCP连接是怎样保证安全传输的?

1.应用数据被分割成TCP认为最合适发送的数据块;

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

3.TCP给发送的每个包进行编码,接收方对数据包进行排序,把有序数据传送给应用层;

4.校验和:TCP将保持它首部和数据的校验和。这是一个端到端的校验和目的是检验数据在传输过程中的任何变化。如果收到段的校验和有差错,TCP将丢弃这个报文段和不确认收到此报文段;

5.TCP的接收端会丢弃重复的数据;

6.流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用流量控制协议是可变大小的滑动窗口协议;

7.拥塞控制:当网络拥塞时,减少数据的发送。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值