go的delve调试工具 起因是我在阅读一段比较难懂的源码,写了个单元测试想查看程序的具体运行状况,但是源码很长通过打印很难明白到底是如何执行的。由此想到可以用go的调试,但是我很久没用了,有些不记得了。于是再重新整理下。 delve的安装使用到调试器是Delve。这是专门为了go语言开发的调试工具。 安装 1go get -u github.com/go-delve/delve/cmd/dlv 确认版本 1dlv ve 2023-02-17 golang
tcp的flag标识 所有标识位图片来自维基百科 TCP报文段分为首部和数据部分,TCP首部分为固定部分和选项(变长部分),首部的固定部分(共有20字节);可选部分的长度为0~40字节 6个主要的标志位 URG和PSH在数据传输的过程中使用 紧急位URG 确认位ACKACK 携带两个信息。期待要收到下一个数据包的编号、接收方的接收窗口的剩余容量 推送位PSH(Push)。PSH 标志位表示发送端请求接收端尽快将数据 2023-02-13 计算机网络
geoip的使用 Maxminds的官网:https://www.maxmind.com/en/geoip2-services-and-databases GeoIP2和GeoIPLite2的对比两者都提供了获取某个指定IP的信息的功能。 GeoIP2和GeoIPLite2都提供了数据库和web服务。 GeoIPLite2数据库和web服务提供了指定IP的免费地理定位和有限的网络数据。通过GeoIP2获取的数据比通 2023-02-07 golang
golang定义func类型 如下,定义一个DecodeFunc类型,DecodeFunc是一个func([]byte, PacketBuilder)类型,可以通过d(data, p)调用 123456789101112type DecodeFunc func([]byte, PacketBuilder) error// Decode implements Decoder by calling itself.func (d D 2023-02-06 golang #原创
整洁架构项目的随手整理 viper库的使用在阅读https://github.com/bxcodec/go-clean-arch时,发现了viper库,这是一个加载配置时使用的库,可以避免定义struct errgroup下面这块的写法可以学习下,来自https://github.com/bxcodec/go-clean-arch/blob/master/article/usecase/article_ucase.go 2023-02-01 golang #原创
如何通过wireshark抓VPN的数据包 当VPN连接建立后,如果你使用ping命令进行网络测试,那么ping的流量将通过VPN网络接口进行传输。这是因为VPN连接会创建一个虚拟网络接口,所有的网络流量都将通过该接口转发到VPN服务器。这样做可以保证网络流量的安全性和隐私性。 这里举个例子: 假设你的网络接口为eth0,你在连接VPN后,系统会创建一个新的VPN接口,如tun0,在这种情况下,ping的流量将通过tun0接口进行传输。 注 2023-01-23 计算机网络
Cacti简介与使用 简介cacti是用php写的,一个开源的网络监控工具,可以用于监控网络流量,并用图表化的方式呈现。 cacti将数据存储在MySQL里,同时还使用了RRDTool(Round Robin Database)即环状数据库。 cacti主要通过SNMP服务获取数据,用RRDTool存储数据和更新SNMP获取到的数据,需要时查看时可以查看RRDTool生成的图。MySQL则用于存储cacti用户信息模板 2023-01-01 数据库
gopacket的afpacket的介绍和使用 之前写了篇叫《gopacket源代码阅读》,主要介绍了gopacket的最基本部分的源代码的原理。写完后继续看了下gopacket的其他包的源代码。发现其他包阅读起来没有基本部分的源代码那么轻松也看不太懂了。 因为examples包下面列出了使用一些包的方法,给出的都是示例的main文件。大概看了一下这些例子,发现了其中一个比较有用的包叫afpacket。 之前提到gopacket是Google出 2023-01-01 网络
netfilter框架和网络相关的一些总结(比较乱) 参考文章 https://www.thebyte.com.cn/ Netfilter 实际上就是一个过滤器框架,Netfilter 在网络包收发以及路由的“管道”中,一共切了 5 个口(hook),分别是 PREROUTING、FORWARD、POSTROUTING、INPUT 以及 OUTPUT,其它内核模块(例如 iptables、IPVS 等)可以向这些 hook 点注册处理函数。每当有数 2023-01-01 网络
tcpdump是如何抓包的 在网络的发送和接收过程中,绝大部分工作都是在内核态完成的。那么用户使用的tcpdump是如何抓到内核态的包的呢? tcpdump 是基于 libpcap 实现的,golang中用于分析网络数据包的gopacket库也是基于libpcap 写的。libpcap是一个网络数据包捕获框架,是用C语言写的。 在开始研究tcpdump之前,需要知道网络包是如何从网卡到达用户进程的。即数据包的接收流程。 L 2023-01-01 网络