그 동안 웹 프론트엔드 개발과 관련해서 각 언어들에 대해서는 정리를 하고 있지만, 특별히 웹 자체에 관해서는 정리를 하지 않았었다. 브라우저가 동작하는 방식이나, HTTP에 대해서는 자세히 알고 있어야 한다고 생각한다. 🥲 그래서 HTTP 가 뭔데?
우리가 브라우저를 통해서 여러 웹 페이지를 보는 과정에서 모든 파일들을 가지고 있을 수가 없다. 당연히 다른 사람이 만들어 낸 페이지를 보기 위해서는 해당 페이지와 관련된 파일들을 가져오는 과정이 필요하다.
HTTP는 간단하게 말해서 웹 페이지를 보기 위해서 필요한 리소스들을 가져오기 위한 프로토콜을 말한다.
HTTP는 클라이언트 - 서버 프로토콜로 동작하고 있고, 각 각의 개별적인 요청이 서버로 전송 됐을 때 response
를 통해서 서버가 응답을 제공한다.
HTTP는 Hypertext Transfer Protocol
로서 위에서 말했던 것처럼 HTML 파일이나 이미지, 영상 등을 주고 받기 위한 프로토콜이다. 그렇다면 프로토콜은 정확히 뭔데? 라는 질문이 생길 것이다.
프로토콜은 두 기기 간에 통신을 통해서 정보를 주고 받기 위한 규약을 뜻한다. 즉, 어떻게 요청을 보내고 어떻게 받을 것인지를 정의한 것이다.
HTTP는 서버 - 클라이언트 프로토콜로 동작하고 있으며 request
와 response
를 통해 요청과 응답이 이뤄지고 있다.
HTTP 는 계속해서 연결을 유지하고 있지 않고 한 번의 요청을 처리한 경우에 응답을 마치면 연결을 끊어버린다. 그렇기에 불필요한 자원의 소모를 줄일 수 있다는 장점이 있다. 다만, 하나의 웹페이지를 로드하는 과정에서 여러개의 css나 js 등의 파일 등을 요청받고 응답해야하는 상황에서는 각 요청마다 연결을 해야되기 때문에 불필요한 시간이 소모가 될 수 있다.
현재는 페이지 로드에 필요한 파일들을 모두 응답하고 연결을 종료할 수 있도록 지원되고 있다.
서버가 클라이언트의 상태에 대해서 보존하지 않는 것을 말한다. 쉽게 말해서 클라이언트가 요청한 정보에 대해서 이전 상태에 대해서는 관심이 없다는 뜻이다.
무상태의 프로토콜의 장점은 서버의 확장성이 높다는 점이다. 갑작스러운 클라이언트의 요청 증가에도 서버를 대거 투입할 수 있다. 단점은 동일한 클라이언트라고 해도 요청마다 연결을 맺고 끊어야하는 점이다.
HTTP 요청의 경우에 상태 코드를 보고 어떤 상황인지 알 수 있다. 상태 코드는 아래와 같다.
이렇게 간단하게 HTTP에 관해 정리를 해봤다. 아주 기본적인 내용에 대해서만 정리했을 뿐 HTTP에 대해서도 알아볼 수 있는 것들이 많다. 추후에 하나씩 정리를 해보려고 한다.
참고 : HTTP - MDN