HTTP(Hyper Text Transfer Protocol)란?
- HTTP

HTTP(Hyper Text Transfer Protocol)란?
HTTP는 HTML 문서와 같은 리소스를 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 주로 TCP를 사용하지만 HTTP/3부터는 UDP를 사용하며 80번 포트를 사용합니다.
HTTP는 위와 같이 클라이언트와 서버가 리소스, 데이터 등을 교환하는 가장 기본적인 프로토콜입니다. 데이터를 교환한다는 것은 즉, TCP/IP를 사용하며 안정적으로 데이터가 교환될 수 있음을 말합니다.
HTTP의 동작 방식

만약, A라는 사람이 신발 구입을 위해 인터넷 검색 사이트에서 검색을 한다고 가정합니다. 이때 A가 사용하고 있는 웹 브라우저는 클라이언트로써 인터넷 검색 사이트로 '신발'과 관련된 정보를 요청(Request)합니다. 그 뒤 인터넷 검색 사이트는 요청에 대한 결과를 클라이언트에게 응답(Response)합니다.
즉, 위와 같이 클라이언트와 서버가 서로 요청(Request)하고 응답(Response)하는 방식으로 데이터를 교환함을 알 수 있습니다.
여기서 깊게 생각하면 의문점이 하나 떠오르게 됩니다. 클라이언트는 서버에게 어떠한 방식으로 원하는 데이터를 요청할 수 있는지에 대한 여부입니다.
HTTP 헤더(Header)
HTTP헤더는 클라이언트와 서버가 요청(Request)이나 응답(Response)를 통해 정보를 주고받을 경우 부가적인 정보를 전송할 수 있도록 도와줍니다.

위 사진은 클라이언트가 서버로 요청(Request)한 데이터의 구조입니다.
- Method는 HTTP 요청 메서드를 말하며, 그 뒤에는 Path를. 그 뒤에 Version of the protocol은 HTTP 프로토콜의 종류와 버전을 의미합니다.
- Host는 리소스(데이터)를 요청하는 경로. 즉, 데이터를 요청하고자 하는 서버의 도메인을 적습니다.
- 그 이후는 HTTP 헤더에 포함되는 레퍼런스로서 요청되는 데이터에 대한 자세한 정보를 담습니다. 예를 들어, 사진에 보이는 Accept-Language는 클라이언트로부터 서버로 요청되는 데이터에 대한 지역 언어를 설정합니다.
클라이언트에서 서버로 데이터를 요청시킬 때의 헤더가 있는 것 처럼, 그 반대의 경우인 서버에서 클라이언트로 응답(Response)시켜줄 때도 헤더가 사용됩니다.

응답 헤더 또한 요청 헤더와 흡사함을 알 수 있습니다.
- Version of the protocol : HTTP 프로토콜의 종류와 버전을 말합니다.
- Status Code : HTTP 상태 코드를 말합니다. 자세한 내용은 여기를 참고해주세요.
- Status message : HTTP 상태 메시지를 말합니다.
- 그 이후는 요청 헤더와 같이 응답되는 데이터의 자세한 정보를 담고 있습니다.
HTTP 요청 메서드
이미지 출처 : [개발 상식] HTTP 요청 메서드
클라이언트에서 서버로부터 요청(Request)를 보낼 때 요청 메서드(Request Method)라는 정보를 같이 보내게 됩니다. HTTP 요청 메서드는 요청되는 리소스(데이터)에 수행하길 원하는 행동을 나타냅니다. 즉, 클라이언트에서 서버로 전달되는 데이터를 서버에 추가시키거나, 삭제시키는 등 다양한 행동을 수행시킬 수 있습니다. 각각의 메서드는 서로 다른 의미를 구현합니다.
대표적인 아래와 같은 대표적인 요청 메서드들이 존재합니다.
- GET : 특정 리소스를 서버로부터 받기 위한 요청입니다. 해당 메서드로 리소스를 생성, 수정 및 삭제하기 위한 용도로 사용할 수 없습니다.
- POST : 리소스를 생성하거나 정보를 제출할 때 사용합니다.
- PUT : 서버에 존재하는 변경 가능한 리소스를 수정(업데이트)할 때 사용되며, 해당 메서드를 사용하기 위해선 업데이트하고자 하는 리소스를 식별할 수 있는 정보가 포함되어야 합니다.
- DELETE : 특정 리소스를 제거할 때 사용합니다.
그 외에 HEAD, CONNECT, OPTIONS, TRACE(en-US), PATCH와 같은 다양한 목적을 가지고 있는 메서드가 존재합니다.
References
mozilla-HTTP mozilla-Headers mozilla-Methods [Network] HTTP란 무엇인가?