본문 바로가기

Programming

네트워크 기초 (1) _ 인터넷이란? 네트워크란?

우리가 흔히 말하는 인터넷은 무엇일까?

나는 중학생 때 까지는 그냥 인터넷 익스플로러랑 같은 말이라고 생각했던 것 같다.
그러다 점점 모바일 기기의 발전에 따라 그 경계가 모호해졌던 것 같은데.. 그럼 다시, 인터넷은 무엇일까?

흔히 학교에서는 인터넷을 1. 너트와 볼트의 관점 / 2. 서비스 관점에서 정의하곤 한다.

1. 너트와 볼트의 관점.

무언가가 상호 연결되는 것을 지칭할 때 쓰는 은유라고 생각하면 된다.너트와 볼트의 관점에서 인터넷은 수많은 컴퓨팅 기기들이 연결된 것이라고 볼 수 있다.
그래서 인터넷을 네트워크의 네트워크라고 부르기도 한다.

네트워크 용어를 가볍게 보고 가자면, 

1. 호스트(hosts)
- 네트워크의 끝자락에 위치한 종단 시스템(End system)을 뜻하며 일반적으로 네트워크에 묶여있는 모든 장치(Device)를 뜻한다.

2. 패킷(Packet)
- 데이터 전송 단위로 데이터 뭉치(chunk of data)로 보면 된다. ex) 라우터(router), 스위치(switch)

3. 통신 연결(Communication link)
- 구리선이나 광케이블, 라디오 스펙트럼이나 인공위성 등 물리적 매체를 뜻하며 유선 혹은 무선으로 연결될 수 있다.
- 각 통신 연결들은 저마다의 전송률(transmission rate)을 사용하며, 전송율은 bps(bits per sec)로 bandwidth라고도 불리는 데, 일정 시간 전송할 수 있는 데이터의 총량을 뜻한다.

2. 서비스 관점

서비스 과점에서의 인터넷은 서비스를 제공하는 인프라(Infrastructure)라고 보면 좋을 것 같다.
예로는 웹이나 메일, 게임, 소셜 미디어 등이 될 수도 있다.


네트워크(Networks)란? 

Network Image

계속해서 네트워크에 대해서 알아보자.

위의 기기, 패킷, 통신 연결들의 뭉치를 지칭하며 네트워크 엣지(edge)와 코어(core)로 구분된다.
네트워크 엣지는 위의 호스트와 같이 클라이언트와 서버와 같이 네트워크의 끝에 위치한 뭉치를 뜻하며, 서버는 주로 데이터센터에 있다.
네트워크 코어는 라우터와 같은 패킷들이 서로 연결된 형태이다.

프로토콜(Protocols)은 사전적으로는 조약이나 약속을 의미하는데, 네트워크에서는 컴퓨터나 원거리 통신장비들이 메시지를 주고 받는 양식이나 규칙을 뜻한다. 예로는 http/skype/TCP/IP 등이 있다.

라우터(Router)는 다수의 네트워크 연결에 이용된다. 네트워크간 데이터 전송을 위한 최적의 경로를 설정해주며 다른 기종간의 네트워크 연결을 위해서 여러 프로토콜에서 오는 패킷을 받을 수 있어야한다. ex)공유기

그러면 호스트와 같은 종단시스템에서 종단 라우터에는 어떻게 연결을 하는 것일까?
이것은 우리가 흔히 일상에서 와이파이를 이용하면서 느낄 수 있는데,
1. 지역망 / 2.기관 연결망(학교/회사) / 3.모바일 연결(Wifi 4G/5G)등의 방법이 있다.

네트워크 엣지에서의 접근
왼쪽: 데이터 전송속도 vs 네트워크 범위 / 오른쪽: 이동성 vs 데이터 전송속도

네트워크 엣지에서의 접근


네트워크 코어
네트워크 코어는 라우터들이 서로 연결되어 있는 형태를 띄고 있다.
이 때 한 호스트(source)에서 다른 호스트(destination)으로 데이터를 전송한다고 하면, 호스트는 이 데이터를 패킷 단위로 쪼개어 라우터들을 통해 전송하게 되는데 이를 패킷 스위칭(Packet-switching)이라고 한다.

패킷 스위칭(Packet-switching)

패킷을 전송하는 시간(Packet transmission delay)은 패킷의 길이(bits) / 패킷 전송 속도(bits/sec)로 정해지게 되며, 이를
L(length of packet)/R(transmission-rate)로 나타낸다.
따라서 한쪽 종단시스템에서 라우터를 거쳐 다른 종단시스템으로 간다고 했을 때 걸리는 시간은 2L/R 이 된다. 

이 때, 라우터에 데이터가 도착하는 속도가 라우터에서 전송하는 속도를 초과하게 되면 라우터에 데이터가 쌓이게 되는데, 이 과정에서 FIFO(queue)의 개념으로 데이터 전송이 일어나며 뒤에 도착한 데이터들은 계속 기다리게 되고 만약 메모리가 꽉 차게 되어버린다면 해당 패킷은 버려지게 된다.

라우팅(Routing) - 출발지에서 도착지까지 알고리즘을 통해 패킷의 길을 결정하는 것.
포워딩(Forwarding) - 패킷을 라우터로부터 적절한 라우터로 이동시키는 것

이와 같이, 인터넷에서 주로 사용되는 패킷 스위칭이 있는 반면에, 전통 전화망에서 이용되었던 서킷 스위칭(Circuit switching)도 있지만 이 포스팅에서든 다루지 않겠다.

패킷 스위칭의 특징

리소스가 적을 때는 서비스 퀄리티를 보장하지 못한다. (최선을 다해 노력은 한다..)
물리적인 라우팅이나 스위칭이 라인 속도로 수행되어야 한다.
file을 전송하는 것과 같은 빠른 트래픽을 요구하는 것에 효율적이다.
요청 시 네트워크를 사용한다.
패킷이 손실될 수 있다.

'Programming' 카테고리의 다른 글

SWIFT UI study #2 기초 문법  (0) 2023.01.14
SWIFT UI study #1 기초 문법  (0) 2023.01.14
[책 리뷰] Clean Code _ 완벽한 코드 작성을 위한 클린 코드  (0) 2022.04.21
쿠키란?  (0) 2020.03.28