wireshark抓包分析TCP和UDP_ipv4数据包分析

wireshark抓包分析TCP和UDP_ipv4数据包分析在命令行输入ifconfig,查看本机网络接口。$ifconfigenp4s0:flags=4099<UP,BROADCAST,MULTICAST>mtu1500etherc8:5b:76:f6:44:d2txqueuelen1000(Ethernet)RXpackets0bytes0(0.0B)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在命令行输入ifconfig,查看本机网络接口。

$ ifconfig enp4s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500        ether c8:5b:76:f6:44:d2  txqueuelen 1000  (Ethernet)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10<host>        loop  txqueuelen 1000  (Local Loopback)        RX packets 391  bytes 61933 (60.4 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 391  bytes 61933 (60.4 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255        ether 52:54:00:a7:e6:9c  txqueuelen 1000  (Ethernet)        RX packets 31  bytes 3291 (3.2 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 18  bytes 2571 (2.5 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet6 fe80::fc54:ff:fe15:2983  prefixlen 64  scopeid 0x20<link>        ether fe:54:00:15:29:83  txqueuelen 1000  (Ethernet)        RX packets 31  bytes 3725 (3.6 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 39  bytes 4941 (4.8 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
wlp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 10.1.1.64  netmask 255.255.255.0  broadcast 10.1.1.255        inet6 fe80::40df:807c:eb38:8b78  prefixlen 64  scopeid 0x20<link>        ether a8:6b:ad:54:d5:3d  txqueuelen 1000  (Ethernet)        RX packets 10965  bytes 11639278 (11.1 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 3369  bytes 513997 (501.9 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Jetbrains全家桶1年46,售后保障稳定

运行一段Java代码,往内网ip192.168.122.217发送UDP数据

package UDPtest;
import java.io.IOException;import java.net.*;
public class UDPTestClient {
  
      private static final int PORT = 8800;    private static final String HOSTNAME = "192.168.122.217";
    public static void main(String[] args){
  
          try (DatagramSocket ds = new DatagramSocket(8801)){
  
              /**             * 这里是发送数据到服务端             */            //这里定义地址信息             InetAddress id = InetAddress.getByName(HOSTNAME);            //要发送的数据            byte[] buffer = "这里是客户端发送的数据".getBytes();            //将数据打包成udp数据包            DatagramPacket dp = new DatagramPacket(buffer, buffer.length,id,PORT);            //发送数据包            ds.send(dp);
            /**             * 这里是从服务端接收数据             */            byte[] data2 = new byte[1024];            DatagramPacket packet2 = new DatagramPacket(data2,data2.length);            ds.receive(packet2);            String info = new String(data2,0,packet2.getLength());            System.out.println("我是客户端 从服务端收到的数据 info = " + info);        } catch (IOException e) {
  
              e.printStackTrace();        }    }}

 在所有列出的网卡中找到正在运行的网卡,即flags=4163<UP,BROADCAST,RUNNING,MULTICAST>有RUNNING字段的网卡。这里有lo,wlp5s0,vnet0,显然lo是本地回环接口,vnet0才是我们要找到的网卡。

    回到wireshark,双击vnet0,开始监听。执行UDPTestClient类,找到发送的数据包。

    其中Source 10.1.1.64->Destination 192.168.122.217就是我们发送的数据包。双击查看数据包详细信息。

第一个目录下的Interface看到是无线网卡接口

Interface id: 0 (vnet0)
  Interface name: vnet0

第二个目录,以太网口

Ethernet II, Src: HonHaiPr_54:d5:3d (a8:6b:ad:54:d5:3d), Dst: Tp-LinkT_06:67:7d (74:05:a5:06:67:7d)
  Destination: Tp-LinkT_06:67:7d (74:05:a5:06:67:7d)
      Address: Tp-LinkT_06:67:7d (74:05:a5:06:67:7d)
      .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
      .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
  Source: HonHaiPr_54:d5:3d (a8:6b:ad:54:d5:3d)
      Address: HonHaiPr_54:d5:3d (a8:6b:ad:54:d5:3d)
      .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
      .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
  Type: IPv4 (0x0800)

Src代表源设备,Dst指目的设备,这里是从 HonHaiPr_54:d5:3d的MAC地址发送到Tp-LinkT_06:67:7d 路由器的MAC地址。

第三个目录Internet Protocol Version 4, Src: 10.1.1.64, Dst: 192.168.122.217下的目录Destination GeoIP: CN

[Destination GeoIP: CN]
  [Destination GeoIP Country: China]
  [Source or Destination GeoIP Country: China]
  [Destination GeoIP ISO Two Letter Country Code: CN]
  [Source or Destination GeoIP ISO Two Letter Country Code: CN]
  [Destination GeoIP Latitude: 34.7725]
  [Source or Destination GeoIP Latitude: 34.7725]
  [Destination GeoIP Longitude: 113.7266]
  [Source or Destination GeoIP Longitude: 113.7266]

GeoIP是基于IP查询地理位置。

找到UDP首部目录User Datagram Protocol, Src Port: 8801, Dst Port: 8800

User Datagram Protocol, Src Port: 8801, Dst Port: 8800
  Source Port: 8801
  Destination Port: 8800
  Length: 41
  Checksum: 0x16bc incorrect, should be 0x7c26 (maybe caused by "UDP checksum offload"?)
      [Expert Info (Error/Checksum): Bad checksum [should be 0x7c26]]
          [Bad checksum [should be 0x7c26]]
          [Severity level: Error]
          [Group: Checksum]
      [Calculated Checksum: 0x7c26]
  [Checksum Status: Bad]
  [Stream index: 0]

依次看到RFC 768定义的UDP首部,Source Port、Destination Port、Length、Checksum的信息。可以看到checksum错误,获取的包的checksum与计算出来的checksum不一致。这是因为有些路由器会参与checksum的计算,但上层协议栈并不知情,所以二者算出的checksum值不一样。

检验和计算可能由网络网络驱动,协议驱动,甚至是硬件完成。高层校验通常是由协议执行,并将完成后的包转交给硬件。比较新的网络硬件可以执行一些高级功能,如IP检验和计算,这被称为checksum offloading。网络驱动不会计算校验和,只是简单将校验和字段留空或填入无效信息,交给硬件计算。

注:本文为小yip原创,未经许可不得在任何平台转载。如需转载,与作者联系~

欢迎加入linux交流群:734638086,分享工作经验。

关注微信公众号:技术训练营(微信ID:TechBootcamp),获取更多资讯~

wireshark抓包分析TCP和UDP_ipv4数据包分析

微信扫一扫,发现更精彩。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/222757.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • C语言优先级顺序表口诀「建议收藏」

    C语言优先级顺序表口诀「建议收藏」一是括号结构体,二是单目运算符,三乘除余四加减;五左右移六大小,七是等于不等于,与异或或位在前;三目赋值与逗号。

  • win10下Miracast无线投屏使用教程及异常解决方案(超详细)[通俗易懂]

    win10下Miracast无线投屏使用教程及异常解决方案(超详细)[通俗易懂]文章目录一、什么是Miracast?二、主流的无线投屏技术有哪些特点?三、如何查看自己的win10电脑是否支持Miracast无线投屏功能?四、win10电脑如何使用Miracast无线投屏功能?一、什么是Miracast?Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-FiDirect)为基础的无线显示标准。支持此标准的3C设备(如智能手机、电视、投影、电脑等…

  • Vue双向绑定原理

    Vue双向绑定原理vue的双向绑定原理:vue数据的双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。其核心就是通过obj.defineProperty()方法来实现数据的劫持,在数据变化时发布消息给订阅者,触发相应的监听回调。也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;简单介绍一下Object.defineProperty()方法:1、Object.defineProperty(obj,prop,descriptor),这个语法内有三个参数,分别为obj(要定

    2022年10月18日
  • redis如何设置密码及验证密码_无线密码忘记了怎么在手机上查看

    redis如何设置密码及验证密码_无线密码忘记了怎么在手机上查看一、前言对于redis而言,其并没有实现访问控制这个功能,但是可以提供一个轻量级的auth认证方式。可以通过编辑对应的redis配置文件。redis.conf来启动二、设置密码1、找到redis的配置文件redis.conf配置文件中的参数:requirepass,就是配置redis访问密码的参数;#默认情况下,是注释的requirepassxxxx;设置requirepass密码如下。2、然后需要重启下redis服务,才能生效#1、kill掉redis进程#2、启动re

  • tcp工作原理三次握手_tcp三次握手为什么不是两次

    tcp工作原理三次握手_tcp三次握手为什么不是两次目录一、TCP协议二、TCP原理1,确认应答机制2,超时重传机制3,连接管理机制4,滑动窗口5,流量控制6,拥塞控制7,延迟应答8,捎带应答9,粘包问题一、TCP协议TCP,即TransmissionControlProtocol,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。TCP协议段格式源/目的端口号:表示数据是从哪个进程来,到哪个进程去;序列号:在建立连接时由计算机生成的随机数作为其初始值,通过

  • 动态库依赖关系_查看运行的动态库

    动态库依赖关系_查看运行的动态库1前言这两天在编写一个插件系统Demo的时候,发现了个很奇怪的问题:插件加载器中已经链接了ld库,但是应用程序在链接插件加载器的时候,却还需要显式的来链接ld库。否则就会报:DSOmissingfromcommandline。这个报错翻译过来就是没有在命令行中指定该动态库。这个报错就很搞事了,你说你明明知道需要哪个库,为什么不直接帮我链接呢,非得我显示的在命令行中指定呢?2现象描…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号