다른 정보를 사용할 수 있음을 알리기 위해 다른 서버로 UDP 패킷을 보내려고합니다. 패킷의 데이터는 약 100 바이트 정도의 매우 작습니다. 기본적으로 이벤트 유형 및 UUID입니다.하나의 패킷을 보내는 중, 크기는 얼마입니까?
단일 패킷 (What is the largest Safe UDP Packet Size on the Internet)에 정보가 얼마나 들어가는 지에 대한 제한 사항을 알고 있으며 문제가있는 것 같지 않습니다. 그리고 UDP 패킷이 삭제 될 수 있음을 알고 있습니다. 제 경우에는 패킷이 새 데이터에 대해 얼마나 빨리 알 수 있는지 제안하는 것입니다. 패킷을 잃으면 응용 프로그램이 느리게 응답하지만, 사물을 부수 지 말라.
그 점을 염두에두고, 제 질문은 그 패킷의 크기가 얼마나 중요한지입니다. 정보를 JSON으로 인코딩하면 약 75-100 바이트가되는 것처럼 보입니다. 나는 또한 훨씬 작을 원시 이진 형식으로 정보를 인코딩 할 수 있습니다 (아마도 30 바이트 이하의 내용으로 맞출 수 있습니다).
페이로드가 100 바이트 인 UDP 패킷이 30 바이트 페이로드보다 "느리게"이동합니까? 나는 각 패킷에 오버 헤드가 있음을 알고 있지만 이미 조각화를 피하면 패킷 크기가 성능에 얼마나 많은 영향을 미치는지 분명하지 않습니다 (분명히 일이 느리고 신뢰성이 떨어집니다). 페이로드의 크기가 패킷 손실 가능성에 영향을 줄 수 있습니까?
요약하면 좀 더 복잡하지만 더 간결한 형식을 만드는 것이 더 좋은지 또는 JSON을 사용하여 응용 프로그램이 발전함에 따라 이전 버전과의 호환성을 유지하고 수정하기가 더 쉬울 지 결정하려고합니다. 각 패킷의 크기면에서
당신이 언급 한 제한점보다 훨씬 중요하지 않습니다. 이더넷은 또한 * 최소 * 크기를 가지고 있음을 알아야합니다. 따라서 실제로 크기를 작게 설정하면 전혀 효과가 없을 수 있습니다. – EJP
이것에 대해 조금 더 생각해 보면, 네트워크가 포화 상태가 아닌 경우 거의 차이가 없을 것입니다. 패킷이 전송되고 길면 길어질수록 상대적으로 몇 나노초 (1Gb 네트워크에서 비트 당 약 1 나노초)가 걸릴 수 있습니다. 이러한 패킷이 네트워크를 포화 시키면 60 %의 추가 공간이 중요해질 수 있습니다 (크기가 작아 네트워크 포화를 피할 수 있음). 그렇지 않으면 실제 효과가없는 것처럼 보입니다. 내 유스 케이스가 네트워크를 전혀 포화 상태로 만들지는 않을 것이라고 생각하지만 실제로 생각하지는 않았다. –