HTTP 메시지 포맷에 대해 언급할때 클라이언트와 서버간의 패킷은 요청 메시지와 응답 메시지로 이루어져 있었습니다.
여기서 클라이언트가 요청할 때의 메시지 방식 (GET, POST, HEAD, PUT, DELETE)을 상황에 따라 전송한다고 했습니다. 또한 응답 메시지 역시 상황에 따라 상태 코드와 문장(200 OK, 301 Moved Permanently, ... )을 포함하여 응답 메시지를 전송합니다.
또한 쿠키와 웹 프락시(웹 캐시)에 대해 다뤘습니다.
위 내용을 정리한 이후 이번 포스팅에서는 실제 웹 패킷을 확인해 보겠습니다.
먼저 이번 포스팅을 하면서 파로스(Paros)라는 클라이언트 웹 프락시 서버를 아래와 같이 미리 구현해 두었습니다.
Paros proxy 클라이언트에서 사용하는 웹 프락시 입니다.
사용자의 브라우저와 서버 사이에 웹 프락시 서버를 구동시켜 지나가는 패킷을 모두 확인할 수 있는 기능이 있습니다.
물론 패킷 조작도 가능하기때문에 어떤 사용자가 사용하느냐에 따라 좋은 도구가 될 수도 혹은 악의적인 도구가 될수도 있는 툴입니다.
Paros를 설치하기전에 확인해 두어야 할점은 현재 시스템에 Java 개발 툴인 JDK가 미리 설치 되어 있어야 합니다.
(Paros 홈페이지에서는 JRE설치도 가능하다고 나와 있지만 안되더군요; 결국 둘다 설치 해버렸습니다.)
글을 쓸때의 Java환경입니다.
Paros 설치가 완료 되면 아래 그림과 같이 프로그램이 실행됩니다.
Paros 설치와 실행이 된다면 이번에는 브라우저를 설정해 주어야 합니다. 클라이언트 웹 프락시이므로 브라우저와 서버(인터넷) 사이에 설정해주는 작업입니다.
브라우저(Windows Internet Explorer)의 도구 -> 인터넷 옵션 -> 연결 -> LAN 설정(가장 아래 버튼) 을 설정하면 아래와 같이 LAN 설정 윈도우 창이 뜹니다.
위 그림처럼 프록시 서버 사용함을 체크(빨간 원)를 하고 주소를 127.0.0.1 포트 번호 8080으로 설정한후 확인 버튼을 누르시면 됩니다. 서버의 주소를 로컬호스트(Local Host)로 지정하며, Paros 프록시 서버의 기본 디폴트 포트 번호인 8080으로 설정해주는것입니다.
만일 포트번호 8080을 사용하는 다른 클라이언트 서버를 사용하고 있다면 Paros에서 Tools->Options...->Local proxy를 확인해 보시면 프록시 서버의 주소와 포트번호 설정을 할 수 있습니다.
간단하게 클라이언트가 웹서버에 요청 메시지를 보내는것과 서버로 부터 응답 메시지를 받는 과정을 풀이해 보겠습니다.
위에서 설명한 Paros proxy 설정을 마친 후, 브라우저를 통해 www.google.com을 접속 하도록 하겠습니다.
(간단한 예를 들기 위해 google.com을 선택했으므로 그외 다른 목적은 없습니다.)
www.google.com의 기본 홈페이지에 접속할때의 모습입니다.
각각 3번의 요청 메시지와 응답메시지가 발생합니다.
아래 글을 보실때 웹,HTTP 이해(1) 에서의 요청,응답 메시지 포맷을 함께 참조 하시는것을 추천합니다.
1 요청 메시지(Request message)
GET http://www.google.co.kr/ HTTP/1.0
Accept: */*
Accept-Language: ko
UA-CPU: x86
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322) Paros/3.2.13
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: -----------------------------------------;
Host: www.google.co.kr
======================================================================================================
쿠키 내용은 삭제 했습니다.
1 응답 메시지 (Response message)
HTTP/1.0 200 OK
Date: Mon, 04 May 2009 11:05:27 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Type: text/html; charset=UTF-8
Server: igfe