HTTP
Hyper Text Transfer Protocol, 인터넷에서 데이터를 주고받을 수 있는 프로토콜
- 클라이언트 - 서버 구조
클라이언트의 요청이 있을 때만 서버에서 요청에 따른 응답을 반환한다. 클라이언트에서 서버에 요청을 하는 단방향 통신으로, 서버가 먼저 요청을 할 수 없고 무조건 요청을 받아야 한다. - 무상태 프로토콜(Stateless) 지향
서버가 클라이언트의 연결/상태 정보를 보존하지 않는다. 즉, 클라이언트가 이전 요청과 같은 데이터를 원한다고 하더라도 다시 서버에 동일한 요청을 해야 한다. 클라이언트가 이전에 자신이 요청한 정보를 저장해 놓고 해당 정보를 다시 보내주므로, 클라이언트의 요청에 어떤 서버가 응답해도 상관이 없어서 서버 확장성이 높은 장점이 있는 반면, 클라이언트가 많은 양의 추가 데이터를 전송해야 하는 단점이 있다. 하지만 로그인의 경우 매번 아이디와 비밀번호를 입력해야한다면 아주 불편할 것이다. 그래서 토큰이나 세션을 이용해서 로그인 상태를 유지한다. - 비연결성 ( Connectionless )
클라이언트와 서버가 한 번 연결을 맺은 후, 클 라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질 이렇게하면 연결을 하는 동안에 발생하는 리소스를 아낄 수 있다는 장점이 있지만 데이터가 커질 경우 매번 다시 새로운 연결을 해야 해서 오버헤드가 발생하는 문제가 있었다.
이를 보완하기 위해서 HTTP 지속연결(Persisten Connections)을 통해 이를 해결했다. 처음 연결이 되고 나서, 여러 파일의 요청/응답이 다 끝난 뒤 연결을 종료한다.
즉, 기존에는 HTML뿐만 아니라 자바스크립트, css, 추가 이미지 등 각각 요청과 응답에 대해서 새로운 연결을 해야했는데 이제는 필요한 데이터에 대한 모든 요청과 응답이 끝난 뒤에 연결을 종료하는 방향으로 보완되었다.
HTTPS
- HTTP의 암호화된 버전 (http + ssl)이다. 클라이언트와 서버 간의 모든 커뮤니케이션을 암호화 하기 위하여 SSL이나 TLS을 사용하는데 둘은 같다고 볼 수 있다. SSL의 사용자가 많아지면서 표준화 기구인 IETF가 관리하며 TLS로 이름을 변경된 것이다. 이는 인터넷 커뮤니케이션을 위한 개인 정보와 데이터 무결성을 제공하는 보안 프로토콜이다.
- HTTPS를 사용하기 위해서는 CA로부터 SSL 인증서를 발급받아야 한다. CA란 SSL 인증서를 발급하는 기관으로, 신뢰할 수 있는 기관들을 의미한다.
- HTTPS는 HTTP연결 과정에서 추가적으로 SSL혹은 TLS 인증서를 이용한 핸드셰이크 과정이 필요하다.
- HTTPS의 사용이유
- 인증 : 웹사이트의 신원을 확인 예를 들어 브라우저 표시줄에 **https://www.entrust.com**이 표시되면 해당 사이트는 Entrust Corporation의 소유임을 확신할 수 있음
- 암호화 : 외부로부터 이동 중인 데이터를 숨김
- 무결성: 데이터가 변조되지 않았음을 확인
- 사용자 경험 : 브라우저 UI의 최근 변경으로 인해 HTTP 사이트가 다음과 같이 플래그 지정 → 웹 사이트를 접속 시 "안전하지 않음"이라고 알리거나 방문할 때 줄이 그어진 자물쇠를 표시하기를 원하십니까? 당연히 아니지!
- SEO(검색 언젠 최적화): 구글은 https 지원 웹사이트에 높은 검색 순위를 제공하기 위해 알고리즘을 변경, 파이어 폭스는 https 전용 모드 발표
- 보안인증서 비용이 비싸지 않고 무료로도 사용할 수도 있다.
- https 환경에서는 http의 안전하지 않은 요소 작동을 방해한다
- 예시
- 내가 A음식점에 주문을 했지만 B라는 경쟁 음식점에서 A에게 주문이 들어가지 않게 중간에 가로챈 다음 나에게 주문완료라는 메시지를 보내는 경우
→ A에게 가는 주문을 방해 및 나에게 거짓 정보 전달 - A라는 사이트와 유사한 A-1 이란 사이트를 만들어 접속을 유도해 정보를 가져가는 경우
→ A-1이란 유사 사이트에 내 개인정보 유출 위험
- 내가 A음식점에 주문을 했지만 B라는 경쟁 음식점에서 A에게 주문이 들어가지 않게 중간에 가로챈 다음 나에게 주문완료라는 메시지를 보내는 경우
전에는 잘 몰랐던 부분인데 간혹 어떤 사이트에 들어가면 주의 표시가 나오는데 이것이 HTTPS가 아닌 사이트인 경우였고 이게 보안적으로도 위험이 있으며 추가로 검색 엔진에서도 영향을 준다는 것을 알게 되었다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.08.12 객체 지향 프로그래밍 (OOP) (0) | 2023.08.16 |
---|---|
23.08.11 DI와 IoC (0) | 2023.08.15 |
23.08.04 브라우저는 어떻게 주소를 찾을까? (0) | 2023.08.05 |
23.08.03 쿠키(Cookie)와 세션(Session) (0) | 2023.08.05 |
23.08.02 브라우저는 어떻게 보여주는가 (0) | 2023.08.03 |