1

tl;dr : Wireshark は、すべてのデータの受信を完了する前に、 gen_tcp がFIN,フラグを送信していると言っています...RST

gen_tcp 経由でアクティブなソケットからデータを受信して​​います。BIO_write() を介して (暗号化されていない) OpenSSL ソケットから送信されており ( http://linux.die.net/man/3/bio_writeを参照)、gen_tcp は次のオプションでリッスンしています。

[binary,{packet,0},{active,true},{reuseaddr,false},{recbuf,256000}]

私はこれを Erlang/OTP の Win32 ディストリビューションを使用して実行しており、かなり大きなデータ、したがって大きな recbuf を受け取ることを期待しています。これは過去に私にとってはうまくいきました。

送信された各合計パケットから最初の 1516 バイトのみを取得し、その後 gen_tcp が を送り返しますが、FINその理由がわかりません。

これが私のWireshark ダンプのスナップです。

ここに画像の説明を入力

*37.184 は Erlang レシーバー、*35.125 は OpenSSL センダーです。

青い線は「ヘッダー」パケットで、プロトコル バージョンを介して送信されます。"Len=1460" のデータ長で続くチャンクは、最初のビッグ データ BLOB です。次に、ACK @ #3、およびFIN@ #4を使用した Erlang barfs

黄色の線は、正常に送信された最後のデータ チャンクです。

何か案は?

4

0 に答える 0