본문 바로가기
Programming/11. etc

002_인터넷 🌎

by @sangseophwang 2022. 4. 3.

인터넷, 다 아는거 아닌가?

처음엔 그렇게 생각했다. 그러다 문득 개발자가 되겠다는 생각을 갖고 초창기에 봤었던 프론트엔드 개발자 로드맵을 다시 보게 됐는데, 가장 기초인 인터넷 항목에 대해 제대로 공부하지 않았다는 생각이 들었다. 로드맵 기준으로 가장 처음 위치에 있는 이 인터넷 파트를 넘어가서 무작정 HTML, CSS, JS를 공부했다는게 뭔가 부끄럽기도 했고, 그래서 준비한 이번 글은 인터넷에 관한 이야기이다.

1. 인터넷은 어떻게 동작할까?

우선 인터넷의 어원은 다음과 같다.

인터넷이란 이름은 1973년 TCP/IP를 정립한 빈튼 서프( Vinton Gray Cerf) 와 로버트 칸( Robert E. Kahn )이 
'네트워크의 네트워크'를 구현하여 모든 컴퓨터를 하나의 통신망 안에 연결( International Network )
하고자 하는 의도에서 이를 줄여 인터넷(Internet)이라고 처음 명명하였던 것에 어원을 두고 있다.

작동 방식을 간단히 설명하면 다음과 같다.

1. 인터넷에 연결된 기기는 IP address라는 일련의 번호로 고유하게 식별된다. 일종의 집 주소라고 생각하면 된다.(152.222.222)
2. 우리는 이 IP 주소를 다 외울 수 없기 때문에 이를 대신할 도메인을 브라우저 창에 입력한다. (https://www.facebook.com)
3. 도메인을 입력하면 DNS 서버, 우리로 치면 전화번호부에 해당하는 서버가 이에 해당하는 IP 주소를 브라우저에 보내고, 브라우저는 이를 통해 데이터 센터에 요청을 보낸다.
4. 광섬유 케이블을 통해 데이터 센터에서 요청에 따른 데이터를 디지털 형식으로 보내준다.
5. 라우터에 도착한 데이터는 전기 신호로 바뀌며 이더넷 케이블 또는 와이파이 기기를 통해 전송된다.
6. 도착한 데이터가 브라우저 화면에 표시되면 일련의 동작이 끝난다.

아래 영상은 인터넷 작동 방식을 쉽게 설명해준다. 참고로 보면 도움이 될 것 같다.

2. TCP/IP 통신에서의 인터넷 동작

- 클라이언트와 서버는 각 계층을 순서대로 거쳐 상대와 소통한다.
- 그 순서는 다음과 같다.

- 각각 4단계를 거쳐 통신을 진행한다.
- 먼저 클라이언트가 애플리케이션 계층부터 HTTP 리퀘스트를 통해 어느 웹 페이지를 보고 싶다는 지시를 한다.
- 그 다음 트랜스포트 계층(TCP)에서는 애플리케이션 계층에서 받은 데이터(HTTP 메세지)를 통신하기 쉽게 조각내 안내 번호와 포트 번호를 붙여 네트워크 계층에 전달한다.
- 네트워크 계층(IP)에서는 수신지 MAC 주소(Media Access Control Address)를 추가해 링크 계층에 전달한다. 이로써 네트워크를 통해 송신할 준비를 마친다.
- 마지막으로 링크 계층에서 Ethernet 헤더를 포함해 서버에 전달하고, 이를 받은 서버의 네트워크 계층부터 역으로 수신해 HTTP 리퀘스트 내용을 받고 이에 맞는 데이터를 전달하는 방식이다.

3. DNS 작동 원리

- DNS, Domain Name System의 줄임말로 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.
- 작동 원리는 다음과 같다.

- 이와 같이 Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 물어봐서 그 답을 찾는 과정을 Recursive Query라고 부른다.

참고로 알아둬야할 것들!

http://www.naver.com/index.html      ->  URL
www.naver.com                                   ->  Host Name
.com                                                      ->  Top-level Domain Name
.naver.com                                            ->  Second-level Domain Name

4. HTTP는 무엇일까?

- HyperText Transfer Protocol, 직역하면 하이퍼본문 전송 규약이다.
- HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이라고 보통 정의를 하는데, 쉽게 표현하자면 요청과 응답을 하기 위해 정한 '약속' 같은 것이다. 이러한 규약이 있어야 정확히 원하는 바를 '요청'할 수 있고, 그 요청에 원하는 '응답'을 할 수 있기 때문이다.
- HTTP의 특징으로는 상태를 계속 유지하지 않는 프로토콜(stateless protocol)이라는 것이다.
- HTTP 프로토콜 독자적으로, 리퀘스트와 리스폰스를 교환하는 동안 상태를 관리하지 않으며, 결국 HTTP 프로토콜 레벨(애플리케이션 레벨)에서는 이전에 보냈던 리퀘스트나 이미 되돌려준 리스폰스에 대해서는 전혀 기억하지 않는다.

5. IP는 무엇일까?

- 인터넷 프로토콜(Internet Protocol)의 약자로 흔히는 이 프로토콜에서 각 장치를 나타내는 IP 주소를 가리키는 말로 쓰인다.
- IP 주소는 쉽게 말해 각 장치들의 전화번호라고 생각하면 쉽다.
- 네트워크 계층에 속해있다.
- 호스트에서 호스트까지의 통신, 즉 보내는 컴퓨터에서 받는 컴퓨터까지의 통신을 책임진다. 하는 작업을 아주 이해하기 쉽게 대략적으로 설명하면 편지 봉투에 보내는 주소, 받는 주소를 작성하고 우표를 붙여서 우체통에 넣는 일우편함에 들어온 편지를 꺼내서 나한테 온 편지가 맞는지 확인하는 정도의 작업이라고 생각하면 된다. 
- IP의 역할은 개개의 패킷(네트워크 전송의 용량 단위)을 상대방에게 전달하는 것이다. 상대방에게 전달하기까지 여러 요소가 필요한데, 그 중에서도 IP 주소와 MAC 주소가 중요하다.
- IP 주소는 각 노드에 부여된 주소를 가리키고, MAC 주소는 각 네트워크 카드에 할당된 고유의 주소다.
- IP 통신은 MAC 주소에 의존해 통신을 한다. 인터넷에서 통신 상대가 같은 랜선 내에 있을 경우는 적어서 여러 대의 컴퓨터와 네트워크 기기를 중계해 상대에게 도착한다. 그렇게 중계하는 동안 다음으로 중계할 곳의 MAC 주소를 사용해 목적지를 찾아간다. 이 때 ARP(Address Resolution Protocol)이라는 프로토콜이 사용된다.
- ARP는 주소를 해결하기 위한 프로토콜 중 하나인데, 수신지의 IP 주소를 바탕으로 MAC 주소를 조사해 수신지에 도달하게 해준다.

6. 라우터란?

- 네트워크와 네트워크 간의 경로(Route)를 설정하고 가장 빠른 길로 트래픽을 이끌어주는 네트워크 장비이다.
- 일종의 택배 집배소와 같다고 보면 된다.
- 화물을 보내는 사람은 택배 집배소 등에 화물을 가지고 가면 택배를 보낼 수 있는 것만 알고 있으며, 집배소는 보내는 곳을 보고 어느 지역의 집배소에 보내면 되는지만 알면 된다.
- 이처럼 목적지까지 중계를 하는 동안 컴퓨터와 라우터 등의 네트워크 기기는 목적지에 도착하기까지의 대략적인 목적지만 알고 있으며 인터넷 전체를 상세하게 파악하고 있지 않다는 특성을 알 수 있다.

7.  호스팅이란?

- 어떤 서비스를 빌려서 사용한다는 말이다. 
- 호스팅은 웹 호스팅, 서버 호스팅, 클라우드 호스팅과 같은 종류가 있다.
- 먼저 웹 호스팅은 HTML, CSS 등으로 제작한 서비스를 웹에 올리기 위해 인터넷상의 공간을 임대해주는 서비스다. 쉽게 표현하자면 다세대주택에 방을 임대해 사용하는 것과 같다. 별도의 서버 구매나 배포 등 복잡한 과정을 돈을 주고 맡겨 사용하는 것이다.
- 다음으로 서버 호스팅은 호스팅 업체의 물리 서버 하나를 통째로 구매할 수 있으며 서버 운영에 필요한 인프라와 기술력까지 제공받을 수 있는 서비스이다.
- 웹 호스팅의 경우 저렴한 가격으로 서버 및 인프라의 구축이 필요 없지만 서버의 일부분만 사용하기 때문에 사용량이 제한되고 서버 관리 권한이 없다. 따라서 소규모 웹사이트에 주로 사용되고, 후자의 경우 서버 관리에 대한 직접권한을 갖고 서버를 단독으로 사용하기 때문에 보안상으로도 유리하지만 초기 구축단계에서 웹호스팅에 비해 시간과 비용이 많이 든다는 단점이 있다.
- 마지막으로 클라우드 호스팅은 아마존 EC2, 구글 클라우드 플랫폼 등 클라우드 서비스를 이용해 웹 호스팅의 간단함과 서버 호스팅의 대용량 사용 여부 등의 장점을 고루 갖춘 호스팅 서비스이다. 클릭 몇번으로 10분안에 누구나 서버를 생성하고 관리할 수 있으며 트래픽의 변동에도 유연하게 대처할 수 있기 때문에 일시적인 이벤트나 인프라가 유동적인 곳에 사용하기 편리하다는 장점이 있다.

 

우선 이렇게 간단히 인터넷과 관련된 지식에 대해 알아보았는데, 작성하다보니 네트워크와 관련된 지식이 많아 이 부분을 따로 공부하고 다룰 필요가 있겠다는 생각이 들었다. 다음 시간에는 HTTP와 TCP/IP에 관한 더욱 자세한 글을 작성해보고자 한다.

반응형

'Programming > 11. etc' 카테고리의 다른 글

005_npm ci, npm i  (0) 2022.05.08
004_cdn 🔗  (0) 2022.04.16
003_css의 다양한 숨김처리 방법  (0) 2022.04.11
001_브라우저의 저장소에 대해 알아보자 🌎  (0) 2022.03.31

댓글