問題タブ [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.

0 投票する
3 に答える
3541 参照

python - Python raw IPv6 ソケット エラー

Python で未加工の IPv6 ソケットを使用すると問題が発生します。私は経由して接続します:

ここで、self._interface はローカル アドレスです。具体的には「fe80::fa1e:dfff:fed6:221d」です。これを試すと、次のエラーが表示されます。

self._interface ("::1") に ipv6 localhost アドレスを使用すると、実際にアドレスをバインドできますが、何も送信できません。

raw ソケットに宛先アドレスが必要なのはなぜですか? Python で未加工の IPv6 ソケットを使用した人はいますか?なぜこれが起こっているのかを理解するのに役立ちますか?

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

c - TCP パケットのデータ ペイロードの開始を判断する方法は?

raw ソケットを使用して FTP トラフィックを監視するプログラムを作成しています。これで、次のコードを使用して TCP パケット内のデータの開始を判断できます。

これは問題なく動作しますが、「魔法の」数字 4 をデータ ポインターに追加する必要があります。追加しないと、最終的な文字列は無意味な文字で始まります。

転送されたデータの開始を決定するためのクリーンなソリューションはありますか? (libcap などの専用ライブラリを使用せずに)

ありがとう。

0 投票する
3 に答える
78805 参照

c - rawソケットを特定のインターフェースにバインドする方法

私のアプリケーションはCentOS5.5で実行されています。私はデータを送信するためにrawソケットを使用しています:

このソケットを特定のネットワークインターフェイス(たとえばeth1)にバインドするにはどうすればよいですか?

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

c - sendto() dst_addr arg は、IP_HDRINCL が設定された raw ソケットで使用された場合に問題になりますか?

質問はほとんどすべてタイトルにあります。

次のことを考えると、私は疑問に思っていました:-生のソケットを使用します(GNU / Linux上)。- オプション IP_HDRINCL が設定されているため、IP ヘッダーを自分で作成できます。

dest IP addr は巧妙に細工された IP ヘッダーで提供されるため、dst_addr 引数は引き続き役割を果たしますか、それとも完全に役に立たず、ここでのみ関数プロトタイプがどのように発生するのでしょうか?

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

php - PHP から OrientDB に接続する

OrientDB のバイナリ API 用の PHP 用アダプターを作成したいと考えています。

しかし、PHP での raw ソケット通信の経験がある人の助けが少し必要です。PHP を OrientDB に接続する最初のハードルを乗り越えることさえできないようです。

ソケットの経験がある人がこれを見てくれれば幸いです:

http://code.google.com/p/orient/issues/detail?id=126

最初のハードルを乗り越えて、実際にパケットを送信できれば (そのページの下部にある単純化された例 - 最後までスクロールしてください)、アダプターを確実に作成できます。

もしそうなら、これはもちろんオープンソースとしてリリースされます。

誰かが私が始めるのを手伝ってくれることを願っていますか?

ありがとう!


2010/11/20

PEAR の Net_Socket を参照すると、fsockopen() と通常の PHP ストリーム関数を使用して、初期に試みたのと本質的に同じコードになりました。

それでも私はどこにも行きませんでした。サーバーはまったく反応せず、5 秒のタイムアウトが設定されていても、スクリプトはディープ スリープ状態になり、一般的な PHP スクリプトの時間制限を超えるまで出てきません。

コードは次のとおりです。

そして、送信するパケットを検査するために使用している hex_dump() 関数は次のとおりです。

OrientDB の作成者である Luca Garulli によると、私が送信しているパケットは正しいようです。だから、何か他のものが間違っている...

これは Windows の問題でしょうか? 私はApacheの下でWindows上でPHP 5.3を使用しています...

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

c++ - raw ソケットを使用して TCP プロトコルの 3 ウェイ ハンドシェイクを正しく再現するにはどうすればよいですか?

私のコードが実行されているときに、wiresharkとともに、c ++でtcpプロトコルの3ウェイハンドシェイクをシミュレートしています。私のコードは、ip および tcp レイヤーでヘッダーを作成し、それらをパックしてから、tcp ヘッダーの SYN フラグを 1 に設定して http サーバーに送信します。

Wireshark で、ip ヘッダーと tcp ヘッダーの両方が正常な完全なデータグラムを確認できます。エラーはないようです。私のプロセスは、既に送信されたパケットのヘッダーに含まれているものと同じアドレスとポートでソケットをバインドします。

Wireshark はパケットが正常に送信されたことを示していますが、SYN を確認するサーバーからの収入パケットはありません。私は何を間違っていますか?

私はUbuntu 10.10、2.6.35-23を使用しています。

コードが汚いです、すみません。テスト用です。

main.cpp:

// これは tcp.h にあります...

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

tcp - BSD raw ソケットを使用して、正常に受信した SYNACK に対して ACK 応答を送信できますか?

私のコードは、手動でハンドシェイクを確立しようとします。TCP次に、リソースを要求するデータ セグメントをHTTP GET.

ヘッダーを作成してパケットを送信するために raw ソケットを使用し、受信したパケット ヘッダーをチェックするために libpcap を使用しています。

が受信者にSYN正常に送信され、受信者からSYNACK. この時点でこれまでのところ動作していますが、それを受信するとSYNACK、それを試してからACK次に送信しますHTTP GETが、動作していないようです。Wireshark でヘッダーが正常であることを確認できます。

だから私の質問は次ACKのとおりです。SYNACK送信に使用したのと同じソケットを使用して受信するのと同じように、生のソケットを介して送信できますSYNか? OPTIONSそして、それを達成するためにヘッダーと一緒に行く必要はありますか?

に ACKSYNACKを送信し、その直後に を介してリソースを要求するためにACKとフラグを設定してセグメントを送信します。それらは両方ともwiresharkで見ることができますが、サーバーからの応答がありません。 PSHHTTP

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

networking - raw_socket をカーネル空間の特定のインターフェースにバインドする方法は?

私の問題は、PF_PACKET をリッスンすると、ボックスが送信するパケットも取得することです。これは望ましくありません。

ETH_P_ALL の代わりに ETH_P_IP を試しましたが、ホストにしかパケットが送信されません。だから私の考えは、ソケットをインターフェースにバインドすることでした。「sockaddr_ll」を使用すると、ifindex を定義できます。しかし、インターフェイスのインデックスを取得する関数が見つかりませんでした.ioctl はカーネル空間では機能しません。

..

どんな助けでもいただければ幸いです

0 投票する
3 に答える
3762 参照

c# - raw ソケットを使用して着信応答を読み取ることができません

生のソケットをリッスンしてコードを介して Web サイトからの応答を読み取ろうとしていますが、これまでのところ、実際に関心のある着信応答ではなく、コンピューターから送信された発信要求しか読み取ることができませんでした。受信した応答を読み取るにはどうすればよいですか?

編集: Wireshark を使用すると、探しているデータが TCP 経由で送信されていることがわかりました。

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

c - Linux の C で RAW ソケットを使用してマルチキャストを送信する

raw ソケットを使用して 239.255.25.25 ポート 5004 にマルチキャスト メッセージを送信する、Ubuntu LTE で実行するプログラムを作成しました。マルチキャストを受信するために、UDP ソケットを使用しています。ソケット経由で送信するデータは、rtp ストリームから wireshark でキャプチャされました。問題は、UDP ソケットでメッセージを受信できないことです。受信者が正しいかどうかを確認するために、通常の UDP ソケットを使用する送信者を作成しました。RAW および UDP ソケット経由で同じメッセージを送信すると、udp ソケットから送信されたメッセージしか受信できません。

パッケージの解析にwiresharkを使用していますが、rawソケットからのマルチキャストパッケージとudpソケットからのマルチキャストパッケージは同じようですが、rawソケットから送信されたパッケージを受信できないのはなぜですか?

UDP および RAW ソケット送信者からのコード:

UDP レシーバーからのコード:

HAL に問題があるのか​​もしれません。wireshark で 2 つのパッケージを受け取ったとき、それらは同一のように見えますが、udp ソケットはそれらの両方の違いを検出したためです。しかし、それが私のプログラミングの誤りであれば幸いです。:-) 助けてくれてありがとう!