【后端面试重点总结】计算机网络篇(一)

、TCP和UDP的区别

TCP:传输控制协议,是一种面向连接、传输可靠、基于字节流的运输层通信协议。

UDP:用户数据报协议,无连接、传输不可靠、数据报文段。

TCPUDP
可靠性可靠不可靠
是否连接面向连接无连接
报文格式字节流面向报文段
传输方式全双工一对一、一对多、多对一、多对多
效率效率低效率高
流量控制滑动窗口
拥塞控制慢启动、拥塞避免、快重传、快恢复
场景准确性高,有连接要求的场景效率要求高、准确率要求低

二、OSI七层参考模型

OSI七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP四层:数据链路层、网际层、传输层、应用层

三、从输入URL到页面展示到底发生了什么?

①浏览器接受到用户请求,首先查看浏览器缓存,如果有直接返回;如果没有进入网络请求。

②网络请求前,进行DNS解析以获取域名的ip地址,DNS解析会按照浏览器缓存、本地host文件、路由器缓存、DNS服务器、DNS根服务器的顺序查找ip

DNS询问顺序:先问根服务器在哪个顶级域,再问顶级域服务器在哪个权威域,一层层询问直到找到。

③浏览器与服务器建立TCP连接,浏览器构建请求消息,包括请求行、请求头、请求体等信息。服务器收到请求消息后,生成响应数据。

④浏览器解析响应头,响应头的状态码为301、302,会重定向到新地址;若响应数据是字节流会提交给下载服务器;若是HTML类型,会进入下一步渲染流程。

⑤浏览器解析html文件,创建DOM树(文档对象模型,将文档作为一个树形结构,树的每个结点表示了一个HTML标签或标签内的文本项。DOM树结构精确地描述了HTML文档中标签间的相互关联性。),解析CSS(是种格式化网页的标准方式, 用于控制设置网页的样式,并且允许CSS样式信息与网页内容(由HTML语言定义)分离的一种技术)进行样试计算,将CSS和DOM合并,构建渲染树;最后布局和绘制渲染树,完成页面展示。

四、三次握手过程,为什么是三次,不是两次、四次?

TCP三次握手:①客户端和服务端都是关闭状态,服务端监听,客户端发送SYN报文,并初始化序列号(seq=x),客户端进入SYN_SEND状态。

②服务端收到SYN报文后,发送ACK报文(ack=x+1)确认自己已收到客户端的SYN报文,同时发送一个SYN报文,带上自己初始化序列号(syn=y),服务端进入SYN_RECV状态。

③客户端收到SYN和ACK报文后,发送一个ACK报文(ack = y+1)确认服务端的SYN报文,更新自己的序列号(seq=x+1)然后服务端和客户端都进入ESTABLISHED状态。

两次和四次:两次握手导致服务端每收到一个SYN就建立一个连接,没有足够的上下文判断历史连接,并且会导致资源的浪费。三次握手就可以建立一个连接,四次握手可以优化为三次。

五、三次握手是否携带数据?

第三次握手可以携带数据,第一次和第二次不能携带数据,因为第一次第二次连接还没建立起来,服务器处于不安全的状态,如果有恶意攻击服务器,每次都在第一次握手中放入大量数据,并且频繁重复发SYN报文,服务器会花费很多的时间和内存空间去接受这些报文,三次握手对于客户端来说服务已经建立,知道服务器接受和发送能力正常,可以携带数据。

六、四次挥手,为什么是四次?

四次挥手:①客户端首先发送一个FIN报文给服务端并初始化序列号(seq = u),表示自己要断开数据连接,然后进入FIN-WAIT状态。

②服务端收到FIN报文后,回复ACK报文(ack=u+1)给客户端,并初始化序列号(seq =v)然后服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT2状态。

③服务端处理完数据后,要断开连接时发送FIN报文并指定序列号(seq=w),然后服务端进入LAST-ACK状态。

④客户端收到FIN报文时,发出ACK报文(w+1)进行应答,并更新序列号,客户端进入TIME-WAIT状态,服务端在收到ACK后,进入CLOSED状态,如果客户端等待2MSL(报文最大生存时间,RFC 793规定是2分钟,一设置成30秒)生存时间没收到回复,才断开连接。

为什么四次:TCP是全双工通信,可以双向传输数据,在一方数据传输结束后发出释放连接的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放的通知,待对方确认后完全关闭。两次握手可以释放一端到另一端,但是不能保证另一端还有数据要处理发送,所以释放两端的连接需要四次挥手。

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值