备战暑期实习------计算机网络10道面试题打卡

 今日语录:耐得住寂寞,才能担得起盛名🌹

小菜鸡备战暑期实习,加油!💪

参考资料:DNS查询forward和redirectTCP粘包图解网络cookie和session


1、谈谈你对ARQ协议的理解?

ARQ协议分为停止等待ARQ协议和连续ARQ协议。

停止等待ARQ:

  • 每发送完一个分组之后就停下来,直到收到对方的确认以后才会进行下一个分组的发送;每次在发送分组的时候会设置一个计时器,如果在规定的时间内没有收到对方的确认,就会进行超时重传

连续ARQ:

  • 可以流水线式的一次性发送多个分组,而不是一个分组一个分组的进行发送,连续ARQ协议主要是基于滑动窗口实现的。

滑动窗口:

  • 一次性的发送多个分组,每收到一个确认窗口就会向前滑动一个分组的大小;滑动窗口采用了累计确认的方式,即对按序到达的最后一个分组来进行确认;如果发生了差错,则进行go-back-n(回退n步)重传,即如果发送方发送了五个分组,而接收方只接受到了前两个分组,第三个分组并没有接受到,那么接收方只能对前两个分组进行累计确认,那么发送方只好再对后三个分组进行重新发送。

2、什么是TCP粘包?造成的原因有哪些?如何解决?

TCP粘包是指发送方所发送的多个数据包粘连成了一个数据包,前一个数据包的尾部接着后一个数据包的头部。

原因:

  • 发送方:使用nagle算法,即将多个小的数据包合并成一个大数据包发送给对端。
  • 接收方:应用层处理数据的速度小于接收方接受数据的速度,造成了数据的缓存

解决办法:

  • 对于发送方可以关闭nagle算法;
  • 对于接收方,需要由应用层来解决:1、可以对每个数据包中的数据加上开始符和结束符;2、表明每个数据包的长度。 

3、forward和direct有哪些区别?

  • 地址栏显示上,forward时地址栏的地址不会发生变化,而redirect时地址栏会发生变化,即显示一个新的地址
  • 效率上,forward效率高,redirect效率低
  • 本质上,forward是服务器的行为,由服务器来进行内部请求的转发;而redirect是浏览器的行为,服务器向浏览器返回一个状态码,浏览器再次请求一个新的地址
  • 次数上,forward请求了一次,redirect请求了两次

4、在浏览器中输入 URL 地址到显示主页的过程?

  • 应用层:浏览器需要先解析URL,然后生成一个HTTP消息;DNS会对域名进行解析并得到服务器的IP地址(涉及到DNS域名查询,查询方式有两种:递归查询和迭代查询)
  • 传输层:浏览器根据解析得到的IP地址基于TCP三次握手与服务器建立连接,并生成TCP报文
  • 网络层:IP协议对生成的TCP报文加上IP头部生成网络包,然后再给网络包加上服务器的MAC地址(MAC地址的查询涉及到ARP协议)
  • 网络接口层:将网络包中的数字信息转化成电信号,并在网线上进行传输
  • 数据包抵达服务器,服务器对数据包进行拆解,依次拆分MAC头部,IP头部,TCP头部,并最后将数据发送给HTTP进程。
  • 服务器将浏览器所请求的资源进行封装成HTTP响应报文,并以相同的步骤发送给浏览器
  • 浏览器收到数据后,通过渲染得到页面
  • 最后,连接结束,浏览器和服务器通过四次挥手来断开连接

 5、DNS解析过程你知道吗?

DNS查询过程分为两种:递归查询和迭代查询

递归查询:

  • 主机向本地域名服务器进行递归查询
  • 本地域名服务器向根域名服务器进行递归查询
  • 根域名服务器向顶级域名服务器进行递归查询
  • 顶级域名服务器向权限域名服务器进行递归查询
  • 查询到结果之后递归式的返回结果 

迭代查询:

  • 主机向本地域名服务器进行递归查询
  • 本地域名服务器向根域名服务器进行迭代查询,根域名服务器返回顶级域名服务器的IP地址
  • 本地域名服务器向顶级域名进行迭代查询,顶级域名服务器返回权限域名服务器的IP地址
  • 本地域名服务器向权限域名服务器进行迭代查询,权限域名服务器返回要查询的IP地址
  • 本地域名服务器向主机返回查询结果

6、HTTPS工作过程你知道多少? 

  • 客户端先向服务器发送一个client-hello消息,消息中包含了客户端所生成的随机数,支持的密码套件列表,TLS版本号 
  • 服务端收到消息后,回一个server-hello消息,消息中包含了服务端所生成的随机数,选择的密码套件列表以及对TLS版本号的确认
  • 服务端再向客户端发送server-certificate消息,消息中含有服务端的数字证书
  • 服务端再发送一个serverHelloDone,表示服务端本次打招呼完成

当客户端拿到服务端的数字证书之后,会先对数字证书进行校验,如果确定证书是可信赖的,那么就会继续握手

数字证书签发过程:

        CA将持有者的公钥等信息打成一个包,然后用hash算法计算出一个hash值

        CA用自己的私钥对这个hash值进行加密,生成数字签名

客户端验证过程:

        客户端先用相同的hash算法计算出一个hash值H1

        然后再用CA的公钥对数字签名进行解密,得到一个hash值H2

        如果H1和H2是相同的,那么则表明证书是可信赖的

  • 客户端再向服务端发送一个随机数

至此为止,客户端和服务端已经生成了三个随机数,然后双方根据这三个随机数生成一个会话密钥

  • 然后客户端向服务端发送消息,表示以后的数据传输都使用加密方式来传输
  • 客户端对之前所发送的数据做一个摘要,然后用双方生成的会话密钥来进行加密,发送给服务端验证
  • 服务端也向客户端发送消息,表示以后的数据传输都是用加密方式来传输
  • 服务端对之前所发送的数据做一个摘要,然后用会话密钥进行加密,发送给客户端做校验

如果双方验证数据之后都没有发现问题,那么TLS握手正式完成

7、什么是数字证书?有什么作用?

数字证书所包含的信息:

  • 公钥
  • 持有者信息
  • CA的信息
  • CA对这份文件的数字签名以及使用的算法

作用:主要是告诉客户端,服务端是否合法,如果证书是合法的,那么服务端就是可信任的。 

8、cookie和session有什么区别?

  • cookie主要是用来辨别用户身份;session用于会话控制,保存用户的属性以及配置信息
  • cookie所保存的信息只能是string类型;session可以保存任意类型的Java对象
  • cookie的安全性不如session(可以通过本地拦截来获取cookie)
  • cookie一般保存在浏览器端,而session一般保存在服务器端
  • cookie大小有限制,不超过20Kb,且一个站点最多可以保存20个cookie;session如果保存的数量过多,会占用服务器过多内存,增加服务器负载

 9、URI和URL有什么区别?

  • URI是统一资源标识符;URL是统一资源定位符
  • URI唯一的标识了某个资源;URL不仅标识了某个资源还给出了访问方式

10、TIME-WAIT状态过多有什么危害? 

  • 如果客户端的TIME-WAIT状态过多,那么就会占满端口资源,导致客户端无法再跟【目的IP和目的端口】都一样的服务端进行连接
  • 如果服务端的TIE-WAIT状态过多,那么就会占用过多系统资源,比如CPU资源、线程资源等

 

 “我有七十二般变化,万劫长生之术,会驾筋斗云,练就了火眼金睛,如何坐不得这天位?”

用齐天大圣的话送给为生活、为梦想奋斗的你!加油!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值