what is "application/octet-stream"

써니·2021년 2월 8일
4

Network

목록 보기
1/4
인턴으로 입사한지 4개월만에.... 작지만, 본격 파트 개발을 담당하게 되었다...얏호!

What is the problem?

  • 서버에서 업로드되는 다른 영상들은 정상적으로 업로드 되어 다운로드를 눌렀을 때 새 chrome tab에서 재생되는데, 전달받은 코드로 올린 영상은 tab에서 재생되지 않고 다운로드를 해야 재생해볼 수 있다

How did I start?

  • 한 이틀 동안 dotenv 패키지 설치와 azure-blob-storage 패키지 버전 때문에 삽질하다가 겨우 실행한 번 해보고, 본격 코드 공부에 들어갔다.
    (PYTHON) 프로젝트 별로 가상환경을 나누고, 패키지 이름과 버전을 잘 확인하자!!!

Where to begin

  • 우선 어떤 차이가 있는지를 알아보기 위해 두 영상의 속성을 비교해보았다.
  • 이게 웬걸? ContentType이 다르다 (video/mp4 v.s application/octet-stream)

- MIME (Multipurpose Internet Mail Extensions)

  • "다목적 인터넷 메일 확장"이라는 뜻으로, 웹을 통해 여러 형태의 파일을 전달하는데 사용됨
    (이메일과 함께 첨부한 파일을 텍스트 문자로 전환하여 email system으로 전달하기 위해 개발됨)
  • 기존의 UUEncode 방식: ASCII 파일만 가능
    => MIME: Binary File(music, movie, word files,..) -> Text File
  • Content-type정보를 파일의 앞부분에 담음
출처: https://dololak.tistory.com/130

특정 content-type의 File은 웹서버로부터 전달 받아 웹브라우저에서 열 수 있다??

1) 웹브라우저에서 서버에 접속하여 html 문서를 요청하여, html 문서에 있는 이미지 경로를 불러옴
2) 이미지의 경로에 있는 파일이 웹브라우저에서 지원되는 MIME Type이라면 웹브라우저로 열어볼 수 있다.

MIME의 TYPE?

  • 개별 타입
    1) text
    - 특정 문자셋으로 구성된 텍스트 정보 or formatted text 정보
    ex: text/plain, text/html, text/css, text/javascript
    2) multipart
    - 모든 종류의 이미지
    ex: audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
    3) audio
    - 모든 종류의 오디오
    ex: audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
    4) video
    - 모든 종류의 비디오
    ex: video/webm, video/ogg
    5) application
    - 모든 Binary Data
    ex: application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

  • 멀티파트 타입: 일반적으로 다른 MIME타입들을 지닌 개별적인 파트들로 나누어지는 문서의 카테고리 (합성된 문서를 나타내는 방법)
    ex: multipart/form-data, multipart/byteranges


그래서 application/octet-stream이 뭔데?

  • 결국 MIME의 개별 타입 중 application에 속하는 타입인디, 8비트 단위의 binary data라는 뜻
  • "특별히 표현할 수 있는 프로그램이 존재하지 않는 데이터의 경우 기본값으로 octet-stream을 사용한다." = 브라우저가 보통 자동으로 실행하지 않거나 실행할지 묻기도 하는 타입이다~
  • Content-Disposition 헤더를 attachment 로 줌으로써 해당 데이터를 수신받은 브라우저가 파일을 저장 또는 다른이름으로 저장 여부를 설정하게 할 수 있다.

참고: Content-Disposition

  • 일반적인 HTTP 응답에서 Content-Disposition 헤더는
    - 컨텐츠가 브라우저에 inline되어야 하는 웹페이지 자체 or 일부인지
    • attachment로써 다운로드되거나 로컬에 저장될 용도로 쓰이는지
      알려주는 헤더

<참고>
https://server-talk.tistory.com/183
https://dololak.tistory.com/130

5개의 댓글

comment-user-thumbnail
2021년 11월 11일

SVN 커밋 할 때 볼 수 있는 application/octet-stream 가 뭔지 궁금해서 찾아봤는데
정리해주신 글 덕분에 쉽게 이해할 수 있었습니다.
감사합니다!

1개의 답글
comment-user-thumbnail
2022년 1월 25일

개발에 참여하게 된 프로젝트에 멀티파트엔티티에 담을 바이트어레이바디에 application/octet-stream에 대한 내용을 이해하는데 도움이 됐습니다 감사합니다.

1개의 답글
comment-user-thumbnail
2024년 10월 22일

저랑 같은 써니네요... 감사합니다..! 잘보고갑니다

답글 달기