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

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服务器的信息那里获取呢?
好了,本节博客就结束了,你学废了吗,我们会持续更新网络中的各种概念和各种实验,欢迎大家关注!!!下期更精彩!!!

域名是如何变成IP的相关推荐

  1. 引子 我想大家应该都很熟悉DNS了,这回在DNS前面加了一个D又变成了什么呢?这个D就是Dynamic(动态),也就是说,按照传统,一个域名所对应的IP地址应该是定死的,而使用了DDNS后,域名所对应

    引子 我想大家应该都很熟悉DNS了,这回在DNS前面加了一个D又变成了什么呢?这个D就是Dynamic(动态),也就是说,按照传统,一个域名所对应的IP地址应该是定死的,而使用了DDNS后,域名所对应 ...

  2. nginx 禁止IP访问服务器和非法域名绑定你的IP

    如果你不想别人通过IP访问你的web server或用其它域名绑定你的IP.有什么解决方案呢? 如果你的web server是nginx 请参考下面的虚拟主机配置: server{ listen 80 ...

  3. 实现一个域名对应多个IP地址和DNS优缺点详解!

    实现一个域名对应多个IP地址和DNS优缺点详解! 1.DNS定义: DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访 ...

  4. nginx 防止恶意域名解析_配置nginx只允许域名访问,禁止ip访问【图文教程】

    平凡也就两个字: 懒和惰;成功也就两个字: 苦和勤;优秀也就两个字: 你和我.跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!每一篇文章都是心 ...

  5. 同一域名对应多个IP时,PHP获取远程网页内容的函数

    同一域名对应多个IP时,PHP获取远程网页内容的函数 [文章作者:张宴 本文版本:v1.0 最后修改:2008.12.15 转载请注明原文链接:http://blog.zyan.cc/post/389 ...

  6. nginx php多域名配置文件,配置文件,nginx_nginx多站点配置,无法通过域名访问,使用ip访问会跳转到其中一个站点,配置文件,nginx - phpStudy...

    nginx多站点配置,无法通过域名访问,使用ip访问会跳转到其中一个站点 在一台服务器设置了Nginx多站点,但是访问这些站点的域名均无法访问,错误如下图: 通过ip会跳转到其中一个站点,具体表现为: ...

  7. 查询服务器外网IP和根据域名查询外网IP

    [size=medium] linux经常需要查询服务器的外网IP,或是通过域名来查询该服务器对应的外网IP 1.查询本地服务器外网IP curl ipinfo.io/ip 2.通过域名查询外网IP ...

  8. 计算机名和DNS域名的关系,域名、DNS、IP地址的对应关系

    什么是域名?什么是IP地址? 域名(英语:Domain Name),简称域名.网域,是由一串用点分隔的名字组成的上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置) ...

  9. 虚拟主机的构建——基于域名、端口、IP

    构建虚拟主机 1.虚拟主机介绍 企业常用的虚拟主机分为3种: (1)基于域名 (2)基于端口 (3)基于IP 虚拟web主机 在同一台物理服务器中运行多个web站点,其中每一个站点并不独立占用一台真正 ...

  10. 多活主备选择性DNS解析(一个域名对应多个IP)

    多活主备选择性DNS 问题背景 知识背景 DNS解析存在多级缓存(此处仅列举到DNS服务器层:后续流程不涉及) DNS一对多域名的解析随机性 DNS 域名解析负载均衡缺点: 可能方案 方案一.dns解 ...

最新文章

  1. win10下安装linux mint,win10系统安装Mint Linux 18的详细步骤
  2. ant安装(for linux)
  3. PHP各种魔术方法测试
  4. Redis中7种集合类型应用场景
  5. 计算机系统基础:程序与运算
  6. 几个想法,有兴趣的可以深入下去
  7. 号称迄今为止最快,.NET6带来了什么?
  8. mysql批量条件字段_mysql批量更新多条记录的同一个字段为不同值的方法
  9. Python与机器视觉(x)图像差分-图像相减
  10. 数据库篇之[bsp_orders]数据表-BrnShop1.9升级至2.1升级说明(非官方版本)
  11. 对民办幼儿园管理的几点思考
  12. 常见路径规划算法介绍
  13. 4G标准LTE成争执焦点 中兴华为或以和解收场
  14. mysql ipv4转ipv6_从IPv4到IPv6过渡
  15. 在线文档编辑插件——KindEditor
  16. 魔百盒CM201-1、CM211-1朝歌ZG_支持UWE5621WiFi驱动_免拆卡刷固件包
  17. java生成二维码,全过程,不要积分
  18. 百度Ai实现网络图片文字识别--Java
  19. The Foundry NUKE 12 mac版(电影特效合成制作软件)
  20. 分布函数弱收敛和一致收敛

热门文章

  1. 单体架构与微服务架构(英文)
  2. 计算机扩容硬盘,扩容盘是什么 如何恢复真实容量【方法详解】
  3. python程序设计实训心得体会_20194220 实验四《Python程序设计》实验报告
  4. 计算机基础知识vf试题及答案,2016年计算机二级考试《VF》上机试题及答案(1)
  5. nfc加密卡pm3和pm5区别_【黑科技】NFC模拟门卡门禁
  6. Python实现 excel转Word 工具开发
  7. 【HikariCP】HikariCP连接时间设置和连接数设置
  8. 基于VC++实现的中国象棋-双人象棋游戏
  9. 《人月神话》阅读心得
  10. 搞一下SOA | 11 SOA 系统建模