HTTP 헤드 정보에서 encode decode

park712의 이미지

오늘 HTTP 도규먼트 보니 이런 내용이 있습니다.
HTTP헤드에 encoding 필드가 있는데
이곳에 x-gzip x-compress 이런값이 들어 간다.
그러면서 설명이 HTTP 요청시 설정된 압축논리에 따라 encode하고 요청을 받을때는 설정된 논리에 따라 decode한다
(여기서 encode decode는 압축과 해제임)

그렇다면, 모든 HTTP 헤드는 TCP 단으로 내려가기전 응용계층에서 encode되어지는지요?
그리고, 패킷캡쳐 프로그램에서(이더리얼, tcpdump등)에서 HTTP 캡쳐해 보면 사용자가 다 볼 수 있거던요.?(encode안되었다는 증거일까요?)
아니면, 패킷캡쳐 프로그램이 HTTP 데이터를 encode직전에서 캡쳐하는 것인지요?
이것도 아니면 프로그램 내부에서 HTTP 헤더를 decode 하는건지요?
캡쳐 프로그램은 데이터를 OSI 7계층중 어디서 캡쳐하는 것일까요?
감사합니다.

hyperhidrosis의 이미지

데이타를 gzip 으로 압축하니까, 압축은 웹서버가 하고,
해제는 브라우저가 하겠죠.

결국 osi-7 레이어로 보면 인코드/디코드 하는건 어플리케이션 레이어가 되겠죠..
중간에 패킷 가로채서 보면 압축된 데이타가 들어 있고요...

park712의 이미지

패킷보면 압축 안된 plain text가 보이는데요
그럼 서버는 압축하고 브라우저는 해제하고 항상 이렇게 작동하는건가요? (아무래도 아닌듯 합니다.?)
제가 요즘 HTTP 프로토콜 공부하거던요
도규먼트는 한국정보통신기술협회에서 만든 도규입니다.
하여간 댓글 감사합니다.
다른 분들도 올려주세요..

후회없이 살자

hyperhidrosis의 이미지

클라이언트에서 보내는건 gzip 으로 묶어서 보내도 된다... 이고

실제로 서버의 부하 때문에 서버에서 압축해서 보내는 경우는

거의 없는걸로 알고 있습니다..

익명 사용자의 이미지

대부분의 브라우저에서 '결과 압축해서 보내는 것도 환영~'이라고 요청 헤더에 적어주지만 결과 데이터를 압축해서 보내주는 웹사이트는 hyperhidrosis님 말씀대로 얼마 되지가 않습니다. 그리고 그 중 비교적 유명한 곳이 http://www.google.com/ 입니다.

아시다시피 웹서버가 인코딩(압축)을 해서 보내주는 HTTP 응답은 헤더에

Quote:
Content-Encoding: gzip

과 같은 필드가 있어서, 이를 가지고 데이터의 인코딩 여부를 알 수 있습니다. 데이터가 평문으로 보이는 것은 아마 서버가 인코딩을 하지 않고 평문으로 응답 데이터를 보내서일 것입니다. 하지만 인코딩이 된 데이터라 하더라도 친절한 패킷캡처프로그램씨는 데이터 내용을 풀어서 평문으로 보여주기도 합니다. 이더리얼의 경우, 헤더 필드에 포커스가 있을 때는 인코딩 된 데이터를 보여주다가 데이터에 포커스를 주면 평문으로 보여줍니다.

리눅스의 경우 캡쳐가 이더넷과 IP의 사이, 즉 링크 계층과 네트워크 계층의 사이에서 이뤄집니다.

park712의 이미지

답변 주신분들 정말 감사합니다.
테스트 모두 해 봤고요.
정말 구글만 특이 하네요..
데이터가 decode (압축)된 상태로 클라이언트로 보내고 있습니다.
특히, 서버 등 HTTP 헤드 부분을 보니 보안에 무지 신경쓴 흔적이 보입니다.
다른 사이트는 몇 개 안 봤는데 적어도 구글은 그렇습니다.
개발자가 네트워크 프로토콜을 제대로 알고 코딩한 듯 합니다.

후회없이 살자

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.