计算机网络
注意:括号中为八股在每次面试中出现的概率
从输入 URL 到页面展示到底发生了什么?(543/1759=30.9%)
从输入 URL 到页面展示,整体是从浏览器发起请求到最终页面呈现给用户,包含了八个步骤。
第一步是用户输入 URL,并按下回车。
此时,浏览器开始解析 URL,将其分解为协议(例如 HTTP 或 HTTPS)、域名、路径(例如 /home)等部分。
第二步是进行DNS 解析
浏览器通过 DNS(域名系统)解析域名,查找对应的 IP 地址。若该域名的 IP 地址已被缓存,浏览器会直接使用缓存的 IP 地址;若未缓存,则浏览器会向 DNS 服务器发送请求,获取该域名对应的 IP 地址。
第三步是建立 TCP 连接
获取到 IP 地址后,浏览器通过 TCP/IP 协议与目标服务器建立连接。在 HTTPS 请求中,浏览器还会通过 SSL/TLS 协议进行加密协商,确保通信的安全性。
第四步是客户端发送 HTTP 请求
TCP 连接建立后,浏览器会发送 HTTP 请求到服务器。请求包括请求行、请求头和请求体。请求行包含请求方法(如 GET、POST)、请求的 URL 路径和 HTTP 版本。请求头包括浏览器信息、语言类型、缓存控制等信息。请求体则用于发送数据(如表单提交数据)。
第五步是服务器处理请求
服务器接收到请求后,首先会解析请求头并根据请求的 URL 路径决定如何处理。若请求的资源存在,服务器会读取该资源,进行一些业务处理、数据库查询或计算,然后生成响应数据。如果请求的是动态内容,服务器会调用应用程序逻辑(如 Java Servlet、Spring 控制器等)进行处理。
第六步是服务器发送 HTTP 响应
服务器处理完请求后,构造 HTTP 响应并返回给浏览器。响应包含响应行、响应头和响应体。响应行指示处理结果(如 200 OK、404 Not Found),响应头包含缓存控制、内容类型、日期等信息,响应体则是实际的页面内容(HTML、CSS、JavaScript、图片等)。
第七步是浏览器解析和渲染页面
浏览器接收到响应后,开始解析响应体中的 HTML 内容。在页面加载过程中,浏览器可能还会发送额外的请求来加载资源,如图片、字体、JavaScript 文件等。这些资源加载完成后,浏览器会继续更新页面内容。
第八步是关闭TCP连接
当浏览器无需与服务器通信时,它可以主动关闭 TCP 连接,或等待服务器发送关闭请求。
如何记忆:
1.口诀记忆法
口诀:
输 DNS,连请处理回解析,最后关闭很省力!
解释:
输 → 用户输入 URL
DNS → 进行 DNS 解析
连 → 建立 TCP 连接
请 → 发送 HTTP 请求
处 → 服务器处理请求
回 → 服务器返回 HTTP 响应
解 → 浏览器解析渲染页面
关 → 关闭 TCP 连接
2.联想记忆法
场景:
浏览器加载网页的流程类似于点外卖。
解析:
输入网址 = “打开外卖 APP 输入餐厅名称”
DNS 解析 = “查询商家地址”
建立 TCP 连接 = “联系商家确认订单”
发送 HTTP 请求 = “提交订单”
服务器处理请求 = “餐厅准备食物”
返回 HTTP 响应 = “骑手取餐送达”
浏览器解析渲染页面 = “用户收到餐并打开食物”
关闭 TCP 连接 = “吃完了关闭 APP”
拓展:
1.URL 的组成结构
URL 由多个部分组成,每个部分都有其特定的作用,以下是 URL 的主要组成结构:
协议(Scheme):指定访问该网址时所使用的应用层协议,例如 HTTP 或 HTTPS。此外,还有其他协议类型,如 FTP(文件传输协议)等。
域名(Host):用于标识目标服务器的地址,通常是易记的域名,例如 test.com,也可以直接使用 IP 地址。域名可以看作是 IP 地址的可读版本,方便用户访问网站。
端口(Port):用于指定服务器上的具体服务端口,通常 HTTP 默认使用端口 80,HTTPS 使用端口 443。如果 URL 中未明确指定端口,则使用协议的默认端口,否则端口号会紧随域名后并用 : 号分隔,例如 test.com:8080。
资源路径(Path):表示访问服务器上的具体资源,从 / 开始,类似于文件系统中的路径。例如,/path/to/test.html 表示要访问服务器上的 test.html 文件。虽然早期这些文件通常存储在服务器本地,但随着技术的发展,它们可能存储在云端或通过动态规则生成。
参数(Query Parameters):用于向服务器传递额外的信息,格式为 key=value,多个参数之间使用 & 连接。这些参数由服务器解析,并影响请求的具体操作。
锚点(Fragment):用于定位页面内的特定位置,以 # 开头。例如,#section2 表示跳转到页面中的某个锚点。锚点不会被发送至服务器,仅用于客户端页面的内部跳转,相当于书签功能。
2.HTTP缓存机制
浏览器在加载页面时,会利用缓存机制来减少不必要的网络请求,提高页面加载速度。主要的缓存机制包括:
强缓存(From Memory Cache / From Disk Cache): 通过 Cache-Control 和 Expires 头部控制资源的有效期,在有效期内不会向服务器发请求,直接使用本地缓存。
协商缓存(304 Not Modified): 浏览器向服务器发送 If-Modified-Since 或 If-None-Match 头部,服务器根据 Last-Modified 或 ETag 判断资源是否更新,未更新则返回 304 状态码,减少数据传输。
HTTP 状态码有哪些?(584/1759=33.2%)
HTTP 状态码是 Web 服务器在响应 HTTP 请求时返回的数字代码,用于指示请求的处理结果。状态码由三位数字组成,按照功能分为五大类。下面描述了 HTTP 状态码的分类及常见状态码的详细含义。(特别注意:面试中为抽查)
第一类是信息响应
1xx 状态码表示请求已被接收,客户端可以继续请求。比如:
100 Continue,代表服务器已收到请求的初始部分,客户端应继续发送剩余请求。
101 Switching Protocols,代表服务器同意切换协议(如从 HTTP 切换到 WebSocket)。
第二类是成功响应
2xx 状态码表示请求已被成功处理。比如:
200 OK,代表请求成功,服务器返回了预期的响应数据。
201 Created,代表请求成功,服务器已创建新资源(如 POST 请求创建用户)。
204 No Content,代表请求成功,但服务器不返回任何内容(常见于 DELETE 请求)。
第三类是重定向响应
3xx 状态码表示客户端需要采取额外操作以完成请求,通常是跳转到新地址。比如:
301 Moved Permanently,代表请求的资源已被永久移动,浏览器会自动跳转到新 URL。
302 Found,代表资源暂时移动,通常用于临时重定向。
304 Not Modified,代表资源未修改,客户端可以使用缓存的版本,减少带宽消耗。
第四类是客户端错误
4xx 状态码表示客户端请求有错误,需要修正后重新发送。比如:
400 Bad Request,代表请求格式错误或参数不正确,服务器无法理解请求。
401 Unauthorized,代表请求需要身份验证,通常用于 API 认证失败的情况。
403 Forbidden,代表服务器拒绝请求,即使身份验证成功也无权访问该资源。
404 Not Found,代表请求的资源不存在或 URL 书写错误。
405 Method Not Allowed,代表请求的方法(如 POST、PUT)不被该资源允许。
第五类是服务器错误
5xx 状态码表示服务器端处理请求时发生错误。比如:
500 Internal Server Error,代表服务器内部错误,可能是代码异常或配置错误。
502 Bad Gateway,代表服务器作为网关或代理时,接收到无效响应。
503 Service Unavailable,代表服务器暂时不可用,通常是维护或过载导致的。
504 Gateway Timeout,代表服务器作为网关时,未能及时收到上游服务器的响应。
如何记忆:
1.口诀记忆法
口诀:
一请(1xx),二成(2xx),三跳(3xx),四错(4xx),五崩(5xx)
解释:
1xx 信息类,就像服务器在“请”求客户端继续操作(100 Continue)。
2xx 成功类,表示请求“成”功处理(200 OK, 201 Created)。
3xx 重定向,说明资源位置改变,需要“跳”转(301 Moved Permanently)。
4xx 客户端错误,表示请求“错”了(400 Bad Request, 404 Not Found)。
5xx 服务器错误,服务器“崩”了(500 Internal Server Error, 503 Service Unavailable)。
2.联想记忆法
场景:
用生活场景类比状态码。
解析:
1xx 信息类:你在给朋友发消息,朋友回你“嗯嗯继续说”(100 Continue)。
2xx 成功类:你点了一杯奶茶,店员告诉你“奶茶做好了”(200 OK)。
3xx 重定向类:你去了一家店,但门上贴着“店铺搬迁,新地址XXX”(301 Moved Permanently)。
4xx 客户端错误类:你去银行填表,交上去后柜员说“信息填错了,重新填”(400 Bad Request)。
5xx 服务器错误类:你去餐厅吃饭,厨师告诉你“今天炉子坏了,没法做菜”(500 Internal Server Error)。
拓展:
1.为什么要使用HTTP 状态码?
HTTP 状态码的主要作用是让客户端(如浏览器、移动应用或 API 调用方)能够清楚地理解服务器的响应情况,具体来说,它的作用包括:
标识请求结果:状态码可以明确告知请求是成功、失败,还是需要进一步处理。例如,200 OK 表示请求成功,而 404 Not Found 表示请求资源不存在。
辅助排查问题:当请求失败时,状态码可以帮助开发者快速定位问题。例如,500 Internal Server Error 表示服务器内部错误,而 403 Forbidden 表示客户端没有访问权限。
优化交互体验:根据状态码,客户端可以采取不同的策略。例如: 301 Moved Permanently:让浏览器重定向到新的地址,减少用户手动输入的麻烦。304 Not Modified:告诉客户端资源未更改,避免重复下载,提高性能。
遵循 HTTP 规范:HTTP 状态码是协议的一部分,服务器和客户端都可以根据它们进行标准化的通信,使 Web 生态更加稳定和高效。
HTTP 和 HTTPS 有什么区别?(624/1759=35.5%)
HTTP 和 HTTPS 都是 Web 传输协议,用于在客户端(浏览器)和服务器之间通信。HTTPS 是 HTTP 的安全增强版本,在传输过程中提供加密和数据完整性保障。它们的区别主要体现在四个方面。
第一个是安全性,HTTP(HyperText Transfer Protocol)是超文本传输协议,它通过明文传输数据,通信内容容易被窃听、篡改或伪造;而HTTPS(HyperText Transfer Protocol Secure)在 HTTP 的基础上加入了 SSL/TLS 加密层,确保数据传输的安全性和完整性。
第二个是端口号和前缀,HTTP 使用默认端口 80,前缀是http://;而 HTTPS 使用默认端口 443,前缀是https://。区别在于 HTTPS 需要额外的 SSL/TLS 握手过程。
第三个是部署成本,HTTPS 需要 SSL/TLS 证书,由受信任的证书颁发机构(CA)签发;而 HTTP 不需要任何证书,部署成本较低。
第四个是搜索引擎偏好,搜索引擎通常偏好使用 HTTPS 协议的网站,因为 HTTPS 提供更高的安全性和用户隐私保护。采用 HTTPS 协议的网站在搜索结果中可能会获得优先排名,从而对 SEO 产生积极影响。
如何记忆:
1.口诀记忆法
口诀:
明文易泄,锁链加密,八零八三,证书花钱,搜索优待
解析:
明文易泄:HTTP 传输是明文,容易被窃听和篡改。
锁链加密:HTTPS 使用 SSL/TLS 加密,确保安全性。
八零八三:HTTP 端口 80,HTTPS 端口 443。
证书花钱:HTTPS 需要证书,有成本。
搜索优待:HTTPS 对 SEO 友好,排名更高。
拓展:
1.SSL/TLS 的工作原理
主要通过加密通信和身份验证建立安全通道,其核心流程如下:
(1)TLS 握手阶段
客户端与服务器通过TLS握手协商加密参数并验证身份。具体步骤包括:
客户端发送支持的加密套件列表及随机数。
服务器选择加密套件,返回证书(含公钥)及随机数。
客户端验证证书有效性,生成预主密钥(Pre-Master Secret),用服务器公钥加密后发送。
双方基于预主密钥和随机数生成相同的会话密钥(对称密钥)。
(2)加密通信阶段
握手完成后,双方使用协商的对称密钥加密数据传输,而非对称加密仅用于密钥交换,以提高效率。对称加密算法(如AES)保障数据机密性,消息认证码(MAC)确保完整性。
(3)身份验证机制
服务器通过证书(由CA签发)证明身份,客户端可选择是否验证服务器证书。在双向认证中,客户端也需提供证书。
(4)协议版本与兼容性
TLS是SSL的继任者(如TLS 1.0对应SSL 3.1),但二者常被统称为SSL/TLS。HTTPS即为HTTP over SSL/TLS的典型应用。
2.非对称加密
非对称加密(Asymmetric Encryption)是一种使用公钥(Public Key)和私钥(Private Key)的加密方式,它的核心特点是:加密和解密使用不同的密钥。常见的非对称加密算法包括 RSA、ECC(椭圆曲线加密)、DSA等。
(1)非对称加密的特点
加密和解密使用不同密钥:公钥加密,私钥解密:适用于加密数据,确保只有持有私钥的人能解密(如SSL/TLS)。私钥加密,公钥解密:用于数字签名,确保消息来源的真实性和完整性。
安全性高,但性能较低:由于涉及大量的数学运算(如大数因子分解、椭圆曲线计算),非对称加密的加解密速度比对称加密慢。一般用于加密小数据块,或用于传输对称加密的密钥(如混合加密)。
防止中间人攻击:通过数字签名和证书,可以验证通信双方身份,防止篡改和伪造。
(2)非对称加密的应用场景
HTTPS/SSL/TLS:在TLS握手中,服务器使用公钥加密会话密钥,客户端用私钥解密,随后改用对称加密进行数据传输。
数字签名:发送方用私钥签名,接收方用公钥验证签名,确保消息完整性和来源可信性。
数字证书(CA):由权威机构(CA)签发,确保网站、公钥等信息的真实性,避免中间人攻击。
区块链与加密货币:比特币等使用ECC生成私钥-公钥对,保证交易安全和身份验证。
3.对称加密
对称加密(Symmetric Encryption)是一种加密方式,它使用相同的密钥进行加密和解密。也就是说,发送方用密钥加密数据,接收方使用相同的密钥解密数据。由于加解密过程是对称的,因此这种方式比非对称加密速度更快、计算开销更小,适用于大规模数据加密。
(1)对称加密的特点
加密和解密使用相同的密钥:只要双方都持有相同的密钥,就可以进行安全通信。但密钥的安全性是对称加密的关键,必须确保密钥不会被泄露。
加解密速度快,性能高:适用于大规模数据加密,如数据库加密、文件
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
神哥引路,稳稳起步!!早鸟特惠,仅剩177名额!晚了就涨到29.9了! 核心亮点: 1.数据驱动,精准高频:基于1759篇面经、24139道八股题,精准提炼真实高频八股。 2.科学记忆,高效掌握:融合科学记忆法和面试表达技巧,记得住,说得出。 3.提升思维,掌握财商:不仅可学习八股,更可教你变现,3个月赚不回购买价,全额退。 适宜人群: 在校生、社招求职者及自学者。