1. HTTP 기본
1-1. HTTP 알아보기
- HyperText Transfer Protocol
- HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML (API) 등 거의 모든 형태의 데이터 전송 가능
- 기반 프로토콜
- TCP: HTTP/1.1(2, 3도 증가)
- UDP: HTTP/3
1-2. HTTP 특징
[ 클라이언트 서버 구조 ]
- 기본적으로 클라이언트가 request를 보내면, 서버가 응답할 때까지 기다렸다가 클라이언트가 그 응답을 받고 동작함
- 서버가 요청에 대한 결과를 만들어서 응답
- 비즈니스 로직이랑 데이터는 서버에서 맡고, 클라이언트는 ui, 사용성에 집중 -> 독립적인 진행 가능
[ 무상태 프로토콜(스테이스리스) ]
- 서버가 클라이언트의 상태를 보존X
- 장점: 서버 확장성 높음(스케일 아웃)
- 단점: 클라이언트가 추가 데이터 전송
[ 비연결성 ]
- 연결 유지O
- 서버는 연결을 계속 유지해서 서버 자원 소모 큼
- 연결 유지X
- 자원의 가용성 높임
- 서버 자원을 매우 효율적으로 사용할 수 있음
- 한계: 검색하고나면 TCP/IP 연결을 중단하므로 다시 검색할 때는 새롭게 연결해야함 -> 3 way handshake 시간 추가
- HTTP 지속연결을 할 때 더 유리한 경우도 있음
[ HTTP 메시지 ]
- 시작라인
- 클라이언트: HTTP 메서드(get, post)/요청대상(절대경로_"/"로 시작하는 경로) + HTTP Version
- 서버: HTTP 버전 + HTTP 상태 코드(200, 300 등) + 문구
- 헤더
- 클라이언트: Host
- 서버: HTTP 전송에 필요한 모든 부가정보(Content-Type 등)
- 메시지 바디
- 클라이언트, 서버: 실제 전송할 데이터
- HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능
[ 단순함, 확장 가능 ]