Thumbnail

✨ 네트워크란?
 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체

💡 노드 : 서버, 라우터, 스위치 등 네트워크 장치
💡 링크 : 유선 또는 무선

네트워크는 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어이다. 네트워크의 구성요소부터 시작해서 네트워크의 데이터 전송 방식, 패킷 딜레이, 손실 등에 대해 알아보자!

네트워크

Network

출처 : Internet Mapping Project

위의 그림은 인터넷의 주요 서비스 제공자를 그림으로 표현한 것이다.

인터넷 네트워크의 노드는 최초에는 4개부터 시작했다고 한다. 그러나 현재는 그림에서 볼 수 있듯이 무수히 많아졌다. 이제 네트워크가 어떻게 이루어져 있는지 한번 살펴보자.

Network

네트워크는 크게 3가지로 구성되어 있다.

  • 네트워크 엣지 (Network Edge)
  • 액세스 네트워크 (Access Network)
  • 네트워크 코어 (Network Core)

쉽게 얘기하자면 네트워크 엣지 - 액세스 네트워크 - 네트워크 코어 - 액세스 네트워크 - 네트워크 엣지 순으로 데이터가 이동한다고 보면 된다!

각각의 네트워크 구성요소들이 무슨 의미이고 어떤 기능을 하는지 자세히 알아보자!

네트워크 엣지 (Network Edge)

인터넷의 가장자리를 차지하는 네트워크 엣지에는 End System이라고 불리는 인터넷에 연결된 컴퓨터나 다른 장비들이 위치하고 있다. End System들은 웹 브라우저나 웹 서버 프로그램 같은 애플리케이션 프로그램을 실행(Host) 하기 때문에 Host라고도 불린다.

호스트는 Clinet와 Server로도 나뉘는데, 클라이언트가 데스크톱이나 스마트폰 등이 되는 반면 서버는 웹 페이지나 비디오 스트리밍 등을 저장하고 뿌리는 강력한 기계가 된다. 이때 서버는 항상 연결되어 있으며 클라이언트의 요청을 기다린다.

네트워크 엣지가 무엇을 의미하는지 알았으니 이제 데이터를 전송하는 방법에 대해 알아보자.

TCP와 UDP

TCP(Transmission Control Protocol)UDP(User Datagram Protocol) 에 대해서는 알아야 할게 많으므로 추후 자세히 다루고, 지금은 간단한 의미와 특징 정도만 알아보자. 쉽게 이해하기 위해 하나의 예를 들어 설명해 보겠다. 다양한 네트워크 용어들이 나오겠지만 지금은 의미 정도만 알고 넘어가도 괜찮다!

서울에 사는 A라는 사람이 부산에 사는 B라는 사람에게 편지를 보낸다고 가정해 보자. 편지를 보내는 과정을 보자면 A는 먼저 편지를 작성해서 편지봉투에 담아 A의 주소와 B의 주소를 적은 후 우편 종류를 선택하여 우체통에 넣으면 B라는 사람이 편지를 받을 수 있다.

우편 종류는 보통우편, 등기우편으로 별로 중요하지 않거나 중간에 내용이 유실되어도 상관없는 편지이면 가격이 싼 보통우편으로 선택하겠지만, 중요한 편지이고 상대방에게 무조건 전달이 돼야하면 돈을 더 지불하고 추적도 가능한 등기우편으로 보낼 것이다.

여기에서 나오는 A는 클라이언트, B는 서버, 편지는 클라이언트가 서버에게 보내는 요청, 편지봉투는 패킷, 편지봉투에 적은 A의 주소는 Source의 IP 주소, B의 주소는 Destination의 IP 주소, 우체통은 소켓 그리고 보통우편은 UDP 등기우편은 TCP로 데이터를 전송하는 2가지 방법을 의미한다.

딱 보기에도 TCP가 UDP보다 좋아 보이지 않나? 그래서 보통 데이터를 전송하는 방법으로 TCP 서비스를 이용한다. 그렇지만 TCP 대신 UDP를 사용하는 경우도 있다. 반드시 신뢰성을 보장할 필요가 없다면 상대적으로 구현이 어려운 TCP 서비스 대신 UDP 서비스를 이용해서 네트워크 자원을 아낄 수 있다.

TCP와 UDP의 의미를 알아봤으니 이제 두 서비스의 특징을 설명해 보겠다.

🔥TCP 서비스의 특징

TCP 서비스의 특징을 크게 3가지로 나눌 수 있다.

첫 번째로, TCP는 신뢰성 있고 순서대로 바이트 스트림 데이터를 전송한다. 즉, 데이터를 전송한 그대로 받을 수 있게 신뢰성을 보장(Reliable)하고 우리가 파일을 전송하면 파일 데이터의 순서가 바뀌거나, 텍스트의 글자 순서가 갑자기 뒤바뀌는 일이 없게 한다.

그리고 TCP는 흐름 제어(Flow Control)를 하는데 이는 송신 측과 수신 측의 데이터 처리 속도 차이를 해결하기 위한 기법으로 송신자는 수신자가 받을 수 있는 속도보다 빨리 전달할 수 없다. 즉, 아무리 보낼 수 있는 속도가 빨라도 받는 쪽에서 모두 수용할 수 없다면 의미가 없다. TCP는 신뢰성을 보장하기 때문에 수신 속도보다 전송 속도가 빠를 수 없다.

마지막으로 TCP는 혼합 제어(Congestion Control)를 하는데 이는 송신 측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법으로 송신자는 네트워크가 혼잡할 땐 전송 속도가 느려지게 된다.

보통 HTTP, FTP, Telnet, SMTP(Email) 등에서 사용된다.

🔥UDP 서비스의 특징

UDP 서비스는 TCP 서비스의 특징과 반대된다.

UDP 서비스는 서로 연결되어 있지 않고 데이터가 유실(Unreliable)될 수 있으며 순차적이지 않을 수 있다.

그리고 TCP는 흐름 제어를 통해 수신자 혹은 네트워크의 능력을 고려하여 받을 수 있는 만큼만 전송하는 반면 UDP는 받을 수 있든지 말든지 데이터를 전송한다.

또한 TCP는 혼합 제어를 통해 네트워크가 혼잡할 땐 속도를 낮춰서 전송하는 반면 UDP는 네트워크 현재 상태를 고려하지 않고 데이터를 전송한다. 여러 상황을 고려하지 않고 데이터를 전송하기 때문에 속도가 빠르다는 장점이 있다.

보통 Streaming Media, DNS, Real Time Voice 등에서 사용된다.

✨ 프로토콜이란?
 데이터 통신을 원활하게 하기 위해 필요한 통신 규약(약속)

액세스 네트워크 (Access Network)

Network

액세스 네트워크는 네트워크에 접근하기 위한 네트워크이다. 뭔가 말장난 같지만, 쉽게 말해 End System 들이 인터넷을 사용할 수 있도록 길을 열어주는 네트워크라고 보면 된다. 무선과 유선으로 나뉘며 위 사진의 파란 선을 액세스 네트워크라 보면 된다.

스마트폰에서 와이파이에 접속하거나 PC에 랜선을 꼽는 것 모두 액세스 네트워크에 접속하는 것이라고 할 수 있다. 액세스 네트워크의 종류는 3가지로 DSL, Cable Network 그리고 Home Network가 있다.

액세스 네트워크의 의미와 종류정도만 알아보고 네트워크 코어 부분을 알아보자. 액세스 네트워크의 개념을 더 자세히 알고 싶다면 이곳을 참고하자!

네트워크 코어 (Network Core)

이제 네트워크의 중심부인 네트워크 코어에 대해 알아보자.

네트워크 코어는 Router들 간의 연결된 집합이며, 인터넷과 인터넷의 End System(Host)를 연결해 주는 역할을 한다. End System들은 네트워크 코어를 통해서 메시지를 주고받을 수 있다.

그렇다면 네트워크 코어에서는 어떻게 데이터를 전송할까?

네트워크 코어에서 데이터를 전송하는 방법은 두 가지가 있다.

회선 교환 방식(Circuit Switching)패킷 교환 방식(Packet Switching)이다. 각각 무엇을 의미하는지 특징들을 알아보자!

Circuit Switching

먼저 Circuit Switching의 정의부터 알아보자. 위키백과에 따르면 다음과 같다.

회선 교환망(Circuit Switching) 은 발신자와 수신자 간에 독립적이며 동시에 폐쇄적인 통신 연결로 구성되어 있다. 이러한 1 대 1 연결을 회선(circuit) 또는 채널(channel)이라고 말한다.

쉽게 얘기하자면 Circuit Switching은 미리 데이터가 전송될 경로를 예약해놓고 전송하는 셈이다. 회선은 Frequency-Division Multiplexing(FDM) 혹은 Time-Division Multiplexing(TDM)으로 구현이 되어있으며 전통적인 전화 네트워크가 이 방식을 사용한다.

예를 들어, 집에서 친구 집으로 전화를 건다고 생각해 보자. 전화하려고 할 때 전화기 간 네트워크가 연결이 되고, 데이터의 전송률이 일정한 양만큼 보장이 된다. 대신에 이미 네트워크가 사용 중이게 되기 때문에 다른 전화 연결을 받을 수 없게 된다.

Circuit Switching의 장점으로는, 네트워크를 통체로 사용하기 때문에 라우터에서 Queue로 데이터를 관리할 필요가 없게 돼서 Queueing Delay가 발생하지 않는다. 그래서 데이터가 확실하게 전송되는 것이 보장된다. 밑에서 딜레이에 대해 자세히 다룰 테니 우선 이해만 하고 넘어가자!

단점으로는 회선을 점거 중이기 때문에 사용하지 않더라도 연결이 되어있으면 새로운 End System과 연결을 할 수 없어 자원이 낭비된다.

Packet Switching

✨ Packet이란?
 Host는 데이터를 전송하는 기능이 있는데, 전송하려는 데이터를 Chunk라는 것으로 자른다. 이것을 Packet이라고 한다. 쉽게 말해서 전송하는 데이터를 일정한 크기의 데이터로 자른 것을 Packet이라고 한다. 실제 전송되는 데이터 단위이다.

Packet이 무엇인지 알아보았으니 이제 Packet Switching의 정의를 알아보자. 위키백과에 따르면 다음과 같다.

패킷 교환(Packet Switching) 은 컴퓨터 네트워크와 통신의 방식 중 하나로 현재 가장 많은 사람들이 사용하는 통신 방식이다. 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 방법을 말한다.

Network

출처 : 위키백과

이처럼 Packet switching은 데이터를 패킷(packet)이라는 단위로 쪼개서 전송하는 방식이다. 패킷은 다음 링크로 전송하기 전에 저장을 한 뒤 전달하는 Store and Forward 방식을 따른다고 한다.

패킷의 헤더에는 출발지(Source)와 목적지(Destination) 정보가 있고 라우팅 알고리즘을 이용하여 경로를 설정하고, 중간의 라우터들을 거쳐 최종 목적지에 도달하게 된다.

Packt Switching의 장점으로는, 트래픽이 균형 잡힌 게 아닐 때 자원 공유하면 유리하고 (내가 사용 안 할 때 다른 애가 사용 가능) 회선 교환망은 자원 예약 과정(Call Setup)이 필요하지만 패킷은 이런 과정이 필요 없고 단순하다.

단점으로는 패킷 딜레이나 손실이 있을 경우에 Reliable한 데이터 전송과 Congestion Control을 위한 프로토콜이 필요하고 오디오, 비디오와 같이 Bandwidth의 보장이 필요한 경우 패킷은 보장이 안된다.

그렇다면 컴퓨터네트워크에서는 Circuit Switching과 Packet Switching 중 어느 것을 사용할까?

Circuit Switching은 대역폭에 따라 사용 유저가 제한되어 있지만 Packet switching은 데이터를 쪼개서 전송하는 방식이므로 이론상 무제한으로 사용이 가능하기 때문에 컴퓨터 네트워크에서는 패킷 전송(Packet Switching)으로 통신을 한다. 보통 광속도로 데이터를 전송한다고 한다!

🔥Packet Delay

Network

우리는 인터넷을 사용하다 보면 대학 수강 신청 시즌에는 사이트가 터지던가 유튜브가 느려지는 일이 발생한다. 패킷 전송은 광속도로 데이터를 전송한다고 하는데 왜 이런 일이 발생할까?

패킷 전송에서 시간 지연이 발생하는 원인은 4가지가 있고 이 4가지 모두를 합쳐서 Totla Nodal Delay라고 한다. 이제 딜레이가 발생하는 4가지 원인에 대해 알아보자.

🕒Processing delay
 라우터가 패킷의 헤더를 읽고 어느 방향으로 패킷을 보낼지 정하는 부분에서 발생

🕒Queueing delay
 처리가 끝난 패킷은 Queue에 저장되는데 이 패킷이 링크로 전송되기 전까지 발생

🕒Transmission delay
 모든 패킷의 Bit를 링크로 보내는데 걸리는 시간

🕒Propagation delay
 링크로 옮겨지면 이제 라우터 B로 전달되어야 하는데 링크부터 라우터 B까지 옮기는데 발생

그렇다면 딜레이를 줄일 수 있는 방법은 뭐가 있을까?

고속도로를 예시로 들어보자.

차가 하도 막히니까 나라에서 톨게이트(Processing delay)를 하이패스로 바꿔주면 차가 덜 밀리게 된다. 그래도 막힌다면 8차선(Transmission delay)을 두 배로 늘리는 방법도 있다. 그래도 설날, 추석 등 사람이 많다면 막힐 수밖에 없을 것이다.

이처럼 네트워크 상에서 생기는 딜레이는 결국에는 저 Queueing delay에서 모든 일이 발생 되는데 이거는 우리가 조절할 수 있는 게 아니라, 사람들이 사용하는 패턴이기 때문에 어쩔 수 없다.

🔥Packet Loss

큐는 유한한 용량을 가지고 있다. 그렇기 때문에 큐가 가득 차면 더 이상 패킷을 받지 못해서 어쩔 수 없이 드롭(Lost)하게 된다.

하지만 우리는 위에서 Network Edge의 데이터 전송 방식인 TCP는 데이터를 전송한 그대로 받을 수 있게 신뢰성을 보장(Reliable)한다고 하였는데 이렇게 데이터를 드롭하면 어떻게 되는 걸까?

패킷이 드롭된 라우터에서 재전송하는 게 아니라 End System에서 드롭된 패킷을 확인 후 재전송 하게 된다. 이건 Network Edge에서만 TCP를 사용하고 있고 Network Core(라우터)에서는 TCP를 사용하지 않기 때문이라고 한다.

라우터에서 TCP를 이용하기엔 너무 많은 비용이 들고 라우터에서 데이터를 전송하는 것만으로도 부하가 심하기 때문이라고 한다.

라우터에서는 데이터를 전송하는 역할만을 하기 때문에 Dumb Core라고도 부른다.

알아두면 좋은 점

네트워크 토폴로지

  • 네트워크의 구성요소인 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태

네트워크 토폴로지의 형태

  • Mesh : 여러 개의 장치들이 서로 상관성 없이 연결되어있는 구조
  • Star : Hub라는 네트워크 연결장치로 케이블을 통해 컴퓨터를 일대일로 연결 (허브를 중심으로 컴퓨터 배치모양이 별과 같아서 Star)
  • Bus : 케이블 하나를 여러 개의 시스템들이 연결되어 있는 형태
  • Ring : 각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 구성


요약


  • 네트워크는 Network Edge, Access Network, Network Core로 구성
  • Network Edge의 데이터 전송 방식은 TCP와 UDP 2가지 존재
  • TCP는 신뢰성 보장, 흐름 제어, 혼합 제어를 하고 UDP는 속도가 빠름
  • Network Core의 데이터 전송 방식은 회선 교환과 패킷 교환 2가지 존재
  • 컴퓨터 네트워크 이용자가 많기 때문에 패킷 교환 방식을 사용
  • 패킷 교환 방식을 사용할 때 딜레이, 손실 발생 가능
⚡읽어주셔서 감사합니다!⚡
🙂틀린 부분이나 보완할 점이 있을 경우 언제든지 댓글 혹은 메일로 지적해 주시면 감사하겠습니다!🙂

Reference :

Leave a comment