ping某个域名的详细过程

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

在前一篇文章中,我们已经对ping命令的整个过程做了一个详解。但是,前一篇文章中所涉及到的两种ping命令使用情况,都是ping的IP,在这篇文章中,我们将要详细讲解ping某个域名的整个过程。


一、ICMP协议


在了解ping命令之前,我们首先需要了解一下ICMP协议,即:网络控制消息协议(Internet Control Message Protocol)。


ICMP是TCP/IP协议族的一个子协议,工作在网络互联层(网络层)。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

扫描二维码关注公众号,回复: 4088940 查看本文章


几种常用的ICMP报文类型如下表所示:


ICMP报文的格式如下图所示:


二、地址解析协议ARP


我们经常会遇到这样的问题,已经知道了一个主机的IP地址,需要找到其对应的物理地址。因为将IP数据报封装到MAC帧里面的时候需要知道目的地址的MAC地址。地址解析协议ARP的作用就是根据主机的IP地址来获得物理地址。

每个主机都设有一个ARP高速缓存(ARP cache),这里面放着的是主机已经知道的IP地址和MAC地址的映射表,并且这个映射表还是经常动态更新的。


1)ARP的工作原理

当主机A想要同本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如果有,就在ARP高速缓存中查找器对于的硬件地址,再把这个硬件地址写入MAC帧里,然后通过局域网把MAC帧发往此硬件地址。也有可能在ARP高速缓存中查不到主机B的IP地址(主机A缓存为空,或主机B刚加入局域网),这样也就无法知道主机B的MAC地址,这时候就需要使用到ARP了,按以下步骤来获得主机B的硬件地址。

主机A的ARP进程在本局域网上广播发送一个ARP请求分组,以广播的形式,格式如图a所示。

在本局域网上的所有主机上运行的ARP进程都受到了这个ARP请求分组。

主机B在ARP请求分组中发现了自己的IP地址,就向A主机发送ARP响应分组,以单播的形式直接发给A,以如图b所示。同时主机B知道了A的IP地址和MAC地址,就将主机A的IP地址和MAC地址写入ARP高速缓存中。其他主机在对比IP地址之后,发现与自己的IP地址不同,就丢掉分组。

主机A收到主机B的ARP响应分组之后,这样就知道了主机B的MAC地址,同时把主机B的IP地址和MAC地址写入ARP高速缓存。


上面所描述的情况是在同一局域网下的情景,如果主机A要同不在同一局域网下的主机B进行通信,发送IP数据报。首先主机A将主机B的IP地址同自己的子网掩码进行比对,发现不在同一局域网内,则利用ARP请求分组,根本局域网上的路由器的IP地址来获取路由器的MAC地址,然后将剩下的工作交给路由器去做即可。


2)ARP的四种典型情况

①发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时利用ARP找到目的主机的硬件地址。

②发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时利用ARP找到本网速上的一个路由器的硬件地址,然后把剩下的工作交给路由器去完成。

③发送方是路由器,要把IP数据报发送到另一个网络上的一个主机。这时利用ARP找到本网络上的另一个路由器的硬件地址,然后把剩下的工作交个这个路由器去完成。

④发送方是路由器,要把IP数据报发送到本网络上的一个主机。这时利用ARP找到目的主机的硬件地址。


三、ping某个域名的整个过程


ICMP的一个重要应用就是分组网间探测PING(Packe InterNet Groper),用来测试主机之间的连通性。PING使用了ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个例子,没有经过传输层的TCP或UDP。


ping某个域名相对于ping IP地址来说,多了一些步骤,主要用来获取域名对应的IP地址,整个过程如下:

1、主机查找本地系统Hosts文件的DNS缓存,如果存在该域名对应的IP,则获取IP,跳转到第8步;如果不存在,则继续。

2、主机向本网络路由器发起请求,查找路由DNS缓存,如果存在该域名对于的IP,则获取IP,跳转到第8步;如果不存在,则继续。

3、路由器向本地ISP(互联网提供商)的DNS服务器发起请求,查找DNS服务器的缓存,如果存在该域名对应的IP,则跳转到第7步;如果不存在,则继续。

4、本地DNS服务器向根域名服务器发起请求,根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。

5、本地域名服务器向顶级域名服务器dns.com进行查询,顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。

6、本地域名服务器向权限域名服务器dns.abc.com进行查询,权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。 

7、本地域名服务器最后把查询结果——该域名对应的IP地址告诉给主机。

8、至此,主机知道了该域名的IP地址。



----------------------------------(以上部分主要是根据域名获取对应的IP地址,涉及DNS)-----------------------------------


9、主机通过子网掩码判断该IP地址是本网段还是跨网段,由于本网段比较简单,我们以跨网段进行讲解。

10、主机先查看本地ARP高速缓存,查看表中是否有本网络路由器(网关)的MAC地址,如果有,则获取MAC地址,跳转到第12步;如果没有,则继续。

11、主机使用ARP解析协议获取到本网段路由的MAC地址。

12、至此,主机知道本网络一个路由的MAC地址。

---------------------------------(以上部分主要是获取本网络一个路由的MAC地址,涉及ARP)-----------------------------

13、主机将ICMP报文封装成IP数据报,IP数据报的源地址为主机的IP地址,目的地址是域名对应的IP地址;

14、主机将IP数据报封装成MAC帧,MAC帧的源地址为主机的MAC地址,目的地址是路由器的MAC地址;

12、路由器接收到ICMP报文之后,发现MAC帧的目的地址是自己,IP地址是主机想要访问的IP地址,则将MAC帧的源地址改为自己的MAC地址,目的地址改为本网段另一个路由的MAC地址(也要通过ARP协议获取),转发下去...

13、直到最后一个路由根据ARP协议,找到了主机想要访问的IP地址对应的主机的MAC地址,然后将ICMP报文封装成MAC帧发送给该域名主机。

14、由于ARP协议具有相互学习性,域名主机接收到主机发送的ICMP回送请求报文之后,将向本网络路由发送ICMP回送回答报文,该路由又会转发下去...

15、当主机收到域名主机发送的ICMP回送回答报文之后,这样就表明该主机到域名主机是连通可达的。


参考文献:

1、一张图看懂DNS域名解析全过程 http://www.maixj.net/ict/dns-chaxun-9208

2、DNS解析过程原理【深入浅出详解】http://www.ecdoer.com/post/dns.html

3、DNS解析过程详解 http://blog.chinaunix.net/uid-28216282-id-3757849.html

4、DNS原理总结及其解析过程详解 http://blog.csdn.net/yipiankongbai/article/details/25031461

5、当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?

      http://www.nowcoder.com/questionTerminal/4150a74bd14d4bd3a0d3f133376c97c7

6、PING的原理以及ICMP协议 http://www.lxway.com/19149084.htm

7、IP数据包的传输全过程详解 http://www.cnblogs.com/coffeegg/archive/2011/12/07/2279880.html

8、ping某域名的整个流程 http://blog.csdn.net/hjason2042/article/details/7975707

9、ping 未知域名的全过程 http://blog.sina.com.cn/s/blog_7c35df9b0100vomk.html

10、ping命令整个过程详解 http://blog.csdn.net/guoweimelon/article/details/50859658


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block var foo = 'bar'; 

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n 1 ) ! n N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

Γ ( z ) = 0 t z 1 e t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

gantt
        dateFormat  YYYY-MM-DD
        title Adding GANTT diagram functionality to mermaid
        section 现有任务
        已完成               :done,    des1, 2014-01-06,2014-01-08
        进行中               :active,  des2, 2014-01-09, 3d
        计划一               :         des3, after des2, 5d
        计划二               :         des4, after des3, 5d
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

猜你喜欢

转载自blog.csdn.net/qq_43667669/article/details/84069885
今日推荐