2009-04-28 2 views
0

나는 앞으로 며칠 동안 udp를 배우고 있습니다. 이번 주말 나는 그 72 시간 경쟁 중 하나에 참여할 것이고, 나는 나의 UDP 코드가 그것의 끝까지 온라인으로 작동하게하고 싶다. 경쟁 중에 나는 어떤 인터넷도 가지지 않을 것이다 (그래서 누군가를 부르거나 시험하는 것을 가지지 않는다).LAN 외부에서 UDP 코드를 테스트하는 데 문제가 있습니까?

두 번 들어오는 패킷과 같은 UDP에 대한 몇 가지 문제점에 대해 알고 있지만 여러 프레임을 기다리지 않고 (밀리 초 내에 예상되는 시간이 얼마인지 알 수 없음) 권장 바이트 크기 (576) 등을 알고 있습니다. What should i know about UDP programming?

하지만 LAN에서 인터넷으로 이동 한 후에 어떤 일이 발생합니까?

참고 : 최대한 빨리 일부 코드를 실행하고 온라인으로 테스트 할 것입니다. 다행히 내 최종 코드는 어떻게 생겼 겠지만 몇 가지를 놓칠 수도 있습니다.

+0

576은 권장되지 않습니다. 단편화가없는 모든 IPv4 네트워크에서 지원되는 최소 크기입니다. IPv6은이 값을 1,500 바이트로 늘립니다. –

답변

0

지연이 늘어나고 더 많은 패킷 손실이 발생할 수 있습니다. 이것은 송신기와 수신자의 위치에 따라 다릅니다. 미국에 계시고 호주와 UDP로 통신을 시도한다면 여행 거리가 길고 패킷 경로가 많으므로 더 많은 패킷 손실/재정렬 된 패킷/중복 패킷이 발생할 수 있습니다. 라우트되어야합니다.

0

전송 프로토콜로 UDP를 사용하는 경우 응용 프로그램 프로토콜 내부에서 전송을 보호해야합니다. 이 작업을 수행하는 방법은 여러 가지가 있습니다

  • 패킷 순서 번호는
  • 패킷 크기
  • 체크섬

당신은 당신의 응용 프로그램 패킷의 헤더 이러한를 전송하고 수신 측에서이를 확인해야합니다 .

추신 : 프로토콜의 일부가 아닌 프로토콜의 모든 측면에서 정확한 패킷 순서와 완전성을 사용하려면 TCP로 전환해야합니다.

+1

나는 당신이 * 귀하의 전송을 보호하기를 원할 수도 있다고 말하고 싶습니다. 예를 들어, 표시 목적을 위해 실시간 가격 업데이트를받는 경우 패킷 손실을 감당할 수 있습니다. –

+0

네 말이 맞아. 그것이 PS를 추가 한 이유입니다. – Koraktor

0

이것은 약간 극단적 일 수 있지만 (!) 이것이 중요한 경우 들어오는 데이터 그램을 수신하고 전달하는 UDP 프록시를 작성할 수 있습니다. 그런 다음이 제공하는 수정할 수 :

  1. 대기 시간
  2. 패킷 드롭
  3. 패킷 복제

과에 직접 당신의 프록시로 데이터를 전송하는 클라이언트 및 프록시를 직접 (와 적절한 패킷 수정)을 서버에 보냅니다.

내가 말하는 것처럼, 아마도 극단적입니다. 그러나은 LAN/인터넷 환경에서도 UDP 비우호적 인 환경에서 응용 프로그램의 동작을 테스트하는 데 사용할 수 있습니다.

편집 : 분명히 누군가 이런 편지를 썼습니까? 그렇지 않다면 나는 오픈 소스 프로젝트가 진행되고 있음을 느낀다.

0

짧은 대답은 다음과 같다 : LAN에서, LAN상의 경우, 좋은 결과와 나쁜 것의 절충점이 거의 없음을 알 수있다. 몇 가지 잘못 될 수 있습니다.

패킷이 손실 될 수 있습니다.LAN 정체 또는 로컬 시스템 제한이 가장 큰 원인입니다.

라우터를 사용하는 경우 LAN을 사용하면 대다수의 UDP 문제 (조각화, 중복 패킷, 지연된 패킷, 특정 크기를 넘는 패킷 삭제, 오류 메시지가 반환 됨)가 나타납니다.

즉, UDP를 복잡하게 만드는 가장 큰 이유는 "LAN에서 나가는 것"입니다.

+0

조각화는 무엇을 의미합니까? 나는 내 패킷 반을받을 것인가? 나는 다른 읽기에 두번째 반을 얻을 것인가? –

관련 문제