前端必备知识(计算机网络原理及基础知识介绍(面试必备))

前端必备知识(计算机网络原理及基础知识介绍(面试必备))
计算机网络原理及基础知识介绍(面试必备)

我将为你梳理一个从基础到核心,再到高频面试点的详细指南。

这份指南的目标是:让你不仅能回答“是什么”,更能解释“为什么”,并展示出你对网络系统设计的理解。

一、核心框架与思想

在开始前,先建立两个核心思想,这能让你的回答更有深度:

  1. 分层与封装:网络是复杂的,因此被划分为多个层次(如TCP/IP五层模型)。每一层为其上层提供服务,并使用其下层的服务。数据发送时,从上到下逐层“封装”(添加头部);接收时,从下到上逐层“解封装”。
  2. 协议是通信的约定:网络中的所有通信都遵循预先定义好的规则,这就是协议(如HTTP, TCP, IP)。理解协议就是理解这些规则的具体内容、目的和交互过程。

二、计算机网络基础概念

1. 网络模型(必考)

面试官常通过这个问题考察你对网络整体架构的理解。

  • OSI七层模型(理论模型)
    • 物、数、网、传、会、表、应。
    • 记住各层核心功能和典型设备/协议。
      • 物理层:比特流传输,设备有中继器、集线器。
      • 数据链路层:帧传输,MAC地址,设备有交换机。
      • 网络层:IP寻址和路由,设备有路由器,协议有IP、ICMP。
      • 传输层:端到端通信,协议有TCP、UDP。
      • 会话层:建立、管理、终止会话。
      • 表示层:数据格式转换、加密解密。
      • 应用层:为用户提供网络服务,协议有HTTP、FTP、DNS。
  • TCP/IP五层模型(实际应用模型)
    • 应用层传输层网络层数据链路层物理层
    • 这是学习的重点,它将OSI的上三层合并为了应用层。

面试回答技巧

“网络模型主要分为OSI七层和TCP/IP五层模型,我们通常以TCP/IP模型为基准进行学习。它从下到上分别是物理层、数据链路层、网络层、传输层和应用层。数据发送时,比如一个HTTP请求,会从应用层开始,加上HTTP头部,到传输层加上TCP头部,到网络层加上IP头部,再到数据链路层加上帧头和帧尾,最后变成比特流在物理链路上传输。”

三、核心协议与机制详解

1. 传输层核心:TCP vs UDP

这是面试的重中之重。

特性

TCP(传输控制协议)

UDP(用户数据报协议)

连接性

面向连接

(需要三次握手)

无连接

可靠性

可靠

(确认、重传、滑动窗口)

不可靠

(尽力交付)

有序性

保证数据包顺序

不保证顺序

速度

慢(有连接开销、确认机制)

快(头部小,无控制机制)

应用场景

前端必备知识(计算机网络原理及基础知识介绍(面试必备))

HTTP、HTTPS、FTP、邮件等

视频流、语音、DNS查询、直播

高频深入问题:

  • TCP的三次握手(为什么是三次?)
    • 过程:SYN -> SYN-ACK -> ACK。
    • 为什么不是两次?
      • 核心为了防止已失效的连接请求报文突然又传送到服务器,从而产生错误。
      • 解释:如果客户端第一次发送的SYN报文因网络拥堵延迟了,客户端会重发一个SYN并建立连接。当之前的SYN终于到达服务器时,服务器会认为是一个新的连接请求并回应SYN-ACK。如果是两次握手,此时连接就建立了,但客户端并不会理会这个连接,导致服务器空等,浪费资源。三次握手的情况下,客户端不会对那个迟到的SYN-ACK进行确认,连接就无法建立。
  • TCP的四次挥手(为什么是四次?)
    • 过程:FIN -> ACK -> FIN -> ACK。
    • 为什么需要四次?
      • 因为TCP连接是全双工的,每个方向必须单独关闭。当一方发送FIN,只表示它没有数据要发送了,但还可以接收数据。
      • 因此,挥手通常是:A说“我发完了”(FIN),B说“好的”(ACK);然后B可能还有数据要发,等B也发完了,B说“我也发完了”(FIN),A说“好的”(ACK),连接关闭。
  • TCP的可靠性如何保证?
    1. 序列号和确认应答(ACK):接收方收到数据后会发送ACK确认。
    2. 超时重传:发送方在一定时间内没收到ACK,会重新发送。
    3. 连接管理:三次握手和四次挥手。
    4. 流量控制(滑动窗口):接收方通过告知发送方自己的接收窗口大小,来控制发送方的发送速率,防止接收方缓冲区被填满。
    5. 拥塞控制:防止过多的数据注入网络,导致网络负载过大。包括慢启动拥塞避免快重传快恢复算法。

2. 网络层核心:IP协议

  • IP地址与子网掩码:理解IPv4的构成,以及如何通过子网掩码划分网络号和主机号。
  • ARP协议(地址解析协议):通过IP地址来寻找MAC地址的协议。工作原理:在本局域网内广播“谁是IP为X.X.X.X的主机?”,该主机会回应其MAC地址。
  • 路由过程:描述一个数据包如何从你的电脑发到百度服务器。会经过局域网、网关、运营商的多个路由器,每个路由器根据其路由表通过查找最长前缀匹配来决定下一跳。

3. 应用层核心:HTTP/HTTPS

  • HTTP协议
    • 无状态协议:服务器不记录之前的状态。使用Cookie/Session来维持状态。
    • 请求方法:GET(获取)、POST(提交)、PUT、DELETE等。
    • 状态码
      • 1xx:信息性
      • 2xx:成功(200 OK)
      • 3xx:重定向(301 永久移动,302 临时移动)
      • 4xx:客户端错误(404 未找到,403 禁止)
      • 5xx:服务器错误(500 内部服务器错误)
    • HTTP/1.1 vs HTTP/2:HTTP/2引入了多路复用、头部压缩、服务器推送等特性,大幅提升性能。
  • HTTPS = HTTP + SSL/TLS
    • 目的:解决HTTP明文传输的不安全问题,提供加密、身份认证和数据完整性校验。
    • 核心流程(简化)
      1. 客户端发起HTTPS请求
      2. 服务器返回数字证书,其中包含公钥。
      3. 客户端验证证书(是否由可信机构颁发、域名是否匹配、是否过期)。
      4. 验证通过后,客户端生成一个随机的“对称密钥”,用证书里的公钥加密,发送给服务器。
      5. 服务器用私钥解密,得到对称密钥
      6. 后续通信使用这个对称密钥进行加密解密
    • 为什么用非对称加密交换对称密钥?
      • 非对称加密计算复杂,速度慢,不适合加密大量数据。
      • 对称加密速度快,但密钥分发困难。
      • 因此,结合两者优势:用非对称加密的安全特性来安全地交换对称加密的密钥。
  • DNS(域名系统)
    • 作用:将域名(如 www.baidu.com)解析为IP地址。
    • 查询过程:浏览器缓存 -> 系统缓存 -> 路由器缓存 -> ISP的DNS服务器 -> 根域名服务器 -> 顶级域(.com)服务器 -> 权威域名服务器(baidu.com)。这是一个递归/迭代查询的过程。

四、高频面试问题与回答思路

  1. “在浏览器输入URL后,发生了什么?”(最经典的综合问题)
    • 思路:按照网络模型,从应用层到物理层一步步描述。
    • 回答提纲
      1. DNS解析:将域名解析成IP地址。
      2. 建立TCP连接:与服务器进行三次握手。
      3. 发送HTTP/HTTPS请求:如果是HTTPS,还有TLS握手过程。
      4. 服务器处理请求并返回HTTP响应
      5. 浏览器解析渲染页面(涉及前端知识,可简要提)。
      6. 连接结束:TCP四次挥手。
  1. “TCP和UDP的区别?”
    • 按照上面的表格,从连接、可靠、有序、速度、场景等方面回答。
  1. “TCP为什么是可靠的?”
    • 列举确认应答、超时重传、流量控制、拥塞控制等机制。
  1. “三次握手和四次挥手的过程和原因?”
    • 清晰描述过程,并解释“为什么不是两次握手”和“为什么需要四次挥手”。
  1. “HTTP和HTTPS的区别?”
    • 核心:HTTPS在HTTP之下加入了SSL/TLS层,提供加密传输。
    • 端口:HTTP是80,HTTPS是443。
    • 安全性:HTTP明文,HTTPS加密。
    • 性能:HTTPS因为加解密,稍慢一些。
  1. “什么是Socket?”
    • 定义:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。本质上是对TCP/IP协议操作的封装。
    • 构成:一个Socket由IP地址和端口号唯一确定。Socket = IP地址 : 端口号

五、面试准备建议

  • 理解而非死记:理解每个协议和机制设计的初衷和要解决的问题。
  • 画图辅助:在回答握手、挥手、HTTP流程时,可以在白板上画图,非常加分。
  • 关联实际:将知识点与你用过的工具或现象关联起来(如Ping命令用了ICMP,抓包工具Wireshark等)。
  • 保持自信,知之为知之:如果遇到不会的问题,坦诚地说“这个知识点我了解不深”,并尝试基于已有知识进行推理,展示你的思考过程。

掌握了以上内容,你就能在计算机网络面试中表现出扎实的基础和清晰的逻辑,从容应对大部分面试官的提问。祝你面试顺利!

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读