HTTP 프로토콜에 대한 이해
- HTTP(HyperText Transfer Protocol)는 웹서버와 웹 클라이언트 간에 통신을 위한 프로토콜
-HTTP 프로토콜에 맞게 요청을 웹서버에 전송하고 응답을 HTTP 프로토콜에 맞게 웹 브라우저에 전송한다.
- 요청/응답부분 - 헤더부분 - 엔터티바디 부분으로 나뉜다.
<method><resource identifier><HTTP version><crilf>
[<header> :<value>] <crlf>
....
[<header> : <value>] <crlf>
<crlf>
[entity body]
- 웹 클라이언트는 미리 알려진 포트로 연결을 시도하며 연결이 되면 웹 클라이언트는 HTTP 명령어, 문서 주소, HTTP 버전정보를 웹서버에 전달한다.
HTTP 요청라인 : GET /index.html HTTP/1.0
- 요청라인 다음 줄에 웹 클라이언트 는 헤더 정보, 구성정보 받아들일 문서 포맷등의 정보를 옵션으로 웹서버에 전달한다. 모든 헤더 정보들은 한줄에 하나씩 기술되며 헤더 이름과 값으로 구성된다. 헤어 정보의 끝에는 공백 라인을 추가해서 헤더의 끝임을 알려준다.
헤더정보 : User-Agent : Mozilla/2.03Gold(WinNT :I)
Accept :text/html , img/gif
- 요청과 헤더 정보를 보낸 다음에 웹 클라이언트는 추가적인 정보를 웹서버에 보낼 수 있다 보통 이런 데이터는 POST 방법으로 웹서버에 전달된다.
<HTTP><result code> [<explanation>] <crlf>
[<header> :<value>]<crlf>
....
[<header>:<value>]<crlf>
<crlf>
[entity body]
- 서버의 응답은 HTTP버전, 상태코드 설명으로 구성된 상태 라인을 이용해서 응답한다.
- HTTP 버전은 웹서버가 사용하는 HTTP 버전을 의미한다.
- 상태코드는 클라이언트의 요청에 딸느 서버의 결과를 표현하기 위한 것으로 세자리 숫자로 표현한다.
1xx 정보 : 요청이 받아들여졌고 처리중임을 의미한다.
2xx 성공 : 클라이언트의 요청이 성공적으로 처리되었음을 의미한다
3xx 경로변경 : 요청을 완전히 처리하기 위해 추가적인 액션이 수행되어야 함을 의미한다.
4xx 클라이언트 에러 : 클라이언트의 요청이 문법적으로 틀렸거나 처리도리 수 없음을 의미한다.
5xx 서버에러 : 정당한 요청을 서버가 처리하지 못함을 의미한다.
HTTP 응답라인 : HTTP/1.0 200 OK
- 상태라인 이후에 웹서버는 자신과 요청된 문서에 대한 정보를 헤더를 통해서 클라이언트에 전달한다 헤더의끝은 공백라인으로 표시한다.
헤더정보
Date : Tue, 28 Mar 2020 06L18:26 GMT
Server : Apache / 1.3.9(unix) tomcat/1.0 PHP/3.0.12
Last-Modified : Tue, 21 Sep 1999 2:34:00 GMT
- 클라이언트의 요청이 성공적으로 수행 되었다면 요청된 자료가 전송된다. 전송된 자료는 파일 내용이거나, 서블릿/JSP 프로그램의 응답이 될 수 있다.
HTTP 프로토콜이 실행되고 있는 것을 텔렛 프로그램을 이용해서 확인해 볼 수 있다
telnet localhost 8080 이라고 치고 엔터를 치면
다음과 같은 정보를 얻을 수 있다.
혹시 텔넷명령이 작동이 안되면 참고하기
https://kimnew8376.tistory.com/67
'telnet'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다. 텔넷설
서버를 켰다 그리고 telnet을 날렸는데 'telnet'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다. 이런 메시지가 뜬다 그럼 제어판에서 프로그램 추가제거에서 윈도
kimnew8376.tistory.com