HTTP 1.1 Постоянное соединение: Android GET / POST: [FIN / ACK] идет - PullRequest
0 голосов
/ 20 мая 2018

Я использую HTTP-запрос GET / POST в приложении Android, все хорошо (запрос и ответ), однако, когда я ссылаюсь на wireshark LOG, появляется сообщение [FIN, ACK], означает ли это, что мое соединение закрывается или что?Мое требование - сделать соединение постоянным.Итак, мой вопрос: почему приходит FIN / ACK и если он закрывает соединение, то куда я ухожу?

Содержимое WireShark LOG и Request / Response ниже:

Для GET / POST:

Запрос:

GET /api/application/addparam HTTP/1.1
Content-Type: application/json; charset=utf-8
User-Agent: okhttp/2.5.0
Authorization: Basic QURJOg==
Host: 10.92.33.190:8080
Connection: Keep-Alive

Ответ:

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Content-Length: 558
Date: Fri, 18 May 2018 13:11:46 GMT
Connection: keep-alive

{
//JSON Here
}

Журнал WireShark:

692 28.537182   10.92.33.134    10.92.33.190    HTTP    329 POST /api/application/AddParam HTTP/1.1  (application/json)
693 28.541340   10.92.33.190    10.92.33.134    HTTP    345 HTTP/1.1 200 OK  (application/json)
704 29.194478   10.92.33.190    10.92.33.134    TCP 66  8080 → 47074 [FIN, ACK] Seq=289 Ack=334 Win=66048 Len=0 TSval=285850628 TSecr=19045098
709 29.393729   10.92.33.134    10.92.33.190    TCP 66  47074 → 8080 [ACK] Seq=334 Ack=290 Win=88832 Len=0 TSval=19045619 TSecr=285850628   
852 33.544459   10.92.33.190    10.92.33.134    TCP 66  8080 → 45502 [FIN, ACK] Seq=280 Ack=264 Win=66304 Len=0 TSval=285854978 TSecr=19045534

855 33.583848   10.92.33.134    10.92.33.190    TCP 66  45502 → 8080 [ACK] Seq=264 Ack=281 Win=88832 Len=0 TSval=19046038 TSecr=285854978

1 Ответ

0 голосов
/ 20 мая 2018

На основании захвата пакета закрытие соединения инициируется сервером вскоре после отправки ответа.Если и как долго сервер будет поддерживать соединение открытым для следующего HTTP-запроса в том же TCP-соединении , зависит исключительно от стороны сервера , и клиент не может настроить это.Все, что может сделать клиент, это попросить сервер оставить соединение открытым для другого запроса, который вы делаете, используя HTTP / 1.1, а также отправляя (избыточный) Connection: keep-alive. Клиент не может принудительно установить постоянное соединение или установить минимальное время , как долго сервер должен ждать следующего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...