Analysis

기본적인 HTTP Packet 분석

DarkSoul.Story 2013. 1. 30. 11:37
반응형

일반적인 HTTP 통신은 [그림.1]과 같이 클라이언트가 HTTP 서버에 요청을 하면, HTTP 서버는 상태 코드로 응답한다.


[그림.1 일반적인 HTTP 통신]



HTTP 서버가 보내는 상태 코드 중 가장 많이 확인 할 수 있는 상태 코드는 다음과 같으며, 

http://www.iana.org/assignments/http-status-codes/http-status-codes.xml에서 자세한 상태 코드를 확인 할 수 있다.

 

코드값

설명

200

OK

403

Forbidden

404

Not Found

500

Internal Server Error

503

Service Unavailable

[표.1 상태 코드]
 
HTTP 요청은 HTTP 요쳥 목적을 정의하는 메소드로 구성되어 있으며, HTTP 응답은 상태 코드라고 말하는, 수치상 응답 코드를 포함한다.
 

HTTP 패킷은 가변 길이로 패킷 구조는 다음과 같다. 여기서는 HTTP 패킷 구조 중 핵심 적인 부분만 살펴 본다.



[그림2. HTTP GET 요청]

 

1. Method

HTTP 명령어라고도 할 수 있으며, HTTP 패킷의 목적을 정의한다.

 

Method

설명

전송 형태

OPTIONS

시스템에서 지원되는 Method 종류 확인

OPTIONS [요청 URL] HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

GET

URI(URL)이 가지고 있는 정보 검색을 위해 서버 측에 요청

GET[요청 URL]?Query-String HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

HEAD

GET과 유사하나 웹 서버에 HTTP 헤더 정보 이외에는 어떠한 데이터도 보내지 않음

HEAD[요청 URL] HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

POST

데이터를 HTTP 서버로 전송

 

POST[요청 URL]?Query-String HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

Content-Length:[컨텐츠 길이(Byte)]\r\n

\r\n

[Data]

PUT

POST와 유사한 전송 구조를 가지며헤더 정보 이외에 데이터가 함께 전송됨

원격지에서 웹 서버에 파일을 업로드 시키는데 사용되기 때문에홈페이지 변조에 많이 악용되고 있음

PUT[요청 URL]?Query-String HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

Content-Length:[컨텐츠 길이(Byte)]\r\n

\r\n

[Data]

DELETE

PUT과 반대되는 개념으로 원격지에서 웹 서버의 파일을 삭제하기 위해 사용

DELETE[요청 URL] HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

TRACE

원격지 서버에 Loopback 메시지를 보내 원격지 서버까지의 네트워크 경로를 확인 할 수 있음

근래에 크로스사이트 추적 취약점에 대비하여 많은 웹 서버에서 비활성화하기 때문에  드물게 확인 가능

TRACE[요청 URL] HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

 

CONNECT

웹 서버의 프록시 디바이스에 연결

CONNECT[요청 URL] HTTP/1.1\r\n

Host:[Host Name] or [IP Address ]\r\n

[표.1 HTTP Method]
 

2. HOST

호스트 필드는 요청되는 인터넷 호스트와 포트 번호를 식별한다만약 포트 번호가 정의되지 않으면 서비스에 대한 기본 포트 번호가 정의된다.

 

3. Request Header Fields

클라이언트가 요청에 대한 추가 정보를 전달하며프로그래밍 언어 방식의 매개 변수에 상응하는 의미를 함께 보내는 요청 수식자의 역할을 한다.


request-header

설명

Accept

허용 가능한 컨텐츠 유형 나열

Accept-Charset

혀용 가능한 문자 집합

Accept-Encoding

허용 가능한 인코딩

Accept-Language

허용 가능한 언어

Content-Length

바디 길이 (Byte)

Content-Type

본문의 MIME 유형 (POST/PUT 요청 시 사용)

Referrer

이전 웹 사이트 주소

User-Agent

일반적으로 브라우저나 운영체제 정보 표시

[표.2 Request-header 일부]
 

더 많은 Request-header 정보는 http://tools.ietf.org/html/rfc2616의 Request Header Fields 부분을 참고 하기 바란다.


참고



반응형