域名是如何变成IP的

本教程是博主个人心血,禁止转载!!

01_一次Http请求都干了啥

问题引入

我们上篇博客做了一个Http请求的抓包,里面只是介绍了抓到的大概有哪些内容。
好了,先做一个回顾。

在这里插入图片描述

上次我们说道:一次http请求分为三部分:建立连接;发送请求和接受响应;断开连接。 这个呢就先记住,里面具体的呢,我们慢慢的搞起来,贪多了也搞不烂。

再看截图,这张截图是我又按照上篇的博客重新做了一次,所以里面的IP地址有所变化,但是操作是一样的,这次我们只关注截图里面的两个IP地址:

在这里插入图片描述

好了,这两个IP地址就是我们今天研究的主题, 我们先弄清楚这两个IP地址的时如何来的?

这里面涉及两方面的知识,下面我们一一来介绍:

1. 本机IP
2. 域名对应的IP

DNS解析介绍

今天我们想知道两个IP是怎么来的,这里面就涉及了一个专业术语DNS解析DNS解析就是指的域名到IP地址的变化过程。

我们先来理清一个事实:

在网络中,网络机器也就是电脑、服务器等各种网络设备,它们只认IP地址。
也就是在网络传输中,IP地址是数据发送和接受的出发点和目的点。
而我们在发送请求时用到的域名,类似于www.baidu.com这样的域名,在网络传输中会被先转化成机器认识的IP地址。

实验

这个是我们在Http请求的抓包过程中体现的两个IP地址:

在这里插入图片描述

你明显的看出,这两个IP地址一个叫Source,一个叫Destination,好了,我帮大家查过词典了,这两个英文一个是源地址,一个是目的地

源地址应该说的是我们本机的地址,那真的是这样吗?我们来验证一下,这个对应的到底是不是我们自己电脑的IP。

1. 探究自己电脑的IP地址和Source的IP到底是不是一个

这里查看自己的IP地址,会用到ipconfig命令,ipconfig命令是windows系统查看自己电脑网络IP配置的一个命令。它会把我们电脑涉及的所有的网卡信息都罗列出来,也包括虚拟网卡、
虚拟的VPN通道信息。

好了,下面开始我们的验证!!!

打开CMD窗口,输入一下命令:

ipconfig

然后你会看到:

在这里插入图片描述

此处说明:里面返回的信息包含了你电脑所有的网卡信息,如果你用的是网线,就找到以太网适配器 以太网。如果你连接的是无线,就找到无线局域网适配器 WLAN

此处你就发现,抓包工具里面对应的Source里面的IP地址其实就是我们自己的IP地址,也就是说是我们本机电脑发出去的数据包,而没有经过别人的转发啥的。

1. 本机发送出去的数据包,对应的发送端的IP地址就是我们自己机器的IP地址!

2. 探究如何获取网址对应的IP地址

好了,到这里你应该也猜的到剩下的那个220.181.38.50对应的就应该是www.baidu.com的IP地址。

OK, 那这个IP地址从哪里来的呢?存在自己电脑上的吗?要是存在自己电脑上的话,那是不是所有互联网对应的IP都得存一份?

废话不说,开始我们的实验!!!

打开CMD窗口,输入一下命令,这个命令是展示我们电脑缓存的所有的DNS信息:

ipconfig/displaydns

在这里插入图片描述

你会发现,里面有两个IP地址110.242.68.3110.242.68.4。和我们上面演示的220.181.38.50不太一样,这是怎么回事呢?

好了,这三个IP地址其实都是www.baidu.com对应的IP地址,我们通过其中的任何一个都可以访问到百度。

不信我们就试试,打开把其中的一个地址粘贴到地址框去,此处只演示一个,剩下的自己尝试下:

在这里插入图片描述

好了,细心的你一定发现了生存时间的细节,在ipconfig/displaydns的返回结果里面,有个生存时间78。这个数字代表的是在我们电脑里面这条记录保存78秒。
不信的话,你在使用ipconfig/displaydns你会发现,数字比78小,甚至里面的返回结果没有www.baidu.com对应的信息。

此处加个推测:

1. IP地址不是20.181.38.50,可能是由于到目前为止的时间,已经超过了DNS缓存的时间,也就是缓存20.181.38.50失效了。
2. 而新拿到的两个IP地址是在20.181.38.50失效之后,重新访问www.baidu.com时候,重新缓存起来的。

OK,上面只是我们的猜测,那到底是不是这样呢,我们来做个实验。用到的工具还是Wireshark,实验的思路如下:

1. 我们先清除我们本地的缓存。
2. 然后在访问百度,查看下我们的DNS信息。

为了保证我们电脑里面没有DNS缓存,我们先清除DNS缓存,执行以下命令:

ipconfig/flushdns

在这里插入图片描述

到了此时,我们的电脑上就没有www.baidu.com的DNS缓存了,我们就可以抓取DNS的获取过程了。

下面我们开始抓取DNS的获取过程!!!!!!!!

  1. 第一步打开Wireshark, 过滤框中输入dns,如下图:

在这里插入图片描述

  1. 打开CMD窗口,输入以下命令:
curl www.baidu.com

在这里插入图片描述

下图是Wireshak抓取的DNS解析的过程。

在这里插入图片描述

基于我们上面的讲解,你应该可以看的懂这张图了:

1. 我们IP为10.13.144.189.
2. 我们向IP为10.13.7.64的服务器发送了一个DNS请求。
3. 服务器给我返回了两个IP:`110.242.68.3`和`110.242.68.4`

到了此处,你应该明白了。

1. DNS在我们本地是有缓存的
2. DNS对应的IP是可以从DNS服务器获取的

然后我们在看下我们本地的DNS缓存,你会发现他们和抓包返回的结果一致:

在这里插入图片描述

那我们本地的缓存信息和远程的DNS服务器的信息是如何一致的呢?这个呢,其实很简单。

1. 我们知道本地的DNS缓存是有时间限制的。
2. 在我们本地存在DNS缓存时,不会请求远程的服务器。
3. 只有本地DNS缓存超出了时间限制,也就是本地没有了DNS缓存,才会去远程拉取,同时保存到本地缓存一份。

整合我们上篇博客的内容,整个curl www.baidu.com的流程如下图:

在这里插入图片描述

知识点整合:

1. 我们在发送Http请求的时候,如果本地没有对应域名的缓存DNS信息,就会去请求DNS服务器,拿到域名对应的IP.
2. 如果本地有了缓存,就直接用本地的DNS信息。
3. 拿到域名对应的IP后,与IP对应的服务器建立连接。
4. 发送和接受请求。
5. 断开连接。

总结

  1. 本篇博客告诉你,如何获取自己的IP地址。
  2. 域名是如何变成IP的。
  3. 本地电脑是缓存DNS信息的,但是它们有时间限制。
  4. 如何查看DNS缓存和如何清除DNS缓存。

拓展

  1. 既然我们知道了如何获取DNS信息,那DNS具体的查找过程你知道吗?DNS返回信息里面对应的www.a.shifen.com是怎么回事呢?
  2. DNS服务器到底是谁在维护?在哪里?
  3. 一个域名为啥对应了那么多的IP地址,这个是如何做到的呢?
  4. 我们在请求DNS信息的时候,DNS服务器的信息那里获取呢?
好了,本节博客就结束了,你学废了吗,我们会持续更新网络中的各种概念和各种实验,欢迎大家关注!!!下期更精彩!!!
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@魏大大

我们都没有打赏的习惯

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

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

打赏作者

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

抵扣说明:

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

余额充值