计算机网络高频(六)HTTP和HTTPS
1.HTTPS的加密原理⭐⭐⭐
客户端和服务器端使用握手协议来建立安全连接。具体流程如下:
- 客户端发送一个连接请求,表示希望与服务器建立安全连接。
- 服务器将自己的数字证书发送给客户端。
- 客户端验证服务器的证书,包括确认证书的合法性和验证证书颁发机构的信任。
- 客户端生成一个随机的对称密钥,此对称密钥将用于后续的通信加密。
- 客户端使用服务器的公钥加密该对称密钥,并将加密后的密钥发送给服务器。
- 服务器使用自己的私钥解密客户端发来的对称密钥。
2.请说说HTTP的工作原理。⭐⭐
- 客户端发起请求:Web浏览器作为HTTP的客户端,向Web服务器发送请求。请求包括一个URL(Uniform Resource Locator),用于标识所请求的资源,以及请求方法,如GET、POST等。
- 服务器响应请求:Web服务器收到请求后,根据请求的URL和方法,处理请求。服务器会查找所请求的资源,并生成一个HTTP响应。
- 建立连接:在发送请求和接收响应之前,客户端和服务器需要建立一个TCP/IP连接。这个过程称为三次握手。
- 发送请求报文:客户端将请求包装成一个HTTP请求报文,并通过建立的TCP/IP连接发送给服务器。请求报文包括请求行(URL和HTTP方法)、请求头(包含请求的附加信息)和请求体(对于POST方法,包含要发送的数据)。
- 服务器处理请求:服务器接收到请求报文后,根据请求行和头部中的信息,处理请求。它可能会查询数据库、读取文件或执行其他操作来生成响应。
- 发送响应报文:服务器将生成的响应信息打包成一个HTTP响应报文,并通过TCP/IP连接发送给客户端。响应报文包括响应状态码、响应头(包含响应的附加信息)和响应体(包含实际的响应数据)。
- 关闭连接:在响应发送完成后,服务器和客户端都可以选择关闭连接,释放资源。也可以选择保持持久连接,以便在后续请求中复用。
3.HTTP的无连接是什么意思?⭐⭐⭐
HTTP的无连接(Connectionless)指的是每次 HTTP 请求都是独立的,没有持久连接状态。这意味着在 HTTP 请求的每个阶段都需要建立一个新的连接,发送请求并接收响应后立即关闭连接。具体来说,HTTP 的无连接特性表现在以下几个方面:
短暂会话 |
每个HTTP请求-响应交互都是短暂的,服务器在接收到请求并发送响应后立即关闭连接。 |
无状态 |
HTTP不跟踪客户端的状态信息,每个请求都是独立的,服务器不记住之前的请求。 |
资源消耗较少 |
每个请求生命周期短暂,不需要维持持久连接,减少服务器的负载和资源占用。 |
完全解耦 |
无连接特性使得客户端和服务器之间解耦,其通信可以非常灵活,不存在先后关系或依赖性。 |
可扩展性和灵活性 |
每次请求都是独立的,服务器不需要维护连接状态,使得增加、减少服务器节点等扩展性操作更加方便。 |
适应低可靠性网络环境 |
无连接特性使其适合在互联网等低可靠性网络环境下进行通信。 |
4.HTTP的无状态是什么意思?⭐⭐
HTTP的无状态(Stateless)指的是服务器在处理客户端请求时,不保存关于客户端的任何状态信息。每个HTTP请求都是独立的,服务器不能从之前的请求中推断出客户端的上下文或状态。
具体来说,无状态意味着以下几点:
- 每个请求都是独立的:服务器不能确定两个请求是否来自同一个客户端,因为它没有保存关于客户端的状态信息。
- 服务器不存储客户端状态:服务器不会保存客户端的任何状态信息,如登录状态、会话数据等。每个请求都需要提供足够的信息来完成处理。
- 无法跟踪客户端会话:由于服务器不存储客户端状态,它无法跟踪客户端的会话,也无法确保在多个请求之间保持用户身份验证状态。
5.在浏览器地址栏键入URL,按下回车之后会经历哪些流程?⭐⭐⭐
- URL解析:浏览器解析URL,提取出域名。
- DNS解析:浏览器向DNS服务器发送请求,将域名解析为对应的IP地址。
- 建立TCP连接:浏览器使用获取到的IP地址和默认的HTTP端口(通常为80)建立TCP连接。
- 发起HTTP请求:浏览器发送HTTP请求,包括请求方法(如GET、POST等)、路径、查询参数、请求头(如User-Agent、Accept等)和请求体(如POST请求中的数据)。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本人2022年毕业于山东大学,目前就职intel。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。