计算机网络面试常见知识框架以及常见面试题解

以下是前端开发者在面试中常涉及的计算机网络知识点整理,涵盖了基础概念、高频问题和深入理解的方向:

一、基础知识

  1. HTTP/HTTPS

    • HTTP的基本工作原理(请求/响应模型)。
    • HTTP请求方法:GET、POST、PUT、DELETE 等的区别和使用场景。
    • HTTP状态码:常见的 200、301、302、403、404、500 等。
    • HTTPS的工作原理,TLS/SSL协议,握手过程。
    • HTTP1.1、HTTP2、HTTP3 的区别及特性。
  2. TCP/IP 协议

    • TCP 三次握手与四次挥手的详细过程。
    • TCP与UDP的区别及应用场景。
    • IP地址、子网掩码、网关的概念。
    • DNS解析过程(从域名到IP地址的转换)。
    • NAT、ARP、ICMP 的基本原理和作用。
  3. Websocket

    • Websocket协议的工作原理和与HTTP的关系。
    • Websocket的使用场景。
    • 长轮询、SSE(Server-Sent Events)与Websocket的区别。
  4. RESTful API 和 GraphQL

    • RESTful API的设计原则。
    • RESTful 与 SOAP 的对比。
    • GraphQL 的优缺点,和 RESTful 的对比。

二、前端特定网络问题

  1. 浏览器渲染与加载

    • 浏览器加载资源时,DNS解析、TCP连接、发送请求、接收响应的整个过程。
    • 浏览器缓存机制:强缓存(Expires/Cache-Control)与协商缓存(ETag/Last-Modified)。
    • 浏览器的同源策略和跨域问题(CORS、JSONP)。
  2. 性能优化

    • 减少请求数量:资源合并、懒加载。
    • 减少请求大小:压缩(gzip/brotli)、图片优化(webp)。
    • CDN的作用与原理。
    • 前端性能监控:TTFB、FCP、LCP、CLS。
  3. 安全问题

    • XSS攻击及防护措施。
    • CSRF攻击及防护措施。
    • HTTPS及HSTS的重要性。
    • Cookie的属性(HttpOnly、Secure、SameSite)及安全性。

三、常见问题总结

  1. 从输入URL到页面加载完成的全过程
    涉及DNS解析、TCP连接、HTTP请求、服务器处理、浏览器渲染等。

  2. 为什么需要HTTPS?
    保护数据传输的安全性,避免中间人攻击,防止数据篡改和窃取。

  3. TCP为什么需要三次握手?为什么四次挥手?
    三次握手确保双方都准备好通信,四次挥手确保双方关闭连接。

  4. HTTP1.1相比HTTP1.0的改进?
    支持长连接(Connection: keep-alive)、分块传输编码(Chunked Transfer Encoding)、虚拟主机支持等。

  5. HTTP2如何提升性能?
    多路复用、头部压缩、二进制格式传输、优先级机制等。

  6. 跨域解决方案有哪些?
    CORS(推荐)、JSONP(仅限GET)、服务器代理。


四、进阶知识点

  1. CDN 原理与边缘计算

    • 缓存机制。
    • 边缘节点的作用。
  2. 负载均衡与反向代理

    • 负载均衡的算法(轮询、加权轮询、一致性哈希)。
    • Nginx、HAProxy 在负载均衡中的作用。
  3. HTTP/3 和 QUIC 协议

    • 为什么引入HTTP/3?
    • QUIC协议的优势(基于UDP,减少延迟)。
  4. 零拷贝技术

    • 在数据传输中的应用。
  5. 服务端推送技术

    • HTTP/2 Server Push。
    • WebSocket的落地方案。


以下是对上述问题的详细解析:


1. 从输入URL到页面加载完成的全过程

  1. DNS解析
    • 将域名解析为IP地址。
    • 优先使用浏览器缓存、系统缓存,再查询DNS服务器。
  2. TCP连接
    • TCP三次握手建立连接。
  3. 发送HTTP请求
    • 浏览器根据URL生成HTTP请求报文。
    • 请求头包含User-Agent、Cookie等信息。
  4. 服务器处理请求
    • 服务器根据请求路径处理逻辑(静态资源或动态内容)。
  5. 响应数据
    • 服务器返回HTTP响应,包含状态码和内容。
  6. 浏览器渲染
    • 解析HTML,生成DOM树。
    • 解析CSS,生成CSSOM。
    • 结合JS,生成渲染树并绘制。

2. 为什么需要HTTPS?

  1. 加密传输:数据通过TLS加密,防止中间人窃取。
  2. 数据完整性:校验数据未被篡改。
  3. 身份验证:确保与访问的是真实服务器。
  4. 避免中间人攻击:攻击者无法伪装服务器。

3. TCP为什么需要三次握手?为什么四次挥手?

  • 三次握手

    1. 客户端发送SYN,表示请求建立连接。
    2. 服务器回复SYN-ACK,表示确认并同意连接。
    3. 客户端发送ACK,确认连接已建立。

    原因:确保双方都能通信,防止已失效的连接请求再次被处理。

  • 四次挥手

    1. 客户端发送FIN,表示请求断开连接。
    2. 服务器回复ACK,确认断开请求。
    3. 服务器发送FIN,表示准备断开。
    4. 客户端回复ACK,断开连接。

    原因:确保双方的发送和接收都已完成,避免数据丢失。


4. HTTP1.1相比HTTP1.0的改进?

  1. 支持长连接:默认开启Connection: keep-alive,减少重复建立连接的开销。
  2. 分块传输编码:通过Chunked Encoding支持动态内容。
  3. Host头支持:支持同一IP下多个域名的虚拟主机。
  4. 状态码扩展:新增了100(Continue)等状态码。

5. HTTP2如何提升性能?

  1. 多路复用:一个TCP连接可以承载多个请求,同时传输不阻塞。
  2. 头部压缩:通过HPACK算法减少重复头部信息的大小。
  3. 二进制分帧:更高效的数据传输。
  4. 优先级和流量控制:允许设置请求优先级。

6. 跨域解决方案有哪些?

  1. CORS(推荐)

    • 通过服务器配置允许特定来源跨域请求。
    • 常用头部:Access-Control-Allow-Origin
  2. JSONP

    • 动态插入<script>标签,获取返回的JS数据。
    • 仅支持GET请求。
  3. 服务器代理

    • 前端请求自己的服务器,由服务器转发。

7. CDN原理与边缘计算

  • CDN原理

    • 将资源缓存到全球分布的边缘节点。
    • 用户请求会被分配到最近的节点,提高加载速度。
  • 边缘计算

    • 在靠近用户的节点上处理部分计算任务。
    • 减少延迟,提高实时性。

8. 负载均衡与反向代理

  1. 负载均衡算法

    • 轮询:每个请求按顺序分配。
    • 加权轮询:根据服务器性能设置权重。
    • 一致性哈希:确保相同请求分配到相同服务器。
  2. 反向代理

    • 代理服务器接收用户请求并转发到内部服务。
    • 提供缓存、负载均衡等功能。

9. HTTP/3 和 QUIC协议

  1. HTTP/3特点

    • 基于UDP实现更快的连接建立。
    • 无需TCP三次握手,减少延迟。
    • 集成TLS加密。
  2. QUIC协议优势

    • 即使切换网络(如Wi-Fi到4G),连接不会中断。
    • 多路复用避免了TCP的“队头阻塞”。

10. 零拷贝技术

  • 定义:数据从内存到网络传输时,不经过CPU拷贝,直接从硬盘或内存转发到网卡。
  • 作用:大幅提高传输效率。

11. 服务端推送技术

  1. HTTP/2 Server Push

    • 服务端在用户请求资源时,提前推送相关资源。
    • 提高首屏渲染速度。
  2. WebSocket

    • 实现全双工通信,适用于实时应用(如聊天、在线游戏)。

如果需要深入了解某个主题,可以进一步探讨!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/500376.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基本算法——聚类

目录 创建工程 加载数据 聚类算法 评估 完整代码 结论 相比于有监督的分类器&#xff0c;聚类的目标是从一组未打标签的数据中识别相似对象组。它可 以用于识别同类群体的代表性样本&#xff0c;找到有用与合适的分组&#xff1b;或者找到不寻常的样本&#xff0c;比如 异…

安装教程:慧集通集成平台(DataLinkX)智能体客户端安装操作(Linux/windows/mac)

1.下载客户端 使用提供的账号登录集成平台后台(https://www.datalinkx.cn/),点击左侧菜单栏【智能体】→【智能体】进入到智能体列表界面&#xff0c;在该界面我们找到功能栏中的下载按钮点击则会弹出下载界面&#xff0c;在该界面我们可以选择不同的系统操作系统来下载对应版…

【Rust自学】8.4. String类型 Pt.2:字节、标量值、字形簇以及字符串的各类操作

8.4.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构&#xff0c;这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的&#xff0c;这也意味着这些集合的数据大小无需在编…

1、pycharm、python下载与安装

1、去官网下载pycharm 官网&#xff1a;https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间&#xff0c;去下载python 进入官网地址&#xff1a;https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…

静默模式下安装Weblogic 14.1.1.0.0

目录 一、下载weblogic安装包二、安装JDK三、安装weblogic1、创建weblogic用户2、创建weblogic的安装目录3、上传并解压weblogic安装包4、创建 oraInst.loc 文件5、创建 wls.rsp 响应文件6、静默安装weblogic7、创建域8、启动Weblogic9、设置防火墙规则,以便其他服务器访问10、…

Windows安装Confluence详解

Confluence官网下载地址&#xff1a;https://www.atlassian.com/software/confluence/download-archives 建议安装confluence版本下载5.0-7.0之间&#xff0c;比较稳定一点&#xff0c;我安装的是6.8.2版本 centos7系统和阿里云服务安装后太卡了&#xff0c;果断放弃 Conflu…

Unity is running as administrator解决办法

每次打开Unity项目都会有这个弹窗 解决办法&#xff1a; 打开本地安全策略 - 安全选项 &#xff0c;把 用户账户控制&#xff1a;以管理员批准模式运行所有管理员 用户账户控制&#xff1a;用于内置管理员账户的管理员批准模式 改成已启用就行

springboot+vue实现SSE服务器发送事件

思路 一个基于订阅发布机制的SSE事件。客户端可以请求订阅api&#xff08;携带客户端id&#xff09;&#xff0c;与服务器建立SSE链接&#xff1b;后续服务器需要推送消息到客户端时&#xff0c;再根据客户端id从已建立链接的会话中找到目标客户端&#xff0c;将消息推送出去。…

【阻塞队列】- ArrayBlockingQueue 的原理-迭代器

文章目录 1. 前言2. 迭代器3. Itrs3.1 参数3.2 迭代器 Itr3.2.1 参数3.2.2 构造器3.2.3 hasNext3.2.4 next3.2.5 remove3.2.6 shutdown3.2.7 removedAt3.2.8 takeIndexWrapped 3.3 doSomeSweeping&#xff08;tryHandler&#xff09;3.4 register3.5 takeIndexWrapped3.6 remov…

人工智能与传统编程的主要区别是什么?

传统编程&#xff1a;开发者预先编写软件行为规则&#xff0c;代码基于程序员定义逻辑处理输入并产生确定输出&#xff0c;具有确定性、手动编写规则和结构化逻辑特点&#xff0c;如垃圾邮件分类程序基于预设关键词等规则。AI 编程&#xff1a;从数据中学习而非手动编写规则&am…

SpringBoot使用TraceId日志链路追踪

项目场景&#xff1a; ??有时候一个业务调用链场景&#xff0c;很长&#xff0c;调了各种各样的方法&#xff0c;看日志的时候&#xff0c;各个接口的日志穿插&#xff0c;确实让人头大。为了解决这个痛点&#xff0c;就使用了TraceId&#xff0c;根据TraceId关键字进入服务…

ts总结一下

ts基础应用 /*** 泛型工具类型*/ interface IProps {id: string;title: string;children: number[]; } type omita Omit<IProps, id | title>; const omitaA: omita {children: [1] }; type picka Pick<IProps, id | title>; const pickaA: picka {id: ,title…

八大排序——直接插入排序

直接插入排序&#xff08;Straight Insertion Sort&#xff09;&#xff0c;通常简称为插入排序&#xff0c;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。本文…

【QGIS入门实战精品教程】7.3:QGIS制作千层饼(DEM+等高线+影像+TIN)

文章目录 一、效果展示二、数据准备三、制作过程1. 打开软件2. 添加图层3. 制作千层饼一、效果展示 二、数据准备 订阅专栏后,从专栏配套案例数据包中的7.3.rar中获取。 1. dem 2. 影像 3. 等高线 4. tin 三、制作过程 1. 打开软件 打开QGIS软件。 QGIS软件主界面。

NetSuite Formula(HTML)超链打开Transaction

当Saved Search作为Sublist应用在Form时&#xff0c;如果Document Number是Group过的&#xff0c;则会出现如下超链失效的情况。 解决办法&#xff1a; 可以利用Saved Search中的Formula&#xff08;HTML&#xff09;功能来构建超链&#xff0c;用于打开Transaction。 以下图…

Springboot3.x整合swagger3

在网上看了许多教程&#xff0c;发现很多都是针对Spring Boot 2 框架的&#xff0c;即使有针对Spring Boot 3 的&#xff0c;用法也不太一样,配置项经常找不到类&#xff0c;经过对比测试&#xff0c;最后我使用的是 SpringDoc OpenAPI Starter WebMvc UI. pom为 <!--swag…

android.enableJetifier=true的作用:V4包的类自动编程成了androidx包的类,实现androidx的向下兼容

结论&#xff1a;引入androidx包后&#xff0c;可以兼容旧版本v4包的插件&#xff0c;把之前的 implementation com.yinglan.alphatabs:library:1.0.8 引入的组件中使用v4包的类&#xff0c;里面V4包自动反编译成 androidx包的类 结论; ‌V4包的类自动编程成了androidx包的…

详解MySQL在Windows上的安装

目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网&#xff0c;找到DOWNLOADS 然后往下翻&#xff0c;找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载&#xff0c;选择No thanks,just start my download. 然后双击进行…

excel操作

来源&#xff1a;B站默默亚 一、版本识别 特点&#xff1a;向后兼容&#xff1b;高版本可以打开低版本&#xff0c;低版本不可以打开高版本 工作中&#xff0c;给老板最低版本&#xff0c;即2003版本 二、文件的扩展名 三、excel页面

最大化堡垒补给数量的策略与实现

最大化堡垒补给数量的策略与实现 问题描述输入格式输出格式问题分析解决方案代码实现代码解释问题描述 可怕的战争发生了,小度作为后勤保障工作人员,为了保卫国家而努力。现在有 N 个堡垒需要补给,然而总的预算 B 是有限的。每个堡垒需要价值 P(i) 的补给,并且需要 S(i) 的…