MIME이란 무엇인가?

    MIME이란 무엇인가?






    MIME이란? Multipurpose Internet Mail Extensions의 약자로 간략히 말씀을 드리면 파일 변환을 뜻한다고할 수 있습니다.

    MIME는 이메일과 함께 동봉할 파일을 텍스트 문자로 전환해서 이메일 시스템을 통해 전달하기 위해 개발되었기 때문에 이름에 Internet Mail Extension 입니다 그렇지만 현재는 웹을 통해서 여러형태의 파일 전달하는데 쓰이고 있습니다.





     MIME의 사용하는 이유와 인코딩과 디코딩


    MIME을 사용하기전에는 UUEncode 방식을 이용하고 있었으며 UUEncode에는 치명적인 단점이 있었습니다 그러한 담점을 보강하여 새로운 인코딩 방식이 등장하게 되었으니 이것을 MIME이라고 합니다.


    예전에는 텍스트파일을 주고받는데 ASCII로 공통된 표준에 따르기만하면 문제가 없었습니다 하지만 네트워크를 통해 ASCII 파일이 아닌 바이너리 파일을 보내는 경우가 생기게 되었습니다 이러한 바이너리파일에는 음악파일, 무비파일, 워드파일 등등의 문서를 지칭하는 것입니다.

    하지만 ASCII만으로는 전송이 불가능하여 이러한 바이너리 파일들을 기존의 시스템에서 문제 없이 전달하기 위해서는 텍스트파일로 변환이 필요하게 되었습니다

    이러한 텍스트파일로 변환을 인코딩(Encoding)이라고하며, 텍스트 파일을 바이너리 파일로 변환하는 과정을 디코딩(Decoding)이라고 합니다.



    인코딩 : 바이너리 파일에서 텍스트 파일로 변환


    디코딩 : 텍스트 파일에서 바이너리 파일로 변환



    이러한 과정을 통해 텍스트만 전달할 수 있는 기존의 이메일 시스템에서도 여러가지 바이너리 파일들을 자유롭게 주고 받을수 있게 되었습니다.







     MIME 데이터 처리 과정



    MIME으로 인코딩 한 파일은 Content-type 정보를 파일의 앞부분에 담게 되며, Content-type은 여러가지의 타입이 있습니다.


    특정 Content-Type은 파일을 웹서버로 부터 전달 받아 웹브라우저에서 열수 있으며, 혹은 열수 있으며, 혹은 열수 다는 것입니다 열수 있다 열수 없다느에 대해 의아해 하실수 있으실 것입니다 

    이런 내용은 웹브라우저에서 서버에 접속하여 html 문서를 요청하면서 html 문서에 있는 이미지 파일의 경로를 불러올수 있습니다 이러한 과정에서 이미지의 경로에 있는 파일이 웹브라우저에서 지원되는 MIME Type이라면 웹브라우저를 이용하여 열어볼 수 있습니다


    또한 바이너리 파일(음악파일, 무비파일, 워드파일 등등)도 마찬가지 입니다 주로 쓰고 있는 대부분의 포맷인 .gif .jpg .mov 등등의 파일들은 웹브라저에서 무리 없게 열리게 되는데 브라우저에서 지원하지 못하는 유형은 따로 지정을 하여야 합니다.



    MIME 형식


    파일 이름 확장명 : .gif


    MIME 형식 : image/gif

    [파일의 종류 / 파일포맷]


    MIME 형식을 보시면 앞부분의 파일의 종류(image) / 파일포맷(gif) 형태로 정의 됩니다


    * MIME 형식에는 공백, 대/소문자를 구분하지 않으며 대부분 소문자로 쓰입니다.








     MIME의 Type



    1. 개별 타입


    1) text

    - 특정 문자셋으로 구성된 텍스트 정보나 포스트스크립트 같은 formatted text 정보 전송에 사용합니다.


    일반적인 서브타입 : text/plain, text/html, text/css, text/javascript



    2) multipart

    - 모든 종류의 이미지를 나타내며, 비디오는 포함되지 않습니다.


    일반적인 서브타입 : audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav



    3) audio

    - 모든 종류의 오디오 파일을 전송합니다.


    일반적인 서브타입 : audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav



    4) video

    - 모든 종류의 비디오 파일을 전송합니다.


    일반적인 서브타입 : video/webm, video/ogg



    5) application

    - 모든 이진 데이터(바이너리 데이터)를 전송합니다.


    일반적인 서브타입 : application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml,  application/pdf



    ▶ 특정 서브타입이 없는 텍스트 문서들은 text/plain 로 사용되어야 한다고 하며, 이진문서는 application/octet0stream이 사용되어야 합니다.



    2. 멀티파트 타입


    multipart/form-data


    multipart/byteranges


    멀티파트 타입은 일반적으로 다른 MIME 타입들을 지닌 개별적인 파트들로 나누어지는 문서의 카테고리를 가리킵니다. 즉 이타입은 합성된 문서를 나타내느 방법입니다.




    3. 주요 MIME 타입


    1) application/octet-stream - 이타입은 이진파일을 위한 기본값입니다.

    - 실제로 잘 알려지지 않은 이진 파일을 의미하므로, 브라우저는 보통 자동으로 실행하지 않거나 실행해야 할지 묻기도 합니다 Cotent-Disposition 헤더가 값 attachment와 합께 설정되었고 'Save As' 파일을 제항ㄴ하는지 여부에 따라 브라우저가 그것을 다루게 됩니다


    2) text/plain - 텍스트파일에 대한 기본값입니다.

    - 실제로 알려지지 않은 텍스트 파일일지라도 브라우저들은 그것을 디스플레이할 수 있다고 가정합니다



    3) text/css - 웹페이지 내에서 보통 인터프리터되어야 하는 모든 css 파일들은 text/css 파일이 되어야 합니다.

    - 대부분의 서버는 .css 접미사를 가진 파일들을 css 파일이라고 인식하지 못하여 text/plain 혹은 application/octet-stream MIME 타입으로 전송하는 경우가 있습니다 이러한 경우 대부분의 브라우저들이 CSS 파일이라고 인식하지 못하여 무시하게 될것입니다



    4) text/html - 모든 HTML 컨텐츠는 이 타입과 합께 서브되어야 합니다.

    - application/xml+html 과 같은 XHTML을 위한 대체 MIME 타입들은 대부분은 사용하지 않는다고 합니다.



    5) 이미지 타입


    MIME Type 이미지 Type


    image/gif GIF 이미지 (무손실 압축, PNG에 의해 대체됨)


    image/jpeg JPEG 이미지


    image/png PNG 이미지


    image/svg+xml SVG 이미지 (벡터 이미지)




    6) 오디오와 비디오 타입


    MIME 타입 - audio/wave, audio/wav, audio/x-wav, audio/x-pn-wav

    - WAVE 컨테이너 포맷 내 오디오 파일


    MIME 타입 - audio/webm

    - WebM 컨테이너 포맷 내 오디오 파일. 가장 일반적인 오디오 코덱인 Vorbis 그리고 Opus이 사용됩니다


    MIME 타입 - video/webm

    - WebM 컨테이너 포맷 내 오디오를 지원 가능한 비디오 파일. VP8 그리고 VP9이 이 안에서 가장 일반적으로 사용되는 비디오 코덱입니다


    MIME 타입 - audio/ogg

    - OGG 컨텐이너 포맷 내 오디오 파일


    MIME 타입 - video/ogg

    - OGG 컨테이너 포맷 내, 오디오를 지원 가능한 비디오 파일


    MIME 타입 - application/ogg

    - ogg 컨테이너 포맷을 사용하는 오디오 혹은 비디오 파일


    7) multipart/form-data

    - multipart/form-data는 브라우저에서 서버로 HTML Form의 내용을 전송 시 사용할 수 있습니다 멀티 파트 문서 형식으로써, 경계로 구분되어지는 다른 파트들로 구성됩니다 각 파트는 그 자체로 개체이며 자신만의 HTTP 헤더를 가지는데, 파일 업로드 필드를 위한 헤더로 Content-Disposition, 그리고 가장 일반적인 것 중 하나인 Content-Type이 있습니다



    8) multipart/byteranges

    - multipart/byteranges 는 브라우저로 회신하는 부분적인 응답 전송의 컨테그슽 내에서 사용됩니다 Partial Content 상태 코드가 전송된 경우, MIME 타입은 문서가 각각의 요청된 범위들 중 하나의 몇 가지 파트들로 구성되어 있음을 알려주기 위해 사용됩니다. 다른 멀티파트 타입처럼, Content-Type은 경계선 문자열을 정의하기 위해 boundary 디렉티브를 사용합니다. 각각의 다른 파트들은 문서의 실제 타입을 가진 Content-Type 헤더와 그들이 나타내는 범위를 가진 Content-Range를 지니고 있습니다.


    Posted by Server-talk 서버이야기