IMAPサーバー(Dovecot)があり、その上に1,200のメールボックスを作成しようとしています(パフォーマンステスト用)。サーバーはメールボックスを正常に作成します。
この操作の後、作成したすべてのフォルダーを一覧表示します。サーバーはいくつかのデータを送信しますが、しばらくすると(1秒近く)、作成されたフォルダーのリストに関するIMAPプロトコルのコマンドでサーバーが応答したことに応答してRST
、 CLIENTがサーバーにを送信します。ACK
これが私のWiresharkダンプスニペットです:
IMAP: Src Port: imap (143), Dst Port: 56794 (56794), Seq: 29186, Ack: 20533, Len: 24 IMAP: Src Port: 56794 (56794), Dst Port: imap (143), Seq: 20533, Ack: 29210, Len: 15 IMAP: Src Port: imap (143), Dst Port: 56794 (56794), Seq: 29210, Ack: 20548, Len: 16384 TCP: 56794 > imap [ACK] Seq=20548 Ack=45594 Win=49408 Len=0 TSV=3940902 TSER=3940902 IMAP: Src Port: imap (143), Dst Port: 56794 (56794), Seq: 45594, Ack: 20548, Len: 16384 TCP: 56794 > imap [RST, ACK] Seq=20548 Ack=61978 Win=49408 Len=0 TSV=3940902 TSER=3940902
編集:まあ、私はなぜRSTフラグがクライアントによって送信されるのか理解したと思います。その理由は、サーバーがループバックインターフェイスのMTU値を超えているためです。サンプルのMinaサーバーで同様の動作を確認しましたが、すべて問題ありません。つまり、巨大なパケットがTCP/IPプロトコルによって吐き出されます。そのため、Dovecotはパケットを適切に管理できません。しかし、私は(MINAに基づく)独自のIMAPサーバーを持っており、問題はまだそこにあります!
では、なぜTCP / IPプロトコルは、送信されたパケットを一部のアプリに対してのみ賢明に管理する(MTU値に従って分割する)のでしょうか。