Wireshark - 무슨 일이 일어났나요?

Wireshark - 무슨 일이 일어났나요?

이 Wireshark 문제는 몇 시간 동안 나를 미치게 만들었습니다. 여기서 무슨 일이 일어나고 있는 걸까요?

192.168.2.100은 정적 파일을 제공하는 Apache 서버입니다.

192.168.2.196은 파일을 다운로드하는 내장 클라이언트입니다.

192.168.2.196이 파일을 성공적으로 다운로드하는 것처럼 보이지만 192.168.2.100을 무시하기 시작하여 연결이 멈추고 결국 종료됩니까?

이것이 맞나요? 클라이언트가 왜 이런 일을 하는 걸까요?

Wireshark 이미지 - 여기를 클릭하세요

답변1

이 증상은 클라이언트측 수신 처리 병목 현상이 있음을 명확하게 나타냅니다.

추적은 클라이언트 네트워크 스택(LwIP)의 수신 버퍼가 채워지고 있음을 보여줍니다. 특히 수신 버퍼가 완전히 채워지고 " ZeroWindow"는 클라이언트에서 서버로 전송되어 데이터 전송을 중지하도록 요청합니다.

이는 일반적으로 소켓에서 읽는 애플리케이션이 네트워크 스택이 도착하는 패킷을 따라잡을 수 있을 만큼 빠르게 수신 버퍼를 소모하지 않음을 나타냅니다.

클라이언트의 지연된 ACK와 결합된 서버의 빈번한 재전송은 클라이언트의 조건이 네트워크 스택의 하위 수준 수신 패킷 처리에도 부정적인 영향을 미치고 있음을 시사합니다.

클라이언트 호스트가 내장된 장치라고 언급하셨고, 귀하의 앱이 lwip_read()에서 차단된 것 같다고 언급하셨습니다. 대기 시간은 다른 IO 또는 CPU 리소스 또는 예약 병목 현상으로 인해 읽기 스레드가 파일 전송을 따라잡기에 충분한 CPU 시간을 확보하지 못할 수 있음을 나타냅니다. 그러나 지연된 ACK는 더 광범위한 문제가 있을 수 있음을 시사합니다. 내장된 장치에 대해 자세히 알지 못하면 추가로 문제를 해결하기가 어렵습니다.

LwIP에는 구현에 적용될 수 있는 네트워크 호출 서비스와 관련된 특별한 제약 조건도 있습니다.이 LwIP 함정 페이지.

이 정보가 귀하의 문제를 해결하는 데 도움이 되기를 바랍니다.

관련 정보