[Network]프로토콜(Protocol) - http / https

2022. 4. 10. 22:34Tech/Network

    목차

이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다.

 

서론

 실제 라이브 되는 서비스의 개발을 하다 보면, 아무리 클라이언트 프로그래머라고 해도 네트워크 쪽 지식을 필요로 하는 경우가 있습니다. 네트워크의 기초 프로토콜이나 인증, Wep handling 등 클라이언트와 밀접한 작업을 하는 경우가 있기 때문입니다. 이 글에서는 기초적인 Network 관련 지식 중 프로토콜, 그중 가장 대중적인 http/https에 관해서 다뤄보려 합니다.


프로토콜(Protocol)

 네트워크 관련된 공부를 하거나 작업을 하다 보면, 프로토콜(Protocol)이라는 단어를 자주 듣게 됩니다. HTTP, HTTPS, SSH, Telnet 등등 모두 프로토콜의 종류들입니다. 사실 이 단어는 외교에서 사용하는 의례(혹은 의정서)를 나타내는 단어라고 합니다. 이것이 네트워크에서는 '통신 규약'이라는 뜻으로 통하고 있습니다.

 

 즉, 컴퓨터나 원거리 장비, 단말기 등과 메시지를 주고받을 때 지켜야 하는 양식과 규칙을 체계화시켜놓은 것이라
할 수  있습니다. 사람들 사이에서도 의사소통을 할 때 지켜야 하는 규칙이나 약속이 있지 않나요? 지칭하는 단어의 뜻이라거나, 인칭이라거나 등등... 네트워크 상에서도 이러한 규약을 통해 메시지를 주고받는데 효율화를 추구합니다.


 인터넷 주소에서 https://www.~ 라는걸 흔히 봤을 겁니다. 여기서 ‘https’라는 것이 바로 프로토콜 부분입니다. https라는 프로토콜을 이용하여 www request를 요청하겠다는 것입니다.

WWW(World Wide Web, 사람들이 정보를 주고받는 세계적인 정보 공간)상에서 정보를 주고받을 수 있는 주된 프로토콜 중에는 http와 https가 있습니다. 일반 사람들이 흔히 보는 것이 이 프로토콜이 아닐까 생각합니다. 아래에서는 이러한 http와 https에 관하여 살펴보겠습니다.

 


http(HyperText Transfer Protocol)

 

http 80번 포트를 사용하고, www 상에서 주로 Html 문서를 주고받으며 TCP와 UDP를 사용합니다.

 

 또한 Application 계층에서 작동한다. 서버/클라이언트 모델을 따르는 프로토콜이며 클라이언트와
서버 사이의 Request / Response를 처리해줍니다. 예를 들어 익스플로러나 크롬 같은 웹브라우저가 서버에 웹페이지 접속을 요청(Request) 하면 서버는 웹페이지를 보여주기 위한 리소스 등을 내려주어 응답(Response) 해주는 구조입니다.

 

 http는 한 번의 요청과 그에 따른 응답이 끝나면 연결을 끊는 Connectless 방식으로 운용됩니다. 기본적으로 하나의 자원에 대해서 하나의 연결을 만든다고 보면 됩니다. 이러한 Connectless 방식은 불특정 다수의 사용자를 대상으로 하는 서비스에 적합합니다. 연결을 계속 유지하게 되면, 수십만 명이 이용하는 상황에서 처리할 수 있는 요청이 적어지게 될 테니 말이죠. 이 때문에, 연결을 끊기 때문에 클라이언트의 이전 상태를 알 수 없게 됩니다. 이것을 Stateless라고 부릅니다.

 

 이때 이용되는 것이 쿠키(Cookie)입니다. http는 쿠키를 이용하여 클라이언트와 서버의 상태 정보를 저장해놓고 다음 연결에 상태를 다시 불러오는 식으로 Stateless 문제를 해결한다고 합니다. 여담이지만, 상태를 저장하는 정보 조각이라고 해서 Cookie(조각)라고 부른다고 합니다.

 물론 HTTP 1.1부터 지원되는 Keep-alive 기능을 통해서 지정된 시간 동안 연결을 끊지 않고 요청을 계속 보낼 수 있다고 합니다. 위 내용은 어디까지나 일반적인 경우를 말합니다.


https(HyperText Transfer Protocol over Secure Socket Layer)

 https는 HTTP에 보안(Security) 버전이라고 생각하면 됩니다. 보안적 측면이 강화된 만큼 인증 통신과 전자상거래 등에 자주 이용된다고 하네요. HTTP와는 다르게 SSL/TSL 계층 위에서 작동합니다.

 

그러면 http에 비해 어떤 식으로 보안이 강화된 것일까요? 사실 http는 보안이 없다고 봐도 무방합니다. 아니 사실 없다고 생각합니다.
http 프로토콜로 송수신되는 데이터는 텍스트입니다. WWW 상에서 교환되는 Html 자체가 바이너리 파일도 아닌 텍스트 파일임을 봐도, 알 수 있고 HyperText Transfer라는 명칭의 일부를 봐도 단순 텍스트 교환이란 것을 알 수 있습니다.
이 말인 즉, 문맹이 아니라면 전송되는 모든 정보를 읽을 수 있다는 것입니다. https는 이러한 텍스트를 한번 암호화하여 전송해주는 방식입니다.(참고로 TCP/IP의 기본 포트번호는 443)

이렇게 한 번의 암호화를 거쳐 데이터가 송수신된다는 걸 제외하면 나머지는 http와 동일합니다.

 

https는 보안이 강화된 버전입니다. 다른 글에서 이 '보안'과 관련된 내용을 다뤄 보려 합니다.

반응형
LIST

'Tech > Network' 카테고리의 다른 글

[Network]http(s) 패킷(packet)  (0) 2022.04.10
[Network]프로토콜(Protocol) - https의 보안  (0) 2022.04.10