시리얼 통신에 체크섬 기능을 추가하고 싶은데여..
자료를 찾아보니 tcp에 관한 것들만 나와있더라구여..
전송되는 데이타의 갯수를 카운트해서 해결해나하나,,,
넘 막연해서여...
힌트만이라도 좀...ㅋㅋㅋ
시리얼 통신에 체크섬 기능을 추가하고 싶은데여.. 자료를 찾아보니 tcp에 관한 것들만 나와있더라구여.. 전송되는 데이타의 갯수를 카운트해서 해결해나하나,,, 넘 막연해서여... 힌트만이라도 좀...ㅋㅋㅋ
------------------ P.S. -------------- 지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
체크섬 기능을 사용할 수 있습니다만
이를 위해서는 데이타의 패킷화가 되어야할것 으로 보입니다.
에러처리를 위한 좀 쉬운 방법으로는 해밍 코드를 이용하거나
패리티비트를 사용하는 방법이 있습니다.
시리얼포트의 패리티비트 설정을 켜고 이를 이용하는 방법이
비교적 쉬우리라 판단됩니다만, 에러리커버리를 위한 알고리즘을
설계하려면 아무래도 데이타의 패킷화가 필요할것으로 보입니다.
이외에 좀더 나아가면 HDLC방식을 이용하는 방법이 있습니다.
이를 이용하기위해서는 제가 보기에는 X25프로토콜이 적정하리라
생각됩니다. 또 이정도가 전반적으로 사용하시기 적정하리라 보입니다.
x25프로토콜은 전공관련 통신책을 찾아보시면 쉽게 찾으 실수 있습니다.
제 기억으로는 스털링(stalling)책으로 기억하는데요. 기억이 좀 가물하네요.
이를 구현한 소스도 구할 수 있을 겁니다.
그냥 무식하게 더한 합을 사용하던지...
확실히 하고 싶다면... CRC도 좋겠지만... MD5는 어떨까요?
openssl만 설치되어 있으면... MD5 인코딩.. 간단하게 할 수 있고... 그 성능이야 확실한거고...
저는 crc를 추천합니다.
뭐 확실한 프로토콜을 따라야 한다면은 그에 관련된 방법으로 체크섬을 만들어야 하겠지만,
그렇지 않다면 자신만의 방법으로 만드는 것도 나쁘지 않다고 봅니다.
윗분 말씀처럼 무식하게 더한 값의 합으로 한다거나 MD5등으로 조합하여
양쪽의 값이 같은지를 비교한다거나 뭐 그러식으로 해도 무방할 것 같은데요..
뭐, 원하시는 해답이 아닐 수도 있지만 참고 해 보세요.
http://joinc.co.kr/modules.php?name=News&file=article&sid=102
에 가 보시면 MD5로 파일변조를 검사하는 강좌가 있습니다.
비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.
단순한 에러 체킹용 코드에 md5를 쓰는 건 overspec이라고 생각합니다. md5는 단순한 에러체킹 용이 아니라 추가로 "누군가 일부러" 원본 데이터를 바꾸려고 하는 것도 막아주는 것이거든요. 특히 serial 이라면 통신하는 상대방이 embeded 기계일 가능성도 있을텐데 굳이 필요 없는 기능때문에 구현의 복잡도하고 computing power의 소모를 늘릴 필요는 없다고 생각합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 체크섬에 대해 질문여...
sz, rz프로그램을 찾아보시면 소스를 구하실수 있을것입니다.
원초적으로는 시리얼라인(모뎀통신)에서 파일전송 프로그램입니다.
CRC루틴이 내장되어 있습니다. 해당 소스를 눈여겨 살펴보시면 보탬이 될것같네요.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
체크섬 기능을 사용할 수 있습니다만 이를 위해서는 데이타의 패킷화
체크섬 기능을 사용할 수 있습니다만
이를 위해서는 데이타의 패킷화가 되어야할것 으로 보입니다.
에러처리를 위한 좀 쉬운 방법으로는 해밍 코드를 이용하거나
패리티비트를 사용하는 방법이 있습니다.
시리얼포트의 패리티비트 설정을 켜고 이를 이용하는 방법이
비교적 쉬우리라 판단됩니다만, 에러리커버리를 위한 알고리즘을
설계하려면 아무래도 데이타의 패킷화가 필요할것으로 보입니다.
이외에 좀더 나아가면 HDLC방식을 이용하는 방법이 있습니다.
이를 이용하기위해서는 제가 보기에는 X25프로토콜이 적정하리라
생각됩니다. 또 이정도가 전반적으로 사용하시기 적정하리라 보입니다.
x25프로토콜은 전공관련 통신책을 찾아보시면 쉽게 찾으 실수 있습니다.
제 기억으로는 스털링(stalling)책으로 기억하는데요. 기억이 좀 가물하네요.
이를 구현한 소스도 구할 수 있을 겁니다.
MD5..
그냥 무식하게 더한 합을 사용하던지...
확실히 하고 싶다면... CRC도 좋겠지만...
MD5는 어떨까요?
openssl만 설치되어 있으면...
MD5 인코딩.. 간단하게 할 수 있고... 그 성능이야 확실한거고...
저는 crc를 추천합니다.
저는 crc를 추천합니다.
뭐 확실한 프로토콜을 따라야 한다면은 그에 관련된 방법으로 체크섬을 만
뭐 확실한 프로토콜을 따라야 한다면은 그에 관련된 방법으로 체크섬을 만들어야 하겠지만,
그렇지 않다면 자신만의 방법으로 만드는 것도 나쁘지 않다고 봅니다.
윗분 말씀처럼 무식하게 더한 값의 합으로 한다거나 MD5등으로 조합하여
양쪽의 값이 같은지를 비교한다거나 뭐 그러식으로 해도 무방할 것 같은데요..
뭐, 원하시는 해답이 아닐 수도 있지만 참고 해 보세요.
http://joinc.co.kr/modules.php?name=News&file=article&sid=102
에 가 보시면 MD5로 파일변조를 검사하는 강좌가 있습니다.
비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.
md5보단 CRC가
단순한 에러 체킹용 코드에 md5를 쓰는 건 overspec이라고 생각합니다.
md5는 단순한 에러체킹 용이 아니라 추가로 "누군가 일부러" 원본 데이터를 바꾸려고 하는 것도 막아주는 것이거든요.
특히 serial 이라면 통신하는 상대방이 embeded 기계일 가능성도 있을텐데 굳이 필요 없는 기능때문에 구현의 복잡도하고 computing power의 소모를 늘릴 필요는 없다고 생각합니다.
댓글 달기