计算机网络

注意:括号中为八股在每次面试中出现的概率

从输入 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%内容,订阅专栏后可继续查看/也可单篇购买

【神品八股】1759篇面经精华 文章被收录于专栏

神哥引路,稳稳起步!!早鸟特惠,仅剩177名额!晚了就涨到29.9了! 核心亮点: 1.数据驱动,精准高频:基于1759篇面经、24139道八股题,精准提炼真实高频八股。 2.科学记忆,高效掌握:融合科学记忆法和面试表达技巧,记得住,说得出。 3.提升思维,掌握财商:不仅可学习八股,更可教你变现,3个月赚不回购买价,全额退。 适宜人群: 在校生、社招求职者及自学者。

全部评论
mark一下,这个学期才学
1 回复 分享
发布于 昨天 10:28 湖北
神哥,场景题集有没有搞头?这个需求量挺大的
1 回复 分享
发布于 昨天 18:37 美国

相关推荐

Yki_:我一般就说说自己自学了一套java体系,会spring,spring MVC框架,mysql,redis,jvm,jre,1分钟不到就结束了
点赞 评论 收藏
分享
评论
7
15
分享

创作者周榜

更多
牛客网
牛客企业服务