問題タブ [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.
network-programming - ラップトップと組み込みデバイス間のイーサネット接続を確立する方法
イーサネットを使用してコンピューターに接続するデバイスを設計しています。すでに mac コントローラーが組み込まれています。デバイスを接続すると、デバイスを見つけて接続を確立しようとして、コンピューターが大量の DHCP 検出パケットとその他のパケットをブロードキャストするだけです。この時点で、ある種の確認パケットでデバイスを応答させる必要があると思いますが、何がわかりませんか? 誰かが前にこのようなことをしたことがありますか? ありがとう
パケットを確認するためにwiresharkを使用しています。出力は次のようになります。
network-programming - 軽量のネットワーク ファイル転送プロトコルを作成する際に注意すべきセキュリティへの影響
iPhone アプリケーションと「同期」するデスクトップ アプリケーションがあります。同期は実際には単純なファイルのコピーです。iPhone アプリはビューアーなので、実際に双方向でデータを同期する複雑さに対処する必要はありません。
軽量にする必要があるため、独自のプロトコルを作成しました。デバイスで使用可能な RAM よりも大きい可能性のあるファイルを送信しています。したがって、ファイルはネットワークからディスクに直接ストリーミングされます。
ファイルは、1 つの「データ」ファイル (SQLite データベース) と、画像、PDF などの 0 個以上のリソースで構成されます。接続が受け入れられると、クライアントとサーバーは次の構造体で始まるチャンクで通信します。 :
構造体の後には、UTF-8 ファイル名文字列が続き、その直後にそのファイルのデータが続きます。ヘッダー構造体には、ファイル名文字列の長さ ( chunkNameLength
) とバイナリ データの長さ ( chunkDataLength
) が含まれます。chunkType
チャンクの「タイプ」が含まれているため、クライアントはデータの処理方法を認識できます。次のいずれかになります。
これまで、セキュリティについてまったく考慮していませんでした。同期は、暗号化されている場合とされていない場合があるローカル WiFi ネットワークを介して行われます。コピーされるデータには、その性質上、ワープロ ドキュメントとは異なり、機密情報は含まれません。ユーザーが必要に応じて機密情報を入力することを妨げるものは何もありませんが、要求されることはありません。
では、データが十分に安全であることを確認するには、どのような手順を踏む必要がありますか? 私はObjective-Cで作業していますが、言語固有の答えを探しているのではなく、概念だけを探しています。私が心配していること:
- データのなりすましを防止するための措置を講じる必要がありますか?
- 実際にデータを暗号化するための措置を講じる必要がありますか?
- 別のアプリケーションが自分のアプリになりすましたり、クライアントまたはサーバーを別のものに置き換えたりしないようにするための措置を講じる必要がありますか?
- 受信したデータに破損の原因がないか確認する必要がありますか?
c# - ベストプラクティス:C#で既知のプロトコルのネットワークパケットを生成および解析しますか?
私は最近同様の質問をしようとしましたが、いくつかの答えの後で、それが正しい質問ではないことに気づきました。
SMPP(Short Message Peer-to-Peer Protocol [SMSメッセージに使用])などの既存のプロトコル、またはHOTLINEやC#を使用したIRCなどのさまざまなチャットプロトコルに基づいてネットワークパケットを生成および解析するためのガイドまたは一般的に受け入れられている方法はありますか。
答えの1つは、 GoogleProtocolBuffersと.NETバージョンについて言及しました。それを見て、両端(クライアントとサーバー)を制御できる場合、シリアル化が非常に役立つことに気付きました。プロトコル仕様に従うところ。
生成 過去に、ネットワークパケット/プロトコルの一部であるプロパティを持つクラスまたは構造を作成しました。
クラスにはbyte[]GetBytes()メソッドがあり、適切なプロパティを設定すると呼び出されます。そのバイト配列を取得して、ネットワーク経由で送信します。私の前の質問では、答えの1つは、データをメモリストリームまたはバイトストリームに保存することを提案しました。これは、より良いアイデアのようです。
私のバイト配列メソッドは、クラスプロパティに従ってパケットデータをストリームに直接書き込むメソッドにネットワークストリームを渡すよりもおそらく遅いようです。ここで本当に大きなものを見逃していない限り、これはおそらく私がすることです。
解析解析 するときは、さまざまなcaseステートメントを使用して、さまざまなPDUをステップ実行し、適切なプロパティが設定されたNetworkObjectを生成して、適切と思われる方法で処理します。
networking - PPPとイーサネットによるオーバーヘッド
5000バイトを送信するPPPとイーサネットのオーバーヘッドはどれくらいですか?
ポイントツーポイントプロトコルのフレームサイズ:8バイトMTU:500バイト
イーサネットのフレームサイズ:18バイトMTU:1500バイト
両方とも5000バイトを送信します。
これは単なる計算であることは知っていますが、その方法がわかりません。どこにも見つかりません。PPPフレームは8バイトかかり、最大転送単位は500なので、一度に(500〜8)バイトの情報を送信できると思います。10フレームを送信し、4920バイトが送信されます。次に、最後のフレームで最後の(80 + 8)バイトを送信します。
イーサネットについても同様です。各フレームで(1500〜18)バイト。送信された3フレームは、4446バイトが送信されたことを意味します。最後のフレームで(554 + 18)バイトを送信します。
これは明らかに「オーバーヘッド」の質問に答えるものではありません。誰かアイデアはありますか?
c# - ローカル ネットワーク上のユーザーとマシンを特定する
私の会社では、IPMsgと呼ばれる小さなアプリケーションを使用しています。これは、メッセンジャーのようなツールで、メッセージとファイルを社内の他の仲間に渡します。メッセージをマルチキャストすることもできます。
また、ユーザー名、ホスト名、およびユーザーの IP アドレスも一覧表示します。
どうすればそれができますか?メッセージ ルーティング用のサーバーは存在せず、CMD でnetstatコマンドを使用して確認しても、通信に使用しているプロトコルやポートなどの詳細は表示されません。
VC++ のソース コードも同じサイトで入手できます。私はコードの行を理解していませんでした... (私は C# のやつです)
どうすればそれができるのか、誰か説明してもらえますか?
theory - 通常の言語ではないテキストプロトコルは?
テキスト ネットワーク プロトコルに関連付けられた文法を表す通常の方法は、ABNF を使用することです。
あらゆる EBNF 関連のメタ構文と同様に、ABNF は文脈自由文法の記述を可能にします。
これらの文脈自由文法は、非正規言語を表すことができますよね?
ネットワーク スタックを実装する通常の方法は、ステート マシンを開発することです。通常の言語ではないテキスト ネットワーク プロトコルはありますか?
reverse-engineering - Wireshark以外の何も使用せずにUDPベースのカスタムゲームプロトコルをリバースエンジニアリングするにはどうすればよいですか?
Wireshark以外の何も使用せずにUDPベースのカスタムゲームプロトコルをリバースエンジニアリングするにはどうすればよいですか?大量のトラフィックをログに記録できますが、それではどうしますか?私の目標は、最終的にゲームコマンドをデコードできるWireshark用のディセクタプラグインを作成することです。これは実行可能だと思いますか?どのような課題に直面する可能性がありますか?コマンドが暗号化されている可能性はありますか?
c - Winsock UDP パケットがドロップされていますか?
WindowsでUDPセットアップを介したクライアント/サーバー通信システムがあります。私たちが直面している問題は、スループットが増加すると、パケットがドロップされることです。これは、継続的にポーリングされている UDP 受信バッファーが原因で、バッファーがブロックされ、着信パケットがドロップされていることが原因であると考えられます。このバッファを読み取ると、着信パケットがドロップされる可能性はありますか? もしそうなら、これを修正するためのオプションは何ですか? システムは C で書かれています。これがあいまいすぎる場合はお知らせください。詳細情報を提供できるよう努めます。ありがとう!
networking - TCPでのタイムアウトの設定
タイムアウト間隔は、ネットワークに応じて動的に変化します。通常、TimeoutInterval = EstimatedRTT + 4*DevRTTで表されます。
しかし、なぜ私たちは4 * DevRTTなのですか?
なぜ2*DevRTTになれないのですか?