티스토리 뷰
MIME TYPE이란 |
이미지나 사진 동영상 파일등은 바이너리 데이터이다. 즉 0과 1의 조합으로 구성되어 있다. 초기 이메일 시스템에서는 본문에 들어갈 텍스트 뿐만 아니라 첨부파일도 전송 가능하게 하기 위해서 바이너리 데이터인 첨부파일을 아스키 코드로 인코딩하는 방법을 찾아야 했다. 즉, 이메일은 아스키 코드로만 주고 받고 할 수 있었다.
MIME이란 Multipurpose Internet Mail Extension 이란 뜻인데, 보면 다목적의 인터넷 메일 확장이라는 뜻이다. 즉, 바이너리 데이터인 첨부파일을 아스키 코드로 인코딩하여 본문에 덧붙이겠다는 뜻이다.(EXtension의 의미)
보낼때 인코딩된 바이너리 데이터(사진,이미지등)가 어떤 타입인지를 명시해야 받는 측에서 그것대로 해석 할 수 있다.
보면 aaa.png라는 이미지를 마임 타입으로 변환하여 전송하고 수신자는 마임타입을 다시 원본 바이너리 데이터로 복호화 한다. 즉, 마임 타입이란 바이너리 -> 아스키 인코딩 방식이라고 보면 될 것 같다. 그리고, 그 바이너리 데이터가 어떤것이냐를 마임 타입에 명시한다. 그래야, 받는 측에서 제대로 복호화 할 수 있으니까
MIME TYPE의 구성 |
|
MIME TYPE은 메인타입/서브타입 식으로 구성된다. 예를 들면 image/jpeg, image/png 등과 같이 표현 된다.
application/octet-stream (이진데이터(메인)/8비트 스트림(서브))
8비트 단위로 해석되는 이진 데이터 타입이다.
1 2 3 4 5 6 7 | <form action="/inserProfile" method="post" enctype="multipart/form-data"> 이름 : <input type="text" name="userName"><br> 성별 : <input type="checkbox" name="male">남</input> <input type="checkbox" name="female">여</input><br> 사진 : <input type="file" name="profileImage"><br> <input type="submit" value="전송"> </form> |
이미지 바이너리 데이터는 아스키 코드로 변환된 형태로 존재할것으로 예상된다(확실하지않다)
HTTP에서 사용되는 MIME TYPE들 |
application/x-www-form-urlencoded
HTTP에서 사용되는 마임 타입들이다. GET방식의 경우에는 http 요청 바디부분에 아무것도 들어가지 않기 때문에, 헤더의 컨텐츠 타입부분에 아무것도 넣지 않아도 된다. 하지만 POST방식에는 헤더의 컨텐츠 타입 부분을 반드시 명시해야 이 HTTP 패킷을 수신한 측에서 정확하게 복호화 할 수 있다.
application/x-www-form-urlencoded
HTTP 요청 바디 부분에 KEY & VALUE의 형태의 입력값이 포함된다.
text/plain
HTTP 요청 바디 부분에 텍스트가 들어간다.
multipart/form-data
HTTP 요청 패킷 바디 부분에 boundary라고 불리는 구분자를 통해 html의 form태그의 각 입력값들이 구분되어져서 들어가 있는 형태이다.
각 입력값 마다 마임 타입이 다르기 때문에 주타입이 multipart인것이다. 즉, 여러개의 파트로 구성되어 있다는 의미.
왜 구분자를 통해서 입력값을 구분했냐면, HTML의 form태그에서는 텍스트 뿐만 아니라 바이너리 데이터도 인풋으로 담을 수 있기 때문이다. 바이너리 데이터는 GET방식에서의 구분자인 &을 구분자가 아닌 데이터로 인식하기 때문에 &이 아닌 다른 것으로 boundary라는것이 각 인풋을 구분하기 위해서 필요한것이다.
출처: http://mommoo.tistory.com/60 [개발자로 홀로 서기]
출처: http://dololak.tistory.com/130 [코끼리를 냉장고에 넣는 방법]
'컴퓨터 공학과 졸업 > 기본 개념' 카테고리의 다른 글
[퍼옴]도메인이란 (0) | 2018.08.03 |
---|---|
웹 프로그램의 파일 구조 (0) | 2018.07.27 |
HTTP (0) | 2018.06.28 |
URI = URL + URN (0) | 2018.06.26 |
DBCP (0) | 2018.02.14 |
- Total
- Today
- Yesterday
- reflow
- promise
- Polyfill
- webpack
- mobx
- typescript
- useRef
- es6
- react hooks
- storybook
- type alias
- atomic design
- hydrate
- state
- computed
- javascript
- reactdom
- design system
- return type
- Action
- reducer
- async
- server side rendering
- Babel
- useEffect
- rendering scope
- props
- Next.js
- await
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |