文章目录
- 1.TCP三次握手机制是什么?为什么三次?
- 2.能否简单介绍下HTTP协议中缓存的处理流程?
- 3.在地址栏键入URL后,网络世界发生了什么?
- 4.使用HTTP长连接有哪些优点?
- 5.介绍下CLOSE_WAIT状态产生原因
- 6.服务器的最大并发连接数是多少?
- 7.TCP和UDP协议如何选择?
- 8.TLS/SSL协议是怎样保障信息安全的?
- 9.HTTP2协议有哪些优点?
- 10.TCP连接是怎样保证安全传输的?
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.拥塞控制:当网络拥塞时,减少数据的发送。