2014-09-27 4 views
-1

두 대의 컴퓨터가 직렬 모뎀을 통해 통신합니다. 그 라인에 신뢰성 프로토콜을 갖고 싶습니다.직렬 연결을 통한 신뢰성

나는 PPP, SLIP 및 RATP를 조사 해왔다. 모든 이들이 최선의 선택은 아니며 특히 모든 코드를 작성하고 싶지는 않습니다. 특히 온라인을위한 훌륭한 코드 기반이있는 경우에 그러합니다.

그 목적으로 사용할 수있는 C#의 라이브러리 또는 코드 프로젝트가 있습니까? 구현하기 위해 어떤 프로토콜을 권장해야합니까?

연결 속도는 9600이지만 전송되는 데이터 양은 그리 크지 않으며 속도는 큰 문제가 아닙니다. 단순성과 개발 용이성!

+0

직렬 프로토콜에서이 작업을 수행하는 일반적인 방법은 메시지의 CRC를 계산하여 메시지 끝에 추가하는 것입니다. 수신기는 CRC가 일치하지 않을 때 CRC를 확인하고 NAK를 보낼 수 있습니다. 보낸 사람은 메시지를 다시 보내 NAK에 응답해야합니다. 제대로 수신되면 메시지가 제대로 도착했는지 확인하기 위해 ACK를 보내야합니다. Google에는 C#에서 CRC를 구현하는 방법에 대한 많은 샘플이 있습니다. 하지만 가장 쉬운 방법은 이더넷으로 전환하고 TCP/IP를 사용하면 무료로 오류 처리를받을 수 있습니다. – AVee

+0

* "reliabilty"*로 무엇을 의미해야하는지 정의해야합니다. 먼저 메시지 무결성에 대한 질문이 있습니다. 수신 메시지는 전송 될 때와 동일한 것입니까? 그런 다음 모든 메시지를 받았는지 의문의 여지가 있습니까? 메시지가 올바른 순서로 수신 되었습니까? 인증이 필요한가 (예 : 중간자 공격에 대해 우려하고 있습니까?) 이러한 문제가 모든 "신뢰할 수있는"프로토콜에 의해 모두 해결되는 것은 아닙니다. – sawdust

답변

-1

각 메시지에 항상 CRC를 추가하지만 상위 수준 프로토콜은 요청하지 않은 상태 보고서를 통해 자체 동기화되고 손실에 견딜 수 있습니다. 명령이 손실되어 상태가 변경되지 않으면 다음 상태 보고서에서 요구 사항이 오류를 감지하거나 수정하는지 여부와 재전송을위한 추가 지연을 허용 할 수 있는지 여부에 따라 앞으로 오류 수정 코드를 조사해야합니다.

메시지 순서 번호, 확인 응답, 반송 - N 대 선택적 재전송 및 코드 간 최소 거리 (해밍 거리)가 포함됩니다.

나는 확실히 당신이 TCP의 디자인을 볼 것을 제안한다. 보장 된 주문형 배송을위한 기본 사항은 매우 미미합니다.

+0

@ 톱밥 : 아, 죄송합니다. 나는 당신이 논평하기 전에 편집이 시스템에 잠시 동안 있다고 생각했다. 어쨌든, 나는 약간의 추가적인 설명이 바람직하다는 데 동의한다. 여전히 나는 "귀하의 요구 사항이 오류를 감지하거나 수정하는지 여부와 재전송을위한 추가 지연을 허용 할 수 있는지 여부에 따라 앞으로 오류 수정 코드를 조사해야 할 수도 있습니다."라고 확신합니다. 첫 번째 버전이었습니다. –