DNS的实现,面试常问

很多公司面试都会有这个问题,比如从浏览器输入www.baidu.com打开到显示页面,经过哪些。

从这个简单的问题,可以看出应聘者对网络这块的了解程度。

DNS说白了,就是将域名解析成IP的过程。为什么要解析ip,因为ip才是你真正要访问的东西的地址。

解析的过程中,会产生DNS挟持,DNS污染使得解析的IP错误,造成大面积访问404的问题,

所以很多公司采用httpDNS的方式,来缓存到本地环境,减少这块的错误。

一般DNS解析过程分为

1、递归查询,即发一次请求,等你给结果,主要用于本地dns服务器

2、迭代查询,发一次请求,返回一次,在请求,在返回....用于本地dns服务器向dns根域名服务器

DNS服务器是一个错综复杂的集群缓存服务器,一层一层递进式的方式,来提升效率

DNS根域名服务器的变动不是很频繁,所以本地都会有缓存,通过根域名可以找到域名的顶级dns服务器,也就是www.baidu.com中的.com,根域名告诉本地域名服务器,.com的IP地址,本地域名服务器就访问这个ip,查找下一级的域名对应的域名服务器IP地址,本地域名系统继续访问下一级的域名服务器,最后找到完整域名对应的IP。

当然在查找的过程中,都会先查缓存。

大致过程如下图所示

 当然为了更好的展示自己的技能,你可以使用dig命令查看解析过程

dig www.baidu.com +trace  可以看到详细的dns解析过程。

参考资料:

DNS递归查询与迭代查询 - 皈依之路 - 博客园 (cnblogs.com)

不为人知的网络编程(九):理论联系实际,全方位深入理解DNS-网络编程/专项技术区 - 即时通讯开发者社区! (52im.net)

### HTTP协议常见面试问题及解答 #### 1. HTTP握手的过程是什么? HTTP握手是建立在TCP连接之上的,具体包括以下几个阶段: - **建立TCP连接**:客户端向服务器发起三次握手以建立可靠的TCP连接。 - **发送HTTP请求**:一旦TCP连接成功建立,客户端通过该连接发送HTTP请求消息给服务器。 - **接收HTTP响应**:服务器处理收到的请求后返回相应的HTTP响应消息给客户端。 - **关闭TCP连接**:当双方完成数据交互后,通常会断开TCP连接。 这些步骤确保了客户端与服务器之间能有效地进行通信并交换所需的数据[^1]。 #### 2. HTTP/1.0 和 HTTP/1.1 的主要区别有哪些? 相比于HTTP/1.0, HTTP/1.1引入了一些重要的改进特性: - 支持持久连接(Persistent Connections),即在一个TCP连接上可以传送多个HTTP请求和应答; - 添加了`Host`头字段用于支持虚拟主机(Virtual Hosting)功能; - 提供分块编码(Chunked Transfer Encoding)机制允许动态长度的内容传输; - 更加完善的缓存控制(Cache-Control)指令集以及条件GET方法(If-Modified-Since / If-None-Match)来优化资源获取效率; 上述变化显著提高了Web应用性能和服务质量。 #### 3. 如何理解WebSocket协议与HTTP之间的关系? 虽然两者都是基于TCP的应用层协议,但是它们有着不同的设目标和技术特点。WebSocket是在原有HTTP基础上发展起来的一种全双工通讯协议,在初次握手时遵循标准HTTP格式,之后则切换至更高效的二进制帧结构来进行双向实时通信。因此可以说WebSocket是对传统HTTP单次请求回应模式的有效补充和发展延伸。 ```python import websocket def on_message(ws, message): print(f"Received: {message}") ws = websocket.WebSocketApp("wss://example.com/socket", on_message=on_message) ws.run_forever() ``` #### 4. 当浏览器输入URL按下回车键后会发生什么? 整个流程大致如下所示: - DNS解析域名成IP地址; - 建立TCP/IP连接到指定端口,默认情况下HTTP服务监听80端口而HTTPS则是443端口; - 发送HTTP GET 请求携带必要的头部信息如User-Agent等; - 接收来自服务器的一系列响应报文直至结束标志符到达为止; - 渲染HTML文档树形结构同时加载外部样式表、脚本文件等内容片段; - 执行JavaScript代码触发DOM事件更新视图界面显示效果。 此过程涉及到了络编程中的诸多概念和技术要点,对于深入理解和掌握算机科学基础知识具有重要意义[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RenBingo

一点一滴源于你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值