udp 소켓에서 일정한 간격으로 패킷을 보낼 때 보내는 첫 번째 패킷이 지연되는 것으로 나타났습니다. 예를 들어, 패킷을 100ms마다 전송할 경우 네트워크에서 평균 100ms와 평균 표준 편차가 4 인 패킷을 수신 할 때까지 지연이 발생합니다. 그러나 첫 번째와 두 번째 패킷에 대한 수신 시간 사이의 간격은 일반적으로 약 10 ~ 40ms입니다. 알다시피 통계적으로 유의미한 차이이므로 분명히 그 원인은 무엇입니까?udp 수신 지연의 원인은 무엇입니까?
저는 리눅스에서 C의 sendto 기능을 사용하고 있습니다. 누군가는 목적지 지연이 맥 주소로 변환 될 때까지 패킷이 보내지는 것을 막는 ARP 해상도 때문에 지연이 일어날 것이라고 제안했다. 보내는 프로그램을 다시 시작하면 첫 번째 패킷이 너무 오래 걸리고 지연 시간이 일정하지 않습니다. 10 ~ 40ms는 꽤 큰 범위입니다.
왜이 첫 번째 패킷이 너무 오래 걸리고 그 문제를 해결할 수 있는지 알아야합니다.
편집 : pcap을 사용한 추가 분석은 보내는 프로그램이 올바른 간격으로 패킷을 보내고 있음을 나타냅니다. 문제는 select()를 사용하여 읽을 수있는 소켓을 기다린 다음 recvfrom을 호출하고 패킷을 인쇄하는 수신기에서 발생해야합니다. 거기에 어떤 종류의 버퍼링이 있습니까?
스니퍼를 사용하여 패킷 전송과 관련된 무언가가 컴퓨터와 관련이 있는지 확인할 수 있습니다. –
이봐 요, 누구든지 왜 투표를하지 않았습니까? – Benubird