http에 대한 간단한 정리

Kangho LEE·2021년 4월 2일
0
post-custom-banner

앞으로 til은 좀 간단하게 쓰고 공부한 내용을 바탕으로 제대로 설명하는 글을 따로 써야겠다는 생각이 들었습니다. 요즘 따라 더 많은 것들을 공부할 수록 저의 부족함이 너무 여실히 드러나는 것 같습니다.

게으르게 살았던 지난 날들이 너무 후회가 되기도 하고 그런 것들 때문에 더 힘든 것 같습니다.
하지만 그렇다고 포기하면 2년 3년후에 또 후회하고 싶지 않아 오늘도 열심히 공부합니다.

비록 오늘은 약속 때문에 많은 시간을 투자하지 못했지만 공부는 꾸준히 하고 있습니다.

HTTP

http(hypertext transfer protocol)는 stateless한 확장 가능한 프로토콜 입니다. 헤더(헤더란 사실상 수레라고 생각하는 게 편합니다.)를 통해 서버 - 클라이언트간 통신 기반을 정말 유연하게 사용할 수 있다는 게 큰 장점입니다. 기본적으로 80번 포트를 사용하고 있으며 클라이언트는 기본적으로 80번 포트로 정보를 보내게 됩니다. 클라이언트의 포트 번호는 임의로 well known포트가 아닌 곳들에서 결정됩니다.

우리에게도 익숙한 이 http는 다양한 버전이 있습니다.

http 1.0 : 초기 단계로 통신을 할 때에 연결을 받고 요청과 응답이 오가면 연결을 끊어버립니다.
그렇기 때문에 매번 연결과 수립이 반복되어 데이터가 이동하는 속도가 느립니다.

http 1.1 : 1.0을 개선한 방법입니다. keep alive라는 개념을 도입해 계속해서 맺어지고 끊어지는 연결을 지속적으로 마지막 응답을 받을 떄까지 연결해 놓습니다. 이 때문에 1.0보다 속도가 빠릅니다.

http 2.0 : 1.0과 1.1는 요청과 응답 이 순서대로 통신을 했습니다. 하지만 2.0 부터는 이 순서가 아닌 요청을 여러개를 한번에 보내도 적절한 응답이 한번에 오는 것 입니다. 한번에 보내고 한번에 받기 때문에 1.1보다 속도가 개선되었지만 2.0의 특징은 빠른 것 뿐만 아니라 사람이 읽을 수 없게 되었습니다.
?? 이게 무슨 소리죠 사람이 읽을 수 없으면 왜..? 사실 1.0과 1.1은 이진구조가 아닌 문자열로 오갔기 때문에 그만큼 많은 데이터를 보낼 수 없었습니다. 하지만 2.0은 이진구조로 많은 데이터를 내제하고 있기 때문에 따로 재구성을 해주어야 합니다.

https : hypertext transfer protocol secure의 약자로 http보다 보안을 신경써서 만든 프로토콜입니다. 특징으로는 SSL이라는 보안 소켓 계층을 추가함으로 보안을 강화했습니다.
ssl은 인증서를 통해 사이트에서 제공하는 정보를 암호화 합니다. 암호화된 정보와 TLS(전송 계층 보안) 프로토콜을 통해 데이터가 전송 중에 수정되는 것을 방지하고 있습니다. 하지만 http보다 암호화/ 복호화를 해야하기 때문에 조금 더 느리고 보안에 필요한 추가비용이 발생합니다.

http는 공개키/암호화 방식을 통해 데이터를 암호화 하고 있습니다.

자세한 과정입니다.
1. HTTPS를 적용하기 위해 기업은 공개키/개인키를 발급함
2. 인증 기관에게 돈을 지불하고 공개키를 저장하는 인증서의 발급을 요청함.
3. 인증 기관은 인증 기관이름, 서버의 공개키, 서버 정보 등을 기반으로 인증서를 생성하고 인증 기관의 개인키로 암호화 하고 이를 기업에게 전달함.
4. 기업은 클라이언트한테 암호화된 인증서를 제공함.
5. 브라우저는 인증 기관의 공개키를 미리 다운 받아 가지고 있고, 이 암호화된 인증서를 복호화 함.
6. 암호화 된 인증서를 복호화 하여 얻은 기업의 공개키로 데이터를 암호화 해 요청을 전송.

공부한 블로그
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://mangkyu.tistory.com/98

profile
우유와 누텔라
post-custom-banner

0개의 댓글