HTTP
Hyper Text Transfer Protocol
- 프로토콜: 서버와 클라이언트가 Request와 Response를 주고 받기 위해 사용되는 일종의 규약, 메세지
- 클라이언트-서버 프로토콜: 서버와 클라이언트가 Request와 Response를 주고 받기 위해 이용
서버-클라이언트 구조
- 서버: 서비스를 제공하는 컴퓨터. ➡️
백엔드
와 연관
- 클라이언트: 서비스를 요청하고 받는 컴퓨터. ➡️
프론트엔드
와 연관
- 요청 및 응답: 클라이언트가
request
를 보내면 서버에서 response
메시지 반환
HTTP의 특성
Stateful vs Stateless
- Stateful
- 세션의
상태
에 기반해 클라이언트에 응답을 보내므로, 세션 상태를 포함한 클라이언트와의 세션 정보를 서버에 저장함.
- 따라서, 세션 상태에 의존적임
- TCP (3-way handshaking)
- Stateless
- 클라이언트의
요청에 대한 응답만
을 보내므로, 세션 정보를 서버에 저장하지 않음
- 따라서, 세션 상태와 독립적임
- UDP, HTTP
- 특성
- 서버 유지보수에 용이함
➡️ 세션 상태를 보관하지 않으므로 어떤 서버가 응답하더라도 상관 없음. 따라서 클라이언트의 요청이 대폭 증가하더라도 서버를 증설할 수 있기 때문.
서버가 상태를 알아야 할 때는, 브라우저 쿠키/서버 세션/토큰 등을 사용하여 상태를 유지해야 함.
Connectionless
- 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 바로 끊어버림.
- 한 유저가 요청을 계속 보내는 것이 아니기 때문에, 계속 연결을 유지하는 것은 자원 낭비
- 클라이언트를 기억하고 있지 않기 때문에 동일 클라이언트와 계속 통신할 때도 매번 새로운 연결 시도를 해야 함 ➡️ 오버헤드 발생
- KeepAlive, 쿠키와 세션 활용(HTML4), 웹 소켓 활용(HTML5)
HTTP vs. HTTPS
보안 측면
http
: 서버 ➡️ 클라이언트로 전송되는 데이터가 암호화되지 않음.
https
: SSL 인증서를 사용해 데이터를 암호화하므로 쉽게 해독 불가.
SEO 측면
- 검색 엔진 최적화를 위해서라도 https를 최적화해야 함. 상위 노출 기준 중 하나가 보안 요소이기 때문.
✚ SEO?
Search engine optimization
✚ SSL?
Secure Sockets Layer, 암호화 기반 인터넷 보안 프로토콜
HTTP Method
HTTP의 주요 메소드
GET
: 리소스 조회(READ)
POST
: 요청된 자원을 생성(CREATE)
PUT
: 요청된 자원을 수정(UPDATE) ➡️ 자원 전체 수정
PATCH
: 요청된 자원을 수정(UPDATE) ➡️ 자원 일부 수정
DELETE
: 요청된 자원을 삭제(DELETE)
HTTP Status Code
- 서버로 보낸 요청 상태를 나타내는 코드
- 서버로 보내진 작업의 수행 상태를 알려줄 수 있도록 표준에 맞춘 일종의 약속
- http 요청이 잘 이루어졌는지, 왜 에러가 발생했는지 파악 가능 ➡️ 에러 종류에 대해 커뮤니케이션 하기 편리
- 형태
1XX
: 요청이 수신되어 처리 중, 프로세스를 계속함
2XX
: 서버가 요청을 성공적으로 처리함
3XX
: 요청을 완료하려면 추가 행동이 필요함
4XX
: 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행 할 수 없음
5XX
: 서버가 유효한 요청을 처리하는 데 실패
➡️ 4와 5는 정상 상태가 아닌 경우에 해당