HTTPS프로토콜에 대해서 질문이 있습니다
안녕하세요~강사님 다름이 아니고 그렇게 크게 중요한 내용은 아니지만..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로 표기되어 있어서 둘의 차이가 무엇인지 궁금합니다.

답변 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가 없는 HTTP2는 지원하지 않습니다.
거의 모든 최신 브라우저는 HTTP/2를 지원하지만 SSL 연결을 통해서만 지원합니다: Firefox(v43), Chrome(v45), Safari(v9 이후), iOS Safari(v9), Opera(v35), Android용 Chrome(v49)
오픈소스 중에 물론 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점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
REST API (Self-descriptive messages)
0
26
1
시스템 엔지니어 관련 질문입니다.
0
52
2
오버라이딩 관련하여 질문드립니다.
0
62
2
교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유
0
90
1
렌더 트리, 렌더 레이어와 그래픽 레이어
0
57
2
로컬스토리지, 세션스토리지, 쿠키의 공통점
0
68
1
IPv4가 IPv6보다 빠른 경우
0
99
2
UDP가 전송계층의 역할을 못하는 건 아닌지
0
59
1
Path MTU 발견하였음에도 패킷 분할이 필요한 이유?
0
65
2
교재의 LFU 알고리즘에서 6번이 왜 히트인가요?
0
64
2
페이지 교체 알고리즘? 프레임 교체 알고리즘?
0
81
2
Static 키워드가 메모리에 올라가는 시점
0
77
2
헤더 압축부분 질문드립니다
0
73
2
공유 캐시 관련 질문 드립니다.
0
56
2
컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?
0
200
1
회선과 대역폭의 관계
0
62
2
44강 질문
0
93
2
버스 토폴로지 질문 있씁니다
0
55
1
자바스크립트, xml 문법 관련
0
66
2
전략패턴과 의존성주입 질문
0
69
2
Model이 비즈니스 로직을 담당하나요?
0
106
2
CS 공부 하는 법
0
181
2
큰돌님 블로그에 개념정리해서 올려도될까요!
0
137
2
FIN 세그먼트 질문
0
70
2





