메일의 경우에는 메일의 본문이나 복수의 첨부 파일을 붙여서 함께 보낼 수 있는데 이것은 MIME(Multipurpose Internet Mail Extensions: 다목적 인터넷 메일 확장 사양)으로 불리고 있다. MIME는 이미지 등의 바이너리 데이터를 아스키 문자열에 인코딩하는 방법과 데이터종류를 나타내는 방법 등을 규정하고 있다. 이 MIME의 확장 사양에 있는 멀티파트(Multipart)라고 하는 여러 다른 종류의 데이터를 수용하는 방법을 사용하고 있는 것이다. HTTP도 멀티파트에 대응하고 있어 하나의 메세지 바디 내부에 엔티티를 여러개 포함시켜 보낼 수 있다. (주로 이미지나 텍스트 파일 등을 업로드 하는데 사용됨)
multipart/form-data
Web 폼으로부터 파일 업로드에 사용된다.
mutipart/byterages
상태 코드 206(Partial Content)리스폰스 메세지가 복수 범위의 내용을 포함하는 때에 사용된다.
Content-Type:multipart /form-data: boundary=AaB03x --AaB03x Content -Disposition:form-data:name="field1" Joe Blow --AaB03x Content-Disposition:form-data: name="pics",filename="file.txt" Content -Type : text/plain ...(file.1.txt데이터)... --AaB03x--
HTTP/1.126 Partial Content Data:Fri,13 Jul 2012 0245:GMT Last-Modified:Fri,31 Aug 2007 02:02:20 GMT Content-Type : multipart/byreranges; boundary=THIS_STRING_SEPARTES --THIS__STRING_SEPARATES-- Content-type:application/pdf Content-Range:bytes 500-999/8000 ...(지정한 범위의 데이터)... --THIS__STRING_SEPARATES-- Content-type:application/pdf Content-Range:bytes 7000-7999/8000 ...(지정한 범위의 데이터)... --THIS__STRING_SEPARATES--
HTTP 메세지로 멀티파트를 사용할 때에는 Content-type 헤더 필드를 사용한다. 멀티파트 가각의 엔티티를 구분하기 위해 "boundary"문자열을 사용하고 각 엔티티의 선두에는 "boundary"문자열 앞에 "--"을 삽입한다.(예를 들면 "--AaB03x","--THISSTRING_SEPARATES--"). 멀티파트의 마지막에는 그 문자열의 마지막 부분에 "--"를 삽입해서(예를 들면, "AaB03x--"--THISSTRING_SEPARATES--") 마무리한다. 멀티파트는 파트마다 헤더 필드가 포함되고 또한 파트의 중간에 멀티 파트를 마드는것과 같이 파트를 내부에 포함할 수 있다고 한다.
요즘에 대용량의 파일을 다운받다가 커넥션이 끊어지면 처음부터 다시 다운로드를 받아야하는 문제점이 있었다.이러한 문제를 해결하기 위해서 일반적인 리줌(resume)이라는 기능이 필요하게 되었다. 이 기능을 실현하기 위해서는 엔티티의 범위를 지정해서 다운로드 할 필요가 있다. 이와 같은 범위를 지정하여 리퀘스를 하는것을 레인지 리퀘스트라고 한다. 레인지 리퀘스트를 사용하면 10000바이트 정도 크기의 리소스에서 5001~10000 바이트의 범위(바이트 레인지)만을 리퀘스트 할 수 있다.
레인지 리퀘스트에 대한 리스폰스는 상태 코드 206 Partuak Content 라는 리스폰스메세지가 되돌아오고 또한 복수 범위의 레인지 리퀘스트에 대한 리스폰스는 mutipart/byreranges로 리스폰스가 되돌아온다 . 서버가 레인지 리퀘스트에 지원하지 않는 경우에는 상태 코드 206 OK 라는 리스폰스 메세지로 완전한 엔티티가 돌아온다.
콘텐츠 네고시에이션이란, 예를 들어 내용은 같지만 영어판과 한국어판과 같이 표시되는 언어가 서로 다른 웹페이지의 경우 서로 다른 언어를 주고 받는 브라우저가 같은 URL에 엑세스 할 때 한국어판 웹 페이지를 표시하도록 하는 구조를 콘텐츠 네고시에이션(Content Negotiation)이라고 한다.
<Content Negotiation에 대한 자세한 이야기는 여기 링크 참조>