Wireshark实战分析之IP协议

(1): 什么是IP协议?

        互联网协议IP是Internet Protocol的缩写,中文缩写问哦“网协”。IP协议位于OSI模型中的第三层也就是网络层,其主要目的是使得网络之间能够互相通信。

(2):什么是IP地址? IP地址是如何产生的?

       互联网协议地址(Internet Protocol Address)中文为:网际协议地址,缩写为IP地址。

       上一次说的ARP协议,通过分析发现它是依靠MAC地址发送数据的。但是当ARP以广播的方式发送ARP请求时,需要确保所有的主机都要收到该数据包的。这样不仅传输效率低,而且只能局限在同一个子网中。也就是说如果两台主机不在一个子网,广播报是发送不过去的。当然了这样的设计是合理的,不然会导致全网瘫痪。所以需要一种方法来区分那些MAC地址属于同一个子网,那些不是。同一个子网就采用广播的发送方式。否则就采用“路由”发送。所以就必须引入一套新的地址,使得用户能够区分不同的计算机是否属于同一个子网,通常人们称问“IP”地址。这时候一台主机就会有两种地址。MAC地址,IP地址。但是两者没有太大的关系。MAC地址是绑定在网卡上的,是唯一的。而IP地址是有网络管理员分配的。


(3)IP地址

        IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址分为IPv4和IPv6两大类,其中IPv4使用最广泛的。在IPv4中IP地址是由32个二进制组成。由于IP地址是32位的二进制,用户记住一串32位二进制是很难的,所以IP地址采用点分四组的表示法。

(4)IP地址的构成

          IP地址之所以会被分成四个单独的部分,是因为每个IP地址都包含两部分,分别为网络地址和主机地址。网络地址用来标识设备所连接到的局域网,主机地址用来表示这个局域网中的设备本身。

          但是通常一个IP地址是无法判断网络部分的。所以需要引入另一个参数“子网掩码”。子网掩码的形式等同于IP地址,也是一个32位的二进制数字。它的网络部分全为1,主机部分全文0.

        例如: IP为10.10.1.22,它的子网掩码为11111111.11111111.00000000.00000000。这就意味着IP地址的前一半10.10是网络地址,1.22是主机地址。


(1)什么是IP数据报

        TCP/IP协议定义了一个在局域网上传输的包,称为IP数据报(IP Datagram)。IP数据报由首部和数据两部分组成,首部部分包括版本,长度,IP地址等信息。数据部分一般用来传输其他的协议,如TCP,UDP和ICMP协议等。

(2)IP数据报首部格式

        

     版本:     指IP协议所使用的的版本。目前广泛使用的IP协议版本号为4

    首部长度:  IP首部长度,可表示的最大十进制数值是15。注意,该字段所表示的单位是32位字长(4个字节)。因此首部长度最大为60字节

    服务类型: 优先级标志位和服务类型标志位

    总长度:    指IP首部和数据包中数据之后的长度,单位为字节。总长度为16位,因此最大长度为2^16- 1 = 65536字节

    标识:  一个唯一的标识数字,用来标识一个数据报或者被分片数据报的次序

    标志:   用来标识一个数据包是否是一组分片数据包的一部分。 最低位MF(More Fragment)。当MF=1表示后面“还有分片”的数据包,MF=0表示这已经是最后一个分片数据了,中间位DF(Dont Fragment)不能分片,只有当DF=0时,才允许分片

    片偏移: 一个数据包其中的分片,用于重新组装数据用

    生存时间: 用来定义数据包的生存周期

    协议: 用来识别在数据包序列中上层协议数据包的类型

    首部检验和: 一个错误的检测机制,确保IP头部没有被修改

   源地址: 发送端的IP地址

   目的地址:数据包目的的IP地址

    可选字段:保留作额外的IP选项

    数据部分:使用IP传递实际数据用。

(3)分析IP数据报

     在本地主机上ping  www.baidu.com,使用wireshark获取数据

    

    

 (4)先分析29帧,也就是请求帧

     选中29帧,查看包的详细信息

    

  (5)分析30帧,也就是回应帧

    

     

     其中明显的不同的是生存时间发了变化,也就是从我本地到百度之间总共经过了64-55=9个路由。当然每次可能经过的路径是不一样的。我们可以通过tracert命令查看。

    

    可以看到经过了11个路由,显然每次路径是不一样的。


(1)存活时间/生存时间是什么?

        存活时间Time-to-live(TTL)值定义了在该数据报丢失之前,所能经历的时间,或者能够经过的最大路由数目。TTL在数据报被创建时就会被定义,而且通常在每次被发往一个路由器的时间减1.

       例如: 如果一个数据包的存活时间是2,那就是说当它经过第一个路由器的时候,其TTL会被减去1,并向第二个路由发送,如果到第2个路由这是TLL时间会减去1,变为0。如果这时候数据包还没有到达目的地,则会丢弃该数据包。


(2)存活时间的作用的是啥?

      假设在发送目地的过程中,会经过数十个路由器,在这个过程中,可能会碰到被配置错误的路由器,而会导致其目的地错误。在这种情况下,可能这个数据包就会一直发送,在网络中出现一个死循环,这样就会导致整个网络瘫痪等。所以当每次经过一个路由器TTL的值都会减去1,所以可以防止这个问题的出现。


(3)分析IP数据包中TTL值的变化

      前面说过,如果在同一个网段传输数据,TTL的值是补变化的。如果是不同的网段TTL的值是变化 的

      1.  分析同网段中TTL的值

            

        我搭建的环境是用192.168.0.1 ping  192.168.0.2 (上图是抓包的过程)

        可以看到74帧是request帧

        

        相应的75帧就是回应报文(reply)

       

     可以看到如果是相同的网段,TTL的值是相同的。

      2. 分析不同网段TTL的值

        分析不同网段的TTL,其实在第二节中分析中可以明显看见TTL的值是不同的。 在这里我通过ping新浪的官网。很明显新浪官网地址和我本地的是属于不同的网段

        

  其中19帧是请求报文(request)而20帧是响应报文(reply)

     分析19帧报文的详细信息:

    

        分析20帧的详细信息:

        


(1) IP分片数据包

           由于以太网数据报的“数据”部分最长只有1500字节,因此如果IP数据报超过了1500字节,就需要分割成多个以太网数据包分开发送。

           在使用ping命令时,默认是不会超过1500字节的,所以如果想要获取IP分片包,需要指定发送的ICMP包大大小。

           比如: ping   192.168.0.1  -l  3000  指定获取包的大小为3000


(2) 分析IP分片数据包分析

           

     在该获取文件中,123帧和678帧是一个完整的ping包,其中123是一个请求包,678是响应包。

     1.     分析 第1帧数据包

      

     2.      分析第2帧数据包

       

      3.   分析第3帧数据包

         


   分析就到这里




  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值