实验目的

学习安装、使用协议分析软件,掌握基本的数据报抓取、
过滤和分析方法,能分析HTTP、TCP、ICMP等协议。

实验环境

使用具有Internet连接的MacOs操作系统;
抓包软件Wireshark。

实验内容:

  1. 安装学习Wireshark软件
  2. 抓包与分析HTTP协议
  3. 分析TCP协议
  4. 分析TCP三次握手
  5. 分析ICMP协议

实验步骤:

1. 安装学习Wireshark软件

(1) 首先在官网下载wireshark软件

根据系统版本选择macOS Arm 64-bit.dmg并安装

(2) 运行Wireshark,初始界面如下图。

(3) 从接口列表中选择要捕获的接口,双击即可开始捕获。

双击

(4) Wireshark进入主界面,并开始捕获分组。

使用左上角的按钮开始或停止捕获分组
主界面中可以看见过滤器、分组列表栏、分组详情栏、分组字节栏、状态栏。

(5) 过滤器的使用

① 协议过滤
例如http

② IP地址过滤
例如ip.src == 172.30.208.8

③ 模式过滤
例如http.request.method==”GET”用于过滤http请求方法是POST的分组

④ 端口过滤
例如tcp.port == 80,用于过滤tcp端口号是80的分组

(6) 分组详情栏
自上而下分别是物理层,链路层,网络层,传输层,应用层

Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息
Hypertext Transfer Protocol: 应用层的信息

2. 抓包与分析HTTP协议

(1) 开启Wireshark抓包,在过滤器中输入http,即过滤http协议的分组。

(2) 打开浏览器,输入一个网址

本次实验以计算机网络UOOC网址http://www.uooc.net.cn/home/learn/index#/1138570567/962085269/1242952600/1500174221/section为例,在chrome中以无痕模式打开该网址

(3) 观察到Wireshark分组列表栏中出现了HTTP协议分组。

(4) 点开详情页,我们可以在分组详情栏中看到更具体的信息。

我们可以知道服务器主机名为www.uooc.net.cn,我们请求的目录是/home/learn/index。

当然我们也可以通过http协议信息知道user-agent,例如本次请求他就显示我的客户端主机信息为Mac OS X。

通过HTTP协议信息我们可以了解到客户端与服务器端的各种基本信息。

(5) 从步骤四所得的分组,获知此次通信的源IP地址和目的IP地址。
这里,172.30.208.8是私有IP地址,即用户的主机;目的IP地址为120.78.21.18,即服务器的主机地址。

3. 分析 TCP协议

(1) 首先查看TCP协议信息

我们可以获得如下信息等:
源端口号:54378
目的端口号:80
序列号:2642300584
确认号:572491362
报头长度:20 bytes(5)
标志位:0x018
窗口大小:4096
校验和:0xbb4e

(2) 追踪其TCP流。

点击右键,从下拉菜单中选择TCP流。

(3) 建立TCP流

TCP连接建立在HTTP GET请求之前完成

并且我们可以在info信息中看到标志位[SYN,ACK]

4. TCP三次握手

TCP三次握手的过程如下:

1)客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
2)服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
3)客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

(1) 第一次握手(SYN)
可以看出,由于使用的是HTTPS协议打开的网页,所以TCP端口为54378。Src为客户端,Dst为访问的域名接续后的ip,所以这是客户端发送给服务端的数据。可以看到客户端将Flags标志位SYN置为1,随机产生一个值Sequence Number = 0作为序号,并将该数据包发送给服务器,客户机进入SYN_SENT状态,等待服务器确认。默认显示的是序列号 seq 是相对值,真实值为2642300583。

(2) 第二次握手(SYNACK)
该数据包的Src是服务端,Dst是客户端,说明这是服务器发送给客户端的数据。这时观察到,SYN仍然为1。然后,服务端将确认号设置为客户的序号seq加1,即0+1=1, ACK变为了1(真实值为572491361),说明服务端收到了TCP请求。此时,seq由服务器随机生成相对值0(真实值为2642300584)。

(3) 第三次握手(ACK)
该数据包的Src为客户端,Dst为服务端,这是客户端发送的数据包。在第三次握手中,客户端收到第二次握手中服务器发来的包后检查确认序号Seq是否正确,即第一次发送的序号Seq加1(X+1= 0+1=1)。以及标志位ACK是否为1。若正确,客户端会再向服务器端发送一个数据包,SYN=0,ACK=1,确认序号Ack=Y+1=0+1=1,并且把服务器发来ACK的序号Seq加1发送给对方,发送序号Seq为X+1= 0+1=1。客户端收到后确认序号值与ACK=1,至此,一次TCP连接就此建立,可以传送数据了。

5. 分析ICMP协议

(1) 分别使用终端去ping百度,wireshark根据icmp协议进行筛选
最终会得到如下信息:

抓包软件中看到一个request请求包和一个reply回应包,一个TTL为64,一个为50

选取其中的一个数据包进行查看:
报文由IP首部和ICMP报文组成。IP首部共有20字节。

ICMP报文,共有40字节。

(2) 我尝试了以下操作

我ping了一个不存在的主机,例如10.104.125.345。
在wireshark中就抓不到ICMP包

【计算机网络】使用WireShark数据包抓取与分析相关推荐

  1. 实现ip数据包抓取并分析_一些网站https证书出现问题的情况分析

    20200326下午,有消息说[1]github的TLS证书出现了错误告警.证书的结构很奇怪,在其签发者信息中有一个奇怪的email地址:346608453@qq.com.明显是一个伪造的证书. 为了 ...

  2. C# 开发的网络数据包抓取的的实现

    利用C# 开发的网络数据包抓取的的实现 利用套接字Socket  socket=new Socket(AddressFamily.InterNetwork, SocketType.Raw, Proto ...

  3. linux-网络数据包抓取-tcpdump

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 用法格式: tcpdump [-i 网卡] [选项] '表达式' 选项说明如下: -i:interface 监听的网卡. -nn:表示以ip和port ...

  4. 1、Linux下C语言 编写简单的网络嗅探器: 基本的数据包抓取分析

    首先贴上源代码 #include <stdio.h> #include <errno.h> #include <unistd.h> #include <sys ...

  5. 数据包抓取工具 wireshark

    官方网站: http://www.wireshark.org/ 文档: http://man.lupaworld.com/content/network/wireshark/index.html 转载 ...

  6. Wireshark数据包分析(一)——使用入门

    Wireshark简介: Wireshark是一款最流行和强大的开源数据包抓包与分析工具,没有之一.在SecTools安全社区里颇受欢迎,曾一度超越Metasploit.Nessus.Aircrack ...

  7. 【干货】-- 带你抓取并分析知乎高评分电影

    最近突然想看电影了,跑去电影天堂却不知道该看哪一步,很纠结呀,想来想去还是去知乎上搜搜高评分的电影.发现新大陆呀,还是网友的力量大,挖掘出了高评分的电影,并作一一罗列,足足400多部啊.具体内容可点击 ...

  8. JAVA+网络数据包的抓取与分析实验

    一.实验目的 熟悉TC P/IP数据包的结构. 掌握Wireshark的使用方法. 能够利用JNet Pcap编程实现数据包的抓取与分析. 二.实验准备 1.通过抓包,可以进行网络故障分析.流量监控. ...

  9. php禁止fidd抓包,PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析

    本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddler抓取手 ...

最新文章

  1. RTFNet:基于可见光/红外图像的城市自动驾驶道路场景语义分割
  2. 教你在Nodejs中如何获取当前函数被调用的行数及文件名
  3. Android 面试题目之 线程池
  4. 一文搞清楚,QPS、TPS、并发用户数、吞吐量
  5. oracle两种日志模式,oracle 进阶(二)--数据库日志模式切换
  6. mysql5.7 sqlmode_mysql 5.7 sql mode
  7. Node.js 应用故障排查手册 —— 大纲与常规问题指标简介
  8. 查看系统CPU是否支持KVM虚拟化(回显,shell脚本)
  9. 从事web前端两年半后的迷茫
  10. Proc恢复数据文件
  11. WIFI密码破解技巧---简单之成功率极高
  12. 理解Memory Barrier(内存屏障)
  13. java中文繁体简体转换
  14. 笔记本电脑摄像头黑屏怎么处理?
  15. 查看服务器显卡运行状况
  16. SAP副本请求传输教程
  17. tensorflow.python.framework.errors_impl.InvalidArgumentError exception str() failed解决办法
  18. Revi插件技巧:管道【风口下延】自定义长度?
  19. hao123是HTML还是PHP,PHP网址目录大全网址导航源码 支持默认/hao123/2345/114la四种风格...
  20. idea看java版本设置_详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)...

热门文章

  1. 双击电脑本地磁盘打不开
  2. Windows网络与通信程序设计实验一:基于TCP的C/S通信仿真
  3. oracle供应商寻源,oracle 采购寻源白皮书.pdf
  4. python获取当前时间字符串_python获取当前时间写法
  5. 华为android8.0续航,华为畅享8电池容量多少_华为畅享8续航能力-太平洋IT百科
  6. 五分钟学会 Spring Cloud Sleuth:分布式请求链路跟踪(小白必看,一看就会教程)
  7. 华为23届校招暂停招聘,今年金三银四秒变“降三裁四“?
  8. python把图片转化为素描画_python如何将图片转换素描画 python将图片转换素描画代码示例...
  9. 木木机器人tf卡_TF卡被特意隐藏了,。怎么拷贝出来里面的文件呢?
  10. Python 单引号、双引号和三引号混用时一定要注意!!!