問題タブ [ppp]

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.

0 投票する
2 に答える
7401 参照

c - ネットワークの状態を確認し、プログラムで PPP を制御する

だから私はセルラーモデムを使って Linux で PPP を走らせています。私が書いているプログラムは、データを送信する前にリンクがアクティブかどうかを知る必要があります。

チェックするオプションは何ですか

  • リンクが利用可能な場合
  • 私が制御するサーバーにルーティングする場合 (前に述べたように、インターネットには接続しません)

また、それを再起動する最良の方法は何ですか-開始と停止のタイミングをプログラムで制御したいので、 init.d は適切ではないと思います。を使用system()しても PID が得られないようです。呼び出しfork()の群れ以外に他のオプションはありますか?exec??()

C on Linux on ARM (buildroot を使用したカスタム ディストリビューション)。

0 投票する
6 に答える
2851 参照

tdd - 擬似コードプログラミングプロセスとテスト駆動開発

Code Complete 2をまだ読んでいない人にとって、擬似コードプログラミングプロセスは、基本的に、最初に平易な英語でルーチンを記述し、次にそれをより詳細な擬似コードに、そして最後にコードに改訂することによってルーチンを設計する方法です。これの主な利点は、システムをボトムアップではなくトップダウンで構築し、それによって別個のレイヤーでクリーンなAPIを進化させることにより、適切なレベルの抽象化を維持できるようにすることです。TDDは、テストに合格するために最低限のことを行うことに重点を置きすぎており、事前の設計をほとんど奨励していないため、これでは効果が低いことがわかります。また、不安定なコード(常にリファクタリングされているコード)の一連の単体テストを維持することは非常に難しいこともわかりました。これは、通常、1回または2回だけ必要なルーチンの単体テストが12個ある場合だからです。リファクタリングを行う場合(たとえば、メソッドのシグネチャを変更する場合)、行う作業のほとんどは、製品コードではなくテストの更新です。コンポーネントのコードが少し安定した後で、単体テストを追加することを好みます。

私の質問は、両方のアプローチを試した人のうち、どちらが好きですか?

0 投票する
2 に答える
1519 参照

linux - Linux のモデム バンクを使用した PPP デマンド ダイヤル

一連のモデムを備えた Linux ボックスがあり、非常に多数のリモート マシンへのデマンド ダイヤル (アウトバウンド) PPP 接続を作成する必要があります。pppdローカル モデムよりリモートの方がはるかに多いため、 inモードのインスタンスを 1 つ以上起動したいのdemandですが、接続が要求されるまで特定のモデムを割り当てません。pppd接続がアイドル状態になったら、別のリモートへの接続に使用できるようにモデムを解放したいと思います。

私はページを読んで、とオプションpppd manの概念、およびファイルとディレクトリを理解しました。ロック ファイルは、どのモデムが使用中または利用可能かを教えてくれます。また、モデムの割り当てをハードコーディングしている限り、複数のリモート ピアに接続できます。しかし、ダイヤルする必要があるときにスクリプトを呼び出すなどして、それらを動的に割り当てる方法が見つかりませんでした。Googleも知らないようです。callconnectoptions.DEVICE/etc/ppp/peersget_available_modempppd

回避策は、外部メカニズムでデマンド ダイヤルの必要性を検出し、それを起動pppdしてサービスを開始することかもしれませんが、機能を内部で活用する方がクリーンに思えpppdます。

任意のポインタやアイデアをいただければ幸いです。ご感想ありがとうございます!

0 投票する
1 に答える
905 参照

c++ - スケーラブルな PPP プロトコル。ステート マシンに関して必要なヘルプ

私はスケーラブルな PPP を設計しています [イーサネット、HDLC、ATM などに拡張できることを意味します]。ステート マシンが PPP スタック [FSM、エンコード、デコードなどが存在する PPPStack のデザイン ベース クラスを持っていることを意味する] または PPPoE [私の PPP ベース クラス PPPStack から派生したもの] によって処理されているかどうかを判断するのに行き詰まりました。

oE や oATM などに拡張できるように、C++ を使用して PPP を設計しています。

PPP フレームのエンコードは、PPP 自体と PPPoE で行われます [そのうちの PPP フレームは、検出されてセッションが開始された後に追加されます]。

スケーラブルを書くのはこれが初めてです。スケーラブル アーキテクチャに関係する人なら、彼らからのポイントも聞きたいと思うでしょう :)

よろしくお願いします

0 投票する
2 に答える
202 参照

linux - モデムを介した Linux ベースのサーバーへの接続

モデムが接続された (コマンドを送信できる) ブラックボックス デバイスがあり、そこからサーバーにデータを送信するために接続できるようにしたいと考えています。どのような接続オプションがありますか? PPP を使用する必要があるプロトコルですか、それともより良いオプションがありますか?

0 投票する
4 に答える
4169 参照

error-handling - PPP またはイーサネットはどのようにエラーから回復しますか?

PPPの一般的なフレーム フォーマットイーサネットなどのデータリンク レベルの規格を見ると、チェックサムが無効な場合に何が起こるかは明確ではありません。プロトコルは次のフレームの開始位置をどのように認識しますか?

次の「フラグ」の発生をスキャンするだけですか (PPP の場合)? もしそうなら、パケットのペイロードにたまたま「フラグ」自体が含まれていたらどうなるでしょうか? 私の要点は、パケットフレーミングまたは「長さ」フィールドが使用されているかどうかにかかわらず、「長さ」フィールドが破損している可能性があるか、「フレーミング」バイトがたまたまパケットの一部である可能性がある無効なパケットから回復する方法が明確ではないということです。パケット ペイロード。

更新:「GFP CRCベースのフレーミング」を検索して、探していたもの(厳密には私が尋ねたものではありません)を見つけました。通信ネットワークによると

GFP レシーバーは、スリーステート プロセスを通じて GFP フレーム境界に同期します。受信側は最初はハント状態にあり、一度に 4 バイトを調べて、最初の 2 バイトで計算された CRC が次の 2 バイトの内容と等しいかどうかを確認します。一致するものが見つからない場合、GFP は物理層によって与えられたオクテット同期送信を想定しているため、GFP は 1 バイトだけ前方に移動します。受信機が一致を見つけると、同期前の状態に移行します。この中間状態にある間、受信機は一時的な PLI (ペイロード長インジケータ) フィールドを使用して、次のフレーム境界の位置を決定します。成功したフレーム検出の目標数Nが達成された場合、受信機は同期状態に移行します。. 同期状態は、受信者が各 PLI を検査し、cHEC (コア ヘッダー エラー チェック) を使用して検証し、ペイロードを抽出して、次のフレームに進む通常の状態です。

つまり、各パケットは「長さ」と「CRC(長さ)」で始まります。文字をエスケープする必要はなく、パケットの長さは事前にわかっています。

パケット フレーミングには 2 つの主要なアプローチがあるようです。

  • エンコーディング スキーム (ビット/バイト スタッフィング、マンチェスター エンコーディング、4b5b、8b10b など)
  • 変更されていないデータ + チェックサム (GFP)

前者はより安全で、後者はより効率的です。ペイロードに有効なパケットが含まれており、行の破損により、後続のバイトに「フレームの開始」バイトシーケンスが含まれている場合、どちらもエラーが発生しやすくなりますが、それは非常にありそうにないように思えます。GFP の堅牢性を正確に把握するのは困難ですが、最新のプロトコルの多くは GFP を使用しているようです。

0 投票する
2 に答える
4404 参照

linux - シェルコマンドから pppd inet アドレスを取得する方法

ここに投稿するか、ServerFault に投稿するかはわかりません。とにかく、会社のファイアウォールを回避して、携帯電話の 3g ネットワークを使用してメディア共有サイトに接続しようとしています。pppd の inet アドレスをパラメータとして取る簡単な ip route コマンドを考え出しました。しかし、コマンドラインパラメーターを介して渡すのではなく、スクリプトから直接inetアドレスを読み取ることにより、もう少し自動化したいと考えています。

より明確にするために、シナリオを次に示します。

  • 現在のコマンド呼び出し:$jumpfirewall xxx.xxx.xxx.xxx

  • 私が望むコマンド呼び出し:$jumpfirewall

コマンドラインから読み取るために使用できるコマンドまたはライブラリを知っていますか?

0 投票する
1 に答える
10555 参照

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)バイトを送信します。

これは明らかに「オーバーヘッド」の質問に答えるものではありません。誰かアイデアはありますか?

0 投票する
1 に答える
4537 参照

windows - VBScript または CMD を使用して Windows で PPP VPN のサーバー IP を取得する

VBScript またはコマンドラインを使用して、Windows で PPP VPN のサーバー IP を取得することはできますか?

代替テキスト

これは VPN ダイヤルアップ サーバーの IP ではないことに注意してください。

0 投票する
1 に答える
2457 参照

windows-7 - 接続をダイヤルする Windows スクリプトを作成する方法

ダイヤルアップして接続を切ることはできますか? 私の Windows 7 システムでは、接続は PPP 3G 接続です。