What is HTTP
HTTP의 개념과 기타 특성
-
HTTP 기본 개념 설명 [HyperText Transfer Protocol]
-
HTTP란? HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
-
웹에서 이루어지는 모든 데이터 교환의 기초. 즉, 서버와 클라이언트가 request와 response를 주고받기 위해 이용되는 메시지.
-
클라이언트-서버 프로토콜
-
일반적으로, 웹브라우저인 수신자 측에 의해 요청이 초기화되는 프로토콜
-
-
서버 클라이언트 구조
- 서버: 서비스를 제공하는 컴퓨터
- 페이지의 지원, 공유 데이터의 처리 및 저장 등의 비즈니스 로직 수행, DB와의 커뮤니케이션 수행
- 클라이언트: 데이터를 요청하고 받는 컴퓨터
- 서비스를 요청하고 받는 쪽
클라이언트에서 요청하면 서버에서 응답 메시지를 주게 됨. 여기서 응답 메시지는 Text, HTML, CSS, JavaScript, 이미지, 영상 등이 포함될 수 있고, 크라이언트에서는 서버로부터 받은 응답으로 화면을 구성함
Stateful Stateless
-
stateful: 서버에서 클라이언트의 이전 상태를 기록하는 접속
- 서버와 클라이언트 간 세션의 상태에 기반하여 클라이언트에 응답을 보냄 → 세션 상태를 포함한 클라이언트와의 세션 정보를 서버에 저장하게 됨
- 대표적인 예시: TCP - 3-way handshaking
- 아무튼 세션 성보를 서버에 저장하고 세션 상태에 따른 응답을 만족하도록 설계된 서비스 구조임
-
stateless: 서버에서 클라이언트의 이전 상태를 기록하지 않는 접속
- 서버의 응답이 클라이언트와의 세션 상태와 독립적
- server는 단순히 요청에 대한 응답만을 보낼 뿐, 세션 관리는 클라이언트에게 책임이 있음
- 따라서, client와의 세션 정보를 기억할 필요가 없으므로, 이런 정보를 서버에 저장하지 않음. 필요에 따라서는 외부 DB에 저장하여 관리할 수 있음
- 대표적인 예시: UDP, HTTP
- 왜 stateless?
- Scaling이 자유로움: stateful의 경우 상태를 계속 유지해야 하기 때문에 항상 같은 서버가 유지되어야 함. 하지만 sateless의 경우 상태를 보관하지 않으므로 어떤 서버가 응답해도 상관 없음! → 클라이언트 요청이 증가하더라도 서버를 증설하는 방식을 사용할 수 있음
- BUT! 로그인 기능에서 사용자의 로그인 여부를 항상 서버에서 알아야하듯, 서버에서 클라이언트의 상태를 알아야 하는 경우에는, 브라우저 쿠키나 서버 세션, 토큰 등을 사용해서 상태를 유지해야 함
비연결성: 클라이언트와 서버가 한 번 연결을 맺은 후 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어버리는 성질
- HTTP 자체가 네트워크 상에서 불특정 다수의 통신 환경을 기반으로 설계된 것임.
- 서버에서 다수의 클라이언트와 연결을 계속 유지한다면 그만큼의 자원을 낭비하게 됨
- 연결을 유지하기 위한 리소스를 줄이면 그만큼의 더 많은 연결을 할 수 있으므로 비연결성을 가짐
- 단점
- 클라이언트를 기억하고 있지 않기 때문에 동일 클라이언트와 계속 통신을 할 때에도 매번 새롭게 연결을 시도하고 해제해야하므로 이런 면에서의 오버헤드가 발생함
- 연결/해제 오버헤드 해결 방안 - KeepAlive
- 지정된 시간동안 서버와 클라이언트 사이에서 패킷 교환이 없을 경우, 상대방의 상태를 묻는 패킷을 주기적으로 보냄 → 해당 패킷에 대한 응답이 없을 시 접속을 끊는 방식
- 또다른 해결 - html4는 쿠키와 세션을 통해 직접 클라이언트와 서버 사이를 매핑하는 방식 사용. html5는 웹소켓 등을 활용해 연결 지속
HTTP/HTTPS
- HTTP의 문제는 서버에서부터 클라이언트로 전송되는 정보가 암호화되지 않아 데이터가 쉽게 도난당할 수 있다는 것임
- SSL을 사용하는 HTTPS 이 문제를 해결하기 위해 도입됨
- SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화함. 이렇게 전송된 데이터는 암호화되어있으므로 중간에서 누가 가로채더라도 쉽게 해독할 수 없음. 또, 데이터 무결성을 제공하여 데이터 수정/손상을 방지하고, 의도한 웹사이트와 통신하는지 인증하는 기능을 제공함
- 참고) TLS와 SSL은 같은 거라고 보면 됨
- 보안성이 지켜지면서 뒤따르는 차이임 - HTTPS가 검색엔진 최적화 S.E.O에 유리 - 구글 같은 포털에서 보안 연결이 되는 사이트를 검색 우선 순위에 둬준다고 함
-