• 카테고리

    질문 & 답변
  • 세부 분야

    취업 · 이직

  • 해결 여부

    해결됨

HTTPS프로토콜에 대해서 질문이 있습니다

24.04.28 19:19 작성 24.04.28 19:48 수정 조회수 93

0

안녕하세요~강사님 다름이 아니고 그렇게 크게 중요한 내용은 아니지만..HTTPS프로토콜에 관련해서 두가지 궁금한 사항이 있어 질문 남깁니다.

Q1) OSI7계층으로 따졌을 때 HTTP는 응용계층에 속한 프로토콜이고 TLS는 세션계층에 속한 프로토콜이잖아요.

HTTPS프로토콜은 HTTP프로토콜과 TLS프로토콜이 합쳐진 형태인데 그럼 HTTPS프로토콜을 응용계층의 프로토콜로 한정지어 분류하는게 맞는건지 아니면 어느한 계층에 속하지 않고 응용계층과 세션계층을 아우르는 개념으로 이해하면 되는건지가 애매합니다.

구글링 해봤을때 어디서는 응용계층에 한정지어 구분하기도 하고 어디서는 아예 HTTPS는 어느분류에도 표기하지 않은 경우도 있어서 헷갈리네요..

 

Q2) DEEP DIVE : HTTPS와 TLS #2. TLS 핸드셰이크 강의에서는 "HTTP/2는 HTTPS위에서만 돌아갑니다"라고 작성되어 있는데 그전 강의인 DEEP DIVE : HTTP/2와 HTTP/3의 차이 강의의 HTTP/2 계층 이미지를 보면 TLS는 Optional로 표기되어 있어서 둘의 차이가 무엇인지 궁금합니다.

 

123.png

 

답변 1

답변을 작성해보세요.

0

안녕하세요 상진님 ㅎㅎ

응용계층과 세션계층을 아우르는 개념으로 이해하면 되는건지가 애매합니다.

>>

HTTPS는 HTTP와 TLS(TLS 이전의 SSL 포함)의 조합으로 이루어진 프로토콜입니다. OSI 7계층 모델에서는 보통 프로토콜의 기능에 따라 분류를 하게 되는데, HTTPS는 HTTP 프로토콜의 응용 계층 특성을 그대로 유지하면서 TLS의 암호화 및 보안 기능을 추가한 것이기 때문에 보통은 응용 계층의 프로토콜로 분류됩니다.

하지만 절대적이지는 않습니다.

보안 관점에서 본다면 HTTPS는 암호화와 인증 기능을 제공하는 것으로 볼 때 세션 계층에 속한다고 볼 수도 있습니다.

즉, 보통은 HTTPS는 응용 계층의 프로토콜로 분류되지만, 상황에 따라 세션계층으로 분류될 수 있습니다.

TLS는 Optional로 표기되어 있어서

>>

HTTP/2는 TLS를 선택적으로 쓸 수 있습니다. 즉, TLS가 없는 HTTP/2도 있습니다.

하지만 보통의 경우 HTTP/2라고 했을 때 HTTPS위에서 돌아가는 HTTP/2라고 암묵적으로 생각합니다.

참고로 상진님이 말씀하신 부분은 사실 h2c라는 이름으로 알려져있습니다.

h2c는 TLS를 사용하지 않고 TCP 연결 위에서 직접 HTTP/2를 사용하는 것을 의미합니다.

h2는 tls가 장착된 http2를 부릅니다.

https://httpd.apache.org/docs/2.4/howto/http2.html

왜냐하면

  1. 브라우저에서는 HTTPS가 없는 HTTP2는 지원하지 않습니다.

거의 모든 최신 브라우저는 HTTP/2를 지원하지만 SSL 연결을 통해서만 지원합니다: Firefox(v43), Chrome(v45), Safari(v9 이후), iOS Safari(v9), Opera(v35), Android용 Chrome(v49)

  1. 오픈소스 중에 물론 HTTPS가 없는 HTTP2를 지원하는 클라이언트도 있지만 보통은 h2를 지원하고 >> h2c를 곁다리로 지원하는 형식으로 갑니다.

go 의 http2

https://pkg.go.dev/golang.org/x/net/http2

akka-http( h2c를 지원하지 않음)

https://github.com/akka/akka-http/issues/1849

h2c의 장점

개발 환경에서의 디버깅이나 로컬 테스트를 위해 암호화된 연결을 설정할 필요가 없으므로 개발자들이 편리하게 테스트를 할 수 있다는 장점, 암호화와 관련된 오버헤드가 없다는 장점은 있습니다.

제 설명자체도 브라우저 기반으로 설명하는 부분에서 말씀드렸기 때문에

HTTPS 위에서만 돌아갑니다 라고 표현한 부분은 맞긴 하지만... 사실 엄밀히 말하면 혼란을 줄 수 있다고 생각합니다.

해서 다음과 같이 수정하도록 하겠습니다.

HTTP/2는 보통 HTTPS 위에서만 돌아갑니다. 

(TLS계층을 선택적으로 쓸 수 있지만 보통은 HTTP/2를 쓸 때 TLS계층을 둡니다.)

 

이게 더 맞는 표현인 것 같습니다.

해당 부분은 오늘내로 수정해서 반영하도록 하겠습니다.

혼란을 드려 죄송합니다. ㅠ



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.