2009-06-04 10 views
0

나는 UDP 메시지의 신뢰성을 다루는 간단한 방법을 고민하고있다. 나는 하나씩 순서 지정 ID를 보내고 이전에받은 것과 ID를 비교하여 손실을 감지 할 수 있다고 생각했습니다. 나는 정상적으로 정수를 사용 하겠지만, 단지 계속 증가하는 아이디어는 나에게 맞지 않는다.신뢰성을 다루기위한 시퀀스 ID

base64를 사용할 수는 있지만 읽을 수는 있지만 실제로는 아무 것도 해결하지 못합니다.

나는 또한 자정 경에받은 메시지를 처리 ​​할 때 날짜 스탬프를 접두사로 사용하는 것이 좋지 않다고 생각했습니다.

누군가가 제안 할 수있는 더 나은 해결책이 필요하다고 생각합니다. 정수로만 고집하는 것 일지라도 말입니다.

답변

1

필자가 선호하는이 작업은 고해상도 타임 스탬프가 포함 된 증가 (최소 64 비트) 정수 시퀀스를 사용하는 것입니다. 이러한 방식으로, 송신단에서 상태가 손실 되더라도, 시퀀스가 ​​그 시간부터 재 시드 될 때, 그것은 간단히 앞으로 나아갈 것이다. 이것이 소개 할 수있는 모든 Year 10K 버그는 Lazarus Long의 연습 문제로 남아 있습니다. :-)

시퀀스 간격 탐지는 기본적으로 최적화입니다. 송신 측은 ack가 수신 될 때까지 재전송을해야하며, nack (갭 또는 손상된 데이터 그램 용)은 이전의 재전송을 간단히 유도합니다. (ZMODEM은이 규칙에 대한 드문 예외이며, 기본 동작 모드는 스트림 끝 부분에서 단일 확인 (ack)을 사용하고 다른 모든 재전송은 nacks가 관리합니다. 그러나 파일 전송 프로토콜로서 본질적으로 하나의 거대한 기능입니다 멀티 파트 데이터 그램)