계발하는 개발자

[네트워크] 인터넷과 HTTP/S, DNS, 웹소켓, SSL(TLS) 개념정리 본문

🖥 Computer Science/Network

[네트워크] 인터넷과 HTTP/S, DNS, 웹소켓, SSL(TLS) 개념정리

dev_genie 2023. 8. 22. 05:00

네트워크 통신에 대한 이해를 탄탄하게 하고가야 할 것 같아서 오늘부터 관련 강의와 자료 검색을 통해 학습한 내용을 정리해보려고 한다.

순서

  1. 인터넷 동작원리
  2. DNS
  3. 웹소켓
  4. HTTP/HTTPS 
  5. SSL(TLS)

 

1. 인터넷 동작원리

먼저 인터넷에 대해 알아보자.

인터넷은 전 세계 컴퓨터들이 서로 정보를 주고받을 수 있도록 한 거대한 네트워크를 말한다.

네트워크란 '네트'와 '워크'의 합성어로, 직역하면 '일하는 그물' 정도가 될 것이다.

'그물처럼 서로 엮여서 일한다'는 의미인 셈으로, 즉 여러 대의 컴퓨터가 서로 통신할 수 있게 해주는 것을 말한다.

그렇다면, 이러한 네트워크들의 집합체인 인터넷은 어떻게 동작할까?

 

mdn에서 이에 대해 간단한 그림으로 설명되어 있어 가져왔다.

 

인터넷은 어떻게 동작하는가? - Web 개발 학습하기 | MDN

이 글에서는 인터넷의 개념과 작동 원리에 대해 설명합니다.

developer.mozilla.org

위 그림에서처럼 단순히 2대의 컴퓨터를 연결한다면 선 하나로 연결할 수 있지만,

10대 이상의 컴퓨터를 연결한다면 금새 복잡하게 얽히는 구조가 된다.

100대를 연결한다면 더더 복잡해질 것이고! 이쯤되면 뭔가 조치가 필요하단 생각이 든다.

그래서 중앙에 라우터라는 기계를 두고 각 컴퓨터는 라우터에 연결하도록 했다.

이렇게 하면 각 컴퓨터는 1:1로 연결될 뿐 아니라, 각 컴퓨터는 라우터만 바라보면 되기에 통신 구조가 훨씬 단순해진 것을 볼 수 있다.

 뿐만 아니라 라우터들끼리도 연결할 수 있기 때문에, 두 개의 서로 다른 네트워크를 연결할 수 있고

두 개의 네트워크는 곧 세 개 이상의 네트워크와도 연결될 수 있게 되었다.

이것을 곧 네트워크의 확장이라 한다.

위에서 살펴본 경우가 사설 네트워크의 구조라면, 외부 네트워크는 인터넷 제공장비(모뎀)와 인터넷 제공업체(ISP)를 통해 외부에 있는 네트워크와 연결되게 된다.

그리고 이러한 구조가 끝없이 연결되어 있으면 바로 인터넷이 된다.

 

그리고 연결된 컴퓨터들끼리는 서로 간에 공유할 수 있는 IP(인터넷 프로토콜)주소가 있다.

이 주소는 점으로 구분된 네 개의 숫자 구성의 주소이며, 흔히 다음과 같다.

192.168.2.10.

구글 IP 주소 찾기

 

2. DNS

142.250.206.206 이란 주소가 바로 구글의 IP주소이며, 이 주소를 통해 우린 집에서도 구글 서버에 쉽게 접속할 수 있다.

이때, 이 주소는 사람이 외우기 힘들기 때문에 쉽게 알파벳이나 한글 등으로 변경시키는 역할을 하는 것이 DNS이며,

이로써 사람들이 기억하기 쉽게 만들어진 인터넷주소도메인이라 한다.

이를 통해 우린 구글IP주소를 번거롭게 외울 필요없이, www.google.com 이라는 직관적인 인 주소체계로 구글서버를 찾아갈 수 있다.

 

3. 웹소켓

웹소켓HTML5 표준 기술로, 서버로의 요청없이 데이터의 송수신을 동시에 처리할 수 있는 방법을 말한다.

통상적인 HTTP 통신은 client가 server에 요청을 해야지만 응답을 하는 단방향 통신이었다면, 웹소켓은 이러한 단점을 보강하기 위한 프로토콜로써 양방향 통신이 가능하다.

그러나 웹소켓은 HTTP 기반으로 데이터를 주고받는 특성 때문에, 최초에는 HTTP 통신을 해서 핸드쉐이크를 해줘야 한다.

핸드쉐이크 개념이 궁금하면 아래를 클릭하자.

더보기

핸드쉐이크(HandShake)

핸드쉐이크는 직역하면 '악수'라는 뜻으로, 마치 우리가 다른 사람과의 첫 만남에서 만나서 악수를 요청하고 악수를 받듯이, 정상적인 통신을 하기 전에 일련의 과정을 거쳐 연결을 성립시키는 것을 말한다.

통상적으로 연결을 수립할 때는 3way-HandShake, 연결을 종료할 때는 4way-HandShake를 사용한다.

 

- 3 way HandShake

총 3가지 과정이 존재하는데, 아래와 같이 일반 대화를 들어 이해하면 쉬운 것 같다.

A 👉 B : 내 말 들려?
B 👉 A : 잘 들려. 내 말은 들려?
A 👉 B : 잘 들려!

 

- 4 way HandShake

연결을 끊을 땐 4 way Handshake 과정을 거친다.
과정을 쉽게 표현하면 아래와 같다.

A 👉 B : 나는 다 보냈어. 이제 끊자!
B 👉 A : 알겠어! 잠시만~
B 👉 A : 나도 끊을게!
A 👉 B : 알겠어!

그 다음에는 웹소켓으로 프로토콜이 업그레이드되면서 양방향 통신이 가능하게 된다.

이를 통해 끊을 때도 클라이언트나 서버 양쪽에서 아무나 끊을 수 있다.

 

어떤 상황에서 웹소켓이 쓰일까?

실시간 통신을 필요로 하는 곳이나 채팅, 주식 같은 사이트에서 주로 사용된다.

대표적인 곳으로 국내 암호화폐 거래소 업비트 같은 곳을 들 수 있다.

실제 웹소켓을 열어 확인해보면 위와 같이 실시간 데이터가 끊임없이 갱신되는 모습을 볼 수 있다.

 

4. HTTP/HTTPS

HTTP란?

HTTP(HyperText Transfer Protocol)는 HTML 문서를 주고 받는 통신 규약이다.

예를들어 우리가 인터넷에 접속하여 다신샵을 방문했다고 하자.

그러면 사용자의 PC(클라이언트와 다신샵 홈페이지(서버)가 통신을 하면서 자료를 주고 받는다.

이때 서버측은 클라이언트에게 홈페이지의 메인화면 같은 HTML 자료를 전송하는데 그때 HTTP 통신 규약을 사용한다.

HTTP 규약을 사용하여 통신을 수행하면 홈페이지 URL 헤더 부분에 http:// 값이 등장한다. 

위 경우 클라이언트와 서버 사이에 HTTP 통신을 사용해서 데이터를 주고 받는다는 것을 알 수 있다.

이렇듯이 HTTP 기술은 우리의 생활을 편리하게 만들어준다는 이점이 있다. 하지만 기술이 발전함에 따라 많은 해킹 방법들이 발견되었고 HTTP에서 보안적 취약점이 발생하게 되었다. 단순하게 서버와 공개적인 정보를 주고 받기 위해서 하는 HTTP 통신은 문제가 없으나, 은행 거래와 같이 아주 중요한 비밀번호 등의 정보를 주고받을 경우 해커에 의해 정보가 노출되기 쉬운 문제가 있다.

이같은 문제로 구글 크롬에서 배포된 68버전에서는  SSL 인증이 되지 않은 HTTP 환경의 페이지에 접속하면, 

브라우저 주소창 옆에 '주의 요함'이라는 표시를 띄우는 등의 변화가 있었다.

 

그리고 이러한 HTTP의 보안 취약점을 해결하기 위해 HTTPS가 등장하게 된다.

 

HTTPS란?

HTTPS(HyperText Transfer Protocol Secure)

앞전 HTTP와의 차이라면 secure, 즉 보안을 뜻하는 S가 추가로 붙었다.

이를 통해 웹페이지를 요청하는 사람이 무슨 페이지를 요청하는지, 서버가 유저에게 어떤 페이지를 주었는지에 대한 정보가 암호화된다. 쉽게 말해 위 문단의 HTTP를 암호화하여 전송하면 그것이 HTTPS다.

정부가 야동 사이트, 불법 웹툰 사이트, 불법 도박 사이트 등을 전부 없애지 못하는 이유도 바로 이 HTTPS 때문이다.

 

또한, HTTPS를 웹 상에 검색하면 SSL(=TLS) 이라는 연관 검색어가 함께 나오는데

이는 HTTPS의 암호화 방식을 뜻한다.

SSL 인증을 통해 HTTPS 암호화를 진행하고, 발신자와 수신자만 해당 암호를 해독하여 정보를 주고 받을 수 있다.

암호화를 위한 SSL은 인증서인데 SSL로 일반적으로 널리 알려져 있지만, SSL은 과거 버전이며 현재 버전은 TLS다. 

 

5. SSL(=TLS)

HTTPS 암호화를 책임지는 SSL 인증서는 다음과 같이 동작한다.

기존의 HTTP는 클라이언트<-> 서버 통신을 진행할때 두 당사자만 믿고서 통신을 했더라면,

HTTPS는 제 3자가 등장한다. 즉 신뢰할 수 있는 다른 기관이 당사자 사이에 존재하고, 해당 기관이 서버 또는 클라이언트에 SSL 인증서를 발급하여 해당 당사자를 보증하는 방법을 취한다.

 

이 방법을 통해 우리는 접속할 사이트가 진짜 은행 사이트인지 가짜 은행 사이트인지 SSL 인증서를 통해 신뢰할 수 있다.

그후 신뢰된 당사자간 암호화된 통신을 진행하면 외부에서는 어떤 내용으로 통신하는지 알 수 없다.

 


*이해에 도움이 됐던 강의나 자료 출처:

- 인프런 / 초보 백엔드 개발자 로드맵 강의 2강

 

[무료] 초보 백엔드 개발자 로드맵 - 인프런 | 강의

웹, CI/CD, API 작성법, DB, 배치 처리 등 백엔드 개발자가 알아야 하는 기본적인 지식들을 소개합니다., 백엔드, 뭐부터 공부해야 할지 모르겠다면? 핵심을 정리한 백엔드 개발 로드맵 ⭐️ ⭐️ 제

www.inflearn.com

- Inpa Dev / [WEB] 🌐 웹 소켓 (Socket) 정리 (역사부터 차근차근)

 

[WEB] 🌐 웹 소켓 (Socket) 정리 (역사부터 차근차근)

​웹 개발을 처음 배우기 시작했다면 서버와 클라이언트의 통신은 모두 HTTP 프로토콜만 이용해서 이루어진다고 생각할 수 있습니다. 하지만 웹 개발을 하면서 채팅, 게임, 주식 차트 등의 실시

inpa.tistory.com

- doozi / HTTP/HTTPS란? TCP, UDP, HandShake 개념 정리

 

HTTP/HTTPS란? TCP, UDP, HandShake 개념 정리

🧣 HTTP란? HyperText Transfer Protocol 클라이언트와 서버 간 데이터를 주고 받기 위한 규칙(프로토콜)이다. 여기서 데이터는 텍스트, 이미지, 동영상 등 모든 종류를 말한다. HTTP 종류에는 TCP 와 UDP 방

doozi0316.tistory.com

 

LIST
profile

dev_genie

@dev_genie

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!