前端面试题(网络协议相关)

网络协议相关

浏览器缓存命中

Etage LastModified If-modified-Since和If-None-Match
1.用户第一次向服务器请求资源的时候,服务器直接返回资源以及状态码200,浏览器缓存资源
2.第二次请求相同资源的时候,会比较出和上一次返回200的请求的时间差,如果大于cache-control
中max-age的值,如果没有超过就命中强缓存,直接从缓存拿资源
3.如果超过,就向服务器发送header带有If-None-Match和If-Modified-Since的请求,服务器会根据Etag的
值判断资源有没有被修改,如果不一样就被修改了,则返回200及资源,如果一致就没被修改,就命中协商缓存返回304;浏览器看到304就从本地加载资源

TCP/UDP

三握手 四次挥手 TCP如何保证可靠传输
三次握手:
1.客户端TCP向服务端TCP发送一个请求报文SYN=1(SYN就表示这是一个连接请求),seq=x
2.服务端的TCP接受到请求报文后,如果同意建立连接,就向客户端发回确认,并为该TCP的连接分配TCP
缓存和变量。这个确认报文中SYN和ACK都被置为1,确认号ack的值为x+1,然后服务器产生起始序列号seq=y
3.客户端收到服务端的确认报文后,也向服务端给出确认,并给连接分配缓存和变量。ACK置为1,seq=x+1,
ack=y+1
四次挥手:
1.客户机打算关闭连接,就会向服务端TCP发送FIN=1终止位,以及seq序列号
2.服务器收到关闭请求之后,返回ACK=1 确认关闭,以及seq序列号v 确认号u+1。
3.向客户端发起自己这一方的终止请求FIN=1,ACK=1,seq=w,ack=u+1
4.客户机收到请求之后返回ACK=1,seq=u+1,ack=w+1
TIME_WAIT:如果客户机收到服务器的终止请求后,返回确认断开的请求后,里面关闭连接的话,如果这个确认 请求没有被传达,那么服务器可能要重新请求,而这个时候客户机已经关闭了 收不到请求了。那么服务器可能
会响应RST(表示目标服务器崩溃了,必须释放再重新连接)。
TCP如何保证可靠连接:
比如当发送方向接收方发送序号为1,2,3,4,5的报文段,二号报文在传输过程中丢失了,接受收到了1,3,4,5接收方期望收到的是2号报文段,那么345就是冗余报文,这个时候接收方就会向发送方发三个对1号报文的冗余ACK。这时发送方就知道了,2号报文没有传达,立马重传

Http1.0 Http1.1 Http2.0 Http3.0

http1.0 1.1
1.缓存处理方面,Etag cache-control 提供了更多的缓存控制方式
2.长连接 http1.1支持长连接,这样就不用每次建立新的连接消耗的三握四挥
3.错误通知状态码 410:服务器中某个资源被永久删除 409:请求资源与当前资源发生冲突

http1.1 2.0
1.采用二进制格式,http1.x是基于文本的表现形式多种多样,2.0是基于二进制的,方便且健壮
2.多路复用:连接共享,通过给request请求设置唯一的id,映射对应服务器。来实现多个请求在一个连接上执行
3.encode header : 双方都备一份,header头的编码,然后每次发送只发送编码,在通过表格解析
4.pushServer

http2.0 http3.0
3.0 谷歌决定在UDP基础上改造一个具备TCP协议优点的新协议
1.更加彻底的解决了线头阻塞(HOL)问题:tcp一旦出现丢包同样会阻塞后面的请求。
然而QUIC在一条链接上可以有多个流,流与流之间是互不影响的
2.更低的时延1RTT 0RTT Round-Trip Time
3.改进的拥塞控制
QUIC主要实现了TCP的慢启动、拥塞避免、快重传、快恢复。在这些拥塞控制算法的基础上改进,例如单调递增的 Packet Number,解决了重传的二义性,确保RTT准确性,减少重传次数。
4.连接迁移 使用64位的随机数作为连接的ID,并使用该ID表示连接。

QUIC如何保证可靠链接
1.改进的拥塞控制
2.继承了TCP的优点(拥塞控制 流量控制 tcp保证可靠的方式)

输入url到页面出来的过程

1.url地址解析,地址补全
2.DNS解析
1).查找自身有没有解析过这个地址,如果有命中缓存
2).如果没有找操作系统中的缓存,如果还没有就解析本地host文件
3).还没找到,就请求正真的LDNS(本地域名服务器来解析这个域名)
4).依然没有,就直接跳到Root Server 域名服务器请求解析,根域名服务器返回一
个地址(gTLD Server,国际顶尖域名服务器,如.com .cn .org等)给LDNS,LDNS将域名发送给这个地址,就能查出来。
3.TCP建立连接
4.获取资源后
5.html代码生成dom树和css树,一起生成render tree ,渲染页面

https

tsl ca验证
1.客户机向服务器发起https请求
2.服务器返回ca证书
3.客户机验证ca证书,如果没问题就随机生成密钥,通过证书里面的公钥进行加密,发送给服务端
4.服务器通过自己的私钥解密。
5.他们就通过这个对称的密钥进行密文传输

ca验证:
证书包含:机构名,明文,证书签名用过的hash算法,公钥,数字签名(通过hash算法加密之后生成摘要,再私钥加密生成的)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值