나는 이것이 대답하기 불가능한 질문이라는 것을 알고 있지만 다음은 이렇습니다.
나는 많은 소프트웨어를 작성한 임베디드 보드를 가지고 있습니다. 이 보드는 웹 브라우저를 통해 새로운 펌웨어 이미지(여기의 이미지는 사진이 아니라 보드에서 실행될 소프트웨어의 업데이트)를 보낼 수 있습니다. 웹 브라우저는 일반 컴퓨터에서 실행되며 임베디드 보드에 의해 서비스됩니다. 따라서 컴퓨터에서 브라우저를 열고 임베디드 보드의 IP 주소를 입력하면 임베디드 보드에서 이 임베디드 보드에 대한 새 펌웨어 이미지를 선택할 수 있는 페이지를 제공합니다.
이제 저는 이것을 Linux에서 개발해 왔습니다. 내 말은 임베디드 보드용 소프트웨어이므로 내가 사용한 브라우저가 내 Linux 컴퓨터에 있다는 뜻입니다. Windows에서 이것을 반복하려고 하면 매우 느려집니다!
Wireshark로 살펴보면 Windows 시스템은 새로운 펌웨어 데이터가 포함된 패킷을 보내고, 임베디드 보드는 나중에 ACK 400μs(400마이크로초)를 보냅니다. Windows 시스템은 즉시 다음 패킷을 전송하고 ACK는 수백 마이크로초 후에 다시 반환됩니다.
그러나 이 4패킷 버스트 이후의 다음 패킷은 5초 후에 전송되며 빠른 4패킷 시퀀스가 반복됩니다.
이는 4개의 패킷 버스트와 5초의 간격으로 계속됩니다. 586K 파일이 있으면 속도가 매우 느려집니다.
Linux 시스템을 사용하여 파일을 보내는 경우 전체 이미지를 보내는 데 몇 초가 걸립니다.
나는 두 대의 Windows 컴퓨터와 두 대의 Linux 컴퓨터에서 동일한 결과를 얻었습니다. 나는 몇 년 동안 Windows를 "제대로" 사용하지 않았으며 Windows를 사용하는 방법을 전혀 모릅니다. 방화벽 문제인지 궁금합니다(그런데 느리긴 하지만 왜 통과하도록 합니까?).
누구든지 이것에 대해 밝힐 수 있거나 왜 그럴 것인지에 대한 제안을 해줄 수 있습니까? 저는 고객에게 Linux만 사용하라고 말하고 싶지만 그게 잘 되지 않을 것 같아요! ;~)
편집하다:
도움이 될까봐 pcap 파일을 추가했습니다. Windows가 너무 느려서 도중에 Windows를 중지했습니다. Linux에서는 파일 전송이 완료됩니다. Windows 느린 업로드 pcap
답변1
알았어, 알았어. 내 소프트웨어의 TCP Win 크기였습니다. 나는 그것을 늘렸고 이제 두 플랫폼 모두에서 잘 작동합니다. 혹시 다른 사람이 이런 일을 겪을 경우를 대비해...