ASCII파일 보내기는 있는데 바이너리 파일 보내기는 없나요?

바이너리 파일 안에 있는 제어 문자들 때문에 터미널이 오동작을 일으키기 때문입니다.

터미널 프로그램은 기본적으로 출력 가능한 문자열을 다루는 프로그램입니다. 출력이 가능하지 않은 문자열을 주로 터미널을 장식하거나 제어하기 위해 사용됩니다.


출력이 가능하지 않은 문자열은 주로 아스키 코드표 0에서 31까지입니다. 이 영역의 문자는 제어 문자로 사용됩니다.


제어 문자의 대표적인 사용 예:

아스키 코드 3 :
설명 : End of Text
표현 : ^C (Ctrl+C)
역할 : 대부분의 터미널에서 중단(interrupt)으로 작동합니다. 현재 작업을 중단합니다.


아스키 코드 4:
설명 : End of Transmission
표현 : ^D (Ctrl+D)
역할 : 대부분의 터미널에서 연결을 종료하도록 기본값으로 정해 놓았습니다. 유닉스나 리눅스 터미널에서는 exit 명령과 같은 역할을 합니다.

좀 더 자세한 내용과 Xshell에서 하는 활용에 대해선 Zookeyan님이 정리해 주신 다음 표를 참고하시면 될 것 같습니다.


아스키 파일이 아닌 바이너리 파일을 터미널에 출력하게 되면 바이너리 안에 포함된 제어 문자들로 인해 터미널이 사용자가 원치 않는 동작을 하게 됩니다.

바이너리 파일을 터미널에서 송수신하기 위해서는 제어문자가 제어 역할을 하지 않도록 하는 조치가 필요합니다.

이를 위한 프로그램 혹은 프로토콜이 Kermit, Xmodem, Ymodem, Zmodem 등입니다.


Xshell은 파일 전송을 위해 X,Y,Z 모뎀을 지원하고 있습니다.