面试题-计算机网络篇

发布时间:2026/5/21 17:37:18

面试题-计算机网络篇 文章目录一、HTTP协议2.HTTP请求报文2.1. 请求方法2.2. URL有哪些组成部分2.3. 请求头3.HTTP响应报文3.1. 常见响应头3.2. 响应码4.HTTP1.0 、 HTTP1.1、HTTP2.0、HTTP3.05.当在浏览器中输入 Google.com 并且按下回车之后发生了什么二、HTTPS协议1.HTTP和HTTPS协议的区别(网络歇息)2. TLS/SSL的工作原理3. HTTPS是如何保证安全的三、DNS协议介绍1. DNS 协议是什么2. TCP和UDP的区别四、WebSocket1. WebSocket 如何建立连接2、http和WebSocket‌区别一、HTTP协议2.HTTP请求报文HTTP 请求报文组成请求行包含请求方法、请求的URL以及HTTP协议版本。如GET /index.html HTTP/1.1。请求头部请求头部由多个键值对组成。用于描述客户端环境、请求正文长度、期望响应格式等信息。常见的请求头包括Host、User-Agent、Accept、Accept-Language、Connection等。空行请求头部和请求体之间必须有一个空行表示请求头部结束。请求包体请求体用于携带客户端提交的数据如表单数据、文件等。通常在POST、PUT等请求中使用。2.1. 请求方法get用于‌获取资源‌。参数通过URL查询字符串传递如?id123不包含请求体。适用场景加载网页、获取数据列表、搜索接口。注意不适合传输敏感或大量数据因参数暴露在URL中且受长度限制 。‌post用于‌提交数据‌。数据放在请求体中。适用场景用户注册、登录、文件上传、表单提交 。与GET对比POST更私密、可携带更多数据但不可被缓存。‌put用于‌替换或更新整个资源‌。客户端需提供完整的资源表示若资源不存在则可能创建。适用场景更新用户全部信息如PUT /api/users/123。特点幂等操作多次执行结果一致。‌delete用于‌删除指定资源‌。成功响应通常返回204 No Content。适用场景移除用户、删除文章 。实际实现可能是“软删除”标记为删除而非物理移除。‌head与GET类似但‌只返回响应头不返回响应体‌。适用场景检查资源是否存在、获取文件大小或最后修改时间节省带宽 。‌patch用于‌对资源进行局部更新‌仅修改部分字段而非整体替换。适用场景修改用户昵称而不更新其他信息 。对比PUTPUT要求完整资源PATCH更灵活高效。2.2. URL有哪些组成部分如https://www.example.com:8080/path/to/resource?param1value1param2value2#section1省略版https://www.baidu.com浏览器会自动补全默认值协议指定访问资源所使用的通信协议如http、https(通过安全加密的方式传输数据常用)、ftp等。主机名标识资源所在的服务器可以是域名如 www.example.com或IP地址。域名便于记忆实际访问时会通过DNS解析为IP地址。端口指定服务器上监听的服务端口号是可选项。http默认使用80端口https默认使用443端口若使用默认端口则通常省略路径表示资源在服务器上的具体位置以斜杠 / 分隔层级查询参数用于向服务器传递额外信息以?开始多个参数用分隔(get请求)。片段标识以#开头用于定位页面内的某个锚点不会发送到服务器。2.3. 请求头HTTP请求头是客户端向服务器发送请求时附带的元数据信息用于描述客户端环境、请求偏好和资源处理方式‌。常见字段Host必需指定目标服务器的域名和端口是HTTP/1.1中唯一强制要求的请求头。User-AgentUA标识客户端类型、操作系统和浏览器版本。服务器据此返回适配的页面如PC端或移动端Accept‌:声明客户端可接受的内容类型MIME类型如text/html、application/json(优先接收JSON格式响应) 。Content-Type‌:在POST或PUT请求中说明请求体的数据格式。常见值application/json、multipart/form-data文件上传‌Cookie包含服务器先前设置的会话信息用于维持登录状态等 。Expires强缓存‌Cache-Control‌指令缓存机制是否存储响应或重新验证强缓存。如no-cache强制重新获取。Connection‌控制连接行为keep-alive表示希望复用TCP连接以提升性能 。3.HTTP响应报文3.1. 常见响应头Date表示消息发送的时间时间的描述格式由rfc822定义server服务器名称Connection浏览器与服务器之间连接的类型Cache-Control控制HTTP缓存content-type:表示后面的文档属于什么MIME类型3.2. 响应码1xx信息请求已接收继续处理2xx成功请求成功处理200‌最常见成功状态表示请求已正常返回数据。204请求成功但无内容返回常用于DELETE操作3xx重定向301永久重定向搜索引擎会更新索引并跳转新地址。302‌临时重定向原资源仍在仅临时更换位置。4xx客户端错误400请求语法错误如参数格式不正确。401未提供有效认证信息需登录或重新鉴权。403‌服务器拒绝访问即使已登录也可能因权限不足被拒。404‌请求资源不存在可能是URL拼写错误或页面已删除。5xx服务器错误500‌服务器内部错误如代码异常或配置错误。4.HTTP1.0 、 HTTP1.1、HTTP2.0、HTTP3.0维度HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0‌连接方式‌短连接长连接多路复用QUIC 流式连接‌数据格式‌纯文本纯文本二进制分帧二进制帧QUIC‌并发能力‌串行管道化有限并行多路复用真正并行独立流‌头部处理‌无压缩无压缩HPACK 压缩HPACK 压缩‌安全性‌可选可选推荐 TLS强制加密TLS 1.3‌队头阻塞‌应用层严重应用层部分缓解解决应用层彻底解决‌适用场景‌早期静态网页主流 Web 应用高性能网站、API移动端、弱网环境演进方向维度演进方向‌连接方式‌短连 → 长连 → 多路复用 → 独立流‌传输协议‌TCP → TCP → TCP → ‌QUIC (UDP)‌‌数据格式‌文本 → 文本 → ‌二进制帧‌ → 二进制帧‌性能焦点‌基础通信 → 复用 → 并发 → ‌抗丢包 低延迟‌‌安全‌可选 → 可选 → 推荐 → ‌强制加密‌5.当在浏览器中输入 Google.com 并且按下回车之后发生了什么核心流程可概括为DNS解析 → 建立TCP连接 → SSL/TLS加密协商HTTPS→ 发送HTTP请求 → 服务器响应 → 浏览器解析与渲染页面‌ 。URL 解析与自动补全‌你输入的 google.com 会被浏览器识别为不完整的 URL。浏览器会自动补全协议和主机名通常转换为 https://www.google.com并默认使用 HTTPS 协议端口 443。DNS 解析域名 → IP 地址‌浏览器首先检查本地缓存是否有 google.com 对应的 IP 地址。若无则向本地 DNS 服务器发起查询请求通过递归和迭代查询最终从权威DNS 服务器获取目标 IP 地址。谷歌在全球部署多个服务器DNS 可能返回离你最近的 IP 地址以优化访问速度 。‌建立 TCP 连接三次握手‌获取 IP 地址后浏览器通过TCP 协议与服务器建立连接。这个过程包括“三次握手”客户端发送 SYN报文我想连接服务器回应 SYN-ACK报文我也想连接客户端再发送 ACK报文确认连接建立好连上了 。TLS/SSL 加密握手如使用 HTTPS‌由于现代网站普遍启用HTTPS浏览器会与服务器进行 TLS 握手协商加密算法、交换密钥确保后续通信安全 。发送 HTTP 请求并接收响应‌连接建立后浏览器向服务器发送 HTTP GET 请求。服务器处理请求后返回 HTML 页面内容可能附带 CSS、JavaScript、图片等资源文件 。浏览器解析与页面渲染‌浏览器接收到 HTML 后开始解析文档结构构建 DOM 树结合 CSS 构建渲染树并执行 JavaScript最终将页面呈现给你 。连接关闭四次挥手‌数据传输完成后 TCP 连接通过“四次挥手”正常关闭释放资源这个过程客户端发送 FIN 报文我发完了服务器收到后发送一个 ACK 报文回复收到服务器处理完剩余数据后发送 FIN 报文我也发完了客户端收到后发送 ACK 报文服务器收到后进入 ‌CLOSED‌ 状态客户端等待 2MSL 后也进入 ‌CLOSED‌ 状态拜拜。** 三次握手为什么不是两次**‌防止历史连接请求突然到达造成资源浪费第三次确认可确保双方收发能力正常 。二、HTTPS协议1.HTTP和HTTPS协议的区别(网络歇息)对比维度HTTPHTTPS‌安全性‌明文传输超文本传输协议加密传输具有安全性的SSL加密传输协议‌加密机制‌无加密使用SSL/TLS协议进行加密‌默认端口‌‌80‌‌443‌‌证书要求‌不需要证书需要由CA颁发的SSL/TLS证书‌连接方式‌无状态、简单连接建立前需完成TLS握手验证身份2. TLS/SSL的工作原理TLS/SSL 是在 TCP 和应用层之间添加的安全协议层通过“握手协商 加密通信”保障数据的‌机密性、真实性、完整性‌。3. HTTPS是如何保证安全的‌HTTPS通过TLS/SSL协议构建“身份认证—密钥协商—对称加密—完整性校验”的全链路安全机制从根本上解决数据窃听、篡改与伪造三大风险‌。三、DNS协议介绍1. DNS 协议是什么将域名解析为IP地址。客户端向DNS服务器DNS服务器有自己的IP地址发送域名查询请求DNS服务器告知客户机Web服务器的IP 地址。2. TCP和UDP的区别若你追求‌数据不丢不错‌选 ‌TCP‌若你追求‌速度与实时性‌能容忍少量丢包选‌UDP‌。(TCP求稳不求快UDP求快不求全‌)‌对比维度‌‌TCP传输控制协议‌‌UDP用户数据报协议‌‌连接方式‌‌面向连接‌传输前需三次握手建立连接结束后四次挥手断开‌无连接‌无需建立连接直接发送数据报‌可靠性‌‌可靠传输‌不可靠传输‌不保证数据到达可能丢包、乱序、重复‌传输效率‌较低‌高效率‌‌数据传输形式‌‌面向字节流‌‌面向数据报‌‌头部开销‌‌20-60字节‌‌固定8字节‌‌适用场景‌网页浏览HTTP/HTTPS、文件传输FTP、邮件等视频会议、直播、在线游戏、DNS查询、IoT实时上报等‌支持通信模式‌仅 ‌点对点一对一‌支持 ‌一对一、一对多、多对一、多对多‌四、WebSocketWebSocket “一次握手永久连接双向通话”。定义‌一种基于 TCP的全双工通信协议允许客户端与服务器在单个长连接上双向实时交换数据。‌协议标识‌ws://明文传输适用于开发环境wss://加密传输基于 TLS生产环境‌必须使用‌1. WebSocket 如何建立连接通过 HTTP Upgrade 请求完成握手服务器返回 101 状态码2、http和WebSocket‌区别总结HTTP 是“你问一次我答一次”WebSocket 是“我们一直连着随时都能说话”。对比维度‌HTTP‌‌WebSocket‌通信模式单向请求-响应‌双向全双工‌任意一方可主动发消息连接状态无状态、短连接默认‌有状态、长连接‌连接持久保持实时性差依赖轮询‌强‌消息即时推送服务器主动性❌ 无法主动推送✅ 可主动向客户端推送数据协议标识http:// 或 https://ws:// 或 wss://安全版适用场景页面加载、表单提交等一次性请求聊天、游戏、股票行情、实时协作等具体使用// 1. 创建连接constsocketnewWebSocket(wss://example.com/socket);// 2. 监听事件socket.onopenfunction(event){console.log(连接已建立);socket.send(Hello Server!);};socket.onmessagefunction(event){console.log(收到消息:,event.data);};socket.onerrorfunction(event){console.error(发生错误:,event);};socket.onclosefunction(event){console.log(连接关闭:,event.code,event.reason);};// 3. 发送与关闭socket.send(发送数据);socket.close();// 可选参数: code, reason

相关新闻