HTTP
클라이언트인 웹 브라우저가 서버에 HTTP를 통해 웹 페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공해요.
HTTP : 웹 브라우저와 서버간의 웹페이지 같은 자원을 주고 받을 때 쓰는 통신 규약이에요.
HTTP는 자원을 주고 받을 때 텍스트로 교환을 해요. 바이너리 데이터도 아니고 단순한 텍스트를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채면 내용이 노출될 위험이 있어요.
그리고 HTTP는 요청, 응답시에 통신 상대를 확인하지 않아요. 요청을 보낸 서버가 정말로 URI에 지정된 호스트인지, 응답을 반환받는 클라이언트가 정말로 요청을 시도한 클라이언트인지도 확인할 수가 없죠.
HTTPS
그래서 HTTPS 가 등장하게 됐어요. HTTPS 는 HTTP의 통신을 하는 소켓 부분을 SSL(Secure Socket Layer) 이라는 프로토콜로 대체하고 있어요. 일반 HTTP는 직접 TCP와 통신하지만 SSL을 사용하는 경우엔 HTTP는 SSL이 TCP와 통신하게 돼요. SSL 이라는 껍질을 가진 HTTP가 HTTPS 가 되는거에요. 보안 작업은 공개키 암호화 방식으로 해요.
공개키 암호화 방식을 간단하게 설명하자면 인코딩과 디코딩을 다른 키로 사용하는거에요. A키로 암호화를 진행하면 B키로 복호화가 가능하고, B키로 암호화한 것은 A키로 복호화가 가능한 방식이에요. 인코딩 키는 공개되어 있고 디지털 인증서에 포함되어 있어요. 디코딩 키는 호스트만이 개인 디코딩 키를 알고 있지요.
공개키와 비공개키의 분리는 메시지의 인코딩은 누구나 할 수 있도록 해주는 동시에 메시지의 디코딩은 비밀키 소유자에게만 부여하게 해주는거에요.
근데 왜 HTTPS 만 사용하지 않을까요?
HTTPS는 보안이 적용되니까 HTTP 대신에 HTTPS 만 사용하면 될텐데... 적절히 섞어 쓰는 사이트를 보게 돼요. 왜 그럴까요?
HTTPS 암호화를 하려면 웹 서버에 부하가 생길수가 있어요... 그리고 업체에서 인증서를 구매해야 하는데 가격이 비싸다고 합니다. 그래서 HTTPS 를 적용하지 않는 사이트가 있다고 하네요.
또한 HTTP는 비연결형으로 웹 페이지를 보는 동안에 인터넷 연결이 끊어졌다가 다시 연결 되어도 페이지를 계속 볼 수 있지만 HTTPS는 소켓(데이터를 주고 받는 경로) 자체에서 인증을 하기 때문에 인터넷 연결이 끊기면 소켓도 끊어지기 때문에 다시 HTTPS인증을 해야 해요. 그렇기 때문에 적절하게 나눠 쓴다고 하네요.
이상으로 HTTP, HTTPS에 대한 간단한 설명을 마치겠습니다~