일반적인 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 |
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 |
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 | 일반적으로 브라우저나 운영체제 정보 표시 |
더 많은 Request-header 정보는 http://tools.ietf.org/html/rfc2616의 Request Header Fields 부분을 참고 하기 바란다.
[Android Malware] 아웃백 소액 결제 사기 (smartbilling.apk) 분석 (0) | 2013.03.30 |
---|---|
PingTunneling 패킷 분석 (0) | 2013.01.30 |
기본적인 SMTP Packet 분석 (0) | 2013.01.30 |
기본적인 POP Packet 분석 (0) | 2013.01.30 |
기본적인 FTP Packet 분석 (0) | 2013.01.30 |