2학년 중반, 졸업한 선배들과 함께하는 멘토링 중 모의면접 시간을 가졌습니다.
기술면접 부분에서 http/https
의 차이점 및 구글로 접속하는 과정을 설명해보라는 등 많은 질문들이 있었으나 제대로 답변한 것은 거의 없다시피하였습니다.
3학년이 되어 회사면접을 준비해야하는 시기인 지금, cs
지식들을 하나하나 공부하며 기록할 생각입니다.
HTTP(HyperText Transfer Protocol)는 인터넷상에서 데이터를 전송하기 위한 프로토콜로, TCP/IP 4계층에서 응용 계층에 속합니다.
(connectionless)
클라이언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊는 것
장점
비연결성은 불특정다수를 대상으로 하는 서비스에 유리합니다.
서버에서 응답을 받고 나서 연결을 계속 유지하려면 그만큼의 자원을 사용하여 비용이 많이 발생하게 되는데 비연결성은 자원을 아낄 수 있게 됩니다.
단점
하지만 단점도 존재합니다.
연결을 유지하지 않는다는 특성 때문에 서버가 클라이언트를 기억할 수 없다는 단점이 있습니다.
또한 동일한 클라이언트가 연속으로 요청을 함에도 연결을 끊은 다음 다시 연결하는 연결과 연결 해제 과정을 반복하기 때문에 자원을 낭비할 수 있습니다.
이러한 단점을 보완하기 위해 일정시간동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용합니다.
HTTP Keep Alive: HTTP 연결 시 일정 시간 동안 요청ㅇ을 유지할 수 있도록 사용하는 HTTP 헤더의 일종
따라서 마지막 응답 이후 일정시간동안 연결을 유지하여 동일한 클라이언트일 경우 연결과 연결 해제 과정을 반복하지 않게 됩니다.
(stateless)
서버에서 클라이언트의 상태를 저장하지 않는 것
카페의 직원을 예로 들어보겠습니다.
위와 같이 하나의 질답이 끝났을 때 직원이 고객의 요청사항을 기억하지 못하면 고객은 한 번 주문할 때 딸기 라떼 한 잔을 카드로 결제하겠습니다.
라고 요청해주어야 합니다.
이렇게 서버에서 클라이언트의 요청을 저장하지 않는 것을 무상태라고 하며, 이 때 클라이언트는 요청에 필요한 데이터를 모두 가지고 있어야 하는데 이 방법들을 각각 쿠키(cookie)와 세션(session)이라고 합니다.
쿠키(cookie): 클라이언트의 로컬 웹 브라우저에 저장하는 데이터 파일로, 키와 값을 저장합니다.
- ex) 웹사이트의 로그인 정보, 온라인 쇼핑몰의 장바구니
세션(session): 서버에서 클라이언트와의 연결 정보를 저장 및 관리하는 것입니다.
- 장점: 서버에 데이터가 저장되어 쿠키보다는 보안이 뛰어남
- 단점: 접속자가 많을 경우 서버에 과부하가 걸릴 수 있음
HTTPS(HyperText Transfer Protocol Secure)는 보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜입니다.
HTTP는 데이터 암호화를 거치지 않고 전송하기 때문에 보안에 취약한데 그래서 이를 보완한 HTTPS가 등장하였습니다.
SSL(Secure Socket Layer)은 넷스케이프(Netscape)에서 개발한 암호화 프로토콜입니다.
하지만 SSL은 당시 몇 가지의 문제점이 있었고 이를 보완해 나온 것이 바로 TLS입니다.
현재 HTTPS에서 통용되는 방식은 TLS이지만 SSL이라는 명칭이 아직 사라지지 않아 하나의 묶음으로 부르고 있습니다.
HTTPS의 동작 방식은 다음과 같습니다.
결론적으로 HTTP와 HTTPS의 차이점이라고 하면 보안 계층의 유무라고 볼 수 있습니다.
HTTP는 데이터 암호화를 거치지 않고 전송하는 데에 반해 HTTPS는 SSL/TLS라는 보안 계층에서 암호화/복호화 작업을 거친 후 전송하기 때문입니다.
여기서 보안을 강화하기 위해 HTTPS가 등장했다는 사실도 다시 한 번 알 수 있는 것이죠.
다음 포스팅에서는 위에서 간단히 다뤘던 HTTPS의 동작방식에서 더 나아간 웹 페이지 접속 과정을 google을 통해 다뤄보도록 하겠습니다.
읽어주셔서 감사합니다.
틀린부분은 알려주시면 감사하겠습니다.