关于 cs-networks
cs-networks 是面向网络编程、调试和安全工作的技能,涵盖常见协议与套接字操作,包括 TCP/IP、HTTP/2 和 HTTP/3、TLS 1.3、DNS、BGP、WebSockets 与 QUIC。
主要功能
- 01TCP/IP 连接与套接字
- 02HTTP/2 和 HTTP/3 请求处理
- 03TLS 1.3 证书验证
- 04DNS 查询与主机名解析
- 05WebSockets 与 QUIC 通信
- 06BGP 概念和自定义协议
适用场景
- 01排查 HTTP 超时或套接字错误
- 02构建 TLS 安全数据传输
- 03添加 WebSocket 实时通信
- 04测试 DNS 解析或 QUIC 性能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill cs-networks安装后在 Claude Code 中输入/cs-networks确认已加载。
详细介绍
cs-networks
用途
此技能使 AI 能够处理计算机网络协议和编程,重点涵盖 TCP/IP、HTTP/2/3、TLS 1.3、DNS、BGP、WebSockets、QUIC 和套接字操作,用于构建、调试和保护网络应用。
使用时机
在涉及网络通信的任务中使用此技能,例如在分布式系统中建立连接、排查协议问题(如 HTTP 超时)、使用 TLS 实现安全数据传输,或在 Web 应用中使用 QUIC 优化性能。如果代码需要套接字编程或特定协议的处理,例如在 IoT 设备中进行 DNS 解析,也应使用此技能。
主要功能
- 建立和管理 TCP/IP 连接,包括创建套接字和处理数据流。
- 处理 HTTP/2 和 HTTP/3 请求,包括多路复用和头部压缩。
- 实现 TLS 1.3 加密以保护套接字安全,并验证证书和密码套件。
- 使用标准库执行 DNS 查询并解析主机名。
- 运用 BGP 路由概念分析网络拓扑。
- 管理 WebSockets,实现实时双向通信。
- 使用 QUIC 优化基于 UDP 的低延迟传输。
- 为自定义协议进行套接字编程,包括错误检测和重试。
使用模式
要使用此技能,请通过导入相关库(如 Python 的 socket 或 requests)将其集成到代码中。首先初始化连接,然后在循环中处理数据交换,最后清理资源。对于 HTTP 操作,请使用异步模式以避免阻塞。务必尽早检查身份验证要求,例如为外部 API 设置 $API_KEY。模式:导入模块 -> 配置选项(如超时时间) -> 执行操作 -> 处理响应或错误。
常用命令/API
- 套接字编程(Python):创建 TCP 套接字并连接:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('example.com', 80)) - HTTP 请求(使用 requests 库):发送 HTTP/2 GET 请求:
import requests response = requests.get('https://api.example.com/data', headers={'Authorization': f'Bearer {os.environ.get("API_KEY")}'}) - DNS 查询(Python):解析主机名:
import socket address = socket.gethostbyname('example.com') print(address) # e.g., '93.184.216.34' - TLS 验证:使用 OpenSSL CLI 进行测试:
openssl s_client -connect example.com:443 -tls1_3,以验证 TLS 1.3 握手。 - WebSockets:使用 websockets 库建立连接:
import websockets async with websockets.connect('ws://example.com/ws') as websocket: await websocket.send('Hello') - QUIC/HTTP/3:使用 curl 测试:
curl --http3 https://example.com -H 'Authorization: Bearer $QUIC_API_KEY'(确保 curl 版本支持 QUIC)。 - BGP 查询:使用 bgpq3 工具:
bgpq3 -A AS1234 -l myprefix,以获取 AS 编号对应的前缀。
集成说明
通过将网络操作封装到函数或类中来集成此技能,以实现模块化。对于需要身份验证的 API,请设置 export API_KEY=your_secret_key 等环境变量,并在 Python 中通过 os.environ.get('API_KEY') 访问。处理 TLS 时,请指定 CA 证书包,例如在 requests 中使用 requests.get(url, verify='/path/to/ca.crt')。对于 QUIC,请确保环境支持 UDP(例如,没有防火墙阻止 443 端口)。配置格式:API 配置使用 JSON,例如 {"host": "example.com", "port": 443, "tls": true}。避免硬编码密钥;出于安全考虑,请使用保管库或环境变量。
错误处理
务必将网络操作放在 try-except 块中,以捕获异常。对于套接字,请检查特定错误:
import socket
try:
s.connect(('example.com', 80))
except socket.error as e:
if e.errno == socket.errno.ECONNREFUSED:
print("Connection refused; check server status")
elif e.errno == socket.errno.ETIMEDOUT:
print("Timeout; retry with exponential backoff")
对于 HTTP,请处理状态码:如果 response.status_code == 401,则提示刷新 $API_KEY。在 QUIC/HTTP/3 中,请留意流重置等 h3 错误。使用限制次数的重试机制,例如使用 tenacity:@retry(stop=stop_after_attempt(3), wait=wait_exponential_multiplier(1)) def fetch_data(): ...。记录包含 errno 等详细信息的错误,以便调试。
具体使用示例
-
示例:实现一个简单的 TCP 客户端
要通过 TCP 发送数据,请使用以下代码:import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('localhost', 8080)) s.sendall(b'Hello, server') response = s.recv(1024) s.close()这会连接到本地服务、发送一条消息并接收响应。可用它测试网络应用;请确保服务正在 8080 端口上运行。
-
示例:使用 TLS 发送安全的 HTTP 请求
要从受 TLS 保护的端点获取数据:import requests headers = {'Authorization': f'Bearer {os.environ.get("API_KEY")}'} response = requests.get('https://api.example.com/data', headers=headers, verify=True) if response.ok: print(response.json())这会在强制执行 TLS 验证的同时获取 JSON 数据。运行前,请在环境中设置 $API_KEY,并按照错误处理部分所示处理 4xx/5xx 错误。
图关系
- 相关集群:computer-science(此技能的父集群)。
- 相关技能:cs-algorithms(用于网络路径查找)、cs-security(用于 TLS 和加密集成)。
- 标签关联:"networks" 与 cs-security 和 general-computing 相关联;"tcp" 和 "http" 与 Web 开发技能相关联;"tls" 和 "dns" 与 cs-infrastructure 相关。