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. 01HTTP タイムアウトやソケットエラーの調査
  2. 02TLS による安全なデータ転送の実装
  3. 03WebSocket によるリアルタイム通信の追加
  4. 04DNS 解決や QUIC 性能のテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill cs-networks

インストール後、Claude Code で/cs-networksを入力して読み込まれたか確認します。

詳細

cs-networks

目的

このスキルを使うと、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 を使用します。
  • 低遅延の UDP ベースのトランスポートに QUIC を使用して最適化します。
  • エラー検出や再試行を含む、カスタムプロトコルのソケットプログラミングを行います。

使用パターン

このスキルを使用するには、関連するライブラリ(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 を扱う場合は、requests での requests.get(url, verify='/path/to/ca.crt') のように CA バンドルを指定します。QUIC では、環境が UDP に対応していること(ポート 443 をブロックするファイアウォールがないことなど)を確認してください。設定形式には 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」はウェブ開発スキルに関連付けられ、「tls」と「dns」はcs-infrastructureに関連します。

コメント