본문 바로가기
임베디드 개발/펌웨어

YMODEM, XMODEM 프로토콜

by eteo 2023. 2. 15.

 

YMODEM은 파일전송 프로토콜으로 XMODEM의 개선버전이며, ZMODEM, XMODEM-1K, XMODEM-CRC, WXMODEM 등 여러 변형버전이 있다.

 

 

기본구조

 

  • SOH : 0x01 (데이터블록이 128바이트인 경우 사용)
  • STX : 0x02 (데이터 블록이 1024바이트인 경우 사용)
  • EOT : 0x04 (전송이 끝났음을 알리는 문자)
  • ACK : 0x06
  • NAK : 0x15
  • CAN : 0x18 (Cancel, Force receiver to start sending C's)
  • C : 0x43 (ASCII 'C')
  • EOF : 0x1A (파일의 끝에 도달 시 패딩)
  • ETB : 0x17 (End of Transmission Block) 

 

Start of Header Packet No. ~(Packet No.) Data CRC
1 byte (SOH / STX) 1 byte (NN) 1 byte (~NN) 0-128 / 0-1024 byte 2Byte (16-bit CRC)

 

 

 

 

Ymodem Transfer example

 

 

 

 

1. 맨 처음 Receiver가 'C' 문자를 보냄으로써 파일 전송을 요청하고 Sender는 파일이름을 SOH 패킷으로 전송한다.

2. Receiver가 다시 ACK를 전송하고 'C'를 전송하면, 그 다음부터 Sender가 데이터 블락(128 byte or 1024 byte) 단위에 따라 SOH 또는 STX 패킷으로 파일 전송을 시작한다.

3. Receiver는 패킷을 수신할 때마다 ACK를 보낸다.

4. Sender는 전송 중 파일의 끝에 도달하면 해당 패킷의 남은 data영역을 EOF로 패딩한다.

5. Sender는 EOT(End of Transmission)을 보내 전송 종료를 알린다.

6. Sender는 Receiver로부터 ACK와 'C'를 수신하면 NUL data를 보내고 Receiver는 이에 대해 ACK하여 통신을 종료한다.

 

 

 

 

 

 

 

 

Xmodem Transfer example

 

 

차이는 처음 파일명을 송신하는 부분이 없다.

 

 

 

 

프로토콜의 디테일한 내용은 아래 문서에서 확인할 수 있다.

 

 

 

 

XMODEM, YMODEM 프로토콜 문서

 

xymodem.pdf
0.05MB