월간 인기 게시물

게시물 111건
   
HTTP 프로토콜 헤더정보 - 서버요청
글쓴이 : 최고관리자 날짜 : 2009-12-01 (화) 10:58 조회 : 15227
글주소 :
                             

HTTP 프로토콜

 HyperText Transfer Protocl www(World Wide Web)으로 접속하는 통신 수단이고 오늘날의 웹에 적용해서 사용되고 있습니다. 정적인 페이지에서 동적인 페이지로 만들기위해 발전되었고 복잡하고 웹 애플리케이션을 지원하기 위하여 만들어진 프로토콜입니다. HTTP는 고객이 Request를 보낸 메시지에 근거한 모델을 사용합니다. 그리고 서버는 Response를 돌려줍니다. 덧붙여 HTTP 필터가 가끔 사용자들에게 돌아가는 경우도 있다. 예를 들어 서버에서 발생한 오류 코드들을 브라우저로 보여줄 때가 있다.

 

HTTP Request

 다음은 전형적인 HTTP request 내용이다.

GET /books/search.asp HTTP/1.1

Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg,

application/xshockwaveflash, application/vnd.msexcel,

application/vnd.mspowerpoint, application/msword, */*

Referer: http://wahh-app.com/books/default.asp

Accept-Language: en-gb,en-us;q=0.5

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

Host: wahh-app.com

Cookie: lang=en

 

 

GET /books/search.asp HTTP/1.1

- GET메소드를 이용하여 search.asp라는 문서를 요청하며, 이 때 HTTP1.1버전을 사용한다.

 

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg,

- 클라이언트는 서버에게 옵션헤더 정보를 보내 자신이 설정한 내용과 받아들일 문서의 형식을 알린다. 모든 헤더 정보는 각 헤더 이름과 값을 가즌 행별로 주어진다. 그리고 사용자는 헤더의 끝을 알리기 위해 공백행을 보낸다.

 

- 요청과 헤더를 보낸 후에, 클라이언트는 추가로 다른 데이터를 보낼수있다. 이 때 POST메소드를 사용하는 CGI프로그램을 이용한다.

 

Request에는 크게 세가지 부분으로 이루어져있다.

첫번째 라인에는 HTTP명령어와 사용자가 질의한 파일이나 자원을 표시하는 URL, 그리고 HTTP 버전 번호로 이루어진다. 두번째 부분은 사용자와 서버에서 보내는 데이터ENTITY에 대한 정보를 제공하는 헤더 정보가 포함되고, 세번째 부분은 사용자 요청으로 서버에게 보내는 데이터인 ENTITY의 몸체이다.

 

 

 메소드

메소드는 사용자 요구 사항의 첫째 라인에서 시작한다. 서버에게 사용자의 목적을 알리는 역할을 하는데, HTTP에서는 미리 정의 된 GET, HEAD, POST가 있다. 물론 다른 메소드도 지원하지만 현재 서버에서 폭넓게 지원하지는 않는다. 참고로 메소드는 대소문자를 구분한다.

 

 

 GET 메소드

GET 메소드는 서버에서 명시된 URI에 위치 정보에 대한 요청으로 웹 브라우저가 문서를 받아 보는데 사용되는 일반적인 방법이다. GET 요청의 결과는 서버에서 접근할 수있는 파일, 프로그램이나 CGI등의 결과 값, 하드웨어 장치로부터의 출력등의 여러방식으로 생성될 수 있다.

 사용자가 GET 메소드를 사용하여 요청할 때, 서버는 상태 표시줄, 헤더, 요청된 데이터로 응답한다. 서버에서 오류가 발생하거나 권한이 아닌 상태로 인해 요청을 진행시킬수 없다면 서버는 적절한 오류 메세지를 보낸다.

 

GET이 요청하는 실제 데이터 부분은 항상 비어있다. GET메소드는 근본적으로 파일을 달라는 요청상태로 이용된다. 사용자가 요청하는 파일이나 프로그램은 일반적으로 서버에서 전체 경로명에 의해 식별된다. 또한 GET 메소드는 폼 태그를 통해 CGI같은 프로그램으로 입력된 데이터를 보내는데 사용되기도 한다. 위에서도 언급했듯이 비어있는 ENTITY몸체를 가지고 있으므로 입력된 자료는 요청의 GET행에 있는 URL에 덧붙혀진다.

GET /books/search.asp?q=wahh HTTP/1.1

위의 예는 서버에서 클라이언트가 입력한 q의 값 wahh를 나타낸다.

q wahh <form>태그의 키와 값을 나타내며 2개 이상의 키와 값을 전송할때는 &기호에 의해 추가 할수있다.

 

HEAD 메소드

 HEAD 메소드는 서버가 응답해야 할 데이터를 보내지 않는다는 것을 제외하면 GET 메소드와 같다.  HEAD 메소드는 파일이나 자원에 대한 헤더 정보만을 요구한다.

 클라이언트는 다음과 같은 예의 정보를 원한다.

 - 캐시 관련 질의에 유용한 문서의 수정 시간

 - 도착 시간을 측정하거나 문서의 더 작은 버전을 요청을 결정하는 페이지

 레이아웃에 유용한 문서의 크기

 - 클라이언트가 특정 문서만 검색할 수 있도록 해주는 문서의 유형

 - 주문형 서버 질의를 가능하게 하는 서버의 유형

 서버가 제공하는 헤더 정보의 대부분은 선택적이며 모든 서버들이 제공하는 것은 아니다. 또한 클라이언트에게 유익한 설계는 요구하는 헤더 정보를 서버가 전달하지 못할 경우, 서버가 융통성 있게 응답하고 기본적인 조치를 취하도록 하는것이다.

 

POST 메소드

 POST 메소드는 클라이언트가 요청한 데이터를 서버에게 보내게 한다. 데이터는 서버에서 접근할 수 있는 데이터를 다룰 수 있는 프로그램(CGI)에 전달된다.

POST 메소드는 다음과 같은 애플리케이션에서 사용될 수 있다.

 - 글을 올릴수 있는 네트워크 서비스

 - 명령행에서 실행되는 프로그램

 - 서버에 있는 문서의 주석

 - 데이터베이스 조작

서버는 POST 메소드와 각종 헤더들을 처리한 후, ENTITY 몸체를 URI에 지정된 프로그램에 전달한다. POST 메소드에서 가장 일반적으로 사용되는 인코딩 방법은 URL인코딩이다. 폼으로부터 전달된 데이터가 CGI처리를 위한 변수와 값으로 변환되게 한다.

 

기타 메소드들에는 LINK, UNLINK, PUT, DELETE, OPTIONS, TRACE, CONNECT 등이 있다.(자세한 정보는 구글신에게 기도를 드리자!)

 

 

HTTP Response

다음은 전형적인 HTTP Respose 내용이다.

HTTP/1.1 200 OK

Date: Sat, 19 May 2007 13:49:37 GMT

Server: IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix)

Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc

Pragma: no-cache

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Content-Type: text/html;charset=ISO-8859-1

Content-Language: en-US

Content-Length: 24246

(                                공백행                                    )

 

HTTP/1.1 200 OK

서버는 HTTP버젼, 상태코드, 설명으로 응답을 한다. HTTP버전은 서버가 응답하기 위해 사용하는 HTTP의 버전을 나타내며, 상태코드는 사용자가 요청한 서버의 결과를 나타내는 세자리 숫자이다. 설명은 우리들이 이해할 수 있는 텍스트로 되어있다.

 위의 내용의 서버가 사용자의 요청에 HTTP 1.1버전을 사용했다는 것을 나타내고 200이란 상태 코드는 사용자의 요청이 성공적으로 됐다는 것을 의미한다. OK 200에 대한 우리들이 이해할 수 있는 텍스트이다.

 

공백행은 헤더의 끝을 나타낸다.

 

 

HTTP Header

 HTTP 헤더는 클라이언트와 서버 사이에서 모든 종류의 정보를 전송하는데 이용되며 크게 4가지로 분류할 수 있다.

 General - 클라이언트, 서버 또는 HTTP와 관계된 정보

 Request - 문서 양식과 서버의 매개 변수들

 Response - 응답을 보내는 서버에 대한 정보

 Entitiy - 클라이언트와 서버 사이에 전송되는 데이터에 대한 정보

HTTP메시지에 있는 모든 헤더는 헤더 이름을 포함하여 콜론, 공백, 헤더의 값 순으로 구성된다. 헤더 이름은 대소문자를 구별하지 않는다. 또한 헤더의 값은 적어도 하나의 공백이나 탭 문자를 각행에 붙임으로써 여러 줄로 확장하여 쓸 수 있다.

일반 헤더와 ENTITY헤더는 서버와 클라이언트 모두 동일하다.

 

General Header
일반 헤더는 클라이언트의 요청과 서버의 응답 양쪽에서 사용될 수있다.

일반 헤더는 다음과 같은 내용을 가지고 있다.

- Cache-Control
Cache-control:  directives
쉼표로 구분된 목록에 캐싱 지시문을 지정

 

캐시 요청 지시문

 . no-cache           캐시 하지 않는다.

 . no-store            신속히 넘긴 후에 정보를 제거한다.

 . max-age = seconds      seconds에 지정한 것보다 오래된 응답은 보내지 않는다.

 . max-stale [=seconds] 만료된 데이터를 보낸다. 만약 seconds가 지정되어 있다면 지정한 숫자보다 적은
                                           만료된 데이터를 보
낸다.

 . min-fresh = seconds     명시된 seconds의 수 이후의 변경된 새 데이터만 보낸다.

 . only-if-cached   새로운 데이터를 검색하지 않고 캐시에 있는 데이터만 반환한다.

 

캐시 응답 지시문

 . public                 어떠한 캐시라도 캐시할수 있다.

 . private               공유된 캐시는 캐시하지 않는다.

 . no-cache           캐시하지 않는다.

 . no-transform      데이터를 변환하지 않는다.

 . must-revalidate  클라이언트는 데이터를 재확인 해야 한다.

 . proxy-revalidate 개인적인 클라이언트 캐시를 제외하고 데이터를 재확인 해야한다.

 . max-age=seconds        문서는 지정된 seconds만큼만 변화가 없는 상태라고 생각

 

Connection
Connection:  options

options에서는 연결을 위해 지정하는데 프록시 서버에 의한 연결은 포함하지 않는다. close연결 옵션은 클라이언트나 서버 둘 중 하나가 연결을 해제하기를 원한다는 것을 알린다.

 

Date

Date:  dateformat

현재의 날짜와 시간을 표시한다.

) Mon, 11 May 2000 07:45:00 GMT

때로는 이전과 호환을 위해 RFC-850 ANSI C asctime() 도 사용할 수 있다.

Monday, 11-May-98 07:45:00 GMT

Mon May 11 07:45:00 2000

단 년도 항목에 2자리를 사용으로 인한 문제가 발생할 수 있다.

 

MIME-Version
MIME-Version:  version
HTTP 트랜젝션에서 사용되는 MIME(RFC-2045[7])의 버전을 말한다.

메시지의 ENTITY몸체가 MIME를 따르지 않으면 이 헤더는 생략될 수 있다. 만약 틀랜잭션에서 MIME-encoded데이터를 호출하지만 이 헤더가 삭제되었다면 디폴트로 1.0을 사용한다.

 

Progma
Pragma: no-cache
프록시 시스템에 대한 지시문을 말한다. 이 헤더는 목표가 되는 서버에서는 무시된다.

HTTP는 이 헤더를 위해 no-cache라는 지시어만 정의 한다. HTTP 1.0에서, 이 것은 그 로컬 캐시 대신 서버로부터의 문서를 요구하도록 프록시 서버에 명령한다.

, HTTP1.1 Cache Control:no-cache를 주로 사용한다.

 

Transfer-Encoding

Transfer-Encoding:  encoding_type

안전한 전송을 위해 메시지 본체에 어떤 종류의 변환이 적용이 됐는지 나태낸다.

 

Upgrade

Upgrade:  protocol/version

우선하는 프로토콜을 명시한다. 응답 코드 101 Switching Protocols과 연결하여 사용된다.

) Upgrade: HTTP/1.2

 

Via

Via:  protocol host   [comment]…


이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.