TCP\IP协议实践:wireshark抓包分析之链路层与网络层
目录
- TCP\IP协议实践:wireshark抓包分析之链路层与网络层
- 从ping开始
- 链路层之以太网封装
- ip首部
- 开启ping程序,开始抓包
- 由一个ping的结果引出来的两个协议ARP ICMP
- ARP:地址解析协议
- ICMP:Internet控制报文协议
- 总结
- 从ping开始
TCP\IP协议实践:wireshark抓包分析之链路层与网络层
@
从ping开始
我打算从一个ping命令的抓包结果来结合实际分析链路层和网络层的几个协议,先看一些无聊却重要的基础知识,封装过程图镇楼
链路层之以太网封装
我们都知道网络是分层的,在链路层的封装主要是以太网封装,这里我们直接给出格式
这里也给出了IEEE 802的封装,下面的就是以太网封装,我们看到以太网的封装会为网络层的其他协议提供服务,同时也看到ARP/RARP 和IP的地位是并列的。他们根据以太网头部的类型字段区分,以太网的源地址和目的地址是6字节的硬件地址也就是我们常说的MAC地址,一个硬件由它来标识。可以看到除了14个字节的头部以外,数据段要求最小46个字节,所以会有填充的出现,后面的尾部是4个字节,即以太网数据帧一共最少有64字节(有时候会略去尾部直接是60字节)。
ip首部
我们虽然从ping命令开始,但是必须介绍一些基础知识,首先就是ip协议,上图就是ip协议的头部,最小是20字节。后面的抓包结果要结合这张图来看。目前几乎所有的互联网传输都使用的ip协议。
首先介绍一下这些字段
- 4位版本代表是ipv4还是ipv6。即4或6 。
- 4位首部长度代表ip首部占多少个32位(4字节)。为啥会有这个字段?因为我们看到ip首部里面是可以有选项字段的,不固定长度(选项字段一直都是以32 bit作为界限,必要时填充0,保证ip首部始终是32bit整数倍),所以要有个数据表示有多少字节是属于ip头部。
- 8位的服务类型TOS字段见下图
- 16位的总长度表示ip数据报的长度(字节为单位),为了从填充过的以太网帧中准确的找出ip数据报。
- 标识字段唯一地标识主机发送的每一份数据报。后面的偏移字段和这里的标识字段都是为了后面的ip分片和重组用的。
- T T L(t i m e - t o - l i v e)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。T T L的初始值由源主机设置(通常为3 2或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送I C M P报文通知源主机。
- 8位协议是1表示为ICMP协议, 2表示为IGMP协议, 6表示为TCP协议, 17表示为UDP协议
- 首部检验和字段是根据I P首部计算的检验和码。它不对首部后面的数据进行计算。I C M P、I G M P、U D P和T C P在它们各自的首部中均含有同时覆盖首部和数据检验和码。
- 地址字段
- 选项字段后面会说
开启ping程序,开始抓包
ping程序是测试连通性用的,当然他还有其他功能,这个下面会说,首先我们就用它的测试功能,至于ping的原理,我们边抓包边看,这其中会涉及很多网络层的协议,我们结合抓包讲解。
打开wireshark后,开启命令行的ping命令ping一个ip地址(这里我ping的是一个网段的地址10.134.220.102,我本机的地址是10.134.220.113),如何使用wireshark和如何查看自己的ip地址请自行百度。这里ping完成后
收到这四个回复,我们先不管这些,看看我们抓包抓到了什么,这里我加了过滤器:
ip.dst == 10.134.220.102 or ip.src == 10.134.220.102 or arp
抓包结果
我们可以看看发生了什么,第一行不是这次ping产生的,从第二行看,首先是ARP协议的数据,内容是后面的看起来是询问的内容,然后下一行还是ARP的协议,看起来是回答。我们注意到第一列是时间,第二列是源地址,6字节的,第三列是目的地址,也是6字节的。这两个地址就是上面以太网封装头部中的那两个硬件地址。我们看到有的目的地址是广播,广播地址是全1的6字节。这个可以详细的看包里的内容。我们先不管这些协议是什么,就是看看发生了啥。接续看,有四组连续的(忽略中间那个ARP)ICMP协议的报文,而且是一问一答形式的,想想我们的ping命令的结果,是不是对起来了?
由一个ping的结果引出来的两个协议ARP ICMP
从上面的抓包结果我们看到了两个协议,ARP与ICMP,这两个重要的协议我们细细讲解,同时会结合抓包的内容一块看。
ARP:地址解析协议
原理
ARP是什么?ARP是一种地址解析协议。
ARP干嘛用的?当我们知道目的ip地址后,我们以为计算机知道了应该找哪台主机,但是计算机硬件一脸懵,在他那里只有硬件地址,ip地址是网路层的东西,要数据传输必须知道链路层的信息即硬件的地址,那么如何根据ip地址知道目的地址的硬件地址呢?答案就是使用ARP协议来查询,将ip地址转化为硬件地址。还有一种协议是RARP,他跟ARP反着,根据硬件地址查询ip地址,这种协议是无盘系统无法从本地知晓自己的ip地址,只能通过RARP协议从RARP服务器上查询自己的ip地址。由于我这里没有无盘机,所以抓包抓不到RARP协议的包,有需要的可以查资料详细理解。他们俩的报文格式还是很像的。
ARP如何工作的?
ARP分为请求和应答,他的报文格式如下
还记得看以太网封装时说过的,ARP是跟IP并列的。这里详细介绍ARP的报文格式
- 2字节的硬件类型,1代表以太网地址。
- 2字节的协议类型表示要映射的协议地址类型,我们大部分用的就是ip协议,所以这里一般是0x800。
- 1字节的协议地址长度。我们都知道ipv4协议是4字节的。
- 1字节的硬件地址长度。以太网的硬件地址是6字节。
- op字段是操作字段,代表四种操作类型,它们是ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。
- 发送端的以太网地址(硬件地址),发送的ip地址,接收端的硬件地址和ip地址。这里会有疑问,在ARP请求中,不是ARP请求的就是目的端的硬件地址吗,这时如何填写目的端的硬件地址呢?答案是ARP请求中的目的硬件地址全为0 。
对于以太网头部中的目的地址,在ARP请求报文中,是无法知道的(因为本身就是去查询的),那么如何填呢?或者说ARP如何起作用呢?当然是把所有的主机全问一遍呗。所以这里就填成全1表示广播地址,这样整个以太网上的所有主机都能收到ARP请求,然后看看是不是自己被翻了牌子,如果是,就发回一个ARP应答告知自己的硬件地址。整个过程可以参考下图
这是在同一个以太网的情况下。如果不在同一个以太网下,又如何呢?如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托A R P或A R P代理(Proxy ARP)。这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。这方面这篇文章里暂时没有,后续会有一个专门的文章介绍。
如果目的主机不存在呢?那就隔一段时间问一次,多问几次都没答复就不问了,哈哈哈。
抓包结果
好,接下来回到抓包结果,我们说开头的是两个ARP协议,了解了原理后我们知道他们其实就是一个ARP请求和ARP应答
这是我的ARP请求报文
逐字节解析,前6字节就是全1的广播以太网地址,然后是6字节的发送端以太网地址。然后0806代表是ARP协议。0001代表的以太网,0800代表ip协议,06的硬件地址长度,04的协议地址长度,0001的op字段代表ARP请求,然后就是发送端的硬件地址和ip地址,然后就是我们前面说的全0的目的硬件地址,然后是目的ip。
同样的应答报文就不解析了,就是对着格式来。
ICMP:Internet控制报文协议
ICMP是什么? ICMP是Internet控制报文协议,对,就是控制报文协议,发送控制报文的,啥叫控制报文?看下去就知道了。必须知道ICMP是封装在IP数据报里面的。在IP头部的8位协议字段中规定的,1就代表ICMP。
ICMP干嘛用的? 很有用,用途广泛,哈哈哈。
ICMP如何用?
看格式
8位的类型,8位的代码都在上面那张很长的图中。由于太多,就不介绍详细的了,就介绍我们ping命令用到的即ICMP回显应答报文。
U n i x系统在实现p i n g程序时是把I C M P报文中的标识符字段置成发送进程的I D号。这样即使在同一台主机上同时运行了多个p i n g程序实例, p i n g程序也可以识别出返回的信息。序列号从0开始,每发送一次新的回显请求就加1。p i n g程序打印出返回的每个分组的序列号,允许我们查看是否有分组丢失、失序或重复。I P是一种最好的数据报传递服务,因此这三个条件都有可能发生。
抓包结果
以我本机发送的ICMP回显请求报文为例:
前面的14个字节以太网首部就不解析了,现在从第一行的45开始
回顾ip首部,4代表ipv4 , 5代表ip首部占5个四字节即20字节,说明没有选项字段。后面两个00代表的TOS字段,大家到网上一查,不对啊,00代表很多服务啊,怎么区分啊?其实现在大多数实现都不实用TOS段了,所以就不用管这个字段了。
进入第二行,003c是总长度,整个ip数据报有60个字节,说明数据部分有40个字节,我们数一下,整个报文74个字节,除去14字节以太网首部,20字节的ip首部,剩下的40字节就是数据部分(没有计算以太网尾部)。
4347是标识,0000是偏移量,这个没啥好说的。80是TTL生存时间,01是代表的ICMP报文。2996是校验和。然后是源ip地址0a 86 dc 71, 是不是就是10.134.220.113 。目的地址是0a 86 dc 66 。后面我选中的蓝色部分就是真正的ICMP回显请求报文的内容了, 08 00 与我们说的代码是一样的,0101校验和,后面的就不说了。
总结
这篇文章从一个ping命令入手,讲述了两个很重要的协议ARP协议和ICMP协议,结合实际抓包的结果,分析了报文内容,但是这里还是有疑问,比如,我们说以太网帧除去尾部最少60字节,但是实际抓包时有的就只有42字节(比如我的ARP请求那里),没有进行填充,这部分疑问还没有得到解决吗,希望有人可以指导一下。
转载于:https://www.cnblogs.com/bobxxxl/p/11068824.html
TCP\IP协议实践:wireshark抓包分析之链路层与网络层相关推荐
- telnet协议的Wireshark抓包分析
文章目录 1.telnet背景介绍 2.telnet服务器的安装 3.使用MobaXterm的telnet连接 4.使用Wireshark进行抓包 1.telnet背景介绍 常用的登录远程服务器的方式 ...
- DHCP协议的Wireshark抓包分析
文章目录 1.理论介绍 2.windows的DHCP配置 3.Wireshark抓包DHCP分析 3.1.DHCP Discover 3.2.DHCP Offer 3.3.DHCP Request 3 ...
- FTP协议的Wireshark抓包分析
文章目录 1.理论介绍 2.ftp安装 3.windows上连接ftp服务器 3.1.通过浏览器访问 3.2.通过资源管理器访问 3.3.通过命令行进行访问(本次采用方式,使用主动模式连接) 4.Wi ...
- TCP/IP详解卷1 - wireshark抓包分析
TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...
- Wireshark抓包分析微信功能----tcp/ip选修课期末大作业
分析相关功能所抓取的数据包和完整大作业报告(word版)均已上传至Wireshark抓包分析微信功能----tcp/ip选修课期末大作业-网络监控文档类资源-CSDN文库 适合Wireshark入门的 ...
- 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开
用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...
- 用Wireshark抓包分析协议 计算机网络
此篇博客记录使用Wireshark抓包分析协议. 目录 一.DNS 二.分析TCP握手过程 三.TLS报文 四.HTTP协议 五.SMTP 六.ARP 七.RTP 八.RTMP 一.DNS DNS是域 ...
- Wireshark抓包分析之ICMP协议包
Wireshark抓包分析之ICMP协议包 一. Wireshark简介:(前身为Ethereal,2006年改名为wireshark) Wireshark 是一个网络封包分析软件.网络封包分析软件的 ...
- Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析
Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...
- PXE+VMware主机模式+KickStart脚本 自动安装ESXi 并试用WireShark抓包分析其中的协议TFTP,DHCP
1 安装 1.1 实验环境: Windows 10 (主机) VMWare workstation 15 (运行于主机上) Tiny PXE Server 1.0.0.21 (官网地址,下载地址 ...
最新文章
- Java异常以及继承的一些问题
- C# C/S系统软件开发平台架构图(原创)
- 【错误记录】应用运行 CPU 占用率达到 90% ( 使用 CPU Profiler 监控应用运行情况 )
- 批量处理Excel文件的模块----xlwings
- linux du -h按文件大小,【玩转linux命令】du党
- 前端判断数据类型的通用方法
- magento创建自定义页面 (Bestseller实例) Bestseller products in Magento
- 我慕了!腾讯大手一挥,员工买房最高可申请免息借款90万
- 那年学过的Oracle笔记
- python实践统计学中的三大相关性系数,并绘制相关性分析的热力图
- hadoop HDFS 流式传输及JAVA API实现代码
- ip 查找计算机,win10系统通过ip地址查找计算机名的详细技巧
- sin_cos_tan_cot_sec_cosec 三角函数计算器
- 微信账户显示有异常怎么办?要如何解除?
- model.compile
- 赶在秃之前肝出一款小游戏
- socks5 转 http 代理
- esxi服务器安装系统,esxi6.7服务器安装
- 从“及其所之既倦”到“吾生也有涯,而知也无涯”
- 概率论与数理统计系列笔记之第五章——统计量及其分布