問題タブ [network-protocols]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 可変長メッセージの解析
この仕様でJava を使用して BitTorent プロトコルを実装しています。メッセージ セクションでは、2 つのメッセージを除いてすべてのメッセージが固定長です。そのうちの 1 つは、ハンドシェイク後の唯一の可変メッセージであるため、他のメッセージを確認して、他のメッセージが一致しなかった場合に、それがピース メッセージであると想定できます。しかし、次のメッセージについては
ビットフィールド メッセージは、ハンドシェーク シーケンスが完了した直後で、他のメッセージが送信される前にのみ送信できます。これはオプションであり、クライアントにピースがない場合は送信する必要はありません。
ビットフィールド メッセージは可変長で、X はビットフィールドの長さです。ペイロードは、正常にダウンロードされた部分を表すビットフィールドです。最初のバイトの上位ビットはピース インデックス 0 に対応します。クリアされたビットは欠落ピースを示し、セットされたビットは有効で利用可能なピースを示します。最後の予備ビットはゼロに設定されます。
間違った長さのビットフィールドはエラーと見なされます。正しいサイズでないビットフィールドを受信した場合、またはビットフィールドに予備のビットが設定されている場合、クライアントは接続をドロップする必要があります。
長さがわからないと解析する方法が思いつきません。バイトストリームで id を見つけるにはどうすればよいですか?
編集: ビットフィールド メッセージのペイロードでは、トレント ファイル内の各ピースの 0 または 1 であり、トレント コンテンツのサイズに応じてメッセージの長さが変わります。したがって、ピースの数が常に5バイトの数値に収まるとは思えません。
bluetooth - Bluetooth プロトコル?
わかりました、これはばかげた質問かもしれませんが、Bluetooth が TCP または UDP プロトコルのどちらに従うか疑問に思っていました。ネットワーク プロトコルに関する私の知識 (あまり多くはありません) から、これら 2 つのいずれにも従わず、何らかの特定の Bluetooth プロトコルが存在すると言えます。もう 1 つ質問があります... 新しい iPhone OS 3.0 の GameKit の Bluetooth 機能は、どのプロトコルに従っていますか? Apple ドキュメントのすべての単語に目を通したわけではありませんが、これまでのところ、見つけることができませんでした。
c - ネットワーク経由のコマンドに #defines または enum を使用する必要がありますか?
コマンドとして使用する値をネットワーク経由で転送する必要があり、可能な限り効率的かつ堅牢にしたいと考えています。つまり、これらのコマンドに何を使用するか、#defines または enumsについて意見が必要です。
コマンドの範囲は 20 コマンドを超えてはならない (コマンドに対して定義された応答ごとに 40 としましょう)。
これまでのところ、最良のアプローチは列挙型を使用することだと思います。
tcp - IP フラグメントのプロトコル属性はどのように設定されますか?
破損したパケットに対処するネットワーク デバイス ドライバーの機能をテストしています。私がテストしたい特定のケースは、途中の MTU が小さいために、大きな TCP パケットがパスに沿ってフラグメント化される場合です。
大きな TCP パケットの IP フラグメンテーションについて私が最も興味を持っているのは、各パケットの IP フラグメント パケットのプロトコル属性が TCP に設定されているのか、それとも最初のフラグメントだけなのかということです。
sockets - 「私のIPは何ですか」のよく知られたポート/サービスがないのはなぜですか?
このサービスを提供している Web サイトがいくつかあることは知っていますが、最近ではほぼすべての人が NAT の背後に住んでいることを考えると、これをポートで標準化し、それを実行したい人にサービスとして提供しないのはなぜですか? これは、エコー、昼間、または「今日の引用」サーバーと少なくとも同じくらい便利で、実装も簡単です。
または、私が知っているものは存在しますか?進行中の提案/RFC はありますか?
編集: 活発で思慮深い議論をしてくれた皆さんに感謝します.
c - C でネットワーク層プロトコルを開発する
カスタム ネットワーク層プロトコルを開発したいと考えています。Cを使用して実行できると思います。最初にどのようにすればよいか教えてください。参考文献やサンプルコードは非常に役立ちます。
testing - 組み込みテストからプロトコル スタック開発まで
私は現在、組み込みテスト ドメイン (アビオニクス) で働いており、主にプロトコル スタック開発のような開発のようなものにキャリアをシフトしたいと考えています。だから私が知る必要があるのは、採用担当者が少なくとも私を候補リストに入れることができるように、履歴書に入れることができるある種のリアルタイムプロジェクト(ネットワーキングまたはプロトコル開発)です.
私は C の適切な知識と Linux OS の知識を少し持っています。
自宅でのオフライン活動として自分の側からある種の開発を行うことができるリアルタイムプロジェクトを行うことができる最適な場所またはサイトを誰か提案してもらえますか?
サポートされているシミュレーション タイプの環境はありますか?
python - ソケットからの読み取り: 少なくとも x バイトを取得することが保証されていますか?
ソケットの読み取りで発生するようなまれなバグがあります。
データの読み取り中に、これよりも大きいデータ パッケージの 1 ~ 3 バイトしか取得できないことがあるようです。
パイププログラミングから学んだように、送信者が十分なデータを提供する限り、常に少なくとも 512 バイトを取得します。
また、私の送信者は、何かを送信するたびに少なくとも4バイト以上送信します-したがって、送信の最初(!!)に少なくとも4バイトが一度に受信されると考えていました。
すべてのケースの 99.9% で、私の仮定は成り立つように見えますが、4 バイト未満しか受信されないという非常にまれなケースがあります。ばかげているように思えますが、なぜネットワークシステムがこれを行う必要があるのでしょうか?
誰かもっと知っていますか?
私が使用する読み取りコードは次のとおりです。
送信者は、send の 1 回の呼び出しで完全なデータグラムを送信します。
編集: すべてが localhost で動作しているため、複雑なネットワーク アプリケーション (ルーターなど) は必要ありません。BUFSIZE は少なくとも 512 で、送信者は少なくとも 4 バイトを送信します。
network-protocols - ファイル転送に最適なプロトコル
高速で信頼性の高い、大きなファイルの転送に使用できる最適なプロトコルは何ですか? インド全体でファイルを送信する必要があるため、低帯域幅システムをサポートする必要があります。ファイルサイズは100~500MB程度です。
tcp - TCP プロトコル アプリをテストするにはどうすればよいですか?
さまざまな TCP プロトコル (HTTP を除く) と連携するアプリを作成する場合、アプリと実際のサーバーとの通信方法をテストする必要があります。
通常、共有ホスティングでは、POP3、電子メール用の IMAP、 SIPまたはXMPP、およびインスタント メッセージング用のプロトコルと通信するための低レベル サービスをインストールできません。
アプリがそのプロトコルを正しく話しているかどうかをデバッグまたはテストするのに役立つ「テスト」サーバー (example.com など) はありますか?
それとも、電子メール/IM プロトコル サーバーを別のローカル PC にインストールするのは簡単で、Wiresharkを使用してそれをテストできるのでしょうか?