有些路只能一个人走完,如果感到累了,也应该继续坚持。🌹
目录
9、为什么要有TIME-WAIT状态?(为什么TIME-WAIT状态要等待两个MSL的时间?)⭐
1、TCP是如何保证可靠传输的?⭐
重传机制:
请求的数据到达接收端,接收端会返回一个确认。
- 超时重传:发送端在发送数据时,会设定一个计时器,如果在一定时间内没有收到回应,那么就会对数据进行重传
- 快速重传:发送端收到三个连续的ACK,就会对数据进行重传。(问题:对哪些数据进行过重传?)
- SACK(选择性确认):接收方对已经接收到的数据进行确认,发送方根据接收方的情况,只发送未被接收的数据
- D-SACK:接收方告诉发送方哪些数据被重复接受
滑动窗口:
可以一次性的发送多个数据包,而不必等待其响应回来,并采用累积确认的方式进行应答,即对按序到达的最后一个分组来进行确认
流量控制:
主要是通过滑动窗口来实现的:发送发可以根据接收方接受数据的能力来决定发送多少数据
拥塞控制:
流量控制主要是为了避免发送方发送的数据填满接收方的缓存,而拥塞控制主要是为了避免发送方的数据填满整个网络。
- 慢启动:慢启动过程中有一个慢启动门限值(ssthresh),当拥塞窗口的值(cwnd)小于这个值时,就会进入慢启动算法,即每收到一个ACK,拥塞窗口的大小就加1。拥塞窗口的大小呈指数增长。
- 拥塞避免:当拥塞窗口的值等于慢启动门限时,就会进入拥塞避免算法,即每收到一个ACK,拥塞窗口的值就增加cwnd/1,每经过一个传输轮次,拥塞窗口的大小就加1。这个阶段,拥塞窗口的大小呈线性增长。
- 拥塞发生:拥塞发生分为两种情况:一种是发生超时重传,一种是发生快速重传;如果发生超时重传,那么ssthresh=cwnd/2,且cwnd=1;如果发生快速重传,cwnd=cwnd/2,且ssthresh=cwnd
- 快速恢复:拥塞窗口cwnd = ssthresh+n(n表示确认有三个数据包被收到了);然后重传丢失的数据包;如果再收到重复的ACK那么cwnd+1;收到新数据的ACK之后,把cwnd设置为之前的慢启动门限值
2、IP地址有哪些分类?
- A类:以0开头,网络号占8位,主机号占24位
- B类:以10开头,网络号占16位,主机号占16位
- C类:以110开头,网络号占24位,主机号占8位
- D类:以1110开头,主要用于IP多播
- E类:以1111开头,留待后用
3、什么是SQL注入?怎么解决?
定义:后端接收前端传来的数据并没有做严格的判断,导致这些数据和SQL语句拼接在一起被执行,,从而导致数据库受损是一种常见的WEB漏洞。
例:‘ or 1 = 1 --
解决方法:使用mybatis的#{}来获取参数
4、介绍一下网络五层模型以及各自的职责?
- 应用层:负责为应用程序提供统一的接口
- 传输层:负责端到端的数据传输
- 网络层:负责数据的转发、路由以及分片
- 数据链路层:负责数据封帧、差错检测以及MAC寻址
- 物理层:负责物理数据的传输
5、HTTP和HTTPS的区别?
- 加密方式:HTTP是明文传输,存在安全风险的问题;HTTPS则使用密文传输
- 连接建立:HTTP连接建立相对简单,TCP三次握手之后即可建立连接,而HTTPS在TCP三次握手之后还有一个SSL/TLS的握手过程
- 端口:HTTPS使用的端口是443,HTTP使用的端口是80
- CA:HTTPS需要向CA(证书认证机构)申请数字证书,保证身份是可信赖的
6、对称加密和非对称加密的区别?
- 对称加密:加密和解密使用同一个密钥,需要解决如何安全发送密钥的问题。
- 非对称加密:分为公钥和私钥。公钥可以随意发布,而私钥只有自己知道。发送方使用私钥来进行加密,接收方使用公钥来解密。
- 非对称加密的安全性更高,但是效率低。所以在实际应用的时候一般使用非对称加密来传送密钥。
7、简单说一下每一层对应的网络协议?⭐
- 应用层:HTTP、FTP、SMTP、DNS
- 运输层:TCP、UDP
- 网络层:IP、ARP、RARP
- 数据链路层:ARQ、CSMA/CD
8、ARP协议的工作原理?⭐
ARP协议主要用来获取目的主机的MAC地址,它完成了IP地址道MAC地址的映射。
当ARP协议需要向目的主机发送数据时,会在ARP列表中查询目的主机的MAC地址,如果能够查询到则直接发送;如果查询不到,则会向本地局域网中发送一个ARP请求包,请求包中包含了源主机的IP地址、源主机的MAC地址、目的主机的IP地址,当局域网中的所有主机收到请求包之后,会拿目的主机的IP地址与自身IP进行比较,如果一致,则返回一个ARP响应包,响应包中包含了目的主机的MAC地址,源主机收到这个响应包之后会更新ARP列表;如果源主机迟迟收不到响应包,则表示本次查询失败。
9、为什么要有TIME-WAIT状态?(为什么TIME-WAIT状态要等待两个MSL的时间?)⭐
- 防止历史连接中的数据,被以后相同的四元组的连接接收
- 能够保证被动关闭连接的一方可以正确关闭
防止历史连接中的数据,被以后相同的四元组的连接接收:
如果在上一次连接中,由于网络拥塞的原因,服务端所发送的数据没有到达客户端;当客户端重新建立一个和上一个连接相同四元组的连接之后,服务端被拥塞的数据正好到达客户端,而数据的序列号又正好在客户端的接收窗口内,那么客户端就会正常接收这些数据,就会造成数据错乱。
能够保证被动关闭连接的一方可以正确关闭:
假如客户端(主动关闭连接的一方)在第四次挥手之后直接进入到CLOSE状态,但是客户端所发送的ACK并没有被服务端所正常接收,服务端就会重新发送FIN报文,但这时客户端已经关闭连接了,就会回一个RST报文,服务端收到后会将其解释为一个错误,所以这并不是优雅的终止方式。
10、什么是保活计时器?有什么作用? ⭐
TCP保活计时器的工作原理:
如果连接双方在一段时间内没有进行数据交互,那么TCP保活机制就开始向对端发送探测报文:
- 如果对端接收到探测报文并做出回应,那么TCP保活时间就会重置
- 如果对端并没有做出响应,那么TCP协议栈就会持续发送探测报文,当到达最大探测次数之后,依旧得不到回应,就会认为该TCP连接已经死亡
作用:
- 在两端都没有进行数据交互的时候,检查对端是否能够正常工作
在人声鼎沸的地方鼓起勇气,在无人问津的时光偷偷努力。
整理面经不易,如果觉得有帮助的小伙伴点个赞吧~感谢收看!