您的位置:首页 > 理论基础 > 计算机网络

PING用一生诠释了TCP/IP(1)-----PING与TCP/IP的关系

2009-08-06 22:08 281 查看
            一个资深的网络人员应该是谙熟于PING这个命令的,而且一个专业的网络从业人员一生之中用得最多的命令行可能就是PING了。那么你理解PING的工作原理码?你能悉数当你敲出ping命令回车后所发生的一切码?如果你满脑空白,或者一知半解,那么你应该来读读这篇文章。
    这篇文章将详细的解读TCP/IP的基本原理,二三层转发的详细过程以及PING这个简单的命令是如何用她的一生来诠释TCP/IP的。
                              PING与TCP/IP的关系
    那么在讲PING之前我们先来看看到底什么是TCP/IP?
    TCP/IP沿用了OSI分层思想,但是原理更为简练精深,所以很快就在市场推动之下成为了INTERNET的主宰。下图描述了TCP/IP的层次结构:                                                             
                                                                    

 
                                                                                                   图1  TCP/IP四层结构
             TCP/IP是四层结构,从上到下分别是应用层,运输层,网络层及链路层。链路层屏蔽了物理接口与驱动的关系,可以将物理层的比特信息封装为帧结构,流行的由两种,一种是以太帧封装,另一种则是IEEE 802封装,以太帧封装现在以其绝对优势占据了主流市场。网络层处理分组在网络中的活动,该层也称为路由层,负责分组在网络中的寻路转发。传输层主要提供两台主机上的应用程序提供端到端的通信。该层通过端口号来识别上层数据。应用层负责处理特定的应用程序细节。两台处于异地的两台主机之间通信,那么数据包的处理就是一个封装与解封装的过程。如下图所示:
                           




                                                        图2 数据包的封装过程                                                                         图3  TCP/IP水平垂直结构
              如图3所示,两台主机之间想要建立一个FTP连接,FTP客户端会经过一个类似于图2所示的数据封装过程,将应用层数据会交给TCP运输层添加TCP首部,然后交给IP网络层添加IP首部,再交由链路层完数据帧的封装,最后变成BIT流在物理链路上传输,到对端FTP服务器数据会经过一个相反的完全倒置的解封装过程然后最终将数据交给FTP服务器应用程序进行处理。这样便完成了数据的处理过程。
     以上简单的讲述了一下TCP/IP的工作原理,那么你可能会问,既然如此那么ping到底是工作在哪一层呢?其实从应用的角度我们可以把ping划分在应用层,但是她却没有使用传输层来识别,因为ping命令正是图1中最左侧应用程序<--->ICMP的层次关系的代表。另外也可以直接将ping划分在网络层,因为她是利用icmp的请求与回显来判断网络主机的路由可达性。ping根本就没有涉及到端口的概念,她只用IP地址来完成整个解析过程。这样的解释可能让你产生迷惑,但是当你比较深入的了解了TCP/IP后就会由深入的体会。经过上面的分析我们可将将PING跟TCP/IP的关系抽象化为下图:
                                                          


                                                                                          图4 ping跟TCP/IP的关系
         ping是一个基本的网络命令,用来确定网络上具有某个特定IP地址的主机是否存在以及是否能接收请求。Ping命令通过向计算机发送ICMP回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。对于每个发送报文,Ping最多等待1秒,并打印发送和接收把报文的数量。比较每个接收报文和发送报文,以校验其有效性。默认情况下,发送四个回应报文,每个报文包含64字节的数据(周期性的大写字母序列)。可以使用Ping实用程序测试计算机名和IP地址。如果能够成功校验IP地址却不能成功校验计算机名,则说明名称解析存在问题。这种情况下,要保证在本地HOSTS文件中或DNS数据库中存在要查询的计算机名。比如我想在向知道某一台主机(IP为10.153.100.2)的网络可达性,我们可以用命令ping 10.153.100.2,回车后ping命令便会向目的主机发一个ICMP请求ECHO报文,然后查本地ARP表,如果存在ARP表项则直接填充解析到的目的MAC发送,如果不存在ARP表,则会启动ARP地址解析,发送ARP请求报文,当ARP报文到达中间交换机或路由器会判断是二层转发还是三层转发将报文转发到目的主机,目的主机收到ARP请求以后就会返回一个ARP应答给源主机,源主机生成ARP表项,ICMP请求报文便会被发送出去,其中携带源及目的IP地址,在网络上经过路由查询转发最后将ICMP请求报文送达给目的主机,目的主机会响应请求返回ICMP repay按原路返回给源主机,源主机收到ICMP应答报文之后便判断目的主机可达,这样便可以向目的主机发送应用数据了。
   从上面的分析可以看出,一个简单的PING命令的工作过程完整的描述了TCP/IP的工作原理。PING命令依然会按照图2所示的数据封装过程对数据进行封装与解封装。而且在报文转发的过程中会经历二层转发还是三层转发,路由查询转发等过程,整个PING的生与死便会完美的诠释TCP/IP。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: