我基于 SocketAsyncEventArgs (C#) 而不是商业软件编写了一个定制的 HTTP 服务器。当服务器在端口 8080/12345 上侦听时……没问题。但仅在端口 80 上,当浏览器启动与 HTTP 请求的连接时,它看起来像这样:
- 2785: [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
- 2786: [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
- 2787: [ACK] Seq=1 Ack=1 Win=65700 Len=0
- 2788: [RST] 序列=1 赢=65536 列=0
- 3538: HTTP 767 GET /push_push.do?imei=356708041124742&simno=4600230...等等等等
注意,当客户端发送像“socket.Send(http_bytes);”这样的HTTP请求时,TCP报文No.2788[RST]和No.3538[Normal HTTP request]是连续发送的。
=========================
请给我一个建议:
- [RST] 是如何产生的以及如何避免它?
- 为什么监听端口会影响?