mcpField
C
cs-networks

cs-networks

github.com/alphaonedev开发54 次安装
代码仓库

关于 cs-networks

cs-networks 是面向网络编程、调试和安全工作的技能,涵盖常见协议与套接字操作,包括 TCP/IP、HTTP/2 和 HTTP/3、TLS 1.3、DNS、BGP、WebSockets 与 QUIC。

主要功能

  1. 01TCP/IP 连接与套接字
  2. 02HTTP/2 和 HTTP/3 请求处理
  3. 03TLS 1.3 证书验证
  4. 04DNS 查询与主机名解析
  5. 05WebSockets 与 QUIC 通信
  6. 06BGP 概念和自定义协议

适用场景

  1. 01排查 HTTP 超时或套接字错误
  2. 02构建 TLS 安全数据传输
  3. 03添加 WebSocket 实时通信
  4. 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 等详细信息的错误,以便调试。

具体使用示例

  1. 示例:实现一个简单的 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 端口上运行。

  2. 示例:使用 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 相关。

评论

支持 Markdown