인터넷

kdkdhoho·2022년 1월 27일
0

목차

  1. 인터넷
    • 인터넷이란?
    • 인터넷의 작동 원리
  2. Domain Name
  3. DNS와 작동 원리
  4. HTTP
  5. 브라우저와 작동 원리
  6. hosting

1. 인터넷

인터넷이란?

  • 우선 네트워크에 대해 알아보자.

    Net+Work, 직역하면 일하는 그물망이 될 수 있겠다.
    결국 수 대의 컴퓨터가 그물망처럼 연결되어 서로 통신할 수 있도록 하는 것 Network이다.
    우리말로 통신망이라고 봐도 될 듯 하다.

  • 그리고 프로토콜(Protocol)이란, 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 통신 규약이다.

  • 그렇다면 Internet이란 무엇일까?

    The Internet is a global network of computers connected to each other which communicate through a standardized set of protocols.
    : 인터넷은 표준화된 프로토콜을 통해 컴퓨터끼리 통신하는 글로벌 네트워크이다.

    백엔드 로드맵 中 Internet

    Inter+Net. '~간의'의 뜻을 가지는 Inter와 위에서 언급한 Net을 합쳐 하나의 단어로 불린다.
    즉, Network간의 연결을 뜻하므로 인터넷이란 네트워크간의 통신, 통신 인프라라고 볼 수 있다.

인터넷의 작동 원리

그렇다면 좀 더 자세히 인터넷에 대해 알아보자. 인터넷은 어떤 방식으로 작동이 될까?

2대의 컴퓨터
만약 2대의 컴퓨터가 통신한다면, 컴퓨터는 유선(LAN선)이나 무선(Wifi, Bluetooth)으로 연결되어야 한다. (현대의 모든 컴퓨터들은 유선 혹은 무선으로 연결한다.)

앞으로 유선 케이블에 대해서만 언급하지만 무선 네트워크도 동일한 방식이다.

10대의 컴퓨터
그렇다면 컴퓨터 10대를 모두 연결하려면 총 45개의 케이블이 필요하다 !
만약 컴퓨터 전 세계 900만대 이상의 호스트 컴퓨터가 이런 방식으로 연결한다면..?

라우터
이러한 문제를 해결하기위해 네트워크의 각 컴퓨터는 라우터라고하는 특수한 소형 컴퓨터에 연결하는데, 이 라우터는 데이터를 송수신하는 장치이다.
(공유기와는 다르다. 이와 관련된 글은 추후 포스팅 예정)

라우터를 네트워크에 추가한다면 10대의 컴퓨터 네트워크에는 컴퓨터와 라우터를 연결하는 케이블 총 10개만이 필요하게 될 것이다.

자 그렇다면 이 또 하나의 컴퓨터인 라우터끼리 연결한다면 어떻게 될까?
네트워크 간 연결이 가능하게 될 것이고, 네트워크에 포함되는 컴퓨터는 무수히 확장할 수 있을 것이다.
라우터 간 연결

컴퓨터를 라우터에 연결하고, 라우터에서 라우터로 연결한다.

이렇게 부분 네트워크를 하나의 큰 네트워크로 확장하였다.

그럼 이렇게 연결해서 아주 먼 거리 혹은 국가간의 통신도 가능할까?
통신을 위해 라우터를 연결할 수 있을까?

안타깝게 불가능하다! 하지만 우리는 늘 그랬듯이 답을 찾았다.
그 답은 바로 전화 기반 시설이다.

전화 기반 시설은 이미 각자의 집에서 전 세계로 연결되어 있다.
따라서 이 전화 기반 시설을 이용하여 네트워크를 전 세계로 연결할 수 있는 것이다.

다만 우리의 네트워크를 전화 시설과 연결하기 위해 모뎀이라는 장비가 필요하다.
이 모뎀은, 네트워크의 정보를 전화 시설에서 처리할 수 있는 정보로 바꾸기도 하고, 그 반대의 경우도 마찬가지이다.

이렇게 라우터에서 모뎀으로, 네트워크에서 전화 시설에 연결한다.

연결 후, A 네트워크에서 B 네트워크로 데이터를 보내기 위해선 네트워크를 인터넷 서비스 제공 업체(Internet Service Provider, ISP)에 연결한다.
ISP는 간단히 인터넷 회사라고 불리는 LG, KT, SKT 등으로 생각하면 된다.

따라서 우리가 컴퓨터로 보내는 데이터는 ISP 네트워크를 통해 원하는 목적지로 이동하는 것이다.
인터넷이러한 전체 네트워크 인프라를 의미하는 큰 범주의 개념이다.

그렇다면 이제 개인이 Google에 접속한다고 생각해보자.
PC에서 Google에 접속 요청을 해야하는데, 과연 우리의 데이터는 어떻게 Google이라는 목적지를 정하여 전송될 수 있을까?

그것은 바로 IP주소와 관련있다.

IP주소

네트워크에 연결된 모든 컴퓨터에는 IP(Internet Protocol)주소라는 고유한 주소가 있다.
(ex. 192.168.2.10)

이러한 IP주소를 통해 목적지를 설정하여 인터넷을 통해 데이터가 전송이 된다.

하지만 google, instagram, naver 등 모든 웹사이트의 IP주소를 외우는 것은 불가능하다.
따라서 우리는 IP주소를 도메인 이름(Domain Name)이라는 사람이 읽을 수 있는 IP주소 이름을 지정하여 사용한다.

이러한 시스템을 통해 도메인 이름으로 지정된 IP주소로 연결할 수 있는 것이다.

인터넷과 웹

웹브라우저를 통해 웹을 탐색할 때 일반적으로 도메인 이름을 사용하여 웹사이트에 접속한다.

여기서 웹이 인터넷과 같은 의미일까?

정답은 그렇게 쉽게 같다고 할 순 없다는 것이다.

위에 적었듯이 인터넷은 수십억 대의 컴퓨터를 모두 연결하는 인프라이다.
이러한 컴퓨터들 중 일부는 웹 서버로서 웹브라우저가 이해할 수 있는 서비스를 제공한다.

한 마디로, 인터넷은 인프라이며, 웹은 인프라 위에 구축된 서비스이다.
참고로 웹 뿐만 아니라 인터넷 위에 구축된 다른 서비스(이메일 등)도 있다.

TCP/IP

<위키백과>
인터넷 프로토콜 수이트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다.
인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.

Transmission Control Protocol/Internet Protocol의 약자로서,
결국 TCP/IP 컴퓨터와 컴퓨터 간의 LAN(Local Area Network), WAN(Wide Area Network)에서 원활한 통신을 가능하도록 하기 위한 통신규약이다.

IP기반에 TCP가 사용되어서 TCP/IP라고 불리우는데,

  • IP란, 컴퓨터의 고유 주소이고,

  • TCP란, 서버와 클라이언트 간 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.

    여기서 신뢰성이란 Reliability이고, 오고가는 데이터의 완전함을 보장하는 성격이라고 볼 수 있다.
    쉽게 예를 들면, 우편을 보냈을 때 그 우편이 훼손되거나 사라지지 않고 올바르게 도착하는지이다.

즉, TCP/IP란 컴퓨터의 고유 주소를 이용하여 서버와 클라이언트 간 데이터를 신뢰성있게 전달하기 위한 프로토콜이라고 생각하면 된다.

참고 영상
Youtube Code.org - The Internet: Packets, Routing & Reliability

2. Domain Name

3. DNS와 작동 원리

Domain Name, 도메인 이름은 위에서 언급한 바와 같이 IP주소의 이름이다.

Domain Name System, DNS는 Domain Name을 이용해 원하는 도메인 이름의 IP주소를 얻는 시스템이다.

아래는 아마존에 있는 DNS의 설명에 관한 사진이다.
Amazon: What is DNS?

  1. 우리가 URL창에 www.google.com 을 입력하면 컴퓨터와 연결된 ISP의 DNS 서버로 해당 도메인 이름에 해당하는 IP주소를 요청한다.

  2. 만약 서버에 저장되어 있지 않다면, Root DNS Name Server에 요청한다.

  3. Root DNS Name Server에서는 .com, .org, .net 등 요청받은 도메인의 최상위 도메인(Top-Level Domain, TLD) 서버에게 요청한다.

  4. TLD Server에서 해당 도메인 이름의 주소를 하나 가져와 ISP의 DNS Server로 전송한다.

  5. ISP DNS Server에서 유저 컴퓨터로 전송하여 결국, 구글 서버 컴퓨터와 통신을 할 수 있게 된다.

DNS Server 계층구조
위 그림은 DNS Server의 계층구조이다.

HostName

위키백과
네트워크에 연결된 장치들에게 부여되는 고유한 이름이다.
특히 인터넷에서는 WWW, email 등에서 호스트명을 흔히 사용하며, 도메인 이름과 유사하지만 엄밀하게는 더 넓은 의미를 가지고 있다

도메인 주소를 생성하고나면 서비스를 구분하기 위해 별도의 서브 도메인을 사용한다.
예를 들어, 네이버의 경우 메일은 mail.naver.com이라는 주소를 사용하고, 웹툰의 경우 comic.naver.com이라는 주소를 사용한다. 여기서 mailcomic은 naver.com이라는 도메인 이름에서 각각의 서비스를 구분하기 위한 호스트 네임이다.

4. HTTP

HTTP, HyperText Transfer Protocol.

웹브라우저와 웹서버 간 데이터를 주고 받기 위해 사용되는 프로토콜이다.

HTTP의 특징으로 상태가 없는(stateless) 프로토콜이라는 것이다.
여기서 상태가 없다는 말은, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리된다는 말이다. 좀 더 쉽게 말해 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 것이다.

이러한 특징덕에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 이점이 생긴다.

HTTP는 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.

URL

URL(Uniform Resource Locators)은 방문하고자하는 웹사이트의 위치 지정자로 예를 들면 google.com이다.

여기서 URL과 도메인의 차이가 무엇인지 궁금해서 개인적으로 찾아보았다.

네이버 백과사전
URL은 웹상에서 서비스를 제공하는 각 서버들에 있는 파일들의 위치를 명시하기 위한 것으로, 접속해야 될 서비스의 종류, 서비스의 위치(도메인 네임), 파일의 위치를 포함한다.
일반적인 체계(syntax)는 프로토콜://정보를 가진 컴퓨터 이름/디렉터리/이름/파일 네임으로 구성된다.

URL은 더 넓은 범주의 개념이고 도메인 이름은 URL의 범주 중 하나라고 이해하면 될듯하다.
아래는 URL의 구조이다.
URL 구조

위의 URL을 이용하여 서버에 특정 데이터를 요청할 수 있다.
이때 아래의 HTTP 요청 메소드(HTTP Request Methods)를 이용한다.

  • GET: 존재하는 자원에 대한 요청
  • POST: 새로운 자원을 생성
  • PUT: 존재하는 자원에 대한 변경
  • DELETE: 존재하는 자원에 대한 삭제


결국, HTTP는 클라이언트인 웹브라우저와 서버인 웹서버 간 통신을 하기 위한 프로토콜이다.
또한 URL을 통해 웹브라우저가 웹서버에게 다양한 요청을 할 수 있고, 서버는 그에 따른 행동을 수행한다.

HTTPS

HTTP Security.

인터넷을 통해 오고가는 데이터를 해커가 몰래 보는 것을 막기 위해 웹사이트는 웹브라우저에게 안전한 채널에서 커뮤니케이션하라고 요청을 한다.
이 안전한 채널은 전송계층보안(TLS, Transport Layer Security)이나 보안소켓계층(SSL, Secure Sockets Layer)을 사용한다.

데이터를 몰래 보거나 무단으로 변경하는 것을 방지하기 위한 통신라인을 감고 있는 보안층이 TLS와 SSL이라고 생각하면 된다.

TLS와 SSL의 활성화는 URL 옆 작은 자물쇠가 있음을 확인하면 된다.
이는 HTTPS는 HTTP 요청이 안전하고 보호되고 있음을 보장하는 것이다.

HTTPS 동작 원리

웹사이트가 브라우저에게 안전한 연결상태를 작업하라고 요청할 때, 먼저 디지털 인증(Digital Certificate)을 제공한다. 이는 요청된 웹사이트임을 입증하는 공식 ID카드와 같은 것이다.

디지털 인증은 인증기관에서 발행한다.
인증기관은 웹사이트의 신원을 검증하고 인증서를 발급하는 공신력있는 기관인데, 마치 정부에서 신분증 또는 여권을 발급하는 것과 같다.

따라서, 웹사이트가 디지털 인증없이 연결을 시작하려고 하면 웹브라우저에서 경고를 보낼 것이다.

5. 브라우저와 작동 원리

웹브라우저, 즉 브라우저는 현재 우리가 사용하고 있는 크롬, 파이어폭스, 사파리 등의 소프트웨어이다. 일반인의 시각에서 흔히 인터넷 들어가라고 하면 누르는 그것이다.

브라우저의 주요 기능

브라우저의 주요 기능은 사용자가 선택한 자원(HTML, PDF, 이미지 등)을 서버에 요청하고, 표시하는 것이다.
자원의 주소는 위에서 언급한 URL에 의해 정해진다.

브라우저는 HTML과 CSS에 따라 HTML파일을 해석하여 표시하는데, 이 표시는 웹 표준화 기구인 W3C(World Wide Web Consortium)에서 정한다.

브라우저의 기본 구조

브라우저의 주요 구성 요소는 다음과 같다.

브라우저의 기본 구조

  1. 사용자 인터페이스: 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분
  2. 브라우저 엔진: 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어
  3. 렌더링 엔진: 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시
  4. 통신: HTTP 요청과 같은 네트워크 호출에 사용. 이는 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행.
  5. UI 백엔드: 콤보 박스와 창 같은 기본적인 장치를 그림. 플랫폼에서 명시하지 않은 일반적인 인터페이스로서, OS 사용자 인터페이스 체계를 사용.
  6. 자바스크립트 해석기: 자바스크립트 코드를 해석하고 실행.
  7. 자료 저장소: 자료를 저장하는 계층. 쿠키를 저장하는 것과 같이 모든 종류의 자원을 HDD에 저장 할 필요가 있음. HTML5 명세에는 브라우저가 지원하는 '웹 데이터 베이스'가 정의됨.

크롬은 대부분의 브라우저와 달리 각 탭마다 별도의 렌더링 엔진 인스턴스를 유지하는 것이 주목할만하다. 각 탭은 독립된 프로세스로 처리된다.

하지만, 브라우저는 각자 서로 다른 데이터 해석 방식을 가질 수 있다.
때문에 특정 웹사이트의 인터페이스 또는 기능이 브라우저마다 다르게 표현될 수 있다.

브라우저의 작동 원리

자세한 전체 과정은 NAVER D2 - 브라우저는 어떻게 동작하는가?를 읽어보자.
(솔직히 말해서 너무 길고 당장은 이해하고 정리하기 힘들어서 링크를 남긴다..
언젠가 저 내용을 따로 이해하고 정리할 날이 오겠지)

간단하게나마 적어보자면, 웹브라우저가 웹서버에 URL을 통해 요청을 해 서버로부터 HTML 파일을 받는다. 이때 렌더링 엔진을 이용해 HTML 파일을 브라우저 화면에 띄운다.

6. hosting(호스팅)

호스팅은 서버의 전체 혹은 일부를 이용할 수 있도록 임대해주는 서비스이다.

서버로서의 역할을 하기 위해선 언제 클라이언트가 접속할 지 모르니 24시간 대기해야하고, 안정적인 연결을 위한 네트워크 구축과, 수 많은 데이터들을 관리하는 여건이 되어야 한다.

따라서 개인이 서버를 운영 및 관리하기보다는 호스팅을 받는 것이 더 좋을 것이다.

호스팅의 종류

  1. 웹 호스팅
    웹 호스팅은 하나의 서버를 여러 명이 공유하는 것이다.
    따라서 가격도 저렴하고 대중적으로 가장 많이 사용되는 호스팅이다.
  1. 서버 호스팅
    웹 호스팅과 반대로 한 명의 고객이 하나의 서버를 임대하는 호스팅이다.
    따라서 가격도 비싸고, 그만큼 스케일과 트래픽 양이 많은 서버가 필요할 때 이용하는 호스팅이다.
    서버를 단독으로 사용하기에 설치, 삭제 등의 개발이 자유롭고 고정적으로 트래픽 양이 많은 사이트에 적합한 호스팅이다.
  1. 클라우드 호스팅
    서버 호스팅과 비슷하지만 물리적 서버가 아닌, 가상서버를 임대하는 데에 차이가 있다.
    따라서 자유롭게 서버스펙을 조절할 수 있고 이용한 만큼만 금액을 지불하면 된다.
    일시적인 트래픽 변동량이 많은 사이트에 적합한 호스팅이다.

참조 사이트

tistory 내맘대로 클라우드 이야기 - 네트워크와 인터넷
mozilla
Youtube Code.org
roadmap.sh
tistory 까마귀의 생각 창고 - 인터넷의 작동 원리
tistory 탕구리's 블로그 - DomainName과 HostName
캡틴판교 - 프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1
NAVER D2 - 브라우저는 어떻게 동작하는가?
Naver blog 보리보리 쌀 - 호스팅이란? 의미와 종류

profile
newBlog == https://kdkdhoho.github.io

0개의 댓글