Клиент отправляет RST после 3way рукопожатия, когда сервер слушает на 80, изменить порт это нормально
Я пишу настроенный HTTP-сервер на основе SocketAsyncEventArgs (C#) вместо коммерческого программного обеспечения. Когда сервер прослушивает порт 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] Seq = 1 Win = 65536 Len = 0
- 3538: HTTP 767 GET /push_push.do?imei=356708041124742&simno=4600230... бла-бла
Обратите внимание, что когда клиент отправляет HTTP-запрос, такой как "socket.Send(http_bytes);", TCP-сообщения № 2788 [RST] и № 3538 [обычный HTTP-запрос] отправляются последовательно.
========================
Пожалуйста, дайте мне совет о:
- Как получается [RST] и как его избежать?
- Почему порт прослушивания влияет?