본문 바로가기

CS

MIME 의 개념과 사용 목적

  • MIME이란?

MIME은 Multipurpose Internet Mail Extensions의 약자로 간단히 말해 파일 변환을 의미합니다.
Internet Mail Extensions라는 이름이 붙은 이유는 원래 MIME은 이메일과 함꼐 동봉할 파일을 텍스트 문자로 변환해서 이메일 시스템을 통해 전달하기 위해 개발 했기 때문입니다.

그렇지만 현재는 웹을 통해서 여러가지 파일 전달을 하는데 쓰이고 있습니다.

  • MIME을 사용하는 이유

웹에서 파일의 확장자는 별 의미가 없습니다. 그 파일의 확장자에 맞는 프로그램 실행이 중요한 문제죠
그러므로 각 문서와 함께 올바른 MIME 타입을 전송하도록, 서버가 MIME 타임을 정확히 설정하는 것이 중요합니다.

브라우저들은 리소스를 내려 받았을 때 해야할 기본 동작이 무엇인지를 결정하기 위해 MIME 타입을 사용합니다.

  • MIME의 구조

MIME의 구조는 매우 간단한데 '/' 로 구분된 두 개의 문자열인 타입과 서브타입으로 구성됩니다.
타입은 카테고리를 나타내고 서브타입은 각각의 타입에 한정됩니다.
서브 타입에는 개별 타입과 멀티파트 타입으로 구분됩니다.

  • 개별 타입

개별 타입은 문서의 카테고리가 될 수 있고 다음 중에 하나입니다.

타입 설명 서브타입 예시
text 텍스트를 포함하는 모든 문서를 나타내며 이론상 인간이 읽을 수 있어야 한다. text/plaing, text/html, text/css,
text/javascript
image 모든 종류의 이미지를 나타낸다. image/gif, image/png, image/jpeg,
image/bmp, image/webp
audio 모든 종류의 오디오 파일들을 나타낸다. audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
video 모든 종류의 비디오 파일들을 나타낸다. video/webm, video/ogg
application 모든 종류의 이진 데이터를 나타낸다. application/octet-stream, application/xml, application/pdf, application/xthml+xml ....


특정 서브 타입이 없는 텍스트 문서들에 대해서는 text/plain 이 사용되어야 합니다.
특정 혹은 알려진 타입이 없는 이진 문서에 대해서는 application/octet-stream이 사용되어야 합니다.

  • 멀티파트 타입
multipart/form-data multipart/byteanges


멀티파트 타입은 합성된 문서를 나타내는 방법입니다.

예를 들어 아래의 HTML 이 있다고 가정했을때 해당 form 테그는 text 정보와 image 정보를 업로드 하여 특정 경로로 전송 하려고 합니다.

<form action="특정 파일 경로" Mthod="post" enctype="multipart/form-data"> 이름 : <input type="text" name="userName"> 사진 : <input type="file" name="profileImage"> <input type="submit" value="전송"> </form>


multipart/type은 위의 예시와 같이 개별 타입 여러개를 함께 묶어 전송하는 경우에 사용된다고 할 수 있습니다.

  • MIME 타입을 정확하게 설정해야하는 이유

예를 들어 엑셀과 메모장이 데이터를 읽는 기준은 다릅니다

똑같은 "코딩" 이라는 문자열을 저장할 때 엑셀은 각 'ㅋ', 'ㅗ' 'ㄷ', 'ㅣ', 'ㅇ' 를 4바이트씩 나눠서 저장하고 메모장에서는 8바이트씩 나눠서 저장한다고 가정해 봅시다. 둘다. 바이너리 파일 이기 때문에 메모장에서 엑셀파일을 읽을수 있고 엑셀에서 메모장을 읽을 수 있지만 각자 데이터를 읽는 기준이 다르기 때문에 데이터가 깨져서 읽힐것 입니다

프로그램을 실행 할 떄 제일 먼저 해더에서 MIME 타입을 확인하고 타입에 맞는 프로그램을 실행하기 때문에 정확하게 MIME 타입을 설정 하는 것은 매우 중요합니다

  • MIME 타입 설정 얘시
// JSP // html 파일 설정 <%@ page contentType="text/html" charset="euc-kr" %> // xml 파일 설정 <%@ page contentType="text/html" charset="euc-kr" %>


위의 예시는 각각 JSP에서 html, xml 파일을 생성하기 위해 MIME type을 설정한 예시 이다.

여기서 궁굼한 점은 contentType 이라는 단어이다.

  • ContentType이란?

브라우저로 어떤 자원을 보낼때 (파일이나 문서), 웹 서버는 일련의 HTTP 헤더로 파일이나 자원을 포함하는 바이트의 Stream을 앞에 보낸다. 이런 헤더는 클라이언트에게 웹 서버와 커뮤니케이션 세부 사항을 묘사한다.

헤더에는 웹 서버의 소프트웨어 타입, 서버의 날짜와 시간, HTTP 프로토콜, 사용중인 커넥션 타입등을 지정하는데 가장 중요한 것은 보내지는 자원의 ContentType이 포함되는 것이다.

content-Type은 헤더에 의해 지정되는데 이값은 MIME type의 종류중 하나이다. MIME 타입을 확인하고나서 해당되는 타입으로 바이너리 데이터를 변환해서 보여 줄 수 있는 것이다

반응형

'CS' 카테고리의 다른 글

쿠키와 세션  (0) 2022.01.14
유니코드의 개념과 사용 목적  (0) 2022.01.12
WEB 서버와 WAS의 차이  (0) 2022.01.12
Base64 Encoding 이란?  (1) 2022.01.07
도메인이란?  (0) 2022.01.06