首页 > 代码库 > TCP/IP学习day04

TCP/IP学习day04

    第4章ARP:地址解析协议

    1.背景:当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的          IP地址。

        因此,在向另外一台主机发送数据时,我们不仅要知道目的主机的IP地址,更要知道该目的主机的硬件地址(MAC地址)。

    2.ARP协议的作用:ARP为IP地址到对应的硬件地址之间提供动态映射(从逻辑Internet地址到对应的物理硬件地址进行翻译),这个过程会自动完成。

    3.过程:  

      a.ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。

      b.目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。

      c.发送数据到该主机。

      一般来说,ARP请求是以广播的形式,而回复是以单播的形式,具体可以抓包看看。

      技术分享

      这张图就是ARP请求和回应的数据格式,具体相关细节参考《TCP/IP协议详解:卷一》

    4.ARP高速缓存:每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。

            在其他主机收到ARP请求时,它们会更新自己的ARP缓存,将这个请求者的IP-----MAC写入自己的缓冲表。

            因此,对于ARP来说,A发送ARP请求后得到B的MAC,A——>B就可以进行,根据上面的话,B就可以不向A发送ARP请求就可以B——>A了。

    5.代理ARP:如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理。

          代理ARP的例子可以详见书上。

    6.免费ARP:在启机或者进行ip重置的时候,主机就会向网络发送一个这个ip的arp请求,当然希望没有人回复这个包,若是有人回复这个包,那么就说明这个ip已经被占          用,这个就是免费arp的过程。

          技术分享

 

    好了,ARP部分基本概念就是这些,其中还有一些部分不是很明白,比如说在读RP代理时,为什么两条slip分路,一条两端IP地址都有,而作为代理ARP的那一条没有,

    还有,从子网1到13是怎么过来的还不是很清楚。

     技术分享

    把握宏观框架,来日再战细节。

 

 

    第5章RARP:逆地址解析协议

    1.背景:具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。

    2.工作过程:无盘系统向网络中广播一份RARP请求,具有RARP服务器功能的的主机单播reply给该无盘系统,然后通过TFTP协议传送给该无盘系统。它的帧格式和ARP          非常相似。不同的是,ARP服务器通常是在内核内实现的,而RARP的服务器通常是用户空间程序。

 

 

    第6章ICMP:Internet控制报文协议

    1.作用:主要用来传递查询和请求信息。

    2.报文格式:

    技术分享

    其中,八位类型和八位代码为如下:

    技术分享

    3.不会产生ICMP报文的情况:

    技术分享

    4.接下来,分别看看差错报文和查询报文的两个例子

      a.ICMP请求地址掩码

      这个例子在《TCP/IP详解:卷一》这本书上可以找到详细的过程,在此我只想说的是,为什么svr4发给sun的包会被bsdi抓到?

      技术分享

      技术分享

      b.ICMP端口不可达错误

        ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该I P首部后面的前8个字节。

        ICMP报文是在主机之间交换的,而不用目的端口号,而每个20字节的UDP数据报则是从一个特定端口(2924)发送到另一个特定端口(8888)。

        在测试ICMP的端口不可达的效果时,只能用udp做实验,tcp是不行的。

 

 

    第七章:PING程序

     在这里主要讨论PING的IP记录路由选项

    a.报文格式

    技术分享

    这就是PING利用ICMP记录路由路径的格式,缺点是,最多只能记录九个,而且,它记录的是路由出口的IP,目的主机的IP也会记录,而且,它记录的是一个回路的,来回    都要记录,利用率不高。

    b.TTL

    这个值由发送端来定,譬如,在发送时,主机的TTL为64,但是在目的主机回复的时候,TTL为255,则最后,我们在本地的PING程序得到的是255.

 

 

    第8章:Traceroute程序

    1.工作原理:逐跳发送一个UDP的高端口数据包给目的地址,要是没到达目的地址,路由器会返回一个ICMP超时信息,要是到达了目的主机,发现端口不可达,此时目的          主机发送一个”端口不可达”的ICMP报文,这样,我们就知道了数据包在网络中的路径。

    2.相比PING的IP路由记录选项的好处:

      a.并不是所有的路由器都支持IP路由记录。

      b.IP路由记录的个数有限。

      c.但是这样使得记录下来的I P地址翻了一番(一来一回)。

    3.Traceroute的源站选路

      源站选路(source routing)的思想是由发送者指定路由。它可以采用以下两种形式:
      a.严格的源路由选择。发送端指明I P数据报所必须采用的确切路由。如果一个路由器发现
       源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路
         由失败”的I C M P差错报文。
      b.宽松的源站选路。发送端指明了一个数据报经过的I P地址清单,但是数据报在清单上指
         明的任意两个地址之间可以通过其他路由器。

    在具体使用的时候,一个宽松的加上-g选项,在其后列出要经过的IP地址,另外一个是加-G选项。

    

    宽松源站路由的一个巧妙的应用:把目的地址设为自己,其中必经的一个地址设为原本要到达的地址,这样就可以知道,在通往原来的目的地址上是哪出问题了。

 

 

    今天就到这了,有点多,本人菜鸟一个,欢迎各位大神赐教,谢谢!

 

TCP/IP学习day04