HTTP 란?
- 클라이언트와 서버간의 데이터 전송시 사용되는 Application level의 네트워크 통신 프로토콜
HTTP Request Message 구조
- Start line: HTTP 상태를 나타내는 HTTP Message의 시작 부분
- 구성: HTTP Method, Request Target URI, HTTP Version
- 예시: GET /products HTTP/1.1
- Header: HTTP 전송에 필요한 모든 부가 정보
- 구성: Host URL, User-Agent, Authorization, etc
- Empty Line: 공백
- Body: 전달할 메세지 본문
HTTP Response Message 구조
- Start line: HTTP 상태를 나타내는 HTTP Message의 시작 부분
- 구성: HTTP Version, Status Code, Status Text
- 예시: HTTP/1.1 200 OK
- Header: HTTP 전송에 필요한 모든 부가 정보
- 구성: Date, Content-Type, Cache-Control, etc
- Empty Line: 공백
- Body: 요청에 대한 응답 메세지 본문
HTTP 특징
- Stateless (무상태성) : 요청이 오면 이에 응답을 할뿐 지속적으로 연결되어 있지 않는 상태를 뜻하며, 요청과 응답이라는 한 번의 사이클이 끝나면 연결이 끊어진다. 이를 통해 서버의 부하는 줄여주지만 클라이언트의 상태 보존이 없다는 단점이 있다
- Request / Response: HTTP 통신의 핵심은 요청과 응답이며, 말이 아닌 메세지의 형식으로 요청하고 응답
HTTP Status Code
- Success: 200(OK), 201(Created)
- Error: 400(Bad Request), 401(Unauthorized), 403(Forbidden), 404(Not Found)
- Server Error: 500(Server Error)
HTTP 암호화 방법
- TLS : HTTP는 서버 클라이언트 통신간 암호화가 이뤄지지 않는 방식이라 스니핑에 취약한데 이를 막고자 서버 클라이언트간 전송되는 데이터 패킷을 인증서를 통해 암호화한 뒤 전송하는 방식
- HTTPS: HTTP + TLS
HTTP Version별 특징
- HTTP 1.0: keep alive
- HTTP 1.1: TCP/IP
- HTTP 2.0: Header Compression
- HTTP 3.0: UDP
HTTP 주요 Method
- POST: 서비스에 새로운 데이터를 추가할 때 사용
- GET: 요청한 데이터를 조회할 때 사용
- UPDATE: 기존에 존재하는 데이터를 수정할 때 사용
- DELETE: 서버에 저장된 특정 데이터를 삭제할 때 사용