이것에 관한 좋은 Wikipedia 기사 가 있습니다.
ARPAnet에 의해 사용 된 NCP의 초기 반복은 바이트 스트림보다 비트 스트림과 유사하거나 편리한 바이트 크기를 협상하려는 시도입니다. 8 비트 바이트는 훨씬 나중에 표준화되었습니다. 다른 컴퓨터에서 작동하는 파일 전송 프로토콜을 만들려는 여러 시도가있었습니다 (메일은 기본적으로 MAILandMLFL 명령 으로 FTP 프로토콜의 기능을 수행 한 다음 나중에 SMTP 로 MTP 로 분할 했습니다). 이 기계들은 종종 다른 문자 인코딩 (ASCII 대 EBCDIC) 또는 다른 바이트 크기 , 8 비트 바이트 대 6 비트 대 ...
따라서 메일 전송 기능은 초기에 비교적 짧은 메시지를 일반 텍스트로 전송하기 위해 정의되었습니다. 구체적으로, "NVT-ASCII". 예를 들어 RFC 772 는 다음과 같이 말합니다.
메일 표시 및 저장
메일은 발신 호스트의 저장 장치에서 수신 호스트의 저장 장치로 전송됩니다. 두 시스템의 데이터 스토리지 표현이 다르기 때문에 메일에서 특정 변환을 수행해야 할 수도 있습니다. 예를 들어, NVT-ASCII는 시스템마다 데이터 스토리지 표현이 다릅니다. PDP-10은 일반적으로 NVT-ASCII를 5 비트의 7 비트 ASCII 문자로 저장하며 36 비트 워드로 왼쪽 정렬됩니다. 360은 NVT-ASCII를 32 비트 워드에서 4 개의 8 비트 EBCDIC 코드로 저장합니다. Multics는 NVT-ASCII를 36 비트 워드에 4 개의 9 비트 문자로 저장합니다.
간단하게하기 위해 모든 데이터는 MTP에 NVT-ASCII로 표시되어야합니다. 즉, 송신 및 수신 호스트가 서로 다른지 여부에 관계없이 문자를 전송할 때 문자를 표준 NVT-ASCII 표현으로 변환해야합니다. 발신자는 데이터를 내부 문자 표현에서 표준 8 비트 NVT-ASCII 표현으로 변환합니다 (TELNET 사양 참조). 수신자는 데이터를 표준 형식에서 자체 내부 형식으로 변환합니다. 이 표준에 따라 텍스트 줄의 끝을 나타내는 순서를 사용해야합니다.
8 비트가 와이어를 통해 전송 되더라도 8 비트는 보존 할 필요가 없기 때문에 종종 폐기되거나 엉망이됩니다. 사실, 일부 프로토콜이 필요 같은 초기로, 0으로 설정하는 8 비트를 SMTP의 RFC 아래에 인용한다. 다시 말해 소프트웨어는 8 비트 가 아니 었습니다 .
데이터 전송
TCP 연결은 8 비트 바이트 전송을 지원합니다. SMTP 데이터는 7 비트 ASCII 문자입니다. 각 문자는 8 비트 바이트로 전송되며 상위 비트는 0으로 지워집니다.
이것은 8 비트 ISO-8859- # 문자 인코딩이 널리 보급 된 후에도 오랫동안 지속되었습니다. 일부 서버는 이미 8 비트가 깨끗했지만 다른 서버는 그렇지 않았으며 8 비트 데이터를 맹목적으로 보내면 메시지가 엉망이되었습니다.
나중에 "확장 SMTP" 가 게시되어 메일 서버가 지원하는 SMTP 확장을 선언 할 수 있습니다. 그 중 하나는 8BITMIME수신 서버가 8 비트 데이터를 안전하게 수락 할 수 있음을 나타냅니다. MIME 메시지 부분에는 " Content-Transfer-Encoding : 8bit"가있을 수 있으며 어떤 방식으로도 인코딩되지 않았 음을 나타냅니다.
그러나 SMTP 프로토콜은 회선 기반으로 유지 .되며 "메시지 끝"표시기로 회선 (0D 0A 2E 0D 0A)을 사용할뿐만 아니라 998 옥텟 라인 제한이 있습니다. 즉, 대부분의 이진 파일은 변경없이 전송 될 수 있지만이 8 진수 시퀀스를 포함하는 파일은 전송 된 메시지의 끝으로 해석되고 나머지 파일은 SMTP 명령으로 해석되어 손상을 일으킬 수 있습니다. 마찬가지로, 수신 서버에서 998 옥텟보다 긴 "라인"이 잘릴 수 있습니다.
2000 년에는 "BINARYMIME"ESMTP 확장 이 RFC 3030 으로 게시되어 SMTP를 통해 원시 이진 데이터를 전송할 수 있습니다. 메시지는 이제 길이가 0 인 청크를 터미네이터로 사용하여 미리 지정된 길이의 청크로 전송되며 Base64 및 이와 유사한 인코딩은 더 이상 필요하지 않습니다. 불행하게도이 확장을 지원하는 SMTP 서버는 거의 없습니다. 예를 들어 Postfix 나 Exim4 CHUNKING는 EHLO에 대한 응답으로 광고하지 않습니다 . BINARYMIME을 이용하려면 메시지 경로의 모든 서버에서 지원해야하는데 이는 하나 또는 두 개 이상일 수 있습니다.
참조 :