HTTP (Hypertext Transfer Protocol)
클라이언트와 서버 간에 데이터를 주고받는 데 사용되는 텍스트 기반의 프로토콜
웹 브라우저와 웹 서버 간에 문서를 전송하는 데 주로 사용되며, HTML 문서, 이미지, 스크립트, 스타일 시트 등의 웹 페이지 자원을 전송하는 데 적합
🤔프로토콜
컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의 하는 규칙 체계

- 특정 리소스 조회 (리소스를 요청하고 서버에서 해당 리소스를 반환)
- 조회할 때 POST도 사용할 수 있지만, GET 메서드는 캐싱이 가능하기에 GET을 사용하는 것이 유리
- GET을 사용하는 요청은 오직 데이터를 받기만 함
- 특정 리소스에 데이터를 제출 (Create)
- 메시지 바디(body)를 통해 서버로 요청 데이터 전달하면 서버는 요청 데이터를 처리하여 업데이트
- 특정 리소스를 수정 (Update)
- 만일 요청 메세지에 리소스가 있으면 덮어쓰고, 없으면 새로 생성
- 특정 리소스를 삭제 (Delete)
HTTP에서는 서버가
클라이언트의 상태를 보존하지 않음
클라이언트가 요청할 때 이미 필요한 데이터를 다 담아서 보내기 때문에 아무 서버나 호출해도 OK

➡️ 장점 : 서버 확장성이 높다. 응답 서버를 쉽게 바꿀 수 있기 때문에 무한한 서버 증설이 가능하다.
➡️ 단점 : 로그인과 같이 유저의 상태를 유지해야하는 서비스라면, 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 상태를 유지해야 한다.
비연결성을 가지는 HTTP에서는 실제로 요청을 주고받을 때만 연결을 유지하고 응답을 주고 나면 TCP/IP 연결을 끊는다.


➡️ 장점 : 최소한의 자원으로 서버를 유지할 수 있다.
➡️ 단점 : 1. TCP/IP 연결을 새로 맺어야하기 때문에, 3 way handshake 시간이 추가된다.
2. 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 JavaScript, CSS, 추가 이미지 등 수 많은 자원이 함께 다운로드 된다.
이 자원들을 각각 요청할 때마다 연결을 끊고, 다시 연결하고 반복하는 것은 비효율적이기 때문에, HTTP 1.1부터는 지속 연결을 통헤 문제를 해결하였다.