본문으로 바로가기

HTTP

category SECURITY/Network 2017. 5. 31. 20:27


   HTTP ( Hyper-Text Transfer Protocol )


   HTTP 메시지 유형


요청 메시지

- Request Message : Request-Line = Method SP Request-URI SP HTTP-Version CRLF

  ex) GET  /department/list?query=11991916 HTTP/1.1

- method

 1) GET : 특정 웹페이지나 다른 자원들에 대한 조회(요청)

 2) POST : 특정 자원에 대한 요청

 3) HEAD : 요청에 대한 메시지 헤더만을 요구. 웹 서버에 대한 에러 체크

 4) DELETE : 특정 자원에 대한 삭제 요청

 5) PUT : 특정자원을 서버에 업로드

 6) OPTIONS : 사용가능한 메서드를 확인할 수 있다.

 7) TRACE : 클라이언트와 서버간의 통신과정을 확인. windows의 tracert나 리눅스의 traceroute 명령과 비슷

* GET : 해당 자원을 달라고 하는 요청. POST : 데이터를 전달해서 이를 처리한 결과를 달라고 하는 요청


응답메시지

- Response Message : Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

  ex) HTTP/1.1 200 OK

- 상태 코드 필드

  200 : OK

  3XX - Redirection  301 : Moved permanently 302 : Moved temporarily 304 : Not modified

  4XX - Client error  400 : Bad request 401 : Unauthorized 403 : Forbidden 404 : Not found 

  5XX - Server error  500 : Internal server error



   테스트를 위한 웹서버 구축

VMware 환경에서 구축하였습니다.


1. 웹서버 : 아파치 웹서버 설치 - yum install httpd.i686

홈 디렉터리 : /var/www/html/

홈 디렉터리 안에 index.html 파일을 만들고 그 안에 밑에 코드를 입력시켜주었습니다.

1
2
3
4
5
6
7
8
9
10
11
<!doctype html>
 
<html>
 
<head></head>
 
<body>
        <h1> My First Web Page </h1>
</body>
 
</html>
cs

2. service httpd start : http 서비스를 시작한 뒤, netstat -ant로 http 포트인 80번이 열려있는 것을 확인해줍니다.

그러고 나서 서버 IP주소로 들어가보게 되면 테스트용으로 만든 웹페이지가 뜨는 것을 볼 수 있습니다.

ncat 명령어( 파일 입출력, 표준 입출력 명령어 )를 통해서도 확인해 볼 수 있습니다. ( ncat IP 주소 포트번호 )

현재 웹서비스 주소인 192.168.0.110으로 설정해주고, 80번 포트를 설정해준 다음. 밑에 파란색 박스인 GET 요청메시지를 보냈습니다.

그러면 밑에 응답 메시지가 오는 것을 확인 할 수 있습니다.

ncat 명령어 말고도, 소켓프로그래밍으로도 확인해 볼 수 있습니다. 파이썬으로 확인해 보았습니다.

1
2
3
4
5
6
7
8
9
10
11
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(("192.168.0.110",80))
 
request = "GET / HTTP/1.1\r\n"
request += "Host: 192.168.0.110\r\n"
request += "\r\n"
 
sock.send(request.encode())
response = sock.recv(65535)
print(response.decode())
cs

[ GET 결과창 ]

[ POST 결과창 ]

[ OPTIONS 결과창 ]

[ HEAD 결과창 ]

[ TRACE 결과창 ]



'SECURITY > Network' 카테고리의 다른 글

HTTP 공격  (0) 2017.06.01
FTP  (0) 2017.05.29
DNS - 2  (0) 2017.05.24
DNS - 1  (0) 2017.05.24
DHCP  (0) 2017.05.23