問題タブ [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.
c# - C#でrawソケットを使用する
C#でポートスキャナーを作成したいのですが、SocketType.Rawを使用できません。デスクトップバージョンのWindowsからrawソケットが取り出されたためです。インターネット接続にPPPoEを使用しており、WinpcapはPPPデバイスをサポートしていないため、SharpPcapまたはWinpcapの他のラッパーを使用できません。
rawソケットを実装し、winpcapに依存しないライブラリを使用する必要があります。
何か案は?基本的に、SYNを送信し、SYN / ACKまたはRSTを受信する必要がありますが、ACKを返送しません。
編集:
RAWソケットがデスクトップバージョンのWindowsからなくなったと思わない人は、http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548 (v = vs.85).aspxを参照してください。
Windows 7、Windows Vista、Windows XP Service Pack 2(SP2)、およびWindows XP Service Pack 3(SP3)では、rawソケットを介してトラフィックを送信する機能がいくつかの方法で制限されています。
- TCPデータをrawソケット経由で送信することはできません。
- 無効な送信元アドレスを持つUDPデータグラムは、rawソケットを介して送信できません。発信UDPデータグラムのIP送信元アドレスは、ネットワークインターフェイスに存在する必要があります。存在しない場合、データグラムはドロップされます。この変更は、悪意のあるコードが分散型サービス拒否攻撃を作成する機能を制限し、スプーフィングされたパケット(送信元IPアドレスが偽造されたTCP / IPパケット)を送信する機能を制限するために行われました。
- プロトコル
bind
のrawソケットを使用した関数の呼び出しは許可されていません。注rawソケットを使用する関数は、他のプロトコル(、、、、 など)でも使用できます。IPPROTO_TCP
bind
IPPROTO_IP
IPPROTO_UDP
IPPROTO_SCTP
c - Linux で PF_PACKET エラーを使用して IP_HDRINCL を設定する
以下を使用して raw パケット ソケットをセットアップします。
次に、次を使用してソケットオプションを設定しようとしていますIP_HDRINCL
:
しかし、このオプションを設定できません ( errno
92 のエラーと「プロトコルが利用できません」というメッセージが表示されます。変更PF_PACKET
するとPF_INET
、オプションが設定されますが、使用する必要がありますPF_PACKET
。ソケットでこのオプションを設定する方法はありますか?上で作成?
本当にありがとう。
c - Linuxでcのicmp応答からMACアドレスを抽出するにはどうすればよいですか
生パケットを送信した後、スイッチ環境でマシンの MAC アドレスを見つけようとしています。traceroute コマンドを実装しようとしています。ICMP 時間超過メッセージを受信したときに、そのマシンの MAC アドレスを抽出する方法を知りたいです。私はネットワーク プログラミングが初めてなので、MAC アドレスを抽出するのにどのソケット呼び出しが役立つのか混乱しています。
ありがとう 。
libpcap - libpcapはそれらの下にrawソケットを使用しますか?
rawソケットとlibcapの使用について少し混乱していました。誰でも簡単に両方を使用することの利点を指摘できます。私はいくつかのリンクを読みましたが、それは私を混乱させます。
c - 構造体 ip および構造体 iphdr を使用した不完全な型へのポインターの逆参照
こんにちは、いくつかのパケットを解析しようとしていますが、struct ip を使用すると、「不完全な型へのポインターを逆参照しています」というエラー メッセージが表示されます。それで、私は struct iphdr で試しましたが、まだ同じ問題があります。パケットの解析に使用している関数は次のとおりです。
プログラムに他のエラーがあることはわかっていますが、他の問題を探す前にこの問題を解決したいと考えています。ありがとうございました
sockets - c/c ++でサーバークライアントの生のソケットプログラムを書くのを手伝ってくれる人はいますか
私は生のソケットが初めてです。raw ソケットを使用して 1 つまたは複数のファイルで raw データを送受信するサーバーおよびクライアント アプリケーションを作成したいと考えています。各ファイルには、指定された区切り文字 (スペース、キャリッジ リターンなど) を持つ 50 バイトのデータ セグメントが 1 つ以上含まれている場合があります。私のサーバーの仕事は、ファイルから読み取り、各セグメントを一度に送信することです。各パケットには、MAC アドレスのようなイーサネット ヘッダーなどの従来のヘッダー情報を含まないデータのみを含める必要があります (パケットには、パケットの長さおよび/または開始を示すために、パケットの前に何らかの形式のデータと区切り文字が含まれる場合があります)。パケットの終わりを示すために)。クライアント アプリケーションは、単にポートをリッスンし、データを解析して、生データをファイルに書き込む必要があります。
どうか、私を導いてください。多くの未加工のソケット プログラムを見つけましたが、明確なものはありませんでした。誰かが私に堅実なスタートを切ることができれば、それは素晴らしいことです.
linux - raw ソケットのスループットを測定するために iperf ツールを使用できますか?
raw ソケットを使用してクライアント サーバー アプリケーションを使用しています。iperf を使用してそれらの間のスループットを測定できますか。
python - python icmp raw ソケットの実装
私はPythonに比較的慣れていないので、思いやりを持ってください...
raw_sockets を介してサーバーとクライアントを実装しています。私は必要な権限を持っています。
今、私が定義したサーバー:
Q1)なぜ単に入力できないのですか: hosts = 'localhost'. そうすると、sockSer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) という行を書くことができなくなります。サーバーはクライアントのメッセージを受信しません。gethostbyname(socket.gethostname()) を実行する場合にのみ、192.168.1.101 を取得してから動作します。
別のクラス:クライアントソケット:
Q2)次のように入力する必要がありますか? sockCli.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) または sockCli.connect(address)? connect コマンドがなくても動作するようです。クライアントソケットの?
今、私が次のことを行うと問題が発生します:1)クライアントからサーバーにパケットを送信します:
2) サーバーでパケットを受信し、何かをクライアントに送り返します。
さて、私の重要な質問は次のとおりです 。Q3)サーバーはクライアントに 1 つのパケットのみを送信し、ペイロードは 'b' でした。何が起こるかというと、クライアントは実際に while ループで 2 つのパケットを受信します。最初のパケットはクライアント自体が serverに送信したもので、もう 1 つのパケットはクライアントがサーバーから取得したものです。したがって、私の出力は単に「b」ではなく「ab」です。なぜこれが起こっているのですか???
注: コード全体を入力したわけではありませんが、構文、解析、ヘッダー構成などは正しいと思います。私のコードに明らかな問題がありますか? 必要に応じて、コード全体をアップロードします。
ありがとう
c - CプログラミングTCPチェックサム
TCPのチェックサムを数日間行うのに問題があります。私はインターネット上の多くの情報源を見てきましたが、私が見た例のどれもTCPチェックサムを行う方法を示していません。私もRFCドキュメントを見ましたが、それでも問題があります。
以下は、チェックサムを生成するために使用しているコードです。
この関数は、IPチェックサムに対して機能します。
以下は、TCPヘッダー用に作成した構造体です。
私はWiresharkを使用してこれらのパケットをテストしてきましたが、間違っているのはチェックサムだけです。
最後に、TCPヘッダーとIPヘッダーからの情報をロードする疑似ヘッダー構造体を次に示します。
この構造体に正しい情報をロードしたら、疑似ヘッダー構造体全体でチェックサム関数を使用して、TCPチェックサムをその値に割り当てます。私が提供したものに何か問題がありますか?問題がここにない場合、それは私が見ることができない不注意なエラーである可能性があります。
c# - Socket.Receiveを呼び出すときにスレッドがスリープしないようにする
私は、ソケットを介してtcpデータを受信する低遅延の金融アプリケーションに取り組んでいます。
これが私がソケット接続を確立してバイトを受信する方法です:
Receive()
Streamソケットを呼び出すと、呼び出し元のスレッドがスリープ状態になり、データを受信するとウェイクアップすると聞きました。スレッドをフルスピードで実行したい(CPU容量を使用)。
Streamソケットを使用してこれを行う方法はありますか?唯一の方法がRawソケットを使用する場合、例を挙げていただけますか?