文章目录

  • APR协议
    • 分析APR数据包
      • 分析APR请求数据包
      • 分析APR响应数据包
    • 分析免费ARP数据包
  • IP协议
    • wireshark分析捕获文件的存活时间TTL和IP分片
    • 捕获IP数据包方法

RFC即Request for Comments是定义各种协议实现标准的官方文档,ARP协议就是在RFC826中定义的,可以在RFC Editor的首页中搜索RFC文档下载浏览。

APR协议

原理:ARP(Address Resolution Protocol,地址解析协议)用于将IP地址解析为物理地址(MAC地址)的一个TCP/IP协议。

因为网络中用于连接各个设备的交换机使用了内容可寻址存储器(CAM,Coment Addressable Memory)。该存储器维护的ARP表列出了它在每一个端口的所有连接设备的MAC地址。所以当交换机收到了一个指向特定MAC地址的网络流量,它就会使用这个表,来确定应该使用哪一个端口发送流量。如果目标MAC地址是未知的,那么这个传输设备会首先在它的缓存中查找这个地址,如果没有找到,那么这个地址就需要通过在网络上额外的通信中解析了。

ARP协议的由来

因为OSI模型将网络分为了七层,而IP地址位于第三层,也就是网络层,MAC地址位于数据链路层,也就是第二层。在通过以太网发送IP数据包的时候,需要首先封装第三层和第二层的报头。但由于发送数据包时只知道目标IP地址,不知道其MAC地址,而又不能直接跨越第二、三层,所以需要地址解析协议。在使用了ARP协议后,计算机可以按照网络层IP数据包的头部信息,将硬件地址信息(MAC地址)对应起来,以保证通信的顺利进行。

ARP协议的基本功能

将一个已知的IP地址解析成MAC地址,以便主机之间可以正常地通信。

分析APR数据包

ARP协议的解析过程只使用了两种数据包:一个ARP请求和一个ARP响应

ARP协议工作原理

1、当主机A想要给主机B发送数据时,主机A会首先在自己的本地ARP缓存表中检查是否有主机B的IP地址相匹配的MAC地址。
2、如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。这个请求帧包含有主机A的IP地址和MAC地址,以及主机B的IP地址。
3、网络中凡是收到请求帧的主机都会检查自己的IP地址是否与请求地址一致,如果不一致,则会丢弃该请求帧;如果相同,该接收主机首先将发送端的MAC地址和IP地址添加到自己的ARP缓存列表中并给源主机发送一个
ARP响应数据包,告诉对方自己是它需要查找的MAC地址(单播)。
4、发送主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息向它开始数据的传输。

查看ARP缓存表:可以打开cmd,输入arp -a
本地的缓存是有生命周期的,默认的ARP缓存表的有效期是120秒,过期后,需要重复上述过程。

分析APR请求数据包

打开wireshark,找到ARP请求的数据包。我们可以通过Packet Details面板,检查以太网头部信息来确定这个数据包是不是一个真的广播数据包。

第一个数据包,来看看ARP的请求

分析
首先在Frame帧中,可以知道该数据包的大小为42个字节。
Ethernet部分的内容,会发现这个数据包目的地址是ff:ff:ff:ff:ff:ff,这是一个广播地址,说明当前数据包会被广播到当前网段中的所有设备上。而这个数据包中以太网的源地址就是本机的MAC地址。
展开ARP请求的头部信息。按照顺序依次为硬件类型、协议类型、硬件地址长度、协议长度、操作码(该值为1,表示这是一个ARP请求包)、发送方的MAC和IP地址,以及接收方的IP地址。因为我们想要获取的目标MAC地址还是未知的,因此就以全0的形式显示。

分析APR响应数据包

第二个数据包,来看看ARP的响应

ARP响应的数据包和ARP请求的数据包很相像。
不同之处:首先,用于响应的数据包的操作码(Opcode)现在是2,表明这是一个用于响应的数据包;其次,发送方的MAC地址和IP地址变成了目标MAC地址和IP地址;最后,响应数据包中的内容都是可用的,也就是说我们已经获取了192.168.0.1主机的MAC地址,即00:13:46:0b:22:ba,那么接下来就可以正常通信了。

分析免费ARP数据包

关于免费ARP(gratuitous ARP)的例子。

原理
由于网络中一个设备的IP地址是可以改变的,而MAC地址不会改变。那么一旦出现IP地址改变的情况,网络主机中缓存的IP和MAC地址映射就不再有效了。那么为了防止由于映射失败造成的通信错误,免费的ARP请求会被发送到网络中,强制所有收到它的设备使用新的IP以及MAC地址映射来更新缓存。通常,它发生在系统引导期间进行接口配置或IP地址出现变化的时候。
实现过程
为了网络上的所有主机都能收到它,数据包是以广播的形式发出的且发送方的IP地址和接收方的IP地址是一致的。网络中的其它主机收到这个数据包之后,它会让这些主机使用新的IP和MAC地址映射关系来更新它们的ARP表。由于这个ARP数据包是源主机未经请求主动发出的,并导致了目标主机更新了ARP缓存,所以称之为免费的ARP。

IP协议

原理:IP协议(Internet Protocol,互联网协议),是TCP/IP协议栈中最核心的协议之一,通过IP地址,保证了联网设备的唯一性,实现了网络通信的面向无连接和不可靠的传输功能。
IOS第三层网络层主要实现跨网络间的通信。

wireshark分析捕获文件的存活时间TTL和IP分片

存活时间(TTL,Time to Live)

  • 用于定义数据包的生存周期,也就是在该数据包被丢弃之前,所能够经历的时间,或者能够经过的最大路由数目。
  • 这个值是在数据包被创建的时候设置的,而且通常在每次发往一个路由器的时候会实现自减一的操作。一旦TTL的值变为了0,那么这个数据包就会被丢弃。
  • 由于TTL的值在技术上是基于时间的,那么一个非常繁忙的路由器可能会将TTL的值减去不止1,但是一般来说,我们还是可以认为一个路由设备在多数情况下只会将TTL的值减去1。

例子1:

分析
这个捕获文件中包含有两个ICMP(Internet Control Message Protocol,Internet控制报文协议)数据包,它使用了IP协议进行数据包的传递,查看Packet Details面板来展开IP的头部信息进行分析。
可以看到,IP的版本号为4,IP头的长度是20字节,总长度是60字节,并且TTL的值是128。其实这个捕获文件是从IP地址为10.10.0.3的设备将一个ICMP请求发往了IP地址为192.168.0.128的设备上。也就是使用了ping来测试设备之间的通信。而这个捕获文件就是在源主机上被创建的。

例子2:它是在目标主机,也就是IP地址为192.168.0.128的设备上捕获的。这里我们只关注第一个数据包的IP头部信息:

分析 可以发现,这里的TTL值变成了127,比原来的TTL少了1。就算我们不知道这个网络的结构,那么从TTL值推断出这两台设备之间是有一个路由器的,才使得TTL的值减少了1。

IP分片

  • IP数据包的分片指的是将一个数据流分为更小的片段,是IP用于解决跨越不同类型的网络时可靠传输的一个特性。
  • 数据包的分片主要基于OSI模型第二层的数据链路层协议所使用的最大传输单元(MTU,Maximum Transmission Unit)的大小,以及使用这些第二层协议的设备配置情况。
  • 在多数情况下,第二层所使用的数据链路层协议是以太网。而以太网的默认MTU是1500,那么以太网的网络上所能传输的最大数据包的大小就是1500字节。!注意这里面并不包括14字节大小的以太网头部本身。

应用场景:当一个设备准备传输一个IP数据包时,会首先将这个数据包的大小和将要把这个数据包传出去的网络接口的MTU进行比较,从而确定是否需要将这个数据包分片。如果数据包的大小大于MTU,那么这个数据包就会被分片。

应用步骤
(1)设备将数据分为若干个可以成功进行传输的数据包。
(2)每个IP头的总长度域(Total Length)会被设置为每个分片的片段长度。 (3)更多分片标志(More fragments)将会在数据流的所有数据包中设置为1,最后一个数据包则为0。
(4)IP头中分片部分的分片偏移将会被设置。
(5)数据包被发送出去。

例子3: 这里捕获文件同样是在发送ping请求时,在源主机上捕获的。
分析:首先查看一下数据包1的IP头部分,重点关注的是更多分片标志(More fragments)以及分片偏移(Fragment offset)。

由于在这个数据包中,更多分片标志被设置为了1,意味着这是一个分片数据包,并且接收设备还需要等待接收序列中的另一个数据包。而分片偏移被设置为了0,说明这个数据包是一系列分片偏移中的第一个。接下来查看一下第二个数据包的IP头:

这个数据包同样被设置了更多分片标志,而接下来的分片偏移的值是1480,这是因为前一个分片是1500字节,但是其中包含有20字节的IP头,因此到这里分片偏移就成了1480。再看一下第3个数据包:

可以看见这个数据包标志位为0,说明这是整个数据流的最后一个分片。分片偏移被设定为2960,也就是1480加上1480的结果。这三个分片之所以会被认为来自于同一个数据序列,是因为在Identification中,这三个数据包的值都是0x7474。

判断数据包是否来自同一个数据序列,看Identification中的值是否一致!

捕获IP数据包方法

使用ping
原因:能精确查找数据包。因为捕获到IP数据包有很多,比如我们打开一个网站,直接使用Wireshark会捕获到非常多的IP数据包。但也会捕获到非常多的诸如DNS、HTTP、TCP等协议的数据包,就不方便于我们的分析。但使用ping,这样就只会获取到ICMP协议的数据包。
使用步骤
1、首先我们可以在想要进行捕获的系统(如:虚拟机)上打开Wireshark,选择菜单栏的“Capture”->“Options”,进行如下相应的设置——最后start

2、在虚拟机上打开cmd,ping主机的IP地址,然后查看捕获结果

捕获IP分片数据包

设置和上面一样,但需要在ping上额外加上“-l 3000”,3000表示捕获的数据包的大小为3000。在wireshark打开捕获的数据包逐一展开ip头部分,观察标志位flags可以看见它们都是一样的,即说明这些数据包都是经过分片
进行发送的。

以上是我观看《Wireshark零基础入门到实战/网络抓包/流量分析必备》视频的笔记,记录下来温故知新,希望对你也有用!

wireshark——APR协议IP协议相关推荐

  1. 网络层协议 ——— IP协议

    文章目录 IP协议 基本概念 IP协议格式 分片与组装 网段划分 特殊的IP地址 IP地址的数量限制 私网IP地址和公网IP地址 路由 路由表生成算法 IP协议 IP协议全称为"网际互连协议 ...

  2. 网络层协议------IP协议

    这里写目录标题 IP协议 基本概念 协议头格式 网段划分 特殊的ip地址 私网ip地址和公网ip地址 ip地址的数量限制 路由 IP协议 IP协议:其实就是TCP/IP协议中对于网络层的一个协议(注意 ...

  3. 了解TCP协议,IP协议、ICMP协议和ARP协议(TCP报文,TCP的分成管理,TCP与UDP,TCP的三次握手四次挥手原理)

    文章目录 了解TCP/IP协议 TCP报文格式 TCP/IP 的分层管理 TCP与UDP TCP的三次握手与四次挥手 为什么要三次握手? 为什么要四次挥手? IP数据包格式 ICMP协议 ICMP协议 ...

  4. Java ee 网络层重点协议IP协议

    文章目录 一.认识IP地址 1)概念: 2)作用 3)格式 4)组成 二.IP协议报头结构: 1)4位版本:IP协议的版本号,当前只有两个取值,4和6 2)4位首部长度:表示当前IP协议报头是多长 3 ...

  5. IP协议 — IP协议头部

    什么是 IP 协议 IP 作为整个 TCP/IP 协议族中至关重要的协议,主要负责将数据包发送给最终的目标计算机,为上层协议提供无状态.无连接.不可靠的服务. 无状态:无状态是指 IP 通信双方是不同 ...

  6. 内网和外网的区别+tcp协议ip协议详解

    内网概念 即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的.但两个局域网内的内网IP可以有相同的. (连上WIFI,手机IP一般能在「设置」-「关于手 ...

  7. 网络原理课设——IP协议分析

    课题描述 IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西 ,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求.IP的责任就是把数据从源传送到 ...

  8. 系列TCP/IP协议-ping与traceroute命令(006)

    一.引言 在错综复杂的网络的世界里,如何知道对方主机是否可达,链路是否畅通是一个不太简单的问题.现在有两种常用的程序或命令来检查这些问题(ping与traceroute命令).   "pin ...

  9. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

最新文章

  1. 深度学习不是万灵药!神经网络3D重建只是图像分类
  2. MEGA 视频目标检测 数据集 : ILSVRC2015 VID 说明
  3. VTK:可视化算法之BluntStreamlines
  4. Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文
  5. 安装DelayExchange插件
  6. 华为5720设置静态路由不通_【干货分享】交换机与路由器在环路中的处理机制了解一下!...
  7. Makefile札记
  8. PHP笔记-所有错误统一输出404页面(详细错误日志输出,提高安全性)
  9. php和mysql一起_PHP和MYSQL数据库合理且有效的结合在一起_MySQL
  10. 外包员工午休起身喝水被正式员工大骂:脑子进“S”,打扰我休息
  11. FireFox 32不支持64位的NPAPI dll插件
  12. 周围像素点的最大均方差替代该点
  13. 银联支付接口申请-手机控件支付
  14. 要干翻苹果的魅族,到底输在哪里?
  15. Using ‘UTF-8‘ encoding to copy filtered resources. skip non existing resourceDirectory
  16. 075-数组越界异常-ArrayIndexOutOfBoundsException-【视频讲解】
  17. gets与puts的使用,Str系列字符串的使用
  18. qt 飞扬青云_Qt编写安防视频监控系统(界面很漂亮)
  19. 1.27 Watermelon
  20. null和空字符串('')的区别

热门文章

  1. STM32 读保护的实现
  2. 2022.11.7 英语背诵
  3. 单反相机的照片删了如何恢复
  4. Python中__dict__属性的详解
  5. Pycharm安装FLASK出现错误,无法安装
  6. GB50202-2018《建筑地基工程施工质量验收标准》免费下载
  7. 如何赚到20万人民币
  8. 日语语法实践篇十二——新编日语第一册第十三课之会话篇
  9. c# php md5 32位加密,C#实现将32位MD5摘要串转换为128位二进制字符串的方法
  10. [转]百度UEditor编辑器(php)