问答 一些网络协议相关的问题

LUA · February 15, 2022 · Last by 陈恒捷 replied at February 16, 2022 · 2213 hits

以下为 centos 环境:

1.服务器无域名信息则向 DNS 请求获取域名对应 IP。 获取到的 IP 和域名是否保存?保存的话是在内存还是落地?内存的话是多久?;
2.服务器与被请求域名服务器建立 TCP 链接后,后 TCP 断开。在什么情况下可以让服务器再次向 DNS 请求后再与被请求域名服务器建立 TCP 链接?;
3.问题 2UDP 的情况;
4.有没有什么方法可以让每次访问都走 DNS 解析后在发送请求;

谢谢社友们😀 祝愿元宵节早下班

最佳回复

没深入了解过这块逻辑,结合个人日常刷新 dns 缓存相关理解:

1、服务器无域名信息则向 DNS 请求获取域名对应 IP。 获取到的 IP 和域名是否保存?保存的话是在内存还是落地?内存的话是多久?
——保存是肯定有保存的,否则不会出现各种刷新本地 dns 缓存的操作。至于是内存还是磁盘里面这个真的不大了解。用 “DNS 缓存” 找到了一篇说得很详细的文章,可以参考下:https://bbs.huaweicloud.com/blogs/109378

2、服务器与被请求域名服务器建立 TCP 链接后,后 TCP 断开。在什么情况下可以让服务器再次向 DNS 请求后再与被请求域名服务器建立 TCP 链接?;
——感觉你是把域名解析和 tcp 连接混在一起了,实际流程是:找到域名关联的 ip 信息(先本地缓存,后找 dns 服务),然后和这个 ip 及端口(http 默认 80,https 默认 443)建立 tcp 连接。所以你这个问题的答案和第一个其实是一样的,只有 dns 本地缓存失效才会去问 dns 服务器

3、问题 2UDP 的情况;
——个人理解和 tcp 也是一样的

4、有没有什么方法可以让每次访问都走 DNS 解析后在发送请求;
——每次都强制清除本地 DNS 缓存即可。不过 DNS 除了本地缓存,还有路由中途各个节点的缓存、地区 DNS 缓存的等很多级缓存的,全部缓存刷新一般需要好几个小时。如果你想要快速更改,要不自己在连接的路由器手动加 DNS 映射关系(一般路由器是最近的节点,而 DNS 查询是只要有一个节点返回了映射关系,就不会继续问下一级节点了),要不直接通过本地 host 文件手动配置固定的映射关系(这个连缓存都不用清,立即生效)。

共收到 3 条回复 时间 点赞
  1. IP 和域名瞎猜是落地保存但是有过期时长或过期策略,好细节真的给干不会了 😅
  2. 问题 2 已经看不懂了,不知是否问题表述上有出入【让服务器再次向 DNS 请求后再与被请求域名服务器建立 TCP 链接?】
  3. 同 2
  4. 每次请求前都清一次本地 DNS 缓存?(至于清理的方法,得靠搜索引擎了😅 😅
LUA #2 · February 15, 2022 Author
王稀饭 回复

可能我表述的不是很清楚、引入一个案例吧;DNS 混淆: A 服务地址(10.1.1.2)B 服务地址(10.1.1.3/域名用 xxx 表示),A 想访问 B 首先要拿到 xxx 解析如果,所以 A 先 DNS 发起请求后得到回答拿到 B 服务地址(10.1.1.3)。但是现在通过一些工具使每一次 DNS 返回的 B 的服务地址都是 random 或者干脆是错误的。这就造成 A 无法访问 B 的情况。以上是没有 TCP 链接的情况。
已经有 TCP 的链接的情况,我再使用工具使,是无法干扰它已经得到的解析过的正确的 IP(10.1.1.3),所以我选择断链,但是断链后它会去请求 DNS 服务器嘛?是在什么情况下会请求 DNS 服务器?

没深入了解过这块逻辑,结合个人日常刷新 dns 缓存相关理解:

1、服务器无域名信息则向 DNS 请求获取域名对应 IP。 获取到的 IP 和域名是否保存?保存的话是在内存还是落地?内存的话是多久?
——保存是肯定有保存的,否则不会出现各种刷新本地 dns 缓存的操作。至于是内存还是磁盘里面这个真的不大了解。用 “DNS 缓存” 找到了一篇说得很详细的文章,可以参考下:https://bbs.huaweicloud.com/blogs/109378

2、服务器与被请求域名服务器建立 TCP 链接后,后 TCP 断开。在什么情况下可以让服务器再次向 DNS 请求后再与被请求域名服务器建立 TCP 链接?;
——感觉你是把域名解析和 tcp 连接混在一起了,实际流程是:找到域名关联的 ip 信息(先本地缓存,后找 dns 服务),然后和这个 ip 及端口(http 默认 80,https 默认 443)建立 tcp 连接。所以你这个问题的答案和第一个其实是一样的,只有 dns 本地缓存失效才会去问 dns 服务器

3、问题 2UDP 的情况;
——个人理解和 tcp 也是一样的

4、有没有什么方法可以让每次访问都走 DNS 解析后在发送请求;
——每次都强制清除本地 DNS 缓存即可。不过 DNS 除了本地缓存,还有路由中途各个节点的缓存、地区 DNS 缓存的等很多级缓存的,全部缓存刷新一般需要好几个小时。如果你想要快速更改,要不自己在连接的路由器手动加 DNS 映射关系(一般路由器是最近的节点,而 DNS 查询是只要有一个节点返回了映射关系,就不会继续问下一级节点了),要不直接通过本地 host 文件手动配置固定的映射关系(这个连缓存都不用清,立即生效)。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up