当前位置: 首页 > article >正文

用wireshark抓了个TCP通讯的包

昨儿个整理了下怎么用wireshark抓包,链接在这里:捋捋wireshark
今天打算抓个TCP通讯的包试试,整体来说比较有收获,给大家汇报一下。
首先就是如何搞到可以用来演示TCP通讯的客户端、服务端,问了下deepseek,win 10上可以用powershell这样启动一个监听8080端口的服务端:

文字版的贴到这里:
$listener = New-Object System.Net.Sockets.TcpListener('0.0.0.0', 8080)
$listener.Start()

用netstat查看一下监听状态,命令 netstat -ano | findstr -I "listen" | findstr 8080,效果:

把这个powershell窗口关闭,再启动一个看一下8080,就不是监听状态了:

莫怪我为何要写这一段,因为我没怎么用过powershell。。。咱继续。。。我这里用一个内网ip为192.168.1.183的windows 10办公电脑启动服务端,从内网ip为192.168.3.240的办公的笔记本上启动客户端、启动wireshark抓包,然后把每一步操作都写下来。

从内网台式机上启动服务端:

现在我们启动了服务端,等待客户端连接(注意光标的位置,阻塞、等待客户端连接)。这些命令的文字版最后帖到文末哈,这里看图就行。
确认一下8080端口启动了,顺便看看监听8080端口的进程信息,漂亮:

从笔记本上启动wireshark,选择从无线网上抓包,设定只捕获过和192.168.1.183:8080的tcp通讯:tcp port 8080 and host 192.168.1.183,

如果觉得这里表述不够详细,看本文开头说的那个帖子,我这里已经监听上了:

从笔记本上用powershell启动客户端:

这个命令会得到一个连接到服务端的客户端对象$client,wireshark捕捉到了三个握手的数据包:

现在我们给服务端发一点消息:

那个flush命令发出后,wireshark就抓到了这俩数据包:

现在该从服务端操作了,这个命令已经不是阻塞状态了:

应该是三次握手就不阻塞了,当时没看,不要在意这些细节,咱们收一下客户端发来的消息:

顺便说一句,这里获取reader/writer实例的写法跟php里的很像,powershell真是兼容并包啊。。

我们从服务端给客户端一些答复:

去看笔记本电脑上的wireshark,新抓到2个数据包:

从客户端接收一下服务端发来的消息,并给对方回复:

去看wireshark,又抓到俩数据包:

去服务端接收一下客户端的消息,给出回复:

去看wireshark,又抓到2个包:

从客户端接收一下:

是时候结束会话了,客户端:

wireshark抓到了2个挥手的包:

服务端:

wireshark又抓到了2个挥手的包:

继续关闭吧,客户端:

服务端:

台式机的8080端口也不是被监听的状态了:

wireshark结束监听,保存包:

附文字命令,服务端:
$listener = New-Object System.Net.Sockets.TcpListener('0.0.0.0', 8080)
$listener.Start()
Write-Host "服务端已启动,等待客户端连接..."
$client = $listener.AcceptTcpClient()
$stream = $client.GetStream()
$reader = [System.IO.StreamReader]::new($stream)
$writer = [System.IO.StreamWriter]::new($stream)
$message = $reader.ReadLine()
Write-Host "收到客户端消息: $message"
$writer.WriteLine("已收到: $message;问:你这瓜保熟吗?")
$writer.Flush()
$message = $reader.ReadLine()
Write-Host "收到客户端消息: $message"
$writer.WriteLine("知道了,再探再报")
$writer.Flush()
$reader.Close()
$writer.Close()
$client.Close()
$listener.Stop()

客户端:
$client = New-Object System.Net.Sockets.TcpClient("192.168.1.183", 8080)
$stream = $client.GetStream()
$reader = New-Object System.IO.StreamReader($stream)
$writer = New-Object System.IO.StreamWriter($stream)
$writer.WriteLine("号外,阿三的阵风被小巴的歼十打下来了")
$writer.Flush()
$response = $reader.ReadLine()
Write-Host "收到服务端消息: $response"
$writer.WriteLine("是真的,网上视频都出来了")
$writer.Flush()
$response = $reader.ReadLine()
Write-Host "收到服务端消息: $response"
$reader.Close()
$writer.Close()
$client.Close()

http://www.lryc.cn/news/2396166.html

相关文章:

  • VR/AR 显示瓶颈将破!铁电液晶技术迎来关键突破
  • 【前端】Vue中实现pdf逐页转图片,图片再逐张提取文字
  • 焦虑而烦躁的上午
  • Python使用
  • 分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类
  • 【解决方案-RAGFlow】RAGFlow显示Task is queued、 Microsoft Visual C++ 14.0 or greater is required.
  • 爬虫到智能数据分析:Bright Data × Kimi 智能洞察亚马逊电商产品销售潜力
  • 高级前端工程师必备的 JS 设计模式入门教程,常用设计模式案例分享
  • unix/linux source 命令,其发展历程详细时间线、由来、历史背景
  • 2023年电赛C题——电感电容测量装置
  • pycharm打印时不换行,方便对比观察
  • 因泰立科技:镭眸T51激光雷达,打造智能门控新生态
  • Microsoft Fabric - 尝试一下Data Factory一些新的特性(2025年5月)
  • NodeJS全栈开发面试题讲解——P10微服务架构(Node.js + 多服务协作)
  • 【前端】javascript和Vue面试八股
  • WEB3——区块链留言板(留言上链),查看web3日志-入门项目推荐
  • 开源库免费API服务平台 ALLBEAPI
  • 【配置vscode默认终端为git bash】
  • Cloudflare
  • Cypress + TypeScript + Vue3
  • Oracle DG库控制文件IO错误导致宕机的应急处理
  • ​​技术深度解析:《鸿蒙5.0+:全场景能效的产业革命》​
  • Spring Boot启动慢?Redis缓存击穿?Kafka消费堆积?——Java后端常见问题排查实战
  • 深入解析 IP 代理:原理、应用场景与优化策略
  • 58、辣椒种植学习
  • 【SpringBoot】零基础全面解析SpringBoot配置文件
  • python:PyMOL 能处理 *.pdb 文件吗?
  • GNSS终端授时之四:高精度的PTP授时
  • Vim文本编辑器快捷键用法以及简单介绍
  • CppCon 2014 学习:C++ in Huge AAA Games