抓包与分析

article/2025/11/7 4:28:57

作业目的
(1)了解网络通信的分层实现过程,了解不同层次PDU的逐层封装与解封过程;
(2)了解数据通信的过程,进一步认知协议的构成与通信过程,进而对TCP/IP分层体系结构有更深刻的了解。
(二)作业内容
1. 在局域网范围内从协议层面分析ping命令的执行过程,包括所使用协议,以及不同层级的数据包封装与解封的过程。
2. 访问www.ujs.edu.cn网站,分析其中所使用的协议,以及数据包的逐层封装与解封过程。
3. 思考在数据链路层的数据包与网络层数据包的异同,包括包长度和数据构成等,并进一步思考为何会存在这些区别?

(三) 作业要求
(1)能够正确捕捉ping命令执行过程中所产生的数据包,并逐层分析其构成,进而了解数据包的封装与解封过程;
(2)能够正确捕捉访问www.ujs.edu.cn网站过程所产生的相关数据包,分析出其所使用的协议,以及各协议的访问流程;
(3)能够正确分析数据链路层的数据包与网络层数据包的异同。
(4)了解并熟悉常见的抓包工具,例如Wireshark、Sniffer等,熟悉以太网数据帧和IP数据包的结构
(5)以PDF文档提交本次作业报告。

(四)实现过程

  1. 数据包的捕获
  • 在windows命令行输入“ipconfig-all”获取本机的MAC地址和DNS服务器地址

图 1

本机的IP地址为:192.168.1.100

本机的MAC地址为:C8-B2-9B-F4-80-1C

DNS域名服务器地址为:8.8.8.8

  • 在windows命令行输入“arp -a”获取本机的高速缓存。

图2

  • 打开Wireshark进行抓包分析

图3

NO:代表数据包编号

Time:在Wireshark启动的多长时间内抓到

Source:来源IP地址

Destination:目的IP地址

Protocol:协议

Length:数据包的长度

Info:数据包的信息

(2)数据包的层次结构

选中一个数据包查看它的详细信息,可以看到Packet Details上显示出该数据包的4个层次结构信息,每层含义如下:

Frame:物理层数据帧概况

Etherent II:数据链路层帧头部信息

Internet Protocol Version 4:网络层IP包头部信息

Transmission Control Protocol:传输层数据帧头部信息

  

图4

可见网络是分层构成的,由低到高,分别为物理层,数据链路层,网络层,传输层,应用层。

  1. TCP/IP协议族

图 5

应用层常用的协议有:HTTP,DNS协议

传输层常用的协议有:TCP和UDP协议

网络层常用的协议有:IP,ICMP,IGMP协议

数据链路层常用的协议有:ARP,以太网协议

(4)数据包的封装过程
数据封装一般分五层,第一层是应用层协议的数据,第二层分别是TCP/UDP封装,第三层IP封装,第四层以太网封装,最后转成二进制的物理报文。 

图 6

  • 传输层数据帧头部信息

Transmission Control Protocol, Src Port: 443, Dst Port: 51282, Seq: 1, Ack: 1, Len: 0

Source Port: 443

#源端口

Destination Port: 51282

#目的端口

    [Stream index: 1]

    [TCP Segment Len: 0]

    Sequence Number: 1    (relative sequence number)

Sequence Number (raw): 413129997

#序列号:确保数据可靠传输的一个唯一值。TCP使用序列号追踪每个数据段的传输情况

    [Next Sequence Number: 1    (relative sequence number)]

    Acknowledgment Number: 1    (relative ack number)

Acknowledgment number (raw): 3874393895

#确认号:接收端发送,提示发送端下一次该发的数据在整个文件中的序号。接收端收到后,会把这个序号之前的数据从缓存中删掉。

0101 .... = Header Length: 20 bytes (5)

#头部长度

Flags: 0x010 (ACK)

#志字段:发起连接的数据包,连接即握手进程

    Window: 2053

    [Calculated window size: 2053]

    [Window size scaling factor: -1 (unknown)]

Checksum: 0x9add [unverified]

#效验和:判断接受数据的完整性。可以让通信方确认TCP数据段中的内容是否发生变化了。

    [Checksum Status: Unverified]

Urgent Pointer: 0

#紧急指针:只有当 URG 标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。

[Timestamps]

  1. TCP首部各部分所占字节数:

图 7

  • 网络层帧数据包头部信息:

Internet Protocol Version 4, Src: 52.176.224.96, Dst: 192.168.1.100

0100 .... = Version: 4

#网际协议为IPV4

版本:4位,值为0100。目前存在两种版本IP协议:

 IPv4和IPv6,版本号分别为4和6, 这是IPv4首部格式。

.... 0101 = Header Length: 20 bytes (5)

#IP包头部长度20

首部长度:4位,首部长度字段以32位字为单位,即4个字节。

字段最小值为5,用于没有可选项的情况,20个字节。

Differentiated Services Field: 0x04 (DSCP: LE, ECN: Not-ECT)

#差分服务字段

服务类型:8位,用于指定IP分组的优先级、延迟、

 吞吐率和可靠性要求及各种要求的组合。

Total Length: 40

#IP包总长度40

总长度16位,以字节为单位给出包括首部和数据的IP分组的长度,首部

 长度是可变的,数据长度也是可变的,最大长度值为65535字节。

Identification: 0xf232 (62002)

#标识字段

标识:16位,标识字段用于标识属于同一IP分组的数据片,属于同一IP分

 组的数据片具有相同的标识字段值。

Flags: 0x40, Don't fragment

#标志字段

标志:3位,其中一位DF,一位MF,一位保留DF=1,不允许分片,MF=0,最后一片。

Fragment Offset: 0

#偏移量

偏移量:13位,以8个字节为单位给出当前数据片在原始IP分组中的位置

Time to Live: 106

#生存期TTL

生存时间:8位,用于限制IP分组在网络中存在时间的一个计数器

 目前,该字段只是作为最大跳数使用,初始值由发送终端设定

Protocol: TCP (6)

#此包封装的上层协议为TCP

协议:8位,用于表示数据所属的高层协议类型,告诉网络层把该IP分组

 送给哪一个进程处理。

Header Checksum: 0x4778 [validation disabled]

#头部数据的校验和

首部检验和:16位,对首部用检验和算法计算出的检错码,用于检测首部

 传输过程中发生的错误,每经过一个路由器计算机一次。

    [Header checksum status: Unverified]

Source Address: 52.176.224.96

#源IP 地址

Destination Address: 192.168.1.100

#目标IP地址

  1. IP首部各部分所占字节数:

图8

  • 数据链路层帧数据包头部信息:

Ethernet II, Src: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b), Dst: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)

Destination: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)

#目标MAC地址

Source: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)

#源MAC地址

Type: IPv4 (0x0800)

#网际协议为IPV4

  • 小结

通过头部信息可以看出,该数据帧在传输层被封装为TCP数据包,到网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去,并且此过程中没有应用层协议。

(5)访问 www.ujs.edu.cn 分析数据包

1.打开命令行ping www.ujs.edu.cn

图 9

2.在WireShark中进行捕获,并在过滤器中输入“dns”获取协议为DNS的数据列表,可以看到ping过程中终端向DNS服务器发送了1次域名请求响应,DNS服务器回复了1次IP回复报文。

图10

  • 终端向DNS服务器发送问题请求:

Domain Name System (query)

Transaction ID: 0xa418

#DNS ID号

Flags: 0x0100 Standard query

#标志

Questions: 1

#问题计数

Answer RRs: 0

#回答计数

Authority RRs: 0

#域名服务器计数

Additional RRs: 0

#额外计数

    Queries

        ujs.edu.cn: type A, class IN

            Name: ujs.edu.cn

#请求的域名

            [Name Length: 10]

            [Label Count: 3]

            Type: A (Host Address) (1)

#域名类型

            Class: IN (0x0001)

#地址类型

[Response In: 9362]

  • DNS服务器向终端返回IP地址

Domain Name System (response)

    Transaction ID: 0xa418

    Flags: 0x8180 Standard query response, No error

    Questions: 1

    Answer RRs: 1

    Authority RRs: 0

    Additional RRs: 0

    Queries

    Answers

 ujs.edu.cn: type A, class IN, addr 202.195.160.7

#返回www.ujs.edu.cn的IP地址

    [Request In: 9361]

[Time: 0.006913000 seconds]

  1. DNS首部各部分所占字节数:

图11

观察DNS数据包在网络层的报头信息:

图 12

DNS数据包在传输层采用的UDP协议。

  • 小结

通过头部信息可以看出,该数据帧在应用层被封装为DNS数据包,在传输层被封装为UDP数据包,在网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去。

3.在WireShark中进行捕获,并在过滤器中输入ip.addr == 202.195.160.7获取待分析数据列表,可见终端获取域名www.ujs.edu.cn 的IP地址后,向其发送了4条请求响应,并收到其4次回复。

图 13

点击其中一个数据报文,观察其详细信息。

  • 传输层数据报头信息:

Internet Control Message Protocol

    Type: 8 (Echo (ping) request)

    Code: 0

    Checksum: 0x4d4c [correct]

    [Checksum Status: Good]

    Identifier (BE): 1 (0x0001)

    Identifier (LE): 256 (0x0100)

    Sequence Number (BE): 15 (0x000f)

    Sequence Number (LE): 3840 (0x0f00)

    [Response frame: 199]

    Data (32 bytes)

  • 网络层数据报头信息:

Internet Protocol Version 4, Src: 192.168.1.100, Dst: 202.195.160.7

    0100 .... = Version: 4

    .... 0101 = Header Length: 20 bytes (5)

    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)

    Total Length: 60

    Identification: 0xdc8b (56459)

    Flags: 0x00

    Fragment Offset: 0

    Time to Live: 128

Protocol: ICMP (1)

#传输层/网络层协议为ICMP

    Header Checksum: 0x0000 [validation disabled]

    [Header checksum status: Unverified]

Source Address: 192.168.1.100

#源IP地址

Destination Address: 202.195.160.7

#目标IP地址

  • 数据链路层数据报头信息:

Ethernet II, Src: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c), Dst: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)

Destination: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)

#目标MAC地址

Source: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)

#源MAC地址

Type: IPv4 (0x0800)

#网际协议为IPV4

  1. ICMP首部各部分所占字节数

 图 14

从图中可以看出,ICMP报文首部是被封装在IP数据报的数据部分,而在ICMP首部前面仍需增加IP首部,即

IP首部

ICMP首部

上层数据部分

  • 小结

通过头部信息可以看出,ping命令终端所发送的数据帧在传输层被封装为ICMP数据包,到网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去,并且此过程中没有应用层协议。

  1. 总结

执行Ping www.ujs.edu.en命令首先终端会访问DNS服务器询问域名的IP地址,DNS服务器收到询问请求后发送包含域名IP信息的DNS数据包,此过程中应用层协议为DNS,传输层协议为UDP,网络层协议为IP。终端获得www.ujs.edu.cn的IP地址后,再向其寻求访问,www.ujs.edu.cn收到访问请求后发送回复数据帧,此过程中传输层/网络层协议为ICMP,在网络层封装为IP数据包。

(6)数据链路层的数据包与网络层数据包的异同

  1. 数据链路层
    数据链路层在物理层提供的服务的基础上向网络层提供服务。数据链路层的作用:
    1、IP数据模块发送和接收IP数据报;
    2、为ARP模块发送ARP请求和接收ARP协议;
    3、为RARP发送RARP请求和接受RARP应答。

以太网协议数据报头:
Ethernet II, Src: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c), Dst: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)

#以太网协议版本,源地址:网卡地址,目的地址:网卡地址

    Destination: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)

#目的地址:网卡地址————占6个字节

    Source: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)

#源地址:网卡地址————占6个字节

    Type: IPv4 (0x0800)

#帧内封装的上层协议类型为IPV4(十六进制码0800)————占2个字节

  1. 网络层
    在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
    主要内容有:
    1、虚电路分组交换和数据报分组交换
    2、路由选择算法
    3、阻塞控制方法
    5、综合业务数据网(ISDN)
    6、异步传输模式(ATM)及网际互连原理与实现。

ICMP数据报头:

Internet Protocol Version 4, Src: 192.168.1.100, Dst: 202.195.160.182

    0100 .... = Version: 4

    .... 0101 = Header Length: 20 bytes (5)

#IPV4协议————占1个字节

    Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)

    Total Length: 60

#IP首部长度————占2个字节

    Identification: 0xdc8b (56459)

#差分服务字段————占2个字节

    Flags: 0x00

#标记字段————占1个字节

    Fragment Offset: 0

#偏移量————占1个字节

    Time to Live: 128

#生存期————占1个字节

    Protocol: ICMP (1)

#封装的上层协议为ICMP————占1个字节

    Header Checksum: 0x0000 [validation disabled]

#效验码————占2个字节

    [Header checksum status: Unverified]

    Source Address: 192.168.1.100

#源IP地址————占4个字节

    Destination Address: 202.195.160.182

#目标IP地址————占4个字节

  1. 小结

可见,数据链路层数据包报头和网络层数据包报头有很大不同,就比如数据链路层的源地址和目的地址存放的是6个字节的MAC地址;而网络层存放的是4个字节的IP地址,而这些区别取决于网络层与数据链路层面临问题不同作用功能不同,采用的协议不同


http://chatgpt.dhexx.cn/article/QBVcP8dV.shtml

相关文章

Wireshark抓包分析基础

Wireshark抓包分析 (仅作为个人笔记,如有雷同,请联系删除。。) 下载:https://www.wireshark.org/#download 1、设置时间格式:视图–>时间显示格式 2、设置解析:视图–>Name Resoluti…

Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包

在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)——抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要开始对Http抓取的数据报进行深入…

【HTTP】Fiddler(二) - 使用Fiddler做抓包分析

上文( http://blog.csdn.net/ohmygirl/article/details/17846199 )中已经介绍了Fiddler的原理和软件界面。本文主要针对Fiddler的抓包处理。 Fiddler抓取HTTP请求。 抓包是Fiddler的最基本的应用,以本博客为例,启动Fiddler之后,在浏览器中输入http://blog.csdn.net/ohmygi…

MySQL索引优化实战EXPLAIN解析

先来介绍一下具体的业务场景 当用户登录后,需要查看能够学习的课程,不同的用户看到的课程是不同的,课程存在权限,权限是被下面lesson_user_permissions表控制的,其中sys_user_id 和 lesson_id 作为联合主键 另外还有一…

MySQL索引优化面试题

mysql索引优化熊大注意我们是以innodb为例 创建表sql如下: CREATE TABLE user (id bigint(11) NOT NULL AUTO_INCREMENT COMMENT 主键,age int(10) NOT NULL COMMENT 年龄,name varchar(100) NOT NULL COMMENT 姓名,card_no varchar(64) CHARACTER SET utf8 COLLATE utf8_gen…

【MySQL】深入理解MySQL索引优化器工作原理

本文导读 本文将解读MySQL数据库查询优化器(CBO)的工作原理。简单介绍了MySQL Server的组成,MySQL优化器选择索引额原理以及SQL成本分析,最后通过 select 查询总结整个查询过程。 一、MySQL 优化器是如何选择索引的 下面我们来…

MySQL索引优化与查询优化

1. 索引失效案例 1 全值匹配 2 最佳左前缀法则 3 主键插入顺序 如果 这个数据页已经满了,我们需要把当前 页面分裂 成两个页面,把本页中的一些记录移动到新创建的这个页中。页面分裂和记录移位意味着:性能损耗 !所以如果我们想尽量避免这样…

mysql索引优化系列(一)

一、不常见的索引失效场景 1、举例 还是之前的member会员记录表&#xff0c;往里面插入十万条数据 drop procedure if exists insert_emp; CREATE PROCEDURE insert_emp () BEGINDECLAREi INT;SET i 1;WHILE( i < 100000 ) DOINSERT INTO member ( NAME, age, address, …

MySQL索引优化一

MySQL索引 索引是什么 索引是一种排好序的数据结构&#xff0c;目的是提高查找效率一般来说&#xff0c;索引本身也占内存&#xff0c;因此索引以文件的形式存储在磁盘上平常我们所说的索引一般都是BTree。当然还有hash索引等等 索引优劣势 优势&#xff1a;提高检索效率&a…

MYSQL索引详解和优化

索引的定义 我们在看书的时候&#xff0c;都知道有目录&#xff0c;我们可以通过目录快速的找到书中的内容&#xff0c;而书中的目录就是充当书的索引。在数据库中的索引也是一样的。 索引的定义&#xff1a; 索引是帮助存储引擎快速获取数据的一种数据结构&#xff0c;即数据…

一文彻底搞懂Mysql索引优化

专属小彩蛋&#xff1a;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff08;前言 - 床长人工智能教程&#xff09; 目录 一、索引介绍 二、性能分析 三、查询优化 四、排序优化…

MYSQL通过索引进行优化

MYSQL通过索引进行优化 一&#xff1a;什么是索引&#xff1a; 在关系数据库中&#xff0c;索引是一种与表有关的数据库结构&#xff0c;它可以使对应于表的 SQL 语句执行得更快。索引的作用相当于图书的目录&#xff0c;可以根据目录中的页码快速找到所需的内容。 对于数据…

MySQL索引优化(超详细)

Mysql索引优化 1 索引介绍 1.1 什么时MySQL的索引 ​ MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据的数据结构。 ​ MySQL在存储数据之外&#xff0c;数据库系统中还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种引用(指向)表中的数据&#xff…

MySQL索引(二)索引优化方案有哪些

在上一篇文章中&#xff0c;我们介绍了MySQL中常见的索引类型以及每种索引的各自特点&#xff0c;那么这篇文章带你来与我一起看一下聚集索引与二级索引的关系&#xff0c;最后在附上常见的索引优化方案。首先我们还是看一下聚集索引和二级索引的区别 MySQL索引&#xff08;一…

【MySQL】索引优化原则

前面几篇博文谈到索引使用场景和explain命令帮助我们分析索引的执行情况&#xff0c;今天进入正题&#xff0c;来谈谈索引优化的原则。 1、全值匹配 查询语句尽量使用全值匹配。 2、左前缀原则 如果一个索引是组合索引&#xff0c;索引了多列&#xff0c;要遵循左前缀原则…

MySQL:索引优化、查询优化

一、哪些情况适合创建索引 1、字段的数值有唯一性的限制&#xff1b; 业务上具有唯一特性的字段&#xff0c;即使是组合字段&#xff0c;也必须建成唯一索引&#xff1b; 说明&#xff1a;创建唯一索引会影响添加的速度&#xff08;在添加的时候会维护索引&#xff09;&…

Mysql-索引优化

一、索引基本知识 1、索引的优点 很大程度上减少服务器扫描的数据量很大程度上避免服务器排序和临时表将随机IO变成顺序IO 2、索引的用处 使用索引列可以快速查找Where条件的行数据 mysql> explain select * from emp where empno 7469; ----------------------------…

MySQL索引优化总结

前言&#xff1a;相信大家都知道索引可以大大提高MySQL的检索速度&#xff0c;但是真正在平时工作中写SQL&#xff0c;真的会考虑到这条SQL如何能够用上索引提升执行效率&#xff1f;本篇博客详细的介绍了索引优化的20个原则&#xff0c;只要在工作中能够随时应用到&#xff0c…

【MySQL】深入理解MySQL索引优化器原理(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

mysql 索引优化

一、mysql索引建立原则 二、通过 EXPLAIN 分析 SQL 执行计划 可以知道以下内容&#xff1a; 假设现在我们使用 EXPLAIN 命令查看当前 SQL 是否使用了索引&#xff0c;先通过 SQL EXPLAIN 导出相应的执行计划如下&#xff1a; 下面对图示中的每一个字段进行一个说明&#x…