본문 바로가기
File (Bin, Hex, batch)

Xmodem 데이터 전송 (Protocol)

by rlawnsghtest 2024. 3. 17.

Xmodem 프로토콜은 파일 전송에 사용되는 초기의 통신 프로토콜 중 하나로, 데이터(파일)를 128바이트 또는 1024바이트 단위의 프레임으로 나누어 전송합니다

 

※ 데이터나 파일을 전송하는 과정을 효율적으로 진행하기 위해 통신 제어 문자(control character) 가 사용됩니다.

이는 통신 장비 간에 제어 정보를 교환하거나, 데이터의 흐름을 관리하고, 오류를 검출하며, 데이터 형식을 정의하기 위한 목적으로 사용됩니다. 

 

128 바이트를 전송할지 1024바이트를 전송할 지는 통신 프레임의 첫번째 데이터(시작 바이트)를 가지고 판단할 수 있습니다. 즉, 시작 바이트가 SOH(0x01)로 시작 하면 128바이트를 전송하기 위한 프레임을 가지게 되고, 시작 바이트가 STX(0x02)로 시작하면 1024바이트를 전송하기 위한 프로임을 가지게 됩니다. 

STX 또는 SOH에 따라서 통신 프레임이 변하게 됩니다.

자세한 Xmodem의 통신 프레임(Frame)은 "Xmodem 파일전송 (Frame)"에서 다루겠습니다.

 

다음 표는 Protocol 을 송/수신부로 나눠서 작성한 것입니다.

송신부 단계 설명 수신부 단계 설명
1 전송 시작을 위해 수신자로 부터 NAK 또는 'C' 응답을 기다립니다. 1 수신 준비가 되면 NAK 또는 'C'를 송신자에게 보내어 전송 시작을 요청합니다.
2 NAK 또는 'C' 응답을 받으면 첫 번째 데이터 패킷을 준비합니다. 2 송신자로부터 데이터 패키을 기다립니다.
3 준비된 데이터 패킷을 수신자에게 전송합니다. 3 데이터 패킷을 수신합니다.
4 수신자로부터 ACK 또는 NAK 응답을 기다립니다. 4 수신된 데이터 패킷의 체크섬 또는 CRC를 검사 합니다.
5 ACK를 받으면 다음 데이터 패킷을 준비합니다. NAK를 받으면 마지막 패킷(현 패킷)을 재전송 합니다. 5 데이터 패킷이 정확하면 ACK를, 오류가 있으면 NAK를 송신자에게 전송합니다.
6 모든 데이터 패킷이 전송되면 EOT를 전송하여 전송 종료를 알립니다. 6 EOT를 수신하면 전송이 온료되었음을 알리기 위해 ACK를 전송합니다.
7 EOT에 대한 ACK를 받으면 전송이 성공적으로 완료된 것입니다. 7 전송 완료 후 파일 수신 처리를 합니다.

 

다음은 통신 Protocol을 순서도(Sequence Diagram")로 나타낸 것이다.

Xmodem 송수신 순서도 (128바이트 예시)

 

 

'File (Bin, Hex, batch)' 카테고리의 다른 글

Teraterm 실행하기 (batch)  (0) 2024.03.22
Xmodem 데이터 전송 (Frame)  (1) 2024.03.17
Xmodem 데이터 전송 (padding)  (0) 2024.03.11
eabi(ELF) vs legacy COFF  (0) 2024.02.28
압축파일을 특정 폴더에 풀기 (batch)  (0) 2024.02.27