HTTP(Hyper Text Transfer Protocol)
인터넷에서, 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약
출처 : 네이버 두산백과
우리가 웹사이트에 접속하면 www로 시작하는 도메인 앞 항상 볼 수 있는 것이 있다.
http:// 혹은 https://
어릴 적 타이핑을 하기 참 귀찮아했던 그 http는 웹을 개발하는 사람이라면 결국 한번쯤은 알고 넘어가야하는 중요한 지식이었다.
http의 역사는 그리 오래되지 않았다. 당연하다. 웹의 역사 자체가 그리 오래되지 않았으니까.
하지만 그 사이에 http는 어느덧 UDP기반의 HTTP/3 까지 나왔다.
하지만 오늘 살펴볼 것은 HTTP의 역사는 아니고, 단순히 HTTP와 HTTPS 간의 차이점이다. 나는 CS를 전공하지도 않았고 그만큼 아는 지식도 없으므로 한번쯤은 여러 자료를 보고 간단하게나마 짚고 넘어갈 필요가 있다고 생각했다.
HTTP는 암호화 되지 않은 평문데이터를 전송하는 프로토콜이며, TCP/IP 위에서 작동한다.
여기서 가장 중요한 것은 암호화 되지 않은 이라는 말일 것이다.
암호화 되지 않았다는 말은 암호화되어야할 중요한 정보(주민번호, 이름, 휴대전화번호, 주소 등)를 포함한 웹페이지라면 HTTP를 사용해서는 안된다는 의미다.
하지만 반대로 이런 정보를 담지않고 모두 공개가능한 정보만 있다면 HTTP를 사용하여 암호화와 복호화를 위해 사용되는 리소스를 아끼고 더 빠른 속도로 웹을 사용할 수 있다는 말이기도 하다.
HTTPS는 HTTP의 취약한 보안성을 보완하여 나온 암호화 기능이 추가된 프로토콜이다.
HTTP와는 달리 암호화를 제공하는데, 작동 방식은 대칭키 암호화와 비대칭키 암호화 두가지를 지원한다.
대칭키 암호화의 경우 클라이언트/서버가 동일한 키를 사용해서 일치하는 지 비교하는 형태의 암호화이다. 이 경우 키가 유출될 경우 매우 위험하지만 반대로 연산의 절차가 간소해져 속도가 빠르다.
반면 비대칭키 암호화의 경우 쌍으로 구성된 공개키/개인키를 암호화/복호화 하는데 사용하고 키가 노출되어도 비교적 안전하다. 하지만 연산의 절차가 복잡해져 속도가 느리다.
이 부분은 HTTP와 HTTPS를 사용할 때가 다른 것처럼 필요에 의해 사용하면 된다.
동작 원리에 대해서는 나도 당장 자세히 이해하기가 어려워 풀어내진 못하겠으나,
TCP는 단순하게 오류가 제어되는, 전송은 다소 느릴 수 있지만 안정성이 담보가 되는 형태의 프로토콜로 이해했다.
UDP는 사용자 대 사용자 간 1:1로 매칭되는 전송속도로 오류가 제어되진 않으나, 오류가 없다고 가정할 시에 TCP보다 속도가 훨씬 빠른 프로토콜...
사실 CS의 C자도 제대로 모르지만, 역시 어느정도의 지식은 갖춰야겠다는 생각을 한다. 최대한 많은 공부와 잦은 포스팅(정리)를 할 예정.