본문 바로가기
기타

CR / LF / CRLF - 줄바꿈 문자열

by 유세지 2020. 9. 13.

구글 클라우드 플랫폼을 이용하여 리액트 프로젝트 호스팅하기 (nginX)를 진행하며 새롭게 알게 된 사실이라 나중을 위해 정리해두는 포스팅입니다.

 

컴퓨터에서 줄바꿈 문자열 (개행문자) 를 나타내는 방법은 운영체제에 따라서 다릅니다. 흔히 \n 정도로 알고만 있었는데 유닉스와 리눅스 계열 운영체제에서 이렇게 사용하고, 윈도우 운영체제의 경우 \r\n 을 사용합니다.

 

\nNew line, Line feed 라고 부르고 줄여서 LF 라고 표기합니다.

\r은 carrige Return 이라고 부르며 줄여서 CR 이라고 표기합니다.

 

 

오래 전에 사용된 현재 운영체제들의 조상격인 멀틱스와 CP/M은 각각 줄바꿈 문자열을 LF, CR/LF 으로 통일하였습니다. 멀틱스는 디스크와 메모리의 가격이 높아 조금이라도 많은 정보를 저장하기 위해 \n을 사용하였고, CP/M은 화면 전환 속도가 느렸기에 스크롤 하는 시간과 보조를 맞출 목적으로 \r\n을 사용하였습니다.

 

따라서 리눅스와 유닉스 운영체제는 멀틱스때부터 사용해왔던 LF 방식을, 윈도우 운영체제는 CP/M에서 사용하던 CRLF 방식을 지금까지 관례로서 유지해왔습니다.

 

인증서 파일에 포함된 줄바꿈 문자열 (개행문자)

 

이번 GCP 리액트 호스팅 시리즈를 진행하며 CRLF 관련해서 문제가 되는 부분은 인증서 파일 형식이었습니다.

 

PuTTYGen을 이용하여 인증서를 생성하게 되면 프로그램에 내장된 버튼을 통해 저장할 수 있었습니다.

이런 경우에는 서버 측과 로컬 측이 인증서를 검증하는데에 문제가 없었으나 생성된 키를 메모장에 복사한 뒤 저장하는 방식을 사용하게되면 이 줄바꿈 문자열이 달라지는 경우가 생겼습니다.

 

예를 들어 LF 방식으로 저장되던 파일이 CRLF 방식으로 저장된다거나 하는...

 

이런 저장 방식이 원래 문제가 되는 것인지는 잘 모르겠으나, 줄바꿈 문자열 형식이 다르다는 것을 모르고 메모장을 통해 저장했더니 오류가 발생했었는데, 눈으로 보기에는 같은 내용임에도 PuTTYGen을 통해 저장한 파일은 오류가 발생하지 않았습니다. 아마도 이런 형식의 문제가 오류로 이어진게 아닌가 합니다.

 

 

 

 

- 참고 문서

위키백과 - 새줄문자 (ko.wikipedia.org/wiki/%EC%83%88%EC%A4%84_%EB%AC%B8%EC%9E%90)

제타위키 - 개행문자, 라인피드, 캐리지리턴 (zetawiki.com/wiki/%EA%B0%9C%ED%96%89%EB%AC%B8%EC%9E%90,_%EB%9D%BC%EC%9D%B8%ED%94%BC%EB%93%9C,_%EC%BA%90%EB%A6%AC%EC%A7%80%EB%A6%AC%ED%84%B4)

반응형

댓글