단방향 통신시 반복하여 오는 데이터 블럭의 최대 개수 문제..
글쓴이: oprsystem / 작성시간: 수, 2005/08/24 - 3:56오후
안녕하세요..
아래의 그림은 단방향 통신을 나타냅니다.
A Block 부터 D Block 은 계속 반복 되어 들어 옵니다.
받는쪽(수신측) 에서는 동그라미의 전체 개수를 모르고 있습니다.
그리고 Block 의 전체 개수도 모르고 있습니다.
또한 Block 에 항상 4개씩 동그라미가 온다는것도 보장할수 없습니다. ( 제가 임의로 그려 놓은것일뿐입니다. ^^;;)
블럭 사이의 동그라미가 중간에 깨질수도 있습니다.
깨졌다는것은 CRC 를 체크해 보고 알수 있습니다.
위의 3가지 조건에서 1 부터 g 까지의 동그라미를 완벽하게 받는 방법은 어떤게 있을까요?
File attachments:
첨부 | 파일 크기 |
---|---|
통신블럭_최대개수_문제.GIF | 4.07 KB |
Forums:
* 양방향이라면, 핸드쉐이킹하면 되겠지만..... 질문자는 그 경우를 고
* 양방향이라면, 핸드쉐이킹하면 되겠지만..... 질문자는 그 경우를 고려한것같지않고....
*단방향 통신에서(half duplex) 완전히 에러없이 원본을 받는 것은 쉽지 않습니다.
이를테면, 인공위성으로부터의 데이터, 방송국에서 브로드캐스트하는 경우등이 있을 수 있고, 특정 센서가 수신없이 송신만 하는 경우도 있겠군요.
FEC(forward error correction)라는 방법이 있습니다.
A,B를 보낸다고 가정할때, A, C, B를 보냅니다.
C는 A와 B를 연산하여 A가 깨지거나, B가 깨진 경우 A또는 B를 복구해낼 수 있는 정보를 가진 것입니다. 소위 에러보정 패킷을 만들어 중간중간보내주는 것이지요.
완전하다고 볼수는 없으나, 그래도 제법 쓸만한 메카니즘입니다.
답변 감사 드립니다..[quote]FEC(forward error
답변 감사 드립니다..
말씀해 주신 복구 의미 보다는 제가 제시한 3가지의 조건만 가지고
수신측에서 다 받았다는것을 알수있는 종료 조건이 궁금합니다.
(A - D Block 가 계속 반복 됩니다. 복구를 하지 않아도 반복이 되기 때문에 다시 받을수 있습니다. ^^)
아무리 생각해 보아도 다 받았다는것을 알수 있는 종료조건을 알수가 없네요 :oops:
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
* 단방향 통신으로 가정합니다. 즉, 한쪽에서 보낼 수만 있다는....
* 단방향 통신으로 가정합니다. 즉, 한쪽에서 보낼 수만 있다는....
단방향통신에서는 보내는 측에게 다 보내는 의무가 있는 것이 아니고,
받는측에서 해결해야 합니다. 받는 측에서 판단해야 한다는 얘기입니다.
보내는측은 최선의 방법으로 데이터를 보내고, 이제 할만큼했다!라고 여기면 되는 것입니다.
이 경우, A-D블럭이 계속 반복되고, A-D블럭 내부의 값이 변경없다면, 수신측에서 다 받을 확률이 아주 높아지겠군요.
그러나, 무작정 반복적으로 보내는 것보다는 에러교정패킷을 생성해서 보내는것이 좋습니다.(해밍코드참고, FEC방식참고) 물론, 대역폭의 낭비가 있으나, 무작정 반복적으로 보내는 것보다는 상당히 유리합니다.
1) 보내는측에서 수신측이 다받았다는것을 예측(검증은 불가능)하려면, 확률적인 방법밖에는 없겠습니다. 실험을(지리적, 위치적 변수를 고려) 수행해서, 10번보내면 99%수신하더라.... 신뢰구간 얼마에 ... 이런식으로 말입니다.(설문조사등에서 흔히 나오지요? 이런얘기)
2) 수신측은 check sum을 이용해서 제대로 다 받았는지를 판단할 수 있을 것입니다. 단지, CRC로 검사하면 99%의 정확성(에러검출율)을 보장할 뿐이니, Sha1, MD5등의 해쉬알고리즘으로 대체를 고려해보세요. MD5는 이미 깨진 것이 밝혀진 해쉬알고리즘이니, SHA1이 나아보입니다.
댓글 달기