체크섬에 대해 질문여...

shiny의 이미지

시리얼 통신에 체크섬 기능을 추가하고 싶은데여..

자료를 찾아보니 tcp에 관한 것들만 나와있더라구여..

전송되는 데이타의 갯수를 카운트해서 해결해나하나,,,

넘 막연해서여...

힌트만이라도 좀...ㅋㅋㅋ

mach의 이미지

sso4409 wrote:
시리얼 통신에 체크섬 기능을 추가하고 싶은데여..

자료를 찾아보니 tcp에 관한 것들만 나와있더라구여..

전송되는 데이타의 갯수를 카운트해서 해결해나하나,,,

넘 막연해서여...

힌트만이라도 좀...ㅋㅋㅋ


sz, rz프로그램을 찾아보시면 소스를 구하실수 있을것입니다.
원초적으로는 시리얼라인(모뎀통신)에서 파일전송 프로그램입니다.
CRC루틴이 내장되어 있습니다. 해당 소스를 눈여겨 살펴보시면 보탬이 될것같네요.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

daihoon의 이미지

체크섬 기능을 사용할 수 있습니다만

이를 위해서는 데이타의 패킷화가 되어야할것 으로 보입니다.

에러처리를 위한 좀 쉬운 방법으로는 해밍 코드를 이용하거나

패리티비트를 사용하는 방법이 있습니다.

시리얼포트의 패리티비트 설정을 켜고 이를 이용하는 방법이

비교적 쉬우리라 판단됩니다만, 에러리커버리를 위한 알고리즘을

설계하려면 아무래도 데이타의 패킷화가 필요할것으로 보입니다.

이외에 좀더 나아가면 HDLC방식을 이용하는 방법이 있습니다.

이를 이용하기위해서는 제가 보기에는 X25프로토콜이 적정하리라

생각됩니다. 또 이정도가 전반적으로 사용하시기 적정하리라 보입니다.

x25프로토콜은 전공관련 통신책을 찾아보시면 쉽게 찾으 실수 있습니다.

제 기억으로는 스털링(stalling)책으로 기억하는데요. 기억이 좀 가물하네요.

이를 구현한 소스도 구할 수 있을 겁니다.

simpid의 이미지

그냥 무식하게 더한 합을 사용하던지...

확실히 하고 싶다면... CRC도 좋겠지만...
MD5는 어떨까요?

openssl만 설치되어 있으면...
MD5 인코딩.. 간단하게 할 수 있고... 그 성능이야 확실한거고...

neohwang의 이미지

저는 crc를 추천합니다.

래리버드의 이미지

뭐 확실한 프로토콜을 따라야 한다면은 그에 관련된 방법으로 체크섬을 만들어야 하겠지만,

그렇지 않다면 자신만의 방법으로 만드는 것도 나쁘지 않다고 봅니다.

윗분 말씀처럼 무식하게 더한 값의 합으로 한다거나 MD5등으로 조합하여

양쪽의 값이 같은지를 비교한다거나 뭐 그러식으로 해도 무방할 것 같은데요..

뭐, 원하시는 해답이 아닐 수도 있지만 참고 해 보세요.

http://joinc.co.kr/modules.php?name=News&file=article&sid=102

에 가 보시면 MD5로 파일변조를 검사하는 강좌가 있습니다.

비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.

clhitter의 이미지

단순한 에러 체킹용 코드에 md5를 쓰는 건 overspec이라고 생각합니다.
md5는 단순한 에러체킹 용이 아니라 추가로 "누군가 일부러" 원본 데이터를 바꾸려고 하는 것도 막아주는 것이거든요.
특히 serial 이라면 통신하는 상대방이 embeded 기계일 가능성도 있을텐데 굳이 필요 없는 기능때문에 구현의 복잡도하고 computing power의 소모를 늘릴 필요는 없다고 생각합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.