C# 또는 파이썬으로 Y-Modem을 구현하고 싶습니다.
C#을 이용하여 Y-Modem을 구현하고 싶어요.
그런데, Y-Modem 프로토콜 문서를 봐도 도저히 이해가 안되네요.
송수신 프로토콜을 절차대로 쉽게 설명해 주실 수 있을까요?
안녕하세요. 김재훈 전문가입니다.
Y-Modem은 시리얼 통신에서 파일 전송을 위해 설계된 프로토콜로 송신 측은 먼저 128바이트나 1KB 데이터 블록과 헤더를 보내고 수신 측은 올바르면 ACK, 잘못되면 NAK를 응답하는 식으로 진행됩니다. 전송 절차는 수신 측이 C전송 → 송신 측이 헤더 블록 전송 → 수신 측 ACK → 데이터 블록 전송·검증 반복 → EOT → 최종 ACK 순서입니다. 핵심은 블록마다 CRC 검증을 하고 오류 시 해당 블록을 재전송하는 구조이며, C#에서는 시리얼 포트 이벤트를 활용해 송·수신과 ACK/NAK 처리를 구현하면 됩니다.
1명 평가안녕하세요. 전찬일 전문가입니다.
Y-modem은 파일을 여러조각으로 나눠서 차례대로 보내는 방식입니다. 먼저 받는 쪽에서 준비됐다는 신호를 보내면 보내는 쪽에서 파일 이름과 크기 같은 정보를 먼저 보내고, 그 다음에 파일 내용을 1024바이트씩 잘라서 하나씩 보냅니다. 받는 쪽은 매번 잘 받았는지 확인 신호를 보내고, 문제가 있으면 다시 요청을 합니다. 모든 내용을 다 보내면 끝났다는 신호를 주고 받으면서 마무리하는 구조라, 순서만 맞게 하면 어렵지 않게 구현할 수 있습니다1명 평가안녕하세요. 하성헌 전문가입니다.
이러한 씨언어나 파이썬 언어를 활용하여 프로토콜 문서를 활용하는 것은 단기간에는 이러한 적용이 어려울 수 있으나, 결국 반복숙달이 가장 중요한 요소라고 생각합니다. 이러한 반복적인 연습을 위해서는 유튜브나 관련도서를 탐독하는 것을 통해서 관련 내용을 연습하고 꾸준히 학습하는 것이 중요합니다. 다만 이러한 것을 하기 위해서는 수신자와 송신자와의 관계나 순서 자료를 전송하는 방법 등에 대한 이해도를 높이는 것이 좋겠습니다.
1명 평가안녕하세요. 조일현 전문가입니다.
해당 절차는 c - 헤더- ack -데이터 - eot -ack 순입니다.
수신기가 통신 준비를 위해 ASCII 문자 C를 송신하여 파일 전송 요청 신호를 보냅니다.
송신기는 수신기로 부터 받은 C를 첫 번째 패킷으로 파일 이름과 크기 정보를 포함한 헤더 팻킷 형태로 전송하며
수신기는 이 헤더 패킷을 수신후 ACK와 C를 다시 송신하여 수신 준비를 알립니다.
송신기는 이후 파일 데이터를 128바이트 또느 1024바이트로 나누어 순차적으로 전송하며 수신기는 데이트 블록을 받아 오류 검사를 한 후 이상이 없으면 ACK를 송신하여 다음 블록을 요청하게 됩니다.
처음에 C를 받고 헤더 패킷을 보내고 그 뒤로 블록 단위오 전송 후 ACK 확인 후 EOT를 보내고 종료하게 됩니다.
1명 평가안녕하세요. 강세훈 전문가입니다.
Y-Modem 프로토콜은 송신자가 먼저 준비신호를 보내고 수신자가 ACK로 응답하는 방식인데요
파일 이름과 크기 정보를 헤대로 보내고 데이터 블록을 차례대로 전송해주고 CRC검증 후 ACK를 받으면
다음 블록으로 넘어가고 데이터 전송이 끝내면 최종 ACK를 받고 종료한답니다.