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
黄色の線は、正常に送信された最後のデータ チャンクです。
何か案は?