기술면접 관련 및 참고하기

HTTP는 뭔데요? ( CS 특강 - HTTP/HTTPS/통신 흐름, TLS/SSL 등) - 작성 중

지팡구 2022. 11. 25. 22:11
HTTP (HyperText Transfer Protocol) 

 

" 우리는 HTTP 메시지에 모든 것을 전송한다 " 

 

1. HTTP란 뭘까?

이 HTTP는 우리가 백/프론트 (클라- 서버) 사이에서 자원을 교환하기 위한 TCP./IP 기반의 통신 프로토콜이다

(프로토콜은 여기서 상호 간 정의한 규칙이다)

2. HTTP의 특징은?

  • 상태가 없는 프로토콜 (stateless), 비 연결성
  • HTTP 메시지
  • 단순함, 확장 가능
  • 클라이언트 서버 구조

클라이언트 서버 구조 (독립적인 이점이 존재함)

클라이언트는 서버에 요청을 보내고, 응답을 대기한다. 그럼 서버는 이 요청에 대한 결과를 만들어서 응답한다.

(Request, Response 구조)

 

이렇게 클라 단과 서버 단을 분리하면 (옛날엔 이 개념들이 분리되어 있지 않아서 하나의 덩어리였지만) 이점이 많음.

 

클라(UI, 사용성 등에 집중) / 서버(데이터 관련 로직 관리에 집중) 이렇게 각 파트에 맞춰서 집중하면 개발에 대한 효율성이 굉장히 증가함 (각 파트에 맞춰서만 고민하면 되니까)

 

상태가 없는 프로토콜(Stateless) (중요함 -> 서버개발자들이 어려워하는 업무 ex) 선착순 이벤트 )

서버사 클라이언트의 상태를 보존하지 않는다. 

이 말의 뜻은 데이터의 송 수신의 요청이 서로 독립적으로 관리된다.(데이터 간 요청의 순서가 서로 연관이 없다)

 

만약 상태가 유지된다면 중간에 다른 점원으로 교체가 된다면 그 상태 정보를 다른 점원에게 미리 알려줘야 하지만, 무상태에서는 점원이 바뀌어도 상관없다. 그래서 만약에 클라이언트 단에서 많은 요청이 오면 일명 점원을 많이 투입할 수 있으며, 클라단에서도 요청이 증가하면 서버를 많이 투입할 수 있다는 장점이 있다. (무한한 서버 증설 가능)

 

또 서버의 상태가 있으면 중간에 에러가 발생하면 다시 해야함.

but 무상태는 중간에 장애가 나면 기존에 있는 서버가 아닌 다른 서버로 요청을 던져버림 (중계서버) =>> 확장에 유리함

 

출처 : 인프런 김영한님의 강의 : 모든 개발자를 위한 HTTP 웹 기본 지식
출처 : 인프런 김영한님의 강의 : 모든 개발자를 위한 HTTP 웹 기본 지식

 

이 서버의 상태에 관해서는 무조건으로 무상태가 좋은 것이 아닌 필요에 의해서 설계가 되어야 한다.

(상태 유지는 최소한만 사용할 수 있도록 해야함)

비 연결성

계속 연결을 하고 있으면 당연히 자원이 소모될 수 밖에 없음. 그래서 요청에 대한 응답시에 연결만 하며, 이로서 최소한의 자원만을 사용할 수 있다. (최소한의 자원으로 연결이 가능함)

 

기본적으로 HTTP는 연결을 유지하지 않는 모델이다. 그래서 초 단위 이하의 빠른 속도로 응답이 가능하다. 때문에 서버 자원을 매우 효율적으로 사용할 수 있다. (1시간동안 많은 사람들이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작다. -> 웹에서 연속해서 검색 버튼을 누르지 않으니까...)

 

HTTP는 지속 연결(Persistence Connections)을 사용

요청-응답 순서 (요청에 따라 유지하는 특성)

 

HTTP 메시지

출처 : 인프런 김영한님의 강의 : 모든 개발자를 위한 HTTP 웹 기본 지식