Friday, 16 February 2018

콘텐츠 전송 인코딩 바이너리 옵션


읽기에는 다소 고밀도가 될 수 있지만 RFC 1341의 Content-Transfer-Encoding 섹션에는 모든 세부 사항이 있습니다. 상황이 다소 악화됩니다. 내 요약은 다음과 같습니다. MTP는 RFC 821의 정의에 따라 메일을 회선으로 제한합니다 1000 바이트의 문자가 각각 7 비트입니다. 즉, 파이프 아래로 전송하는 바이트 중 가장 중요한 최상위 비트를 1로 설정할 수 없음을 의미합니다. 보내려는 내용은 본질적으로이 제한을 준수하지 않는 경우가 많습니다. 파일 또는 유니 코드 문자가 포함 된 텍스트 파일이 파일의 바이트는 종종 8 번째 비트가 1로 설정됩니다. SMTP는이를 허용하지 않으므로 불일치를 해결하는 방법을 설명하기 위해 전송 인코딩을 사용해야합니다. Content-Transfer-Encoding 헤더는이 문제를 해결하기 위해 선택한 규칙을 설명합니다 .7Bit Encoding.7bit는 내 데이터가 각 문자에 대해 하위 7 비트 만 사용하는 US-ASCII 문자로 구성된다는 것을 의미합니다. 기본적으로 너의 죄수의 모든 바이트 텐트는 이미 SMTP의 제한 사항을 준수하므로 특별한 대우가 필요하지 않습니다. 그대로 읽을 수 있습니다. 참고로 7 비트를 선택하면 내용의 모든 줄이 길이가 1000 자 미만이라는 데 동의하는 것입니다. 콘텐츠가 이러한 규칙을 준수하는 한 7 비트는 최고의 전송 인코딩입니다. 추가 작업이 필요하지 않기 때문에 파이프에서 나오는 바이트를 읽는 것이 필요합니다. 또한 안구 7 비트 콘텐츠로 쉽게 읽을 수 있고 이해할 수 있습니다. 여기에 아이디어는 당신이 평범한 영어 텍스트로 글을 쓰면 괜찮을 것입니다. 하지만 2005 년에는 사실이 아니었고 그것은 사실이 아닙니다 .8Bit Encoding.8bit는 내 데이터가 확장 된 ASCII 문자를 포함 할 수 있다는 것을 의미합니다. 표준 US-ASCII 7 비트 문자 외부의 특수 문자를 나타냅니다. 7 비트와 마찬가지로 여전히 1000 비트 문자 제한이 있습니다. 8 비트와 마찬가지로 7 비트는 실제로 문자를 쓰거나 읽을 때 바이트를 변환하지 않습니다. wire 그것은 단지 당신이 gua가 아니라는 것을 의미합니다. 어떤 바이트도 최고 비트가 1로 설정되지 않을 것입니다. 이것은 당신에게 당신의 콘텐츠에 더 많은 자유를주기 때문에 7 비트에서 한 걸음 올라간 것처럼 보입니다. 하지만 RFC 1341에는이 재미있는 비트가 포함되어 있습니다. 이 문서의 간행물로서 메일 본문에 인코딩되지 않은 8 비트 또는 바이너리 데이터를 포함하는 것이 합법적 인 표준화 된 인터넷 전송이 없음 따라서 8 비트 또는 2 진 Content-Transfer-Encoding이 실제로 인터넷에서 합법적 인 경우는 없습니다. RFC 1341은 20 개가 넘습니다. 몇 년 전에 그 이후로 우리는 RFC 6152에서 8 비트 MIME 확장을 받았습니다. 하지만 그때조차도 선 제한이 적용될 수 있습니다. 이 확장이 SMTP 서버가 회선 길이를 제한 할 가능성을 없애지는 않는다는 사실은이 확장을 자유롭게 구현할 수 있지만 그럼에도 불구하고 라인 길이 제한은 1000 옥텟보다 낮지 않습니다. 바이너리 Encoding. binary는 라인 길이 제한이 없다는 것을 제외하고는 8 비트와 동일합니다. 원하는 모든 문자를 포함 할 수 있으며 추가 인코딩이 없습니다. Simil ar 8bit RFC 1341은 RFC 3030이 실제로 BINARYMIME. Quoted Printable로 이것을 확장 한 인코딩이 아닙니다. 8BITMIME 확장 이전에는 SMTP HTML 파일을 통해 7 비트가 될 수없는 컨텐트를 보낼 수있는 방법이 필요했습니다. 1000 자 이상의 행이있을 수 있으며 국제 문자가있는 파일이 좋은 예입니다. 인용 부호가있는 인쇄 가능 인코딩 RFC 1341의 5 절 1에 정의 된 내용은이 문제를 처리하도록 설계되었습니다. 두 가지 작업을 수행합니다. US-ASCII가 아닌 문자를 이스케이프하는 방법을 정의합니다. 문자를 사용하여 7 비트 문자로만 표현할 수 있습니다. 짧은 버전에서는 등호와 두 개의 7 비트 문자로 표시됩니다. 줄 수는 76자를 넘지 않아야하며 줄 바꿈 문자는 특수 문자로 표시됩니다 이스케이프 및 짧은 줄 때문에 사람이 7 비트 또는 8 비트보다 더 읽기가 어렵지만 훨씬 다양한 범위의 가능한 내용을 지원합니다. Base64 인코딩. 귀하의 데이터는 이미지 파일이 아닌 텍스트가 아닌 경우 많은 옵션이 있습니다. 7bit는 테이블 8 비트에서 제외되며 MIME 확장을 지원하지 않는 RFC는 quoted-printable RFC가 작동하기는하지만 모든 바이트가 실제로 비효율적입니다 3 characters. base64로 표현되는 데이터는 이러한 유형의 데이터에 대한 좋은 해결책입니다. 상대적으로 효율적인 4 US-ASCII 문자로 원시 바이트 3 개를 인코딩합니다. RFC 1341은 base64로 인코딩 된 데이터의 줄 길이를 76 자로 제한하여 SMTP 메시지이지만 고정 길이로 임의의 문자를 분할하거나 연결할 때 관리하기가 상대적으로 쉽습니다. 큰 단점은 base64로 인코딩 된 데이터는 사람이 볼 수없는 거의 평범한 문자 일지라도 거의 완전히 읽을 수 있다는 것입니다 .5 Content-Transfer-Encoding Header 필드 5 Content-Transfer-Encoding Header 필드. 이메일을 통해 유용하게 전송 될 수있는 많은 콘텐츠 유형은 자연 형식으로 8 비트 문자 또는 이진 데이터로 표시됩니다. 일부 전송 프로토콜을 통해 데이터를 전송할 수 없습니다. 예를 들어, RFC 821은 메일 메시지를 1000 자 미만의 행으로 7 비트 US-ASCII 데이터로 제한합니다. 따라서 이러한 데이터를 다른 문자로 다시 인코딩하기위한 표준 메커니즘을 정의해야합니다. 7-bit short-line format이 문서는 이러한 인코딩이 새로운 Content-Transfer-Encoding 헤더 필드에 의해 지정됨을 명시한다. Content-Transfer-Encoding 필드는 해당 Content-Transfer-Encoding 필드를 표현하기 위해 사용 된 변환 유형을 나타 내기 위해 사용된다. Content-Transfer-Encoding 값의 확산은 바람직하지 않고 불필요하지만 단일 Content-Transfer-Encoding 메커니즘 만 설정하는 것은 불가능한 것처럼 보입니다. 크게 2 진 데이터의 소형 및 효율적인 인코딩 및 7 비트 데이터가 아닌 대부분은 데이터의 판독 가능한 인코딩에 대한 요구 이러한 이유로, 적어도 2 개의 인코딩 메크 정보 전송 인코딩 필드는 데이터 유형의 기본 표현과 7 비트 메일 전송 프로토콜을 사용하여 쉽게 교환 할 수있는 표현 간의 변환 불가능한 매핑을 지정하기 위해 설계되었습니다. RFC 821 SMTP에 정의 된대로이 필드는 이전 표준에 의해 정의되지 않았습니다. 필드 s 값은 형식적으로 열거 된대로 인코딩 유형을 지정하는 단일 토큰입니다. 이 값은 대 / 소문자를 구분하지 않습니다. 즉, Base64 및 BASE64 및 bAsE64 모두 동등 함 7BIT의 인코딩 유형은 본문이 이미 7 비트 메일 준비 상태임을 요구합니다. 이것은 기본값입니다. 즉, Content-Transfer-Encoding 7BIT는 Content-Transfer-Encoding 헤더 필드 가 존재하지 않습니다. 8 비트, 7 비트 및 2 진 값 모두는 인코딩이 수행되지 않았 음을 의미합니다. 그러나 객체에 포함 된 데이터의 종류에 대한 표시로 유용 할 수 있습니다. 주어진 전송 시스템에서 전송을 위해 수행되어야 할 수도있는 인코딩 종류. 특히 8 비트 또는 다른 비트 폭 토큰과 바이너리 토큰의 차이점은 바이너리가 라인의 제한을 준수 할 필요가 없다는 것입니다 길이 또는 SMTP CRLF 의미에 따라 달라 지지만 비트 폭 토큰에는 이러한 준수가 필요합니다. 본문에 7 비트가 아닌 다른 비트 폭의 데이터가 포함되어있는 경우 적절한 비트 폭의 Content-Transfer-Encoding 토큰을 사용해야합니다 (예 : 8 비트 인코딩되지 않은 8 비트 폭 데이터의 경우 본문에 바이너리 데이터가 포함되어 있으면 바이너리 Content-Transfer-Encoding 토큰을 사용해야합니다. 필요한 경우 구현자가 새로운 Content-Transfer-Encoding 값을 정의 할 수 있지만 x 토큰을 사용해야합니다. 예를 들어 Content-Transfer-Encoding x-my-new-encoding과 같은 비표준 상태를 나타내는 X-가 붙은 이름 Content-Type과 하위 유형과 달리 새로운 Content-Transfer-Encoding 값의 생성은 명시 적이며 강력합니다 낙담했다. 잠재적 인 이익이 거의없는 상호 운용성을 저해한다. 이들의 사용은 협력하는 사용자 에이전트 간의 합의의 결과로만 허용된다. Content-Transfer-Encoding 헤더 필드가 메시지 헤더의 일부로 나타나면 해당 메시지의 전체 본문에 적용된다. Content-Transfer-Encoding 헤더 필드는 본문 부분 헤더의 일부로 나타나며 해당 본문 본문에만 적용됩니다. 엔터티가 multipart 또는 message 유형 인 경우 Content-Transfer-Encoding에 값이 허용되지 않습니다 예를 들어 7 비트, 8 비트 등의 비트 폭이나 바이너리와 같은 비트 폭 이외의 다른 문자를 사용할 수 있습니다. 전자 메일은 문자 지향적이므로 여기에서 설명한 메커니즘은 비트 스트림이 아닌 임의의 옥텟 스트림을 인코딩하는 메커니즘입니다. 비트 스트림이 인코딩되어야하는 경우 이러한 메커니즘 중 하나를 통해 네트워크 표준 비트 순서 big-endian을 사용하여 먼저 8 비트 바이트 스트림으로 변환해야하며, 여기서 스트림의 이전 비트는 바이트의 상위 비트가됩니다. ~에서 8 비트 경계는 0으로 채워 져야 함이 문서는 패딩 매개 변수가있는 응용 프로그램 Content-Type의 경우 이러한 패딩을 추가하는 메커니즘을 제공합니다. 여기서 정의 된 인코딩 메커니즘은 모든 데이터를 ASCII로 명시 적으로 인코딩합니다. 예를 들어 엔티티에 다음과 같은 헤더 필드가 있다고 가정하십시오. 이 본문은 원래 ISO-8859-1에 있었던 데이터의 base64 ASCII 인코딩이며 디코딩 후에 다시 해당 문자 세트에 있음을 의미하는 것으로 해석되어야합니다. 다음 섹션에서는 두 가지 표준 인코딩 메커니즘을 정의합니다. 새 콘텐츠 전송 인코딩의 정의는 명시 적으로 권장되지 않으며 절대적으로 필요한 경우에만 발생해야합니다. X-로 시작하는 것을 제외한 모든 콘텐츠 전송 인코딩 네임 스페이스는 향후 사용을 위해 IANA에 명시 적으로 예약되어 있습니다. 콘텐츠 전송 인코딩에 대한 개인 계약도 명시 적으로 권장하지 않습니다. 특정 콘텐츠 전송 인코딩 값은 특정 콘텐츠 형식에서만 사용할 수 있습니다. 특히 멀티 파트 및 메시지와 같은 다른 Content-Type 필드를 재귀 적으로 포함하는 Content-Type과 함께 7 비트, 8 비트 또는 바이너리 이외의 인코딩을 사용하는 것은 명백히 금지되어 있습니다. Content-Type 멀티 파트 또는 메시지 유형의 본문에 필요한 모든 인코딩은 인코딩되어야 할 실제 바디를 인코딩함으로써 가장 안쪽 레벨에서 수행 될 수 있습니다 .5 Content-Transfer-Encoding Header 필드. 이메일을 통해 유용하게 전송 될 수있는 많은 컨텐츠 유형은 자연스러운 형식으로 8 자 형태로 표현됩니다. 예를 들어 RFC 821은 메일 메시지를 1000 자로 된 7 비트 US-ASCII 데이터로 제한합니다. 따라서 재 인코딩을위한 표준 메커니즘을 정의해야합니다 그러한 데이터는 7 비트 단락 (short-line) 형식으로된다. 이 문서는 그러한 부호화가 새로운 Content-Transfer-Encoding 헤더 필드에 의해 표시되도록 명시한다. Content-Transfer-Encoding 필드는 Content-Type과 달리, Content-Transfer-Encoding 값의 확산은 바람직하지 않으며 불필요합니다. 단, 단일 Content-Transfer-Encoding 메커니즘을 설정하는 것은 불가능합니다. 가장 가능성이있는 것처럼 보입니다. 크게 2 진 데이터의 압축되고 효율적인 인코딩 및 7 비트 데이터가 아닌 전체적으로는 읽을 수없는 데이터 인코딩에 대한 욕구에는 절충안이 있습니다. 이러한 이유 때문에 적어도 두 가지 인코딩 메커니즘 Content-Transfer-Encoding 필드는 데이터 유형의 기본 표현과 다음과 같은 7 비트 메일 전송 프로토콜을 사용하여 쉽게 교환 할 수있는 표현 간의 변환 불가능한 매핑을 지정하기 위해 설계되었습니다. RFC 821 SMTP에 정의 된 필드이 필드는 이전 표준에 의해 정의되지 않았습니다. 필드 s 값은 열거 된대로 인코딩 유형을 지정하는 단일 토큰입니다 아래 공식적으로이 값은 대소 문자를 구분하지 않습니다. 즉, Base64와 BASE64 및 bAsE64는 모두 동등합니다. 인코딩 유형 7BIT에서는 본문이 이미 7 비트 메일 준비 표시로되어 있어야합니다. 이것은 기본값 인 Content - Transfer-Encoding Content-Transfer-Encoding 헤더 필드가 존재하지 않는다면 7BIT로 가정한다. 8 비트, 7 비트 및 2 진 값 모두는 인코딩이 수행되지 않았다는 것을 의미한다. 그러나 포함 된 데이터의 종류의 표시로 잠재적으로 유용하다. 개체 및 따라서 주어진 전송 시스템에서 전송을 위해 수행해야 할 수도있는 인코딩 종류 7bit는 데이터가 모두 US-ASCII 데이터의 짧은 줄로 표시된다는 것을 의미합니다. 8bit는 줄이 짧음을 의미하지만 거기에 상위 비트가 설정된 비 ASCII 문자 8 진수 일 수 있습니다. 2 진수는 비 ASCII 문자가있을뿐만 아니라 라인이 SMTP 전송에 충분할만큼 짧지 않다는 것을 의미합니다. 8bit 또는 비트 폭 토큰이 그러한 준수를 필요로하는 반면, 다른 가능한 비트 폭 토큰 및 이진 토큰은 라인 길이 또는 SMTP CRLF 의미론에 대한 제한을 준수 할 필요가 없다는 것입니다. 본문에 비트 - 너비가 7 비트가 아닌 경우 적절한 비트 너비 Content-Transfer-Encoding 토큰을 사용해야합니다. 예 : 8 비트 인코딩되지 않은 8 비트 데이터의 경우 본문에 2 진 데이터가 들어 있으면 이진 Content-Transfer-Encoding 토큰을 사용해야합니다. 구분 바이너리, 8 비트 등의 Content-Transfer-Encoding 값 사이의 차이는 중요하지 않은 것처럼 보일 수 있습니다. 즉, 모두 실제로 아무 것도 의미하지 않습니다. 즉, 전송할 데이터를 인코딩하지 않았습니다. 그러나 명확한 라벨링은 엄청난 가치가 있습니다 RFC 821 전송의 제한 사항을 충족시키지 못하는 데이터를 전송할 수있는 기능이 다른 미래의 메일 전송 시스템 간의 게이트웨이에이 문서를 게시 할 때 합법적 인 인터넷 전송은 없습니다. 메일 본문에 인코딩되지 않은 8 비트 또는 2 진 데이터 포함 인터넷에서 8 비트 또는 2 진 Content-Transfer-Encoding이 실제로 합법적 인 경우는 없습니다. 그러나 8 비트 또는 2 진 메일 전송이 현실화되는 경우 또는이 문서가 다른 8 비트 또는 2 진 가능 전송 메커니즘과 함께 사용될 때이 메커니즘을 사용하여 8 비트 또는 2 진 본문으로 분류해야합니다. Content-Transfer - 인코딩 필드는 인코딩 된 알고리즘이나 인코딩되지 않은 경우 전송 시스템 요구 사항 이외의 Content-Type에 대해 아무런 의미가 없습니다. 필요한 경우 구현자가 새 Content-Transfer-Encoding 값을 정의 할 수 있지만 x - 토큰을 사용해야합니다. Content-Transfer-Encoding x-my-new-encoding과 같은 비표준 상태를 나타 내기 위해 X-가 붙은 이름입니다. 그러나 Content-Type 및 하위 유형과 달리 새 Content-Transfer-Encoding 값의 생성은 명시 적이며 강력하게 낙담 한 잠재적 인 이익이 거의없이 상호 운용성을 저해하는 것으로 보이기 때문에 이들의 사용은 협력하는 사용자 에이전트 간의 합의의 결과로만 허용됩니다. Content-Transfer-Encoding 헤더 필드가 메시지 헤더의 일부로 나타나면 전체 해당 메시지의 본문 Content-Transfer-Encoding 헤더 필드가 본문 부분 헤더의 일부로 나타나는 경우 해당 본문 본문에만 적용됩니다. 엔터티가 multipart 또는 message 유형 인 경우 Content-Transfer-Encoding은 다음과 같습니다. 7 비트, 8 비트 등의 다른 값이나 바이너리는 허용되지 않습니다. 전자 메일은 문자 지향적이므로 여기에 설명 된 메커니즘은 비트 스트림이 아닌 임의의 바이트 스트림을 인코딩하는 메커니즘입니다. 비트 스트림은 이들 메커니즘 중 하나를 통해 인코딩되어야하며, 네트워크 표준 비트 순서 빅 엔디안을 사용하여 먼저 8 비트 바이트 스트림으로 변환되어야하며, 여기서 스트림의 이전 비트는 바이트 A 8 비트 경계에서 끝나지 않는 eam은 0으로 채워 져야 함이 문서는 패딩 매개 변수가있는 응용 프로그램 Content-Type의 경우 이러한 패딩을 추가하는 메커니즘을 제공합니다. 여기서 정의 된 인코딩 메커니즘은 명시 적으로 예를 들어, 이 엔티티가 본문이 원래 ISO-8859-1에 있던 데이터의 base64 ASCII 인코딩임을 의미하는 것으로 해석되어야하며 해당 문자 집합에 다시있을 것입니다. 다음 섹션에서는 두 가지 표준 인코딩 메커니즘을 정의합니다. 새 콘텐츠 전송 인코딩의 정의가 명시 적으로 권장되지 않으며 절대적으로 필요한 경우에만 발생해야합니다. X-로 시작하는 것을 제외한 모든 콘텐츠 전송 인코딩 네임 스페이스는 향후 사용을위한 IANA 콘텐츠 전송 인코딩에 관한 개인 계약도 명백히 권장하지 않습니다. 특정 콘텐츠 전송 - 인코딩 값은 특정 Content - 유형 특히, 다른 Content-Type 필드, 특히 multipart 및 message Content-Types를 반복적으로 포함하는 Content-Type과 함께 7 비트, 8 비트 또는 바이너리 이외의 인코딩을 사용하는 것은 명시 적으로 금지되어 있습니다. 인코딩 할 필요가있는 실제 본문을 인코딩하여 가장 안쪽 레벨에서 수행해야합니다. 인코딩 제한 사항. 멀티 파트 또는 메시지 유형의 데이터에 대한 content-transfer-encodings 사용에 대한 금지가 지나치게 제한적으로 보일 수 있지만, 데이터가 인코딩 알고리즘을 여러 번 통과하는 중첩 인코딩을 방지하고 올바르게 표시되도록 여러 번 디코딩해야합니다. 중첩 인코딩은 이러한 여러 인코딩의 분명한 효율성 문제 외에도 사용 도구에 상당한 복잡성을 추가합니다 , 그들은 메시지의 기본 구조를 모호하게 할 수있다. 특히, 그들은 단순히 여러 개의 디코딩 연산이 f 메시지가 포함하는 객체의 유형을 지정하십시오. 중첩 된 인코딩을 금지하면 특정 메일 게이트웨이의 작업이 복잡해질 수 있지만 중첩 된 인코딩이 사용 도구에 미치는 영향보다 문제가 적습니다. 내용 유형과 내용 간의 관계에 대해 자세히 알아보십시오. - 인코딩 (Encoding). Content-Transfer-Encoding은 인코딩 될 Content-Type의 특성으로부터 추론 될 수 있거나 적어도 특정 Content-Transfer-Encodings이 특정 콘텐츠 유형이 경우가 아닌 여러 가지 이유가 있습니다. 먼저 메일에 사용되는 다양한 유형의 전송을 고려할 때 일부 인코딩은 일부 Content-Type 전송 조합에는 적합 할 수 있지만 다른 경우에는 적합하지 않을 수 있습니다. 예를 들어, 8 비트 전송은 특정 문자 집합의 텍스트에는 인코딩이 필요하지 않으며 7 비트 SMTP에는 이러한 인코딩이 분명히 필요합니다. 둘째, 특정 Content-Types에는 다른 cir에서 다른 유형의 전송 인코딩이 필요할 수 있습니다 예를 들어, 많은 포스트 스크립트 본문은 완전히 7 비트 데이터의 짧은 줄로 구성 될 수 있으므로 인코딩이 거의 또는 전혀 필요하지 않습니다. 다른 포스트 스크립트 본문 특히 레벨 2 포스트 스크립트의 이진 인코딩 메커니즘을 사용하는 포스트잇 본문은 이진 전송 인코딩을 사용하여 합리적으로 표현할 수 있습니다. Content-Type은 개방형 사양 메커니즘으로 의도되었으므로 Content-Type과 인코딩 간의 연관을 엄격하게 지정하면 응용 프로그램 프로토콜의 사양이 특정 하위 수준 전송과 효과적으로 결합됩니다. Content-Type은 사용중인 모든 전송 및 제한이 무엇인지 알아야합니다. 인코딩은 변환 할 수 없습니다. 인용 및 인쇄 가능한 base64 인코딩은 이러한 변환이 가능하도록 설계되었습니다. 변환은 줄 바꿈 처리입니다. quoted-printable에서 base64로 변환 할 때 줄 바꿈을 변환해야합니다 마찬가지로 CRLF 시퀀스는 텍스트 데이터를 변환 할 때만 따옴표 붙은 인쇄 가능 줄 바꿈으로 변환해야합니다. CANONICAL ENCODING MODEL. 이 초안의 초안에서는 전자 메일 데이터가 정규 형식으로 변환되어 인코딩 될 때의 모델, 특히이 프로세스가 CRLF의 처리에 어떻게 영향을 미치는지에 대한 모델입니다. 새 줄의 표현이 시스템마다 크게 달라지기 때문에 인코딩을위한 표준 모델은 다음과 같습니다. 부록 H.5로 제시됨. 1 인용 - 인쇄 가능한 내용 - 전송 - 부호화. 인용 - 인쇄 가능한 부호화는 크게 ASCII 문자 집합의 인쇄 가능한 문자에 해당하는 옥텟으로 구성된 데이터를 나타 내기위한 것이다. 결과 옥텟은 메일 전송에 의해 변경 될 것 같지 않습니다. 인코딩되는 데이터가 대부분 ASCII 텍스트 인 경우 데이터의 인코딩 된 형식은 사람이 대부분 인식 할 수있는 상태로 유지됩니다. ch는 전적으로 ASCII이다. 또한 메시지가 문자 변환이나 줄 바꿈 게이트웨이를 통과 할 때 데이터의 무결성을 보장하기 위해 Quoted-Printable로 인코딩 될 수있다. 이 인코딩에서 옥텟은 다음에 의해 결정되는 것으로 표현되어야한다. 규칙 1 일반 8 비트 표현. 인코딩되는 데이터의 정규 형식의 개행 규칙에 따라 줄 바꿈을 나타내는 모든 옥텟은 그 다음에 옥텟 s의 두 자리 16 진수 표현으로 표시 될 수 있습니다 value 16 진수 알파벳의 숫자는 0123456789ABCDEF입니다. 16 진수 데이터를 보낼 때 대문자를 사용해야합니다. 그러나 확실한 구현은 영수증에서 소문자를 인식하도록 선택할 수 있습니다. 예를 들어 12 ASCII 양식 피드 값을 나타낼 수 있습니다 0C로, 값 61 ASCII EQUAL SIGN은 3D로 나타낼 수 있습니다. 다음 규칙이 대체 인코딩을 허용하는 경우를 제외하고이 규칙은 필수입니다. 규칙 2 문자 리터럴 33 ~ 60, 그리고 62 ~ 126을 포함한 십진수가 10 진수 인 옥텟은 각각 8 진수를 통한 EXCLAMATION POINT와 TILDE를 통한보다 큰 옥텟에 해당하는 ASCII 문자로 표현 될 수 있습니다. 규칙 3 White Space. Octets 9와 32 값은 각각 ASCII TAB HT와 SPACE 문자로 표현 될 수 있지만 인코딩 된 라인의 끝 부분에 나타나서는 안됩니다. 인코딩 된 라인의 TAB HT 또는 SPACE 문자는 반드시 해당 라인에서 인쇄 가능한 문자 특히, 인코딩 된 라인의 끝 부분에서 부드러운 라인 바꿈을 나타냅니다. 규칙 5는 하나 이상의 TAB HT 또는 SPACE 문자 다음에 올 수 있습니다. 인코딩 된 끝 부분에 값 9 또는 32가있는 옥텟 행은 규칙 1에 따라 표시되어야합니다. 일부 MTA 인 메시지 전송 에이전트, 한 사용자에서 다른 사용자로 메시지를 전송하거나 이러한 전송의 일부를 수행하는 프로그램은 텍스트 행을 패드하는 것으로 알려져 있기 때문에 필요합니다 SPACE를 사용하는 다른 사람들은 줄 끝에서 공백 문자를 제거하는 것으로 알려져 있습니다. 따라서 Quoted-Printable 본문을 디코딩 할 때 줄의 후행 공백은 중간 전송 에이전트에 의해 반드시 추가되어야하기 때문에 삭제해야합니다. Rule 4 줄 바꿈. 텍스트 본문 부분의 줄 바꿈은 인코딩되는 데이터의 표준 표현 다음에 나오는 표현과는 별도로 CRLF 시퀀스 인 RFC 822 줄 바꿈으로 표시해야합니다. - 인쇄 가능한 인코딩 격리 된 CR 및 LF, 또는 LF CR 및 CR LF 시퀀스가 ​​표준 형식에 따라 바이너리 데이터로 나타나도록 허용 된 경우 이들은 각각 0D, 0A, 0A 0D 및 0D 0A 표기법을 사용하여 나타내야합니다. 구현은 다양한 내용 유형의 지역 표현을 직접 인코딩하도록 선택할 수 있습니다. 특히 CRLF 구분 기호 이외의 줄 바꿈 규칙을 사용하는 시스템에서 일반 텍스트 자료에 적용될 수 있습니다. sible이지만 줄 바꿈의 생성은 줄 바꿈 시퀀스의 대체 표현이 사용되는 경우를 설명하기 위해 일반화되어야합니다. 규칙 5 소프트 줄 바꿈. 따옴표 붙은 인쇄 가능 인코딩에는 인코딩 된 줄이 76자를 넘지 않아야합니다. 따옴표 붙은 인쇄 가능 인코딩으로 인코딩해야합니다. 부드러운 줄 바꿈을 사용해야합니다. 인코딩 된 줄의 마지막 문자와 같은 등호는 인코딩 된 텍스트에서 중요하지 않은 부드러운 줄 바꿈을 나타냅니다. 따라서 줄의 원시 형식이 따옴표 붙은 인쇄 가능 인코딩에서 다음과 같이 표현할 수있는 단일 코드화되지 않은 줄. 이것은 긴 줄이 사용자 에이전트에 의해 복원되는 방식으로 인코딩되는 메커니즘을 제공합니다. 76 자 제한은 후행 CRLF를 포함하지만, 등호를 포함하여 다른 모든 문자를 센다. 하이픈 문자는 Quoted-Printable 인코딩에서 자체로 표현되므로 인용 부호로 인쇄 가능한 인코딩 된 b를 캡슐화 할 때는주의해야한다. 캡슐화 경계가 인코딩 된 본문의 어느 곳에도 나타나지 않도록하는 좋은 전략은 인용 부호로 묶을 수있는 본문에 나타날 수없는 문자 시퀀스를 포함하는 경계를 선택하는 것입니다. multipart의 정의를 참조하십시오 quoted-printable 인코딩은 인용 부호로 인쇄 가능한 인코딩으로 인코딩 된 전송 본문에서 가독성과 신뢰성 사이의 절충안을 나타냅니다. 대부분의 메일 게이트웨이에서 안정적으로 작동하지만 일부 게이트웨이에서는 완벽하게 작동하지 않을 수 있습니다 이론적으로 EBCDIC 게이트웨이는 인용 가능한 인쇄 가능 본문을 디코드하고 base64를 사용하여 다시 인코딩 할 수 있지만 이러한 게이트웨이는 아직 존재하지 않습니다. Base64 Content-Transfer-Encoding 방식으로 높은 수준의 신뢰성을 제공합니다 EBCDIC 게이트웨이를 통해 합리적으로 안정적인 전송을 얻으려면 규칙 1에 따라 ASCII 문자를 인용해야합니다. 자세한 내용은 부록 B를 참조하십시오. 사용되는 따옴표 붙은 인쇄 가능한 데이터는 일반적으로 줄 단위로 가정됩니다. 인터넷 메일에서 일반 텍스트 메일이 항상 변경되는 것과 같은 방법으로 따옴표 붙은 인쇄 가능 데이터 줄 사이의 구분이 전송 중에 변경 될 수 있습니다 새로운 개행 규칙이 다른 시스템 사이를 지날 때 그러한 변경이 데이터의 손상을 구성하는 경우, 인용 가능한 인쇄 가능한 인코딩 대신 base64 인코딩을 사용하는 것이 더 현명합니다 .5 2 Base64 Content-Transfer-Encoding. Base64 Content-Transfer-Encoding은 사람이 읽을 수없는 형식으로 옥텟의 임의의 시퀀스를 표현하도록 설계되었습니다. 인코딩 및 디코딩 알고리즘은 간단하지만 인코딩 된 데이터는 인코딩되지 않은 데이터보다 약 33 % 더 일관됩니다. RFC 1113에 정의 된대로 Privacy Enhanced Mail 응용 프로그램에 사용됩니다. base64 인코딩은 RFC 1113에서 수정되었으며 하나의 변경 base64는 em US-ASCII의 65 문자 하위 집합이 사용되어 인쇄 가능한 문자 당 6 비트를 표시 할 수 있습니다. 특수 처리 기능을 나타 내기 위해 65 번째 추가 문자가 사용됩니다. 이 하위 집합은 중요한 특성을 갖습니다 US ASCII를 포함한 모든 버전의 ISO 646에서 동일하게 표현되며 서브 세트의 모든 문자는 모든 버전의 EBCDIC에서도 동일하게 나타납니다. UUENCODE 유틸리티에서 사용되는 인코딩 및 Level의 일부로 지정된 base85 인코딩과 같은 기타 널리 사용되는 인코딩 2 PostScript는 이러한 속성을 공유하지 않으므로 메일에 대한 이진 전송 인코딩이 충족해야하는 이식성 요구 사항을 충족시키지 못합니다. 인코딩 프로세스는 입력 비트의 24 비트 그룹을 4 개의 인코딩 된 문자의 출력 문자열로 나타냅니다. 왼쪽에서 오른쪽으로 진행하면서, 24 비트 입력 그룹은 3 개의 8 비트 입력 그룹을 연결함으로써 형성된다. 이 24 비트는 4 개의 연결된 6 비트 그룹으로 처리되며, 각각은 하나의 숫자 i로 변환된다 n base64 알파벳 base64 인코딩을 통해 비트 스트림을 인코딩 할 때 비트 스트림은 가장 중요한 비트가 먼저 정렬되어야합니다. 즉, 스트림의 첫 번째 비트는 첫 번째 비트의 상위 비트가됩니다 8 번째 비트는 첫 번째 바이트의 하위 비트가되는 식입니다. 각 6 비트 그룹은 64 개의 인쇄 가능한 문자의 배열에 대한 인덱스로 사용됩니다. 인덱스에 의해 참조되는 문자는 출력에 배치됩니다 문자열 아래의 표 1에 나와있는 이러한 문자는 보편적으로 표현 가능하도록 선택되며 SMTP, CR, LF 및이 문서에 정의 된 캡슐화 경계에 특별한 의미가있는 문자는 제외됩니다. Base64 Alphabet입니다. 인코딩 된 바이트의 출력 스트림은 각각 76 문자 이하의 라인으로 표현되어야합니다. 표 1에없는 모든 줄 바꿈 또는 기타 문자는 소프트웨어 디코딩으로 무시해야합니다. Base64 데이터에서 표 1 이외의 문자 휴식과 다른 공백은 전송 오류를 나타낼 수 있으며, 일부 상황에서는 경고 메시지 또는 메시지 거부가 적절할 수 있습니다. 인코딩되는 데이터 끝에 24 비트 미만이 사용되면 특수 처리가 수행됩니다. 전체 인코딩 양자는 다음과 같습니다. 본문 끝에서 항상 완료 입력 그룹에서 24 비트 미만의 입력 비트가 사용 가능한 경우 오른쪽에 0 비트가 추가되어 정수 비트 수의 그룹이 형성됩니다. 실제 입력 데이터를 나타내지 않아도되는 출력 문자 위치 문자로 설정됩니다. 모든 base64 입력이 정수의 정수이기 때문에 다음과 같은 경우에만 발생할 수 있습니다. 1 인코딩 입력의 최종 양자가 여기에 24 비트의 정수 배가되면 인코딩 된 출력의 최종 단위는 패딩이없는 4 자, 2 인코딩 입력의 최종 퀀텀은 여기에서 정확히 8 비트이며 인코딩 된 출력의 마지막 단위는 2 자 뒤에 2 자의 패딩 문자 또는 3 자 인코딩 입력의 최종 퀀텀은 정확히 16 비트입니다. 인코딩 된 출력의 마지막 단위는 3 자 뒤에 하나의 패딩 문자가옵니다. 기본 64 인코딩이 텍스트 소재에 직접 적용되는 경우 줄 바꿈을 위해 올바른 옥텟을 사용하도록 지정해야합니다. 텍스트 형식의 줄 바꿈은 base64 인코딩보다 먼저 CRLF 시퀀스로 변환되어야합니다. 중요한 점은 일부 구현에서 이전의 정규화 단계가 아닌 인코더가 직접 수행 할 수 있다는 것입니다. 참고 There is no need to worry about quoting apparent encapsulation boundaries within base64-encoded parts of multipart entities because no hyphen characters are used in the base64 encoding. Please Whitelist This Site. I know everyone hates ads But please understand that I am providing premium content for free that takes hundreds of hours of time to research and write I don t want to go to a pay-only model like some sites, but when more an d more people block ads, I end up working for free And I have a family to support, just like you. If you like The TCP IP Guide, please consider the download version It s priced very economically and you can read all of it in a convenient format without ads. If you want to use this site for free, I d be grateful if you could add the site to the whitelist for Adblock To do so, just open the Adblock menu and select Disable on Or go to the Tools menu and select Adblock Plus Preferences Then click Add Filter at the bottom, and add this string Then just click OK. Thanks for your understanding. Sincerely, Charles Kozierok Author and Publisher, The TCP IP Guide. NOTE Using software to mass-download the site degrades the server and is prohibited If you want to read The TCP IP Guide offline, please consider licensing it Thank you. The Book is Here and Now On Sale. Enjoy The TCP IP Guide Get the complete PDF. MIME Content-Transfer-Encoding Header and Encoding Methods Page 2 of 3.MIME Encoding Methods. To send non-ASCII data in MIME, it is necessary that it be encoded The Content-Transfer-Encoding header is used to specify how a MIME message or body part has been encoded, so that it can be decoded by its recipient The following types of encoding are defined.7bit This indicates that the message is already in ASCII form compatible with RFC 822 It is the default and is what is assumed if no Content-Transfer-Encoding header is present.8bit binary These synonymous values mean the message has been encoded directly in 8-bit binary form Yes, I did just say that this would violate the rules of RFC 822 These options appear to have been included to support future mechanisms for transporting binary data directly RFC 1652 describes an SMTP extension that discusses this in part SMTP Service Extension for 8bit-MIMEtransport sic, there is no space between MIME and transport However, the standard is clear that this still does not allow the transfer of raw binary data using SMTP and RFC 822.quoted-printa ble This is a special encoding that is used when most of the data is ASCII text, but when it contains certain violations of the rules of RFC 822 These illegal sections are converted using special encoding rules so the data as a whole is consistent with RFC 822.base64 An encoding used to allow arbitrary binary data to be represented in ASCII form The data is then sent as ASCII and decoded back into binary form by the recipient. The quoted-printable and base64 encodings are the most interesting ones, because they are what allow non-RFC-822 data to be sent using RFC 822.Key Concept MIME supports four encoding methods 7bit 8bit binary quoted-printable and base64 7bit encoding is standard ASCII and is used for text quoted-printable encoding is for output that is mostly text but has some special characters that must be encoded base64 is used for arbitrary binary files The 8bit encoding method is defined in MIME but not used for RFC 822 messages. This encoding method is used when the message is mostly ASCII only the problem bytes are encoded The result is that RFC 822 compatibility is achieved while maintaining most of the data as regular text so it can still be easily understood by a human. An example of where this would be letters with tildes or accents, such as those used in French or Spanish Another would be a text message formed using an editor that inserts carriage return characters in the middle of a line Most of the message is still text The quoted-printable encoding can be used here, with the carriage return characters represented as 0D the hexadecimal value of the character prepended by an equal sign RFC 2046 contains more details on how this is done. Following content is been captured at TcpMon. Request made by SoapUI Pro 3 0 2.POST tf6 services xdsrepositoryb Accept-Encoding gzip, deflate Content-Type multipart related type application xop xml start start-info application soap xml action boundary ---- Part1728349551 1260534830078 MIME-Version 1 0 User-Agent Jakar ta Host Content-Length 13318.------ Part1728349551 1260534830078 Content-Type application xop xml charset UTF-8 type application soap xml action ProvideAndRegisterDocumentSetRequest Content-Transfer-Encoding 8bit Content-ID.------ Part1728349551 1260534830078 Content-Type text plain charset us-ascii Content-Transfer-Encoding 7bit Content-ID. This is depeche s document. Request made by xdstest tool. POST tf6 services xdsrepositoryb Content-Type multipart related boundary MIMEBoundaryurnuuid613A2BD2D99F1E6B5912 60534073176 type application xop xml start start-info application soap xml action urn ihe iti 2007 rovideAndRegisterDocumentSet-b User-Agent Axis2 Host Transfer-Encoding chunked.20f1 --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type application xop xml charset UTF-8 type application soap xml Content-Transfer-Encoding binary Content-ID.--MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type text plain Content-Transfer-Encoding binary Content-ID 1 g. This is my document. From where can i set Content-Transfer-Encoding as binary. At the nist public registry, you can view the text document which is been sent as an attachment. I have also tried making Encode Attachments as true under TestRequest Properties But its not working either Thanks for the help.

No comments:

Post a Comment