面试计算机网络框架八股文十问十答第七期

这篇具有很好参考价值的文章主要介绍了面试计算机网络框架八股文十问十答第七期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

面试计算机网络框架八股文十问十答第七期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐文章来源地址https://www.toymoban.com/news/detail-826002.html

1)UDP协议为什么不可靠?

UDP(用户数据报协议)是一种无连接的、不可靠的传输协议。它的不可靠性主要体现在以下几个方面:

  • 无连接性: UDP 不需要在发送数据之前建立连接,也不维护连接状态,因此不会进行握手和维持连接的开销。这使得 UDP 更加轻量级,但也使得它无法保证数据的可靠传输。
  • 不保证数据的到达顺序: 由于 UDP 不会对数据包进行排序和重组,因此发送的数据包的到达顺序不一定与发送顺序一致。在网络中,数据包可能会因为不同的路由和网络拥塞情况而以不同的顺序到达目的地。
  • 不提供重传机制: UDP 协议本身不提供重传机制。如果一个数据包在传输过程中丢失,UDP 协议不会负责重新发送该数据包,而是由应用层自行处理丢失的情况。

因此,尽管 UDP 在一些对实时性要求高、数据丢失对应用影响不大的场景下表现出色,但在对数据完整性和可靠性要求较高的场景下,通常会选择使用 TCP 协议。

2)TCP的重传机制

TCP(传输控制协议)是一种面向连接的、可靠的传输协议。TCP 通过以下机制来保证数据的可靠传输:

  • 序列号和确认应答: TCP 在发送的数据包中会包含序列号,接收方收到数据后会发送确认应答,告知发送方已经收到了哪些数据。如果发送方在合理的超时时间内没有收到确认应答,就会认为数据丢失,进行重传。
  • 超时重传: 如果发送方在一定时间内没有收到确认应答,就会重新发送相同的数据包。TCP 会动态调整重传的超时时间,以适应网络的变化。
  • 快速重传: 如果发送方收到了对同一数据包的三个重复的确认应答,就会认为接收方已经丢失了后续的数据,立即进行快速重传,而不必等待超时时间到期。

3)TCP的拥塞控制机制

TCP 的拥塞控制是为了避免过多的数据注入到网络中,导致网络拥塞,从而影响网络性能。TCP 的拥塞控制主要包括以下几个机制:

  • 慢启动: 发送方在连接刚建立时,会以指数增长的速率增加发送窗口大小,以快速填满网络的带宽。
  • 拥塞避免: 一旦发送方开始遇到丢包,就会进入拥塞避免阶段,发送窗口大小会线性增长,而不是指数增长,以降低发送速率。
  • 快速重传和快速恢复: 当发送方收到对同一数据包的三个重复的确认应答时,会触发快速重传和快速恢复机制,以快速调整发送窗口大小,避免继续注入更多的数据到网络中。

通过这些拥塞控制机制,TCP 能够在一定程度上适应网络的拥塞情况,保证网络的稳定性和公平性。

4)TCP的流量控制机制

TCP 的流量控制是为了防止发送方发送过多的数据,导致接收方无法处理。流量控制主要通过滑动窗口(Sliding Window)机制来实现:

  • 接收窗口(rwnd): 接收方在通信的过程中会通知发送方自己当前的接收窗口大小,即能够接收的数据量。发送方根据这个信息来控制发送的数据量,保证不会超过接收方的处理能力。
  • 滑动窗口: 发送方维护一个发送窗口,表示可以发送但还未收到确认的数据段的范围。滑动窗口的大小受到接收方通知的接收窗口大小和网络的实际情况的影响。

通过动态调整滑动窗口的大小,TCP 实现了流量控制,确保在通信过程中不会因为发送方速度过快而导致接收方无法处理。

5)TCP的可靠传输机制

TCP 的可靠传输机制主要包括以下几个方面:

  • 序列号和确认应答: 发送方会为每个数据包分配一个序列号,接收方通过确认应答来告知发送方已经正确接收到数据。如果发送方在一定时间内未收到确认应答,会进行重传。
  • 超时重传: 如果发送方在合理的超时时间内未收到确认应答,会认为数据包丢失,进行超时重传。
  • 快速重传和快速恢复: 当发送方收到对同一数据包的三个重复的确认应答时,会触发快速重传和快速恢复机制,以快速调整发送窗口大小。
  • 选择性重传: 发送方能够选择性地重传丢失的数据包,而不是重新传输所有的数据。

这些机制使得 TCP 在不可靠的网络环境中能够保证数据的可靠传输。

6)TCP的三次握手和四次挥手

TCP 的连接建立和断开分别通过三次握手和四次挥手来完成:

三次握手(Connection Establishment):

  1. 客户端发送 SYN: 客户端发送一个带有 SYN(同步)标志的数据包,表示请求建立连接。
  2. 服务端发送 SYN + ACK: 服务端收到客户端的请求后,回复一个带有 SYN 和 ACK(确认)标志的数据包,表示同意建立连接。
  3. 客户端发送 ACK: 客户端收到服务端的确认后,发送一个带有 ACK 标志的数据包,表示连接建立完成。

四次挥手(Connection Termination):

  1. 客户端发送 FIN: 客户端发送一个带有 FIN(结束)标志的数据包,表示要关闭连接。
  2. 服务端发送 ACK: 服务端收到客户端的关闭请求后,发送一个带有 ACK 标志的数据包,表示接收到关闭请求。
  3. 服务端发送 FIN: 服务端发送一个带有 FIN 标志的数据包,表示服务端也准备关闭连接。
  4. 客户端发送 ACK: 客户端收到服务端的关闭请求后,发送一个带有 ACK 标志的数据包,表示确认关闭。此时连接彻底关闭。

这样的握手和挥手机制确保了双方在建立和关闭连接时的可靠性和同步性。

7)TCP粘包是怎么回事,如何处理?

TCP粘包是指发送方发送的若干小数据包到达接收方时,接收方可能会将它们合并成一个大的数据包,从而导致接收方处理时难以区分原始的数据边界。这可能会引发一些问题,比如数据解析错误或应用层处理混乱。

原因:

  1. 缓冲机制: 操作系统或中间网络设备的缓冲机制可能会导致多个小数据包在传输过程中被合并成一个大的数据包。
  2. 发送速率: 发送方连续发送数据包的速率比接收方处理的速率快,导致多个数据包在传输过程中组成一个大的数据包。

处理方法:

  1. 消息长度标识: 在传输的数据中增加消息长度的信息,接收方通过解析长度信息来拆分数据。
  2. 特殊字符标识: 在消息之间增加特殊字符标识,接收方根据特殊字符来切分数据。
  3. 定长消息: 固定长度的消息,不足长度时用空格或其他填充。
  4. 使用消息边界标记: 在数据包的开头或结尾添加标记表示消息的开始或结束。
  5. 应用层协议设计: 在应用层设计协议时,可以采用更复杂的协议规定来避免粘包问题。

8)为什么udp不会粘包?

UDP是无连接的、不可靠的协议,它对数据包的传输不做任何拆分或合并的处理,因此不存在TCP粘包的问题。每个UDP数据包都是独立的,不会受到底层协议的影响而被合并,接收方能够按照发送方发送的数据包一一接收。

UDP的简单性和无连接性使得它不会进行复杂的缓冲和组包操作,也就不会出现TCP粘包的情况。然而,正因为UDP不保证可靠传输,应用层需要自行处理丢包、重复和顺序等问题。

9)对 WebSocket 的理解

WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许客户端和服务器之间进行实时、双向的数据传输。相比于传统的HTTP协议,WebSocket的优势在于降低了通信的延迟,提高了效率。

特点和优势:

  • 全双工通信: 可以同时在同一个连接上进行双向通信,服务器可以向客户端推送数据,而不需要等待客户端的请求。
  • 低延迟: 由于建立一次连接后可以持久存在,避免了HTTP协议中频繁的连接建立和断开,降低了通信的延迟。
  • 轻量级: WebSocket协议的头部较小,通信时的数据帧相对较小,减少了网络传输的开销。
  • 跨域通信: 支持跨域通信,通过一定的握手过程建立连接,使得客户端和服务器可以跨域进行实时通信。

10)即时通讯的实现:短轮询、长轮询、SSE 和 WebSocket 间的区别?

即时通讯的实现方式有多种,其中常见的包括短轮询(Short Polling)、长轮询(Long Polling)、SSE(Server-Sent Events)和WebSocket。

  1. 短轮询(Short Polling):
    • 客户端定期发送HTTP请求询问是否有新消息。
    • 服务器响应时,返回当前可用的消息。
    • 缺点:频繁的HTTP请求可能造成不必要的开销,延迟高。
  2. 长轮询(Long Polling):
    • 客户端发送HTTP请求到服务器,服务器保持连接打开,直到有新消息才响应给客户端。
    • 客户端收到响应后立即再次发起请求。
    • 缺点:仍然存在较高的延迟,但相较于短轮询减少了请求的频率。
  3. SSE(Server-Sent Events):
    • 使用单个HTTP连接,服务器可以主动推送数据给客户端。
    • 基于事件流的机制,通过EventSource对象在客户端接收服务器的推送。
    • 缺点:仅支持单向通信,不适合需要双向通信的场景。
  4. WebSocket:
    • 建立在单个TCP连接上,支持全双工通信。
    • 通过握手过程建立连接,之后可以双向发送消息。
    • 优点:低延迟,支持双向通信,适用于实时性要求高的场景。

总的来说,短轮询和长轮询通过HTTP请求,存在较高的延迟和开销;SSE是基于HTTP的单向通信,适用于服务器向客户端推送数据;WebSocket是全双工通信,延迟低,适用于实时性要求高的即时通讯场景。选择哪种方式取决于具体的需求和场景。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

已 300 + Star!

⭐点赞⭐收藏⭐不迷路!⭐

到了这里,关于面试计算机网络框架八股文十问十答第七期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一天吃透计算机网络八股文

    计算机网络体系大致分为三种,OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。最全面的Java面试网站 五层模型 :应用层、传输层、网络层、数据链路层、物理层。 应用层 :为应用程序提供交互服务。在互联网中的应用层协议很多,如域

    2023年04月09日
    浏览(49)
  • 三天吃透计算机网络八股文

    计算机网络体系大致分为三种,OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。最全面的Java面试网站 五层模型 :应用层、传输层、网络层、数据链路层、物理层。 应用层 :为应用程序提供交互服务。在互联网中的应用层协议很多,如域

    2023年04月16日
    浏览(45)
  • 【java八股文】之计算机网络系列篇

    TCP/IP分层(4层): 应用层,传输层,网络层,数据链路层 网络的七层架构 (7层) :应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 五层协议 (5层): 物理层、数据链路层、网络层、运输层、 应用层 TCP/IP是面向连接的协议,发送数据前要先建立好连接

    2024年01月16日
    浏览(44)
  • 算法/后端计算机基础课程如何学?——八股文基础(数据结构、计算机网络、算法导论、操作系统)

    UCB CS61B 数据结构 Stanford CS144 计网 MIT 6.006 算法导论 6.S081 操作系统 配合国内外名校的开源课件和lab 浙大 数据结构 哈工大 计网/计组/操作系统/数据库 [b站/慕课] MIT 6.824分布式系统 6.830/6.814:数据库系统 fault tolerance/心跳/选举/日志复制都是如何实现的 ? 做完labs你就有答案啦

    2024年02月02日
    浏览(50)
  • 计算机网络面试八股复习:常见的Http状态码

    面试被问到过一次。自己最近使用Gin框架,在 Response 的时候有时候也会用到一个自定义的状态码。因此归纳一下这方面,供自己日后面试复习以及开发时候参考。 全名“超文本传输协议”(我也不懂为什么面试官问这个…) 属于应用层 状态码在记忆时候按系列来记。 信息

    2024年01月21日
    浏览(47)
  • 计算机网络面试八股复习:常见的7/5/4层网络模型、各层协议以及键入网址到显示页面的流程

    OSI七层模型 TCP/IP四层模型 五层模型 精简部分,完整版见上图 ARP 和 RARP ,在TCP/IP模型中属于IP层(网络层), 在OSI 模型中属于 链路层。 逐层加东西。图源-小林codding 1、输入URL,解析URL,生成Http请求 2、逐级查看缓存(浏览器缓存、系统缓存、路由器缓存),若有则直接显

    2024年01月22日
    浏览(46)
  • 【计算机网络八股】计算机网络(一)

    计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。 TCP/IP四层模型:是由实际应用发展总结出来的,从实质上讲,TCP/IP只有最上面三层,最下面一层没有什么具体内

    2024年02月11日
    浏览(43)
  • 计算机网络八股

    TCP是面向连接的,UDP是面向无连接的; TCP只能一对一通信,UDP支持一对一,一对多,多对一和多对多交互通信; TCP是面向字节流的,UDP是面向报文的; TCP是可靠传输,使用流量控制和拥塞控制;UDP是不可靠传输 TCP首部最小20字节,最大60字节;UDP首部仅8字节。 物理层:建立

    2024年03月21日
    浏览(51)
  • 【八股】2023秋招八股复习笔记5(计算机网络-CN)

    八股目录 HTTP 1、协议参数 HTTP 是什么? HTTP 常见的状态码有哪些? HTTP 常见字段有哪些? GET 和 POST 有什么区别? GET 和 POST 方法都是安全和幂等的吗? HTTP 缓存有哪些实现方式? 什么是强制缓存? 什么是协商缓存? 2、HTTP版本特性 HTTP/1.1 的优点有哪些? HTTP/1.1 的缺点有哪

    2024年02月11日
    浏览(46)
  • 【面试题】计算机网络面试实战

    version:1.8【新增DNS,GET,POST请求,修改部分语言表述】 version:1.0

    2024年02月06日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包