프로토콜 - 상호간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고받기 위한 정의이다. 웹에서는 브라우저와 서버 간에 데이터를 주고 받기 위한 방식으로 HTTP 프로토콜을 사용한다.
HTTP 프로토콜은 상태가 없는 프로토콜이다.
데이터를 주고 받기 위한 각각의 요청이 서로 독립적으로 관리된다.
쉽게 말해서 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다.
이러한 특징 덕분에 서버는 세션과 같은 별도 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생긴다. 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.
HTTP 프로토콜로 데이터를 주고받기 위해서는 Request와 Response가 필요하다. 일반적으로 Client와 Server는 브라우저와 데이터를 보내주는 서버를 의미한다.
HTTP 요청 메서드에는 대표적으로 GET, POST, PUT, DELETE가 있다.
HTTP 상태 코드는 서버에서 설정해주는 응답 정보를 의미한다.
클라이언드가 요청을 보냈을 때 서버에서는 상태 코드를 전송하는데 상태 코드는 200번대부터 500번대까지 다양하게 있다.
주요 상태 코드로는
200 [OK] - GET 요청에 대한 성공
301 [Moved permanently] - 요청 URL의 위치가 다른 주소로 이동되었다.
304 [Not Modified] - 요청한 문서나 파일 내용이 지정된 시각 이후 변화한 게 없으므로 이전에 가져간 내용을 그대로 사용하라는 의미이다.
403 [Forbidden] - 클라이언트가 보낸 요청을 이해하였으나 요청 처리를 거부하는 겅우이다. 금지된 영역을 접근하려 하는 경우 발생한다.
404 [Not Found] - 클라이언트가 요청한 URL에 해당 자원이 없는 경우 발생한다.
500 [Internal Server Error] - 서버가 요청을 처리하다가 에러가 발생한 경우를 의미한다. 내부 서버 오류
503 [Service Unavailable] - 서버에 일시적으로 과부하가 걸렸거나 정비중으로 인해 요청을 처리할 수 없는 경우이다.
클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해준다. 대소문자를 구분하지 않는 이름과 콜론 다음에 오는 값으로 이루어져 있다.
헤더 예시
헤더 컨텍스트