网络协议分析与应用:Wireshark实战

发布时间: 2024-02-29 14:57:46 阅读量: 92 订阅数: 28
# 1. 网络协议概述 ## 1.1 网络协议与数据传输基础 在网络通信中,网络协议扮演着至关重要的角色。网络协议是指计算机之间进行通信和数据交换时约定的规则和标准,它定义了数据传输的格式、序列以及错误检测和纠正等机制。网络协议可以分为不同的层次,每一层都有特定的功能和任务,通过协同工作实现信息的传输和处理。 ## 1.2 常见网络协议介绍 网络中存在众多的网络协议,其中一些是非常常见且广泛应用的,比如HTTP、TCP、UDP、IP等。这些网络协议在不同的网络场景下发挥着重要作用,例如HTTP协议用于Web页面的传输,TCP协议提供可靠的数据传输服务,UDP协议则更适合传输实时性要求较高的数据等。 ## 1.3 OSI参考模型与TCP/IP协议栈简介 OSI参考模型和TCP/IP协议栈是两种常用的网络模型,用于描述计算机网络中不同层级之间的交互和功能划分。OSI参考模型将网络通信划分为七层,依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层;而TCP/IP协议栈则是实际应用最广泛的网络协议体系结构,分为四层,包括网络接口层、网络层、传输层和应用层。 通过对网络协议的深入了解,可以更好地理解网络通信中的各个环节以及数据传输的过程,为后续的Wireshark实战提供更加扎实的理论基础。 # 2. Wireshark入门与基础知识 Wireshark作为一款功能强大且广泛应用的网络协议分析工具,在网络工程和安全领域有着重要的作用。本章将介绍Wireshark的基础知识,包括工具介绍、安装与配置以及界面与基本操作的详细说明。 ### 2.1 Wireshark工具介绍 Wireshark是一个开源的网络协议分析工具,能够帮助用户捕获和分析网络数据包。它支持多种操作系统,包括Windows、macOS和Linux。Wireshark可以解码多种协议,提供了丰富的数据包信息展示和分析功能。 ### 2.2 Wireshark安装与配置 安装Wireshark通常是一个简单的过程。用户可以从Wireshark官方网站下载安装包,根据操作系统选择对应版本进行安装。在安装完成后,用户可以根据需要进行一些基本配置,例如设置捕获接口和调整显示选项。 ### 2.3 Wireshark界面与基本操作 Wireshark的界面通常分为菜单栏、工具栏和数据包列表等部分。用户可以通过菜单栏选择捕获接口或打开现有数据包文件,通过工具栏控制捕获过程。在数据包列表中,用户可以查看捕获的数据包信息,并进行筛选和分析操作。 通过学习本章内容,读者可以初步了解Wireshark的基本功能和使用方法,为后续深入学习和实践打下基础。 # 3. Wireshark高级功能与过滤器 在本章中,我们将深入探讨Wireshark的高级功能和数据包过滤器的使用方法,帮助读者更加高效地进行数据包搜索与分析。 #### 3.1 数据包捕获与分析 在Wireshark中,数据包的捕获是非常重要的一环,通过捕获数据包可以实时地监控网络流量,并进行详细的分析。下面是一个简单的Python示例代码,用于通过Scapy库实现数据包捕获: ```python from scapy.all import * def packet_handler(packet): if packet.haslayer(TCP): src_ip = packet[IP].src dst_ip = packet[IP].dst src_port = packet[TCP].sport dst_port = packet[TCP].dport print(f"Source IP: {src_ip}, Source Port: {src_port}") print(f"Destination IP: {dst_ip}, Destination Port: {dst_port}") print("") sniff(prn=packet_handler, count=10) ``` **代码说明:** - 通过Scapy库进行数据包捕获 - 定义packet_handler函数用于处理捕获到的数据包 - 解析数据包中的IP地址、端口等信息并进行打印 - 使用sniff函数进行数据包捕获,count参数指定捕获数据包的数量 #### 3.2 使用过滤器进行数据包搜索与分析 Wireshark提供了强大的过滤器功能,可以根据需要筛选出特定类型的数据包进行分析。以下是一个Java示例代码,演示如何使用Wireshark的过滤器功能: ```java import org.pcap4j.core.PcapNetworkInterface; import org.pcap4j.core.PcapNetworkInterface.PromiscuousMode; import org.pcap4j.packet.Packet; import org.pcap4j.util.NifSelector; public class PacketCapture { public static void main(String[] args) { try { PcapNetworkInterface nif = new NifSelector().selectNetworkInterface(); nif.openLive(65536, PromiscuousMode.PROMISCUOUS, 10); while (true) { Packet packet = nif.getNextPacket(); if (packet != null) { System.out.println(packet); } } } catch (Exception e) { e.printStackTrace(); } } } ``` **代码说明:** - 使用Pcap4J库进行数据包捕获 - 通过NifSelector选择网络接口 - 打开网络接口并设置Promiscuous模式 - 循环获取数据包并打印 #### 3.3 统计分析与网络瓶颈排查 对于网络瓶颈的排查,Wireshark提供了丰富的统计功能,可以帮助用户分析网络流量、延迟等问题。以下是一个简单的Go示例代码,展示如何利用Wireshark进行网络瓶颈排查: ```go package main import ( "fmt" "github.com/google/gopacket" "github.com/google/gopacket/pcap" "log" ) func main() { if handle, err := pcap.OpenLive("en0", 1600, true, pcap.BlockForever); err != nil { log.Fatal(err) } else { packetSource := gopacket.NewPacketSource(handle, handle.LinkType()) for packet := range packetSource.Packets() { fmt.Println(packet) } } } ``` **代码说明:** - 使用gopacket库进行数据包捕获 - 调用pcap.OpenLive打开网络接口 - 创建PacketSource并循环处理数据包 - 打印捕获到的数据包信息 通过本章的内容,读者可以学习如何利用Wireshark的高级功能和过滤器,实现更加精细化的数据包分析与排查工作。 # 4. 常见网络协议分析实例 网络协议分析在实际的网络工程中扮演着至关重要的角色,通过对常见的网络协议进行深入分析与应用,可以更好地理解网络通信过程中所涉及的细节和问题。本章将通过具体的实例,介绍如何使用Wireshark工具来分析常见的网络协议,包括HTTP/HTTPS、TCP/UDP和DNS协议,并结合实际案例进行分析与应用。 #### 4.1 HTTP/HTTPS协议分析与应用案例 HTTP协议是万维网上数据传输的基础协议,而HTTPS则是在HTTP的基础上增加了加密传输的安全协议。通过Wireshark工具可以捕获HTTP/HTTPS协议的数据包,进而分析其中的请求与响应内容,查看协议头信息、数据内容等,以便进行故障排查和性能优化。 ##### 场景: 假设我们需要分析一次HTTP请求的数据包,了解请求头、响应头以及数据内容,以便排查网络请求延迟等问题。 ##### 代码示例: ```python from scapy.all import * # 定义抓包回调函数 def packet_callback(packet): if packet.haslayer(TCP) and packet.haslayer(Raw): if packet[TCP].dport == 80 or packet[TCP].sport == 80: # HTTP协议端口为80 print("HTTP Packet Detected:") print(packet.show()) # 抓包并调用回调函数 sniff(filter="tcp port 80", prn=packet_callback, count=5) ``` ##### 代码解释与总结: - 使用Scapy库进行数据包抓取和分析。 - 回调函数定义了对抓取数据包的处理逻辑,筛选出TCP协议并且端口为80(HTTP协议端口)的数据包。 - 打印HTTP数据包的详细信息。 ##### 结果说明: 通过执行以上代码,可以捕获并输出符合条件的HTTP数据包信息,从中可以分析出请求和响应的内容,帮助排查网络请求相关问题。 #### 4.2 TCP/UDP协议分析与应用案例 TCP和UDP是传输层常用的两种协议,分别提供可靠的面向连接的服务和无连接的服务。通过Wireshark工具可以捕获TCP/UDP协议的数据包,分析传输过程中的各种情况,如连接建立、数据传输等,以便于网络性能优化和故障排查。 ##### 场景: 假设我们需要分析TCP连接的建立过程,并监控数据传输情况,以便了解网络传输效率。 ##### 代码示例: ```java import org.jnetpcap.Pcap; import org.jnetpcap.PcapIf; import org.jnetpcap.packet.PcapPacket; import org.jnetpcap.protocol.tcpip.Tcp; import org.jnetpcap.protocol.tcpip.Udp; public class PcapAnalyzer { public static void main(String[] args) { Pcap pcap = Pcap.openLive("en0", 65536, Pcap.MODE_PROMISCUOUS, 10 * 1000, new StringBuilder()); PcapPacket packet = new PcapPacket(); Tcp tcp = new Tcp(); Udp udp = new Udp(); while (pcap.nextEx(packet) == Pcap.NEXT_EX_OK) { if (packet.hasHeader(tcp)) { System.out.println("TCP Packet Detected:"); System.out.println(tcp.toHexdump()); } else if (packet.hasHeader(udp)) { System.out.println("UDP Packet Detected:"); System.out.println(udp.toHexdump()); } } pcap.close(); } } ``` ##### 代码解释与总结: - 使用jNetPcap库进行数据包捕获和分析。 - 遍历捕获的数据包,识别TCP和UDP协议。 - 输出TCP和UDP数据包的十六进制信息。 ##### 结果说明: 通过执行以上Java代码,可以捕获并输出TCP和UDP数据包的十六进制信息,从中可以了解数据包的内容和传输情况。 #### 4.3 DNS协议分析与故障排查 DNS协议用于将域名解析为IP地址,是网络通信中重要的一环。通过Wireshark工具可以捕获DNS协议的数据包,分析域名解析过程中的请求与响应情况,帮助排查DNS解析相关问题。 ##### 场景: 假设我们需要分析一次DNS域名解析的过程,检查请求和响应的内容,以排查域名解析故障。 ##### 代码示例: ```go package main import ( "fmt" "github.com/google/gopacket" "github.com/google/gopacket/pcap" "github.com/google/gopacket/layers" ) func main() { if handle, err := pcap.OpenLive("en0", 1600, true, pcap.BlockForever); err != nil { panic(err) } else if err := handle.SetBPFFilter("udp and port 53"); err != nil { panic(err) } else { packetSource := gopacket.NewPacketSource(handle, handle.LinkType()) for packet := range packetSource.Packets() { dnsLayer := packet.Layer(layers.LayerTypeDNS) if dnsLayer != nil { dns, _ := dnsLayer.(*layers.DNS) fmt.Println("DNS Packet Detected:") fmt.Println(dns) } } } } ``` ##### 代码解释与总结: - 使用Gopacket库进行数据包捕获和分析。 - 设置过滤条件为UDP协议且端口为53(DNS协议端口)。 - 解析捕获到的数据包,提取出DNS协议层并打印相关信息。 ##### 结果说明: 通过执行以上Go语言代码,可以捕获并输出DNS协议数据包信息,包括域名解析请求和响应内容,有助于排查DNS解析相关问题。 通过以上实例的分析,我们可以更深入地了解各种网络协议在实际通信中的应用与分析方法。网络协议分析是网络工程中的重要一环,希望以上内容能够对你有所帮助。 # 5. 网络安全与Wireshark应用 网络安全一直是互联网领域的重要议题,而Wireshark作为一款强大的网络协议分析工具,也能在网络安全领域发挥重要作用。本章将介绍网络安全与Wireshark的应用,帮助读者更好地识别网络攻击、安全威胁,并利用Wireshark进行恶意流量分析及安全漏洞发现与修复。让我们一起深入了解吧。 #### 5.1 网络攻击与安全威胁的识别 网络攻击多种多样,常见的攻击手段包括DDoS攻击、SQL注入、跨站脚本等。利用Wireshark可以监控网络流量,识别异常流量模式,帮助及时发现潜在的攻击。 ```python # 举例:使用Wireshark监控TCP SYN Flood攻击 # SYN Flood攻击是一种DoS攻击,通过发送大量伪造的TCP连接请求,导致目标系统资源耗尽 # Wireshark抓包分析可以看到大量未完成三次握手的TCP连接 # Python代码示例 import scapy.all as scapy def syn_flood_attack(target_ip, target_port): while True: scapy.send(scapy.IP(dst=target_ip)/scapy.TCP(dport=target_port, flags="S"), verbose=False) # 模拟发起SYN Flood攻击 target_ip = "192.168.1.100" target_port = 80 syn_flood_attack(target_ip, target_port) ``` 代码总结:上述代码使用Scapy库模拟了一个简单的SYN Flood攻击并向指定IP及端口发送大量伪造的TCP连接请求。 结果说明:通过Wireshark抓包分析可以看到大量未完成三次握手的TCP连接请求,进而识别出可能遭受SYN Flood攻击的目标系统。 #### 5.2 使用Wireshark进行恶意流量分析 恶意流量常常包含病毒、木马、僵尸网络的传播数据,通过Wireshark对流量进行实时监控和深度分析,有助于识别网络中的恶意流量并及时采取相应防护措施。 ```java // 示例:使用Wireshark监控恶意DNS流量 // 恶意DNS流量可能指向恶意域名或用于攻击/欺诈等恶意活动 // Wireshark抓包分析可以帮助定位恶意DNS查询请求 // Java代码示例 import org.pcap4j.core.PcapHandle; import org.pcap4j.core.PcapNativeException; import org.pcap4j.packet.Packet; public class MaliciousDNSAnalysis { public static void main(String[] args) throws PcapNativeException { String pcapFile = "malicious_dns_traffic.pcap"; try (PcapHandle handle = PcapHandle.openOffline(pcapFile)) { Packet packet; while ((packet = handle.getNextPacket()) != null) { // 分析DNS流量,检查恶意域名或异常查询行为 // 可结合Wireshark过滤器对DNS流量进行筛选 } } catch (PcapNativeException e) { e.printStackTrace(); } } } ``` 代码总结:以上Java代码展示了如何使用Pcap4j库读取离线PCAP文件中的恶意DNS流量数据,通过Wireshark抓包分析可以帮助识别恶意的DNS查询请求。 结果说明:通过分析恶意DNS流量,可以及时发现潜在的安全威胁,并采取相应的安全防护措施。 #### 5.3 安全漏洞发现与修复 Wireshark不仅可以帮助识别网络攻击和恶意流量,还可以用于发现系统或应用程序中的安全漏洞。在网络流量分析过程中,发现异常行为或协议交互可能暴露潜在的安全漏洞,及时修复是确保网络安全的重要一环。 ```javascript // 举例:使用Wireshark分析未加密的HTTP通信 // 未加密的HTTP通信容易受到中间人攻击,泄露敏感信息 // Wireshark抓包分析可以帮助发现明文传输的安全风险 // JavaScript代码示例 const http = require('http'); const server = http.createServer((req, res) => { // 处理HTTP请求 res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }); server.listen(80, '127.0.0.1', () => { console.log('Server running at http://127.0.0.1:80/'); }); ``` 代码总结:以上JavaScript代码创建了一个简单的HTTP服务器,但未进行加密传输,通过Wireshark抓包分析可以看到明文传输的HTTP数据,存在被窃听和篡改的风险。 结果说明:通过Wireshark对未加密的HTTP通信进行抓包分析,可以及时发现明文传输的安全风险,并采取加密等措施加强安全保护。 以上是网络安全与Wireshark应用的相关内容,希望能够帮助读者更深入了解网络安全领域的重要性和Wireshark在安全防护中的作用。 # 6. Wireshark实战案例分析 在本章中,我们将通过具体的案例分析来展示Wireshark在实际网络故障排查和网络性能优化中的应用。通过对数据包的深入分析,我们可以更好地理解网络中的问题,并及时采取相应的措施解决。 ### 6.1 实际网络故障排查案例分析 在这个案例中,我们将展示一个实际的网络故障排查过程,以帮助读者更好地理解Wireshark在故障排查中的作用。 **场景介绍:** 假设在一个企业网络中,部分用户反馈无法访问公司内部的服务器,虽然网络设备等硬件正常运行,但依然存在网络故障。 **代码示例:** 使用Wireshark捕获数据包,并通过过滤器来查找问题所在: ```python # 引入必要的模块 from scapy.all import * # 设置捕获数据包的过滤器 filter_str = "host 服务器IP地址 and tcp port 80" # 开始捕获数据包 pkts = sniff(filter=filter_str, count=10) # 分析捕获的数据包 for pkt in pkts: pkt.show() ``` **代码总结:** 以上代码使用Python的Scapy库来捕获符合条件的数据包,并逐个展示数据包的内容,有助于找出问题所在。 **结果说明:** 通过分析捕获的数据包内容,我们可以发现是否有异常的网络请求,从而进一步定位故障原因。 ### 6.2 网络性能优化与故障解决实战 在本节中,我们将分享一个关于网络性能优化与故障解决的实战案例,以展示Wireshark在这方面的应用。 (略,具体内容根据需要展开) ### 6.3 数据包分析在网络安全事件调查中的应用 最后,我们将探讨数据包分析在网络安全事件调查中的重要性,以及Wireshark在网络安全领域的应用实例。 (略,具体内容根据需要展开) 通过以上实例分析,我们可以看到Wireshark在不同场景下的实际应用,为网络工程师和安全专家提供了强大的工具来解决各种网络挑战。
corwn 最低0.47元/天 解锁专栏
买1年送3月
点击查看下一篇
profit 百万级 高质量VIP文章无限畅学
profit 千万级 优质资源任意下载
profit C知道 免费提问 ( 生成式Al产品 )

相关推荐

张_伟_杰

人工智能专家
人工智能和大数据领域有超过10年的工作经验,拥有深厚的技术功底,曾先后就职于多家知名科技公司。职业生涯中,曾担任人工智能工程师和数据科学家,负责开发和优化各种人工智能和大数据应用。在人工智能算法和技术,包括机器学习、深度学习、自然语言处理等领域有一定的研究
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
C知道 免费提问 ( 生成式Al产品 )

最新推荐

【线性回归时间序列预测】:掌握步骤与技巧,预测未来不是梦

# 1. 线性回归时间序列预测概述 ## 1.1 预测方法简介 线性回归作为统计学中的一种基础而强大的工具,被广泛应用于时间序列预测。它通过分析变量之间的关系来预测未来的数据点。时间序列预测是指利用历史时间点上的数据来预测未来某个时间点上的数据。 ## 1.2 时间序列预测的重要性 在金融分析、库存管理、经济预测等领域,时间序列预测的准确性对于制定战略和决策具有重要意义。线性回归方法因其简单性和解释性,成为这一领域中一个不可或缺的工具。 ## 1.3 线性回归模型的适用场景 尽管线性回归在处理非线性关系时存在局限,但在许多情况下,线性模型可以提供足够的准确度,并且计算效率高。本章将介绍线

Pandas数据转换:重塑、融合与数据转换技巧秘籍

![Pandas数据转换:重塑、融合与数据转换技巧秘籍](https://c8j9w8r3.rocketcdn.me/wp-content/uploads/2016/03/pandas_aggregation-1024x409.png) # 1. Pandas数据转换基础 在这一章节中,我们将介绍Pandas库中数据转换的基础知识,为读者搭建理解后续章节内容的基础。首先,我们将快速回顾Pandas库的重要性以及它在数据分析中的核心地位。接下来,我们将探讨数据转换的基本概念,包括数据的筛选、清洗、聚合等操作。然后,逐步深入到不同数据转换场景,对每种操作的实际意义进行详细解读,以及它们如何影响数

从Python脚本到交互式图表:Matplotlib的应用案例,让数据生动起来

![从Python脚本到交互式图表:Matplotlib的应用案例,让数据生动起来](https://opengraph.githubassets.com/3df780276abd0723b8ce60509bdbf04eeaccffc16c072eb13b88329371362633/matplotlib/matplotlib) # 1. Matplotlib的安装与基础配置 在这一章中,我们将首先讨论如何安装Matplotlib,这是一个广泛使用的Python绘图库,它是数据可视化项目中的一个核心工具。我们将介绍适用于各种操作系统的安装方法,并确保读者可以无痛地开始使用Matplotlib

NumPy在金融数据分析中的应用:风险模型与预测技术的6大秘籍

![NumPy在金融数据分析中的应用:风险模型与预测技术的6大秘籍](https://d31yv7tlobjzhn.cloudfront.net/imagenes/990/large_planilla-de-excel-de-calculo-de-valor-en-riesgo-simulacion-montecarlo.png) # 1. NumPy基础与金融数据处理 金融数据处理是金融分析的核心,而NumPy作为一个强大的科学计算库,在金融数据处理中扮演着不可或缺的角色。本章首先介绍NumPy的基础知识,然后探讨其在金融数据处理中的应用。 ## 1.1 NumPy基础 NumPy(N

【品牌化的可视化效果】:Seaborn样式管理的艺术

![【品牌化的可视化效果】:Seaborn样式管理的艺术](https://aitools.io.vn/wp-content/uploads/2024/01/banner_seaborn.jpg) # 1. Seaborn概述与数据可视化基础 ## 1.1 Seaborn的诞生与重要性 Seaborn是一个基于Python的统计绘图库,它提供了一个高级接口来绘制吸引人的和信息丰富的统计图形。与Matplotlib等绘图库相比,Seaborn在很多方面提供了更为简洁的API,尤其是在绘制具有多个变量的图表时,通过引入额外的主题和调色板功能,大大简化了绘图的过程。Seaborn在数据科学领域得

大样本理论在假设检验中的应用:中心极限定理的力量与实践

![大样本理论在假设检验中的应用:中心极限定理的力量与实践](https://images.saymedia-content.com/.image/t_share/MTc0NjQ2Mjc1Mjg5OTE2Nzk0/what-is-percentile-rank-how-is-percentile-different-from-percentage.jpg) # 1. 中心极限定理的理论基础 ## 1.1 概率论的开篇 概率论是数学的一个分支,它研究随机事件及其发生的可能性。中心极限定理是概率论中最重要的定理之一,它描述了在一定条件下,大量独立随机变量之和(或平均值)的分布趋向于正态分布的性

数据清洗的概率分布理解:数据背后的分布特性

![数据清洗的概率分布理解:数据背后的分布特性](https://media.springernature.com/lw1200/springer-static/image/art%3A10.1007%2Fs11222-022-10145-8/MediaObjects/11222_2022_10145_Figa_HTML.png) # 1. 数据清洗的概述和重要性 数据清洗是数据预处理的一个关键环节,它直接关系到数据分析和挖掘的准确性和有效性。在大数据时代,数据清洗的地位尤为重要,因为数据量巨大且复杂性高,清洗过程的优劣可以显著影响最终结果的质量。 ## 1.1 数据清洗的目的 数据清洗

Keras注意力机制:构建理解复杂数据的强大模型

![Keras注意力机制:构建理解复杂数据的强大模型](https://img-blog.csdnimg.cn/direct/ed553376b28447efa2be88bafafdd2e4.png) # 1. 注意力机制在深度学习中的作用 ## 1.1 理解深度学习中的注意力 深度学习通过模仿人脑的信息处理机制,已经取得了巨大的成功。然而,传统深度学习模型在处理长序列数据时常常遇到挑战,如长距离依赖问题和计算资源消耗。注意力机制的提出为解决这些问题提供了一种创新的方法。通过模仿人类的注意力集中过程,这种机制允许模型在处理信息时,更加聚焦于相关数据,从而提高学习效率和准确性。 ## 1.2

正态分布与信号处理:噪声模型的正态分布应用解析

![正态分布](https://img-blog.csdnimg.cn/38b0b6e4230643f0bf3544e0608992ac.png) # 1. 正态分布的基础理论 正态分布,又称为高斯分布,是一种在自然界和社会科学中广泛存在的统计分布。其因数学表达形式简洁且具有重要的统计意义而广受关注。本章节我们将从以下几个方面对正态分布的基础理论进行探讨。 ## 正态分布的数学定义 正态分布可以用参数均值(μ)和标准差(σ)完全描述,其概率密度函数(PDF)表达式为: ```math f(x|\mu,\sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} e

p值与科学研究诚信:防止P-hacking的重要性

![p值与科学研究诚信:防止P-hacking的重要性](https://anovabr.github.io/mqt/img/cap_anova_fatorial_posthoc4.PNG) # 1. p值在科学研究中的角色 ## 1.1 p值的定义及其重要性 p值是统计学中一个广泛使用的概念,它是在零假设为真的条件下,观察到当前数据或者更极端情况出现的概率。在科学研究中,p值帮助研究者决定是否拒绝零假设,通常p值小于0.05被认为是统计学上显著的。 ## 1.2 p值的作用和误解 p值在科学研究中的作用不可忽视,但同时存在误解和滥用的情况。一些研究人员可能过度依赖p值,将其视为效果大