面试官问:在浏览器中输入URL中会发生什么
我们首先分析下这个问题
这是一个很宽泛 细节非常非常多的一个问题 如果要展开来细说我们可以直接从应用层的协议 讲到传输层 网络层 再到数据链路层
可是我们这里不建议大家一开始就深挖协议中的细节 原因有二
- 我们可能陷入细节中导致逻辑混乱等情况
- 讲述时间过长
我们建议的回答方式是这样子的
- 回答整体结构 重点放在应用层http https 部分涉及tcp
- 和面试官沟通 是否需要进一步谈论细节
下面是举例
首先我们得浏览器会向域名解析服务器发送请求 进行域名解析
然后浏览器会想办法把连接建立好
建立好连接之后会按照HTTP请求格式构建一个HTTPrequest
搭建完request之后会通过建立好得TCP连接发送数据
数据发送到服务器之后 服务器可以读取数据到应用层
在应用层对于此次发送得request做分析 解析请求得 方法 参数 请求资源等等
之后定位到对于资源 在服务端将资源打开
然后构建HTTP响应 并通过TCP连接发送到客户端
客户端一样正常读取 读取之后对响应进行解析得到 状态码 资源等
如果我们请求得资源是网页 那么浏览器就会对于该网页请求进行解析 呈现我们现在所看到得网页效果
至此 我们整体结构部分回答完毕
下面是和面试官进行沟通
在浏览器中输入URL中会发生得整体结构就是这个样子 但是在这里我们还有十分多得细节可以详谈
比如说
应用层
- HTTP如何构建请求和响应 报文格式是什么?
- 如何进行序列化和反序列化
- 如何进行会话保持工作 cookie 和 session机制
- HTTP协议安全吗? 如果不安全 我们要用什么方法来保证安全
- 什么是中间人攻击
- 我们如何防止中间人攻击
传输层
- TCP是如何保证可靠性的
- 三次握手四次挥手?
- 中间的状态
- 捎带应答机制?
- 快速应答机制?
- TCP报文是什么
- 如果发生丢包会怎样
- 如何解决粘包问题
- 如何进行解包和分用
- 网络层得作用是什么
- 如何完成
- IP地址分类
- 网段划分
- 私有IP和公有ip
- 作用是什么
- 局域网的通信原理
- 交换器的作用
- 以太网协议格式
- arp协议是什么 作用是什么
- nat技术 napt等等等
如果此时面试官继续追问某一点的细节 则我们回复即可 如果让我们自由发挥我们就选择理解比较深的点继续详谈