- 博客(52)
- 资源 (1)
- 收藏
- 关注
原创 运行中的Golang程序,如何Debug调试呢?
在生产环境中,当程序出现逻辑错误但日志无法追踪时,如何动态调试运行中的进程?本文通过一个kube-ovn网络组件故障案例,演示了使用Delve调试工具的实战过程。当Pod创建失败时,通过分析发现多个goroutine在libovsdb库的Echo方法处发生死锁。最终确认是开源库的已知问题,并通过版本升级解决。文章详细展示了如何在不重启进程的情况下,通过协程堆栈分析定位代码级问题。
2025-08-26 21:38:54
411
原创 HVV期间,如何使用SSH隧道绕过内外网隔离限制?
本文介绍了利用SSH隧道技术解决网络限制问题的两种场景。在HVV护网等网络受限环境下,通过SSH本地转发、远程端口转发和动态转发三种模式实现网络打通。场景一演示了双向隧道建立,使内网服务器与外网PC能互相访问;场景二展示了动态转发实现socks5代理上网,让内网服务器通过代理访问互联网。文章详细列出了各场景下的具体SSH命令配置步骤,并附有成功验证截图。这些方法适用于需要突破网络限制的办公环境,前提是所有设备需安装SSH服务。
2025-07-30 22:27:03
749
原创 追踪网络流量就这么简单 | 进阶篇 | conntrack
前面文章中,通过iptables LOG方式记录了凡事经过表链的数据包都进行追踪了,这样会发现日志量非常多不方便排查问题,于是我们又有了新的需求,如何针对指定的网络状态跟踪或过滤呢?阅读本篇文章前,建议先浏览之前的iptables相关文章后, 理解会为更佳~
2025-07-14 21:21:46
643
原创 为什么Linux需要3种NAT地址转换?一探究竟
NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。
2025-07-03 22:50:59
295
原创 一图看懂Linux网络核心:Netfilter框架全景解剖
它是linux内核的一个子系统,在2000年3月合并进了 linux 2.3.x 版本的 linux 内核,Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架,你可以在网络堆栈中的数据包遍历过程中的各个点(netfilter hooks)注册回调并对数据包执行各种操作,比如它允许你对数据报进行过滤、地址或端口转换、丢弃数据包、日志记录等。搜索微信公众号,关注我【 帽儿山的枪手 】技术文章持续更新,请大家多多关注呀~~
2025-06-28 20:27:29
439
原创 追踪网络流量就这么简单 | 小白篇 | iptables
进入eth0接口:目的是在数据包进入系统的连接跟踪机制之前,对它们进行非常早期的处理。:这个链用来mangle数据包,比如改变TOS等:这个链主要用来做DNAT。不要在这个链做过虑操作,因为某 些情况下包会溜过去。路由判断,比如,包是发往本地的,还是要转发的。:在路由之后,被送往本地程序之前,mangle数据包。:所有以本地为目的的包都要经过这个链,不管它们从哪儿来,对这些包的过滤条件就设在这里。:作用是给包打上 SELinux 标记,以此影响 SELinux安全上下文的系统处理包的行为。
2025-06-25 21:49:33
727
原创 程序员必掌握的iptables五表五链
(5) security: 强制访问控制的表,目的是与 Linux 安全模块(如 SELinux),打上 SELinux 标记实现安全上下文的网络访问控制。(1) raw:优先级最高的表,目的是在数据包进入系统的连接跟踪机制之前,对它们进行非常早期的处理。(5) POSTROUTING: 本机产生的准备发送的包或者转发的包,在经过路由判断之后, 将触发。(3) FORWARD: 接收到的包经过路由判断,如果目的是其他机器,将触发。(2) INPUT: 接收到的包经过路由判断,如果目的是本机,将触发。
2025-06-08 19:53:53
427
原创 什么是HTTP流?
响应体被分割为多个数据块(chunk),每个块包含长度值和数据内容,以 0\r\n\r\n 标记结束,称为流式。HTTP流(HTTP Streaming)是一种数据传输技术,允许服务器在生成完整响应内容前就开始向客户端分块发送数据,从而实现实时或渐进式传输。HTTP/2(RFC 7540)引入“流”作为逻辑传输单元,每个请求/响应被分配唯一ID(奇数客户端发,偶数服务端发)。数据包可乱序发送,通过流ID标识归属,支持优先级和取消(RST_STREAM帧)。技术文章持续更新,请大家多多关注呀~~
2025-06-04 22:49:17
304
原创 手把手带你部署Dify大模型平台
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。
2025-05-29 23:55:11
913
原创 Linux中inode了解吗?
在 Linux 系统中,inode(索引节点)是文件系统的核心数据结构,用于存储文件或目录的元数据(metadata)和指向文件实际数据块的指针。inode 关联关系举例:当创建一个文件时,系统会在所在目录中添加一个条目,记录文件名和对应的inode号。当用户访问文件时,通过目录中的条目找到inode,进而获取文件的数据块位置。● inode 是文件的“身份证”:每个文件或目录在文件系统中对应的唯一 inode 编号。● 文件名与 inode 分离:文件名由目录管理,inode 负责文件的实际数据。
2025-05-27 22:24:18
161
原创 (必看)生产环境中的网络故障排查思路
叮叮叮,收到同事在群里发的故障问题,是一个网络连通性问题。工作中这种问题出现的频率最多了,觉得还是比较有意思,所以总结了一下整体过程分享给大家。
2025-05-26 22:40:13
670
原创 MCP快速上手,快来看看~
文件系统操作实现模型上下文协议(MCP)的Node.js服务器。注意:服务器只允许在通过args指定的目录内进行操作。搜索微信公众号,关注我【 帽儿山的枪手 】技术文章持续更新,请大家多多关注呀~~● 创建/ /删除目录列表。
2025-05-20 21:39:53
280
原创 一图看懂什么是MCP
Model Context Protocol (MCP) 是由Anthropic公司提出的一种开放协议,旨在为大型语言模型(LLM)提供标准化的上下文数据接口。MCP被比喻为类似USB-C的通用接口,用于连接不同设备以获取或传输数据。其架构包括主机、客户端和服务端,其中主机可以包含多个客户端,客户端通过MCP协议与服务端交互,服务端则访问本地或远程数据源。MCP使用JSON-RPC2.0作为数据传输格式,支持标准输入输出和服务器发送事件(SSE)两种传输模式,适用于不同场景的通信需求。更多技术更新,请关注微
2025-05-19 21:27:57
267
原创 如何手写一个arp命令?
ARP(地址解析协议)是用于将IP地址解析为MAC地址的网络协议,在IPv4中至关重要。其工作过程是:主机A在发送数据包给主机B前,需先获取主机B的MAC地址。实现ARP功能时,可以通过创建SOCK_PACKET套接字来发送和接收原始数据包,手动封装Ethernet II以太帧和ARP报文,发送ARP请求并解析应答包以获取目标MAC地址。SOCK_PACKET套接字允许在数据链路层直接处理以太网帧,支持混杂模式和协议透明性。Ethernet II帧是常见的以太网帧格式,包含目的MAC地址、源MAC地址、协议
2025-05-16 21:57:18
648
原创 如何手写一个ping命令?
本文介绍了如何通过SOCK_RAW套接字类型实现简单的ping命令功能。ping命令基于ICMP协议,用于测试网络连通性。SOCK_RAW套接字允许程序直接访问网络层协议,绕过传输层封装,从而实现对网络数据包的完全控制。文章详细解析了SOCK_RAW的基本特性,包括底层访问、协议定制、数据包嗅探和无自动处理。
2025-05-09 09:23:42
854
原创 什么是文件描述符?
文件描述符是由内核分配,只在一个进程内部有效,两个不同进程可以使用同样的文件描述符。不同进程中基于同一个描述符共享文件是不可能的。文件描述符(File Descriptor,FD)是Linux系统中用于标识打开文件的整数。其中,描述符0代表标准输入,描述符1代表标准输出,描述符2代表标准错误。在Linux系统中查看某个进程的描述符,方式如下。搜索微信公众号,关注我【 帽儿山的枪手 】技术文章持续更新,请大家多多关注呀~~
2025-05-07 20:55:06
347
原创 如何使用socket系统调用创建TCP三次握手呢?
大家可以思考下,结合上图TCP三次握手的理解,客户端要发送两个数据包 syn 和 ack 完成三次握手,那如何通过系统调用的方式实现呢?我们熟悉的 HTTP、HTTPS、FTP、SSH、SMTP等协议及相关应用都是基于TCP协议,然后都可以通过。中介绍了 7 种socket套接字类型,哪些可以实现TCP的连接呢?是最常用的套接字类型,通常用于 TCP 协议。它提供面向连接的、可靠的、双向的字节流通信。函数,采用的什么方式进行TCP连接的呢?其他哪种套接字类型还可以实现呢,大家可以想一想~
2025-05-06 22:19:17
329
原创 手写一个UDP端口探测程序
今天让我们一起来看看UDP端口探测是怎么个事,本篇文章主要用到SOCK_DGRAM套接字类型。SOCK_DGRAM是 Linux 套接字(Socket)的一种类型,它提供无连接的、不可靠的数据报服务。这种套接字通常用于 UDP (User Datagram Protocol) 用户数据报协议。(1)首先创建套接字,指定套接字类型(2)设置链接超时时间(3)创建要探测的UDP服务地址(目标IP及端口)(4)封装消息体(5)最后使用接收UDP服务响应📢。
2025-04-29 22:14:27
835
原创 socket套接字你搞清楚了吗
Socket,一般称之为套接字,用于描述IP地址和端口。可以实现不同程序间的数据通信。socket最初被翻译为把socket译为“介质(字)”。不久,ARPANET的socket就被翻译为“套接字”,其理由是:由于每个主机系统都有各自命名进程的方法,而且常常是不兼容的,因此,要在全网范围内硬把进程名字统一起来是不现实的。所以,每个计算机网络中都要引入一种起介质作用的、全网一致的标准命名空间。这种标准名字,在ARPA网中称作套接字,而在很多其他计算机网中称作信口。
2025-04-23 22:25:13
518
原创 什么是字节流?
在计算机科学中是一种比特流,不过里面的比特被打包成一个个我们叫做字节(Bytes)的单位。我们可以把它想做是两个实体之间的流水线;其中一个实体会将字节输入流水线,另一个实体则接收这些字节。这个流水线可以是短暂或者永久的。在电脑网络内,八比特字符串流(octet stream)有时会拿来代表同样的东西;这种措辞强调了我们的字节是8比特的字节,或者说八比特(octets)。最早字节这个词被引进的时候,本身并没有一个大小的标准;不过大多数现在的电脑字节都等同于八比特。我们熟悉的很多技术点本质上都是字节流。
2025-04-18 22:16:54
231
原创 通过网络命名空间实现网络分流的思想及方法
在业务环境中,存在eth0、eth1、eth2等多个网络设备,其对应不同的网络出口。那如何将指定DNS流量进行分流呢?
2025-04-15 21:47:42
1004
原创 docker镜像深入理解
大家好,本篇文章和大家聊下docker相关的话题~~ 工作中经常有关于docker镜像的问题,让人百思不解 1. docker镜像加载到系统中到哪里去了?docker load 加载镜像的流程是怎样的?2. 为什么容器修改内容后,删除容器后再次开启容器内容消失了?3. docker images查看的镜像大小与docker save后的大小不一致?4. 通过docker build或docker pull后的镜像层的层级关系怎么查看?5. docker save导出的镜像后如何查看到镜像
2024-06-06 13:49:15
1211
1
原创 golang 上传离线tar/gz镜像文件至Harbor仓库
hello,今天和大家分享个小工具 (在实际业务场景中,通常我们提交docker镜像,通过命令来发布至远程仓库中,但这种方式需要本地环境中存在要发布的镜像文件,比如alpine:3.8我要提交。如果有较多镜像已经通过方式另存到了另外的文件系统中, 我们要把这些镜像发布到远程仓库中,那发布的过程是非常的繁琐。针对这个业务场景,Fork了项目,二次研发后将我们业务需求实现。有这种需求的小伙伴,欢迎用起来呀~~
2024-05-31 12:33:58
690
原创 Golang net/http标准库Request类型(五)
大家好,针对Go语言net/http标准库,将梳理的相关知识点分享给大家~~围绕net/http标准库相关知识点还有许多章节,请大家多多关注。文章中代码案例只有关键片段,完整代码请查看github本章节案例,请大家以go1.16+版本以上进行参考。
2024-05-30 21:09:52
1012
原创 Golang 基础之并发基本同步原语(二)
本文主要介绍 sync 标准库中基本同步原语 sync.Cond、sync.Once、sync.Pool介绍及使用。
2024-05-13 16:31:45
1115
原创 Golang 基础之并发基本同步原语(一)
大家好,今天将梳理出的 Go语言并发知识内容,分享给大家。 请多多指教,谢谢。本文主要介绍 sync 标准库中基本同步原语 `sync.Cond`、`sync.Once`、`sync.Pool` 介绍及使用。
2024-05-12 15:51:45
857
原创 Golang 基础之并发goroutine(补充)
前面 《Golang 基础之并发知识 (二)》 章节已经和大家简单介绍了 goroutine 的实现机制,本篇文章我在针对 goroutine 知识点进行一个补充。 请大家多多指教,谢谢!
2024-05-11 14:00:22
1013
原创 Golang 基础之并发知识 (三)
大家好,今天将梳理出的 Go语言并发知识内容,分享给大家。 请多多指教,谢谢。本次《Go语言并发知识》内容共分为三个章节,本文为第三章节。
2024-05-09 13:33:58
909
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅