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 결과창 ]