인터넷을 사용하면서 많이 사용하는 프로토콜 중에 하나가 HTTP 이다. 패킷 분석을 하다 보면 많이 보는 프로토콜 종류 또한 HTTP 이다. 패킷분석과는 약간 거리가 있지만, HTTP 를 테스트 할 수 있는 도구를 공유해 보고자 한다. 일단 이름은 'WBox' 이고, 다음 경로에서 파일을 다운로드 받을 수 있다.
[소스파일]
http://www.hping.org/wbox/wbox-5.tar.gz
[윈도우 바이너리 파일]
http://www.hping.org/wbox/wbox-3.zip
윈도우에서도 사용할 수 있도록, 컴파일된 파일이 있으므로 윈도우 사용자도 쉽게 사용해볼 수 있다. cygwin 환경에서 컴파일 된 것이므로 압축을 풀어보면 wbox.exe 와 cygwin1.dll 파일이 있으며, 이 dll 파일이 함께 있어야 한다.
WBox 로 할 수 있는 것들은 HTTP 와 관련된 것들로,
- 웹 페이지를 다운로드 받는데 걸리는 시간 테스트
- 웹서버, 웹 애플리케이션 스트레스 테스트
- 이외 헤더보기, HTTP compression 동작 테스트, HTTP/1.0 요청등의 기능이 가능하다.
사용해보면 얼핏 ping 과도 비슷한 형태로 출력된다. 그만큼 사용법도 아주 쉽다.
C:\PlayGround\wbox>wbox www.packetinside.com
WBOX www.packetinside.com (72.14.203.121) port 80
0. 200 OK 146460 bytes 1017 ms
1. 200 OK (146408) bytes 792 ms
2. 200 OK 146408 bytes 586 ms
3. 200 OK 146408 bytes 751 ms
4. 200 OK 146408 bytes 802 ms
user terminated
출력되는 결과를 보면 맨 앞 숫자는 요청하는 숫자가 차례대로 증가하는 것이며, 그 다음은 HTTP 응답코드 (200 번은 OK 라는 뜻) 그리고 서버로 부터 전송받은 데이터 사이즈 그리고 마지막은 요청을 처리하기 까지 걸린 시간이다. 기본적으로 요청할 개수를 지정하지 않으면 계속 반복된다. 아래와 같이 맨 뒤에 숫자를 붙여 주면 지정한 숫자만큼만 동작한다.
C:\PlayGround\wbox>wbox www.packetinside.com 2
WBOX www.packetinside.com (72.14.203.121) port 80
0. 200 OK 146408 bytes 707 ms
1. 200 OK 146408 bytes 752 ms
timesplit 옵션은 웹 페이지에서 받아오는 각 파트를 단위별로 소요된 시간을 보여준다.
C:\PlayGround\wbox>wbox www.packetinside.com timesplit 1
WBOX www.packetinside.com (72.14.203.121) port 80
0. 200 OK 146408 bytes 661 ms
[0] 0-4095 -> 329 ms
[1] 4096-8191 -> 2 ms
[2] 8192-12287 -> 1 ms
[3] 12288-16383 -> 63 ms
[4] 16384-20479 -> 2 ms
[5] 20480-24575 -> 1 ms
[6] 24576-28671 -> 1 ms
[7] 28672-32767 -> 62 ms
[8] 32768-36863 -> 2 ms
[9] 36864-40959 -> 1 ms
[10] 40960-45055 -> 1 ms
[11] 45056-49151 -> 1 ms
[12] 49152-53247 -> 23 ms
[13] 53248-57343 -> 38 ms
[14] 57344-61439 -> 2 ms
[15] 61440-65535 -> 1 ms
[16] 65536-69631 -> 1 ms
[17] 69632-73727 -> 1 ms
[18] 73728-77823 -> 1 ms
[19] 77824-81919 -> 1 ms
[20] 81920-86015 -> 1 ms
[21] 86016-90111 -> 58 ms
[22] 90112-94207 -> 3 ms
[23] 94208-98303 -> 1 ms
[24] 98304-102399 -> 1 ms
[25] 102400-106495 -> 1 ms
[26] 106496-110591 -> 1 ms
[27] 110592-114687 -> 1 ms
[28] 114688-118783 -> 1 ms
[29] 118784-122879 -> 1 ms
[30] 122880-126975 -> 1 ms
[31] 126976-131071 -> 1 ms
[32] 131072-135167 -> 0 ms
[33] 135168-139263 -> 1 ms
[34] 139264-143359 -> 53 ms
[35] 143360-146407 -> 1 ms
showhdr 옵션은 HTTP 요청후 전달받은 응답 헤더를 보여주게 된다. 또는 showhdr 대신, dump 옵션을 사용하면 받아오는 데이터를 그대로 출력해 준다. 즉, 헤더뿐만 아니라 모두 다 보여주게 되는 것이다.
C:\PlayGround\wbox>wbox www.packetinside.com showhdr
WBOX www.packetinside.com (72.14.203.121) port 80
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Expires: Thu, 11 Aug 2011 13:23:00 GMT
Date: Thu, 11 Aug 2011 13:23:00 GMT
Cache-Control: private, max-age=0
Last-Modified: Thu, 11 Aug 2011 13:03:48 GMT
ETag: "3f24bea2-148f-45bf-96c3-8638f8ffa6b3"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Server: GSE
Connection: close
웹 서버 스트레스 테스트도 해 볼 수 있는데, clients 라는 옵션을 사용하면 된다.
C:\PlayGround\wbox>wbox www.packetinside.com clients 1
WBOX www.packetinside.com (72.14.203.121) port 80
0. 200 OK 146408 bytes 676 ms
1. 200 OK 146408 bytes 713 ms
2. 200 OK 146408 bytes 644 ms
user terminated
clients 뒤에 붙은 옵션은 동시접속으로 지정할 클라이언트 개수이다. 이 숫자가 높으면 높을 수록 그만큼 크게 요청이 되는 것이다. 테스트에서는 그냥 1로만 지정하였다. 테스트를 하는 분들이라면 위 예제대로 패킷인사이드에 대량의 스트레스 테스트를 하는 실수를 범하지 않기를 바란다 ^^
이외 compr 은 HTTP 압축 방식을 지원하는지 테스트를 하는 것이며, http10 은 HTTP/1.1 대신 1.0 으로 요청한다.
C:\PlayGround\wbox>wbox www.packetinside.com compr
WBOX www.packetinside.com (72.14.203.121) port 80 [compr]
0. 200 OK 30889 bytes 483 ms compr
1. 200 OK 30889 bytes 477 ms compr
user terminated
마지막으로 간단하면서도 유용한 기능이 있는데, 서버모드로 동작하는 것이다. WBox 를 이용해 HTTP 서버로 간단히 동작할 수 있도록 하여, 급하게 파일 공유나 간단한 테스트로 유용하게 사용할 수 있다.
예를 들어, 아래 예제는 서버모드로 동작시키는 것으로 webroot 옵션을 통해 문서 루트가 될 곳을 지정한다. 이후 브라우저로 http://localhost:8081 와 같이 접속하면 디렉토리 리스트를 볼 수 있다.
C:\PlayGround\wbox>wbox servermode webroot c:\PlayGround
WBOX starting in server mode, port 8081, webroot c:\PlayGround
127.0.0.1:50802 connected
127.0.0.1:50802 handled by process 1980
127.0.0.1:50802 served with success
127.0.0.1:50803 connected
127.0.0.1:50803 handled by process 2440
127.0.0.1:50803 served with success
127.0.0.1:50804 connected
127.0.0.1:50804 handled by process 2344
127.0.0.1:50804 served with success
127.0.0.1:50807 connected
127.0.0.1:50807 handled by process 1748
0. 200 OK 146408 bytes 640 ms
user terminated
HTTP 서버를 설치하기는 귀챦고, 급하게 HTTP 서버로 동작시켜 잠깐 테스트 하는 경우는 유용할 것이다. HTTP 테스트에 간단하면서도 유용한 WBox 가 도움이 되기를 바라며 마무리 한다.
P.S 아직까지 많이 알려져 있는 도구인 hping 을 소개하지 못하고 있다. 많은 기능이 있어, 이전부터 소개하려고 하였던 도구이며 조만간 hping 에 대해서도 여러분들에게 소개하도록 하겠다.
[참고]
1. WBox
http://www.hping.org/wbox/