网络八股2

发布时间 2023-09-05 11:37:15作者: MaydayComes

 1、因特网是极为复杂的系统,它包含大量的软件以及硬件系统,大量的应用程序和协议、各种类型的端系统、分组交换机,面对这种庞大且复杂的系统,将其化简分层是极其有必要的,分层的好处如下:

(1)各层之间相互独立、相关隔离。每层只考虑当前层如何实现,无需考虑其他层
(2)提高整体结构的灵活性,层次之间结构解耦合
(3)大问题变小,复杂问题变简单

2、

 3、

 4、

假设一个主机上的一个应用向另一个主机的一个应用发送数据。

(1)在发送主机端,一个应用层报文被传送到传输层。在最简单的情况下,传输层收取到报文并附上附加信息,该首部将被接收端的传输层使用。
(2)应用层报文和传输层首部信息一道构成了传输层报文段。附加的信息可能包括:允许接收端传输层向上向适当的应用程序交付报文的信息以及差错检测位信息。该信息让接收端能够判断报文中的比特是否在途中已被改变。
(3)传输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报文。
(4)该数据报文接下来被传递给链路层,在数据链路层数据包添加发送端 MAC 地址和接收端 MAC 地址后被封装成数据帧。
(5)在物理层数据帧被封装成比特流,之后通过传输介质传送到对端。而在接收主机端,整个过程正好反过来。

 

 1、

 2、

假设一个客户端 A,想要查询 a.leetcode.cn 的 ip 地址,考虑缓存的情况。

(1)客户端 A 首先查询本地的 hosts 文件,查询是否有网址映射关系,如果没有,进行下一步查找。
(2)查找本地的 dns 解析器缓存,如果没有进行下一步。
(3)根据 tcp/ip 参数查找设置好的首选 dns 服务器 ip 地址,一般叫做本地 dns 服务器,查询本地 dns 服务器。本地 dns 服务器如果没有,它就会进行下一步操作。
(4)本地dns会访问根服务器 ,然后根据后缀名,从根服务器中查找对应的顶级域名服务器的 ip ,然后以此向下查找域名服务器的 ip ,然后查找网址映射关系,直到找到为止。

3、

 

(1)dns 解析:访问一个网站时,浏览器获得一个域名,通过 dns 服务将域名解析为 ip 地址。
(2)tcp 连接:向 Web 服务器发起 tcp 连接请求。
(3)发送 http 请求:浏览器向 Web 服务器发起一个 http 请求,http 协议是建立在 tcp 协议之上的应用层协议,其本质是在建立起的 tcp连接中,按照 http 协议标准发送一个索要网页的请求。
(4)处理请求并返回:服务器获取到客户端的 http 请求后,会根据 http 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器。
(5)浏览器渲染:浏览器根据响应开始显示页面,首先解析 html 文件构建 DOM 树,然后解析 CSS 文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
(6)断开连接:客户端和服务器断开连接。

4、http常用4种类型首部:通用首部字段、请求首部字段、响应首部字段、实体首部字段。

(1)通用首部字段:Connection、Date、Cache-Control

(2)请求首部字段:Host、User-Agent、Accept(允许哪些媒体类型)、Accept-Charset(浏览器申明可接受的字符集)、Authorization(http协议中需要认证资源的认证信息)

(3)响应首部字段:Server、Location、Vary、Retry-After

(4)实体首部字段:Content-encoding、Content-Length、Content-Language(响应体的语言:zh、en……)、Content-MD5、Content-Type(比如:Content-Type: text/html; charset=utf-8)

5、

 6、

7、https://blog.csdn.net/m0_66030415/article/details/126709667

8和9、https比http更加安全。

 https如何处理安全问题:

(1)数据加密:对称加密、非对称加密

(2)数字证书认证

(3)通过 ssl/tls 报文摘要功能检验报文完整性:http 也提供了 MD5 报文摘要功能,但不是安全的。因为MD5报文摘要的值也是可以被篡改的,https 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作;加密 + 摘要检验 + 认证 = 数据完整

 

10、利用session和cookie来保存状态。

 11、http从诞生到现在一共存在5个版本。最早期 http0.9,较为完善的 http1.0,当前主流的 http1.1,正在试用的 http2.0,未来的 http3.0。