HTTP(HyperText Transfer Protocol)

모든 것이 HTTP!
HTML, TEXT뿐만 아니라 음성이나 영상 파일 등 거의 모든 형태의 데이터 전송이 가능한 것.
서버 간에 데이터를 주고받을 때에도 대부분 HTTP를 사용함.

 

HTTP 역시 및 기반 프로토콜

HTTP/1.1 1997: 가장 많이 사용, 우리에게 가장 중요한 버전. 계속 버전업 되어서 RFC 7235까지 나옴.
기반 프로토콜로는 TCP(HTTP/1.1, HTTP/2)랑 UDP(HTTP/3)인데 주로 HTTP/1.1 사용하지만 나머지도 사용 증가.

 

HTTP 특징 - 클라이언트 서버 구조

Request-Response 구조.
클라이언트는 서버에 요청을 보내고, 응답을 대기.
서버가 요청에 대한 결과를 만들어서 응답.

 

HTTP 특징 - 무상태 프로토콜(Stateless), 비연결성

상태 유지(Stateful)
- 가게를 예로 들었을 때 중간에 가게 점원이 다른 점원으로 바뀌면 안 됨.
- 다른 점원으로 바뀔 경우 상태 정보(가게서 파는 물건 종류, 가격, 결제방식 등)를 다른 점원에게 미리 알려줘야 함.

무상태(Stateless)
- 중간에 다른 점원으로 바뀌어도 되고 갑자기 고객 증가 시 점원 대거투입도 가능.
- 클라이언트 서버로 보면 갑자기 클라이언트 요청 증가해도 서버 대거 투입 가능.
- 즉 무상태는 응답 서버를 쉽게 바꿀 수 있고 아무 서버나 호출해도 됨! 또한 수평 확장에 유리.

비연결성(connectionless)

- 일반적으로 초 단위 이하의 빠른 속도로 응답.
- 서버 자원을 매우 효율적으로 사용할 수 있음.
- TCP/IP 연결을 새로 맞어야 하는 3 way handshake 시간 추가되는 한계 존재.
- 지금은 HTTP 지속 연결로 문제 해결 가능.

HTTP 지속 연결(Persistent Connections)

- 처음 연결하고 이후 요청하고 응답받고 하는 과정을 다 끝난 다음에 제일 마지막에 종료. 시간 단축.

 

HTTP 특징 - HTTP 메시지

시작라인
- 서버가 수행해야 할 동작을 지정. GET, POST, PUT, DELETE........
- "/" 로 시작하는 절대경로[?query]
- HTTP 버전이랑 HTTP 상태코드도 포함.

헤더
- field-name ":" OWS field-value OWS의 형태.
- 헤더의 용도로는 HTTP 전송에 필요한 모든 부가정보가 포함.

메시지 바디
- 실제 전송할 데이터.
- HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송이 가능.

 

HTTP 특징 - 단순함, 확장가능

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com