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 の概念とカスタムプロトコル
活用シーン
- 01HTTP タイムアウトやソケットエラーの調査
- 02TLS による安全なデータ転送の実装
- 03WebSocket によるリアルタイム通信の追加
- 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 などの詳細とともにエラーをログに記録してください。
具体的な使用例
-
例:シンプルな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」はウェブ開発スキルに関連付けられ、「tls」と「dns」はcs-infrastructureに関連します。