본문 바로가기

Front-end/road map

1. 인터넷이란 무엇인가? - 2

원문 : roadmap.sh/guides/what-is-internet#ip-addresses-and-dns

 

Developer Roadmaps

Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.

roadmap.sh

 

  • 인터넷은 무엇인가?
  • 인터넷에서 정보는 어떻게 움직이는가?
  • 네트워크는 서로 어떻게 대화하고 관련 프로토콜은 어떻게 이루어지는가?
  • 패킷, 라우터 및 안정성
  • HTTP 및 HTML – 브라우저에서 이 웹 페이지를 어떻게 보고 있는가?
  • 어떻게 인터넷에서 전송되는 정보를 안전하게 할 수 있는가?
  • 사이버 안전과 몇몇 일반적인 인터넷 범죄는 무엇인가?

패킷, 라우팅, 신뢰성

한 컴퓨터에서 다른 컴퓨터로 인터넷상의 정보 전달은 고정된 경로를 따를 필요가 없습니다. 실제로, 그것은 전송하는 동안 경로를 바꿀 수 있습니다. 이러한 정보 전송은 패킷의 형태로 이루어지며 이러한 패킷은 특정 요인에 따라 다른 경로를 따를 수 있습니다.

 

인터넷에는 정말 엄청난 데이터가 떠다니고 있습니다. 하지만 데이터의 각 부분을 어떻게 신뢰성 있게 전달할 수 있을까요? 여러분이 Spotify의 노래를 재생하고 싶다고 가정합시다. 과정을 보면 클라이언트의 컴퓨터를 직접 Spotify에 연결하고 Spotify가 전용선으로 클라이언트에게 노래를 보내는 것처럼 보입니다. 하지만 사실 이것은 인터넷이 하는 방식이 아닙니다. 인터넷이 직접적인 전용 연결선으로 구성되어 있다면 수백만의 사용자가 동시에 로그인하여 각자의 일을 하는 것은 불가능할 것입니다. 특히, 각각의 배선과 컴퓨터가 항상 가동된다는 보장이 없으므로 더 그렇습니다.

 

한 컴퓨터에서 다른 컴퓨터로 정보를 전달하는 방법은 상당히 흥미롭습니다. 이것은 고정된 경로를 따를 필요가 없습니다. 우리가 차 안에 타고 한 곳에서 다른 곳으로 가는 것과 마찬가지로 인터넷상의 정보는 패킷이라 불리는 것 안에서 한 컴퓨터에서 다른 컴퓨터로 가고 인터넷상에서 한곳에서 다른 곳으로 여행을 합니다.

 

교통 체증 또는 도로 상태에 따라 우리는 다른 경로를 선택할 수 있습니다. 그리고 차 안에 여러 물건을 실어 나르듯이 많은 종류의 디지털 정보를 IP 패킷과 함께 보낼 수 있지만 약간의 제한이 있습니다. 예를 들어, 우주 왕복선을 만든 곳에서 발사 장소로 이동해야 한다고 생각해보세요. 왕복선은 트럭 한 대에 고정할 수가 없어서 여러 부분으로 나눠야 하고 여러 대의 트럭을 이용해야 합니다. 그리고 운송 시 여러 경로를 이용해야 하고 목적지에 각기 다르게 도착할 것입니다. 마침내 모든 부분이 도착하게 되면 완전한 우주 왕복선으로 재조립하여 발사할 수 있습니다. 인터넷상에서 세부사항은 이와 유사합니다.

 

친구에게 어떤 사진을 전송하고 싶은데 그 사진은 용량이 너무 커서 패킷 안에 함께 보낼 수가 없습니다. 이때 데이터가 컴퓨터 안에 있으므로 이미지를 보내는 컴퓨터는 빠르게 패킷이라 부르는 수백 개 또는 수천 개의 더 작은 부분으로 쪼갤 수 있습니다. 패킷은 차 또는 트럭과는 달리 운전자가 없고 경로를 선택하지 않습니다. 하지만 각 패킷은 어디에서 왔으며 어디로 가는지 나타내는 인터넷 주소가 있습니다. 라우터라고 부르는 인터넷상의 특수한 컴퓨터는 트래픽 관리자와 같은 역할을 하여 패킷을 순조롭게 계속 네트워크를 통해 이동하게 합니다. 한 경로가 막히면, 개별 패킷은 인터넷을 통해 다른 경로로 여행하여 제멋대로 목적지에 도착합니다.

 

인터넷 프토토콜의 일부로서 각 라우터는 패킷을 보내는 여러 경로를 추적하고 패킷의 목적지 주소에 기반을 두어 각 데이터 조각마다 가장 효율적인 경로를 선택합니다. 이 경우 가장 효율적이라는 것은 비용을 의미하는 것이 아니라 시간과 회사 간의 방침 및 관계 등과 같은 비-기술적 요소를 의미합니다. 여행할 데이터를 위한 최고의 경로가 최단 경로일 필요는 없습니다. 여러 경로의 옵션이 있으면 네트워크의 결점이 없어집니다. 이것은 오류가 발생해도 네트워크가 계속해서 패킷을 보낼 수 있다는 의미입니다. 이것은 인터넷의 주요 원칙을 위한 기초로 즉, 신뢰성입니다. 지금 만약 데이터를 요청하려고 하는데 아무것도 전달받은 것이 없다면 어떻게 하나요? 가령 노래를 듣고 싶다고 가정해봅시다. 모든 데이터를 전달받아 노래가 완벽하게 재생된다고 어떻게 100% 확신할 수 있나요?

 

새 친구인 TCP(전송제어 프로토콜)를 소개합니다. TCP는 패킷으로 전송 및 수신되는 모든 데이터를 관리합니다. 이는 마치 등기 우편 서비스와 같다고 생각하면 됩니다. 기기상에 있는 노래를 요청할 때, Spotify는 노래를 여러 패킷으로 쪼개서 보냅니다. 패킷이 도착하면 TCP는 정리하고 각 패킷을 수신했다는 확인서를 보냅니다. 패킷이 모두 있으면 TCP는 전달되었고 준비가 되었다고 신호하고 노래를 재생합니다. 만약 TCP가 일부 패킷이 빠져 있음을 발견하면 노래가 제대로 재생되지 않습니다.

 

TCP와 라우터 시스템의 대단한 점은 8개 ~ 80억 개의 기기와 함께 작동할 수 있는 확장성입니다. 사실 이러한 장애 허용과 중복의 원칙 때문에 우리가 더 많은 라우터를 추가할수록 인터넷의 신뢰성은 더 높아집니다. 또한, 다른 이들이 인터넷을 사용할 수 있도록 서비스를 중단하지 않고도 인터넷을 성장 및 확장 시킬 수 있습니다.

 

HTTP와 HTML

HTTP는 웹 페이지가 인터넷을 통해 전송되는 표준 프로토콜입니다.

 

전 세계 컴퓨터가 어떻게 커뮤니케이션할까요? 먼저 웹브라우저를 엽니다. 그다음 웹 주소 또는 URL(Uniform Resource Locator)을 입력합니다. 그러면 사용자의 컴퓨터는 순간 서버라 불리는, 대개 수천 마일 떨어져 있는 다른 컴퓨터에 말하기 시작합니다. 그리고 밀리 초안에 여러분의 컴퓨터는 서버에게 웹사이트를 찾아달라고 요청하고, 그 서버는 HTTP라 부르는 언어로 여러분의 컴퓨터에 대답하기 시작합니다. HTTP(HyperText Transfer Protocol)는 일종의 컴퓨터가 다른 컴퓨터에 문서를 요청할 때 사용하는 언어라고 생각할 수 있습니다.

 

만약 여러분이 여러분의 컴퓨터와 웹 서버 간의 인터넷상 대화에 끼어들려고 하면 이것은 주로 “GET” 요청이라 부르는 뭔가로 구성됩니다. 그래서 로그인 페이지를 로딩하려고 하면 GET 요청(GET /login)을 웹 서버에 보내야 합니다. 이는 서버에게 여러분이 로그인 페이지용 HTML 코드를 원한다는 의미입니다.

 

HTML(HyperText Markup Language)은 웹브라우저에 페이지가 어떻게 보여야 하는지 말하기 위해 사용하는 언어라고 생각하면 됩니다. 텍스트는 HTML 안에 들어 있지만, 이미지와 동영상과 같은 부분은 요청받을 때 필요한 고유 URL을 갖는 별개의 파일입니다. 브라우저는 이것들 각각에 대한 별개의 HTTP 요청을 전송하고 그것들이 도착하면 표시합니다. 그리고 GET 요청 말고, 종종 어떤 양식을 작성하거나 검색을 할 때 HTTP POST 요청을 합니다.

 

Tumblr에 로그인한다고 가정합시다. 첫 번째 일은 이메일 주소와 비밀번호를 가지고 있는 POST 요청을 만드는 것입니다. 이것은 Tumblr의 서버로 가고 서버는 사용자를 인증하고 웹 페이지를 사용자의 브라우저로 보내고 성공이라고 말합니다. 하지만 그 웹 페이지와 함께 여러분의 브라우저를 보고 저장하기 위해 조그맣고 보이지 않는 쿠키 데이터를 부착합니다. 이는 웹사이트가 사용자가 누구인지 기억할 수 있는 유일한 방법이기 때문에 중요합니다. 쿠키 데이터는 ID 카드와 같습니다. 웹브라우저는 쿠키 데이터를 갖고 있으며 사용자가 다음에 Tumblr를 새로 고치고 다음에 방문하면 웹브라우저는 자동으로 사용자를 인식하여 그 ID 번호를 Tumblr 서버로 보낼 요청과 함께 부착합니다. 그러면 Tumblr 서버는 요청이 여러분의 브라우저에 왔음을 알고 ID 번호를 보고 인식합니다.

 

이제 인터넷은 완전히 공개돼있습니다. 연결점 모두가 공유하고 정보를 평문으로 전송합니다. 그래서 인터넷을 통해 전송된 개인 정보를 해커가 몰래 볼 수 있습니다. 하지만 안전한 웹페이지는 안전한 채널에서 커뮤니케이션하라고 요청함으로써 방지할 수 있습니다. 안전한 채널은 전송계층보안(TLS)의 대체인 보안소켓계층(SSL)을 사용합니다. SSLTLS를 몰래 훔쳐보기 또는 무단 변경을 방지하기 위한 통신 라인을 감고 있는 보안 층이라 생각할 수 있습니다. SSLTLSHTTPS 옆 브라우저 주소창 안에 작은 자물쇠가 나오면 활성화됩니다. HTTPS 프로토콜은 HTTP 요청이 안전하고 보호되고 있음을 보장합니다. 웹사이트가 브라우저에 안전한 연결상태에서 작업하라고 요청할 때, 이것은 먼저 디지털 인증을 제공합니다. 그 인증은 요청된 웹사이트임을 입증하는 공식 ID 카드와 같은 것입니다. 디지털 인증은 인증 기관에서 발행합니다. 인증 기관은 웹사이트의 신원을 검증하고 인증서를 발급하는 공신력 있는 기관입니다. 정부과 여권과 신분증을 발급하는 것과 같습니다.

 

이제, 웹사이트가 발급된 디지털 인증 없이 연결하려고 하면 브라우저는 경고할 것입니다. 이는 웹 브라우징의 기본입니다.

 

요약하면 HTTPDNSHTML 또는 미디어 파일, 웹상의 모든 것의 전송 및 수신을 관리합니다. 후드 하에서 이것을 가능하게 만드는 것은 정보를 작은 패킷으로 쪼개 운송하는 TCP/IP와 라우터 네트워크입니다. 다행히 일단 인터넷의 한 층이 어떻게 작동되는지 배우면 모든 세부사항을 기억하지 않더라도 그것에 의존할 수 있습니다. 우리는 그러한 층 모두가 함께 작용하여 확장성과 신뢰성을 갖고 성공적으로 전달할 것이라 믿습니다.