問題タブ [raw-sockets]
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.
ruby - Mac + Ruby: Socket の ioctl にアクセスできない? 直し方?
良い時間です。
ルビーコード:
機能: インターフェイスの MAC アドレスを取得します。
期待どおりに Debian で動作します。しかし、Mac OS X では、「ioctl': Operation not supported on socket (Errno::EOPNOTSUPP)」というエラーが発生します。
このエラーメッセージを修正/渡しioctl
、ソケットで作業する方法はありますか?
android - 同じマシンで複数の Android エミュレーターを安全に実行し、ソケットを使用して通信することは可能ですか?
1 台のラップトップ (最悪の場合) またはプライベート ネットワーク上の複数のマシンで、Android デバイスの小さなクラスターをシミュレートしたいと考えています。これは、Android での通信とプロセスの移行をテストするためのものです。
Eclipse で特定のアプリケーションから特定のエミュレーターを識別して起動する安全な方法はありますか? 最近の Eclipse/Java/ADT セットアップがあり、Mark Murphy、Meier、および Abelson のさまざまなチュートリアルを使用しています。
c - データリンク層パケットへのアクセス
データリンク層からIPv4パケットにアクセスするためのソケットを作成したいと思います。unixネットワークプログラミングV1から
1)dhcpクライアントを実装していますが、これは正しい方法ですか?(データリンク層にアクセスしないと、dhcpサーバーから応答を受信できないことを意味します)または他のより簡単な方法はありますか? また、このソケットは自分のシステム宛てのすべてのIPv4パケットを受信するため、dhcp応答パケットを他のパケットとどのように区別する必要がありますか?
2)データリンク層アクセスを使用したネットワークプログラミングに適したリンク/チュートリアルを提案してください。上記の本では、詳細な説明ではありません。
これは私のコードです
network-programming - rawソケットでのrecvfrom()の使用:一般的な疑問
データリンク層からすべてのIPv4パケットを取得するrawソケットを作成しました(データリンク層ヘッダーは削除されています)。そして、私が使用するパケットを読み取るためにrecvfrom
。
私の疑問は次のとおりです。OSによって行われたスケジューリングのために、私のプロセスが1秒間スリープしていたとします。目覚めたとき、recvfrom
このrawソケットで(受信するバイト数はたとえば1000で)、( IPv4パケットを1つだけ受信し、このパケットのサイズは380バイトであると言うことを意図して)実行しました。また、この間に多くのネットワークアプリケーションも同時に実行されていたため、すべてのIPv4パケットがこのソケットの受信バッファーにキューイングされている必要があります。したがってrecvfrom
、1000バイトすべてを返します(381番目以降の他のIPv4パケットを含む)bcozは、バッファに返すのに十分なデータがあります。私のプログラムは1つのIPv4パケットのみを理解することを目的としていましたが
では、このことを防ぐ方法は?バイトごとに読み取り、各バイトを解析する必要がありますが、非常に非効率的です。
c - カーネル モジュール内から生のイーサネット パケットを送信する
カーネル モジュールで新しいsk_buff
構造体を構築し、それをネットワーク デバイスに渡す必要があることがわかりましたが、単純な raw イーサネット パケットの構造体変数を設定する方法がわかりません。
これは簡単である必要がありますが、誰かが を組み立てる方法のサンプル コードを教えてくれれば、本当にありがたいですsk_buff
。
c - c raw ソケットと 64 ビットの問題
サンプル コードを 64 ビット マシンで動作させるのにまだ苦労しています。ヘッダー/ライブラリが見つからない/古いため、以前の問題は解決しました。
このコードを次のようにコンパイルします: gcc -Wall -g -o server server.c および gcc -Wall -g -o client client.c 2 台の Linux マシン (両方とも 32 ビット) で実行すると、正常に動作します。このコードを 64 ビット マシンで再コンパイルすると、クライアントからサーバーにパケットが送信されないように見えます。クライアントに tcpdump を配置すると、常に拒否される不正な形式のヘッダーが送信されているようです。誰でも私を啓発できますか?
------server.c---------------------
php - PHPでソケットにバイトごとに書き込む方法は?
PHPでソケットにバイトごとに書き込む方法は?
たとえば、次のようなことを行うにはどうすればよいですか。
疑似コードの連結された数字は、実際には 10 進数のバイトです。あなたが私を理解してくれることを望むよ。
tcp - tcpチェックサムとtcpオフロード
私はrawソケットを使用して独自のソケットを作成しています。tcp_checksumを設定する必要があります。
多くのリファレンスを試しましたが、すべてが機能していません(テストにwiresharkを使用しています)。
私を手伝ってくれますか。
ちなみに、tcp_checksum=0に設定するとどこかで読んだことがあります。その後、ハードウェアがチェックサムを自動的に計算します。これは本当ですか?私はそれを試しましたが、wiresharkではtcp_checksumは0X000の値を与え、tcpoffloadと言います。tcpオフロードについても読みましたが、理解できませんでした。wiresharkがオフロードされたtcpチェックサムをチェックできないというだけですが、正しいチェックサムはありますか?
編集:tcpChecksumを0に設定すると、オペレーティングシステムではなく、ネットワークカードが設定することに気付きました。私はwiresharkと仮想マシンを使用してテストしていたので、チェックサムが0x000である理由を説明しています(パケットがネットワークカードに渡されていないため)
が、tcp_checksumを手動で計算することに興味があります...ヘルプやリンクはありますか?
.net - 非同期Socket.BeginReceiveを使用するときにタイムアウトを検出するにはどうすればよいですか?
F#でRaw Socketsを使用して非同期Pingを記述し、可能な限り少ないスレッドを使用して並列要求を有効にします。「System.Net.NetworkInformation.Ping」は、リクエストごとに1つのスレッドを割り当てているように見えるため、使用していません。F#非同期ワークフローの使用にも興味があります。
以下の同期バージョンは、ターゲットホストが存在しない/応答しない場合に正しくタイムアウトしますが、非同期バージョンはハングします。どちらも、ホストが応答したときに機能します。これが.NETの問題なのか、F#の問題なのかわからない...
何か案は?
(注:Raw Socketアクセスを許可するには、プロセスを管理者として実行する必要があります)
これにより、タイムアウトが発生します。
ただし、これはハングします。
これがコードです...
c - tun/tap と raw ソケットを使用して「TCP パケット修飾子」を作成できますか?
TCP と通信する Linux アプリケーションがあり、分析と統計に役立てるために、送信する TCP パケットの一部のデータを変更したいと考えています。Linux TCP スタックをハッキングせずにこれを行うことをお勧めします。
これまでのアイデアは、「TCP パケット修飾子」として機能するブリッジを作成することです。私のアイデアは、ブリッジの片側にある tun/tap デバイスを介してアプリケーションに接続し、ブリッジの反対側にある raw ソケットを介してネットワーク カードに接続することです。
私の懸念は、未加工のソケットを開くと、依然として Linux の TCP スタックにパケットを送信することです。これは正しいです?
ブリッジの疑似 C コード スケッチは次のようになります。
これは可能に見えますか、それとも同じことを達成するための他のより良い方法はありますか? (TCP パケットのブリッジングと変更。)