본문 바로가기
Study Progamming/Network

[ Mr.jw의 네트워크 ] #1장 기초 - 2

by ${코딩몬} 2017. 8. 17.

[ 강의자 소개 ]


닉네임  :  Nor-op

E-mail   :  roto1248@gmail.com

GitHub  : github.com/Nor-op

참고도서 :  컴퓨터 네트워크 - 소프트웨어 및 시스템 제4판


단지 공부의 목적으로 해당 도서 및 자료를 정리해둔 것입니다.


#1장 기초 - 2



[ 링크, 노드, 클라우드 - 2 ]


교환망



[ 그림 1 ]

[그림 1]은 각 노드가 하나 이상의 점대점 링크에 연결되어 있는 노드들의 집합을 나타낸다. 두 개 이상의 링크에 연결되어 있는 노드는 데이터를 하나의 링크에서 다른 링크로 넘겨 주는 역할을 한다. 이 전달노드들이 체계적으로 구성되어 교환망(Switched network)을 형성한다. 무수히 많은 교환망중에 회선 교환기(circuit switch)[각주:1]와 패킷 교환기(packet switch)[각주:2]가 가장 일반적이다. 회선 교환기는 주로 전화시스템에 사용되고, 패킷 교환기는 대부분의 컴퓨터 네트워크에 사용된다.

패킷 교환망의 중요한 특징은 노드들이 서로에게 블록화된 데이터를 보낸다는 것이다. 이 블록 데이터는 파일, 전자우편 또는 이미지와 같은 애플리케이션 데이터로 생각할 수 있다. 각 블록 데이터를 패킷 또는 메시지라 지칭한다.

패킷 교환망은 일반적으로 저장-전달 이라는 방법을 사용한다.  이름이 나타내는 것 처럼 각 노드는 우선 완전한 패킷을 받아서 내부 메모리에 저장한 후 다음 노드에 전달한다. 이와 반대로, 회선 교환망은 우선 링크들 사이에 전용회선을 만든 뒤, 보내는 노드가 이 회선을 통해 연속된 데이터 비트를 목적지 노드에 보낼 수 있도록 하는 것이다. 컴퓨터 네트워크에서 회선 교환기 대신 패킷 교환기를 사용하는 주된 이유는 효율성 때문이다.

[그림1]의 구름모양(클라우드라 함)은 네트워크를 구성하는 내부 노드(이들은 공통적으로 스위치라고 하며, 패킷의 저장, 전달이 주된 기능이다)와 네트워크를 사용하는 클라우드 밖의 외부 노드(일반적으로 호스트라 하며 사용자 지원과 애플리 케이션 프로그램 실행을 담당한다)를 구분한다.

이 클라우드는 또한 컴퓨터 네트워킹의 가장 중요한 요수 중의 하나임을 주목해야 한다. 일반적으로 이 클라우드는 어떤 종류의 네트워크(점대점 링크, 다중 접속 링크, 교환망)라도 상관없이 네트워크를 표시하는데 사용된다.



[ 그림 2 ]


[그림2]는 컴퓨터를 간접적으로 연결시키는 다른 방법을 나타낸다. 즉 독립된 네트워크(클라우드)들이 서로 연결되어서 인터네트워크(internetwork),또는 줄여서 인터넷을 형성한다. 관례로 일반 인터네트워크를 지칭할때는 소문자 i를 사용하고 현재 운영중인 TCP/IP 인터넷은 대문자 I를 사용한다.

두 개 이상의 네트워크에 연결된 노드는 공통적으로 라우터(router) 또는 게이트웨이(gateway)라 찾아봤는대 두개가 큰 차이가 없다.

하는데 스위치와 거의 동일한 역할, 즉 메시지를 한 네트워크에서 다른 네트워크로 전달을 한다.

호스트들이 서로 직간접으로 연결되어 있다고 해서 호스트 간 연결성을 제공하는 데 성공한 것은 아니다. 최종 요구사항은 각 노드가 통신을 원하는 네트워크 상의 다른 노드를 지정할 수 있어야 한다.

이 기능은 각 노드에 주소를 할당함으로써 이루어진다. 주소는 노드를 나타내는 바이트 문자열이다. 보내는 노드(source node)가 목적지 노드(destination node)에 메시지를 보내고자 할 때는 목적지 노드의 주소를 지정한다. 발생지 노드와 목적지 노드가 서로 직접 연결되어 있지 않다면 스위치와 라우터가 이 주소를 이용하여 어떻게 메시지를 목적지까지 전달할지를 결정한다. 이렇게 주소를 이용해 목적지 노드까지 메시지를 전달하는 방법을 체계적으로 결정하는 과정을 라우팅이라고 한다.


보내는 노드가 한 개의 목적지 노드에게만 메시지를 전달하는 것->유니캐스트

보내는 노드가 네트워크 상의 모든 노드에게 메시지를 보내는 것->브로드캐스트

보내는 노드가 몇몇 그룹의 노드들에게만 메시지를 보내는 것->멀티캐스트


이렇게 여러가지 방식이 있으므로 노드용 주소뿐만 아니라 멀티캐스트와 브로드캐스트용 주소를 지원하는 것이 네트워크에 요구되는 사항이다.


[ 그림 3 ]


여러 호스트들이 똑같은 링크를 동시에 사용하고자 할 때, 어떻게 공유할 수 있을까?

호스트가 어떻게 네트워크를 공유하는가를이해하기 위해서는 다중화(multiplexing), 즉 다중 사용자 간의 시스템 자원 공유를 의미하는 기초 개념을 도입해야 한다. 직관적으로 이해하면 다중화는 시분할 컴퓨터 시스템과 유사하게 설명될 수 있다. 즉, 단일 CPU가 다중 작업 간에 공유될 때,각각의 작업은 자신들만의 프로세서를 가지고 있다고 믿는 것처럼 이해할 수 있을 것이다. 이와 유사하게 다중 사용자에 의해 보내진 데이터가 네트워크를 구성하는 물리적 링크 위에서 다중화될 수 있다. 

[그림3]의 상황에서 세 개의 데이터 흐름은 스위치 1에 의해 하나의 물리적 링크로 다중화 되고 스위치 2에 의해 다시 각각의 분리된 흐름으로 역다중화 된다.

다중 흐름을 하나의 물리적 링크 위에 다중화하는 데 여러 가지 방법이 있다. 일반적으로 많이 쓰이는 한가지 방법은 STDM(Synchronous Time-Division Multiplexing)이다. STDM의 개념은 시간을 동일한 크기의 조각으로 나누어 라운드 로빈(round-robin)[각주:3]

방식으로 각각의 흐름에 데이터를 보낼 수 있는기회를 주는 것이다. 다시 말하면 시간 조각 1동안 s1에서 r1로의 데이터가 전송되고, 시간 조각 2 동안 s2에서 r2로의 데이터가 전송되는 방식이다. 

또 다른 방법으로는 FDM(Frequency-Division Multiplexing)이 많이 사용된다. FDM은 서로 다른 주파수로 각각의 흐름을 전송하는데, 이는 각 TV방송국이 물리적 케이블 TV링크 위에 서로 다른 주파수를 이용하여 자사의 신호를 전송하는 것과 유사하다.

이해는 쉽지만 STDM과 FDM은 두가지 제한점을 갖는다. 

하나는 흐름중 하나가 보낼 데이터를 가지고 있지 않다면, 이 흐름에 할당된 부분, 즉 시간 조각 또는 주파수가 다른 흐름들 중 하나가 보낼 데이터를 가지고 있어도 유휴상태로 있게 된다.

다른 하나는 STDM과 FDM 모두 최대 흐름수가 고정되고 사전에 알려져야 하는 상황에서만 사용할 수 있다. STDM의 경우에 시간 조각의 크기를 재조정하거나 추가로 시간 조각을 할당하는 것(FDM의 경우 새로운 주파수를 추가하는 것)이 실용적이지 않기 때문이다.


통계적 다중화라는 형태가 있다. 이것은 비록 이름 자체로 개념을 이해하는 데 그다지 도움이 되지 않지만, 실제론 아주 간단한 두가지 개념이 있다.

첫째로 STDM의 경우처럼 물리적 링크가 시간적으로 공유된다. 즉 한 흐름의 첫 번째 데이터가 물리적 링크를 따라 전송되고, 그 뒤에 다른 흐름의 데이터가 전송되고, 이와 같은 전송이 계속 된다. 그러나 STDM과는 달리 각 흐름으로부터의 데이터가 미리 정해진 시간에 따르지 않고 요구에 따라 전송된다.

그러므로 한 개의 흐름만이 데이터를 보내야 한다면, 자신의 시간 몫이 돌아올 때까지 기다리지 않고 즉시 전송할 수 있게 된다. 이렇게 유휴시간을 줄임으로써 패킷 교환의 효율성이 높아지게 된다. 

그러나 통계적 다중화는 모든 흐름에게 자신이 전송할 수 있는 기회를 보장할 수 있는 방법이 없다. 즉 단 하나의 흐름이 데이터를 보내기 시작하면, 다른 흐름에게 기회를 줄 수 있도록 전송을 제한할 수 있는 어떤 방법이 필요하다. 이 필요성을 충족하기 위해 통계적 다중화는 각 흐름이 주어진 시간에 보낼 수 있는 데이터 블록의 크기를 제한한다. 이 제한된 크기의 데이터 블록은 패킷(packet)이라 지칭되는데, 애플리케이션 프로그램이 보낼 수 있는 임의의 크기를 갖는 메시지(message)와 구분된다. 패킷 교환망의 최대 패킷 크기 제한은 호스트가 생성한 메시지를 한 패킷에 담아 보낼 수 없는 경우를 초래하기도 한다. 즉 소스(보내는 쪽)는 메시지를 여러 개의 패킷으로 나누어 보내고, 받는 쪽에서 이들 패킷을 원래 메시지로 재조립해야 한다.




[ 그림 4 ]


다시 말하면 각각의 흐름이 연속된 패킷을 물리적 연결을 통해 전송할 때 패킷만으로 다음에 전송될 패킷을 결정한다 . 하나의 흐름만이 보낼 데이터를 가지고 있다면, 연속해서 자신의 패킷을 보낼 수도 있다. 그러나 하나 이상의 흐름이 데이터를 보내려고 한다면, 이 패킷들은 링크 위에 번갈아 보내진다.

[그림4]는 다중발생지로부터의 패킷을 단일 공유링크에 다중화 하는 것을 나타낸다. 공유 링크에 어느 패킷을 언제 보내는가 하는 것은 다양한 방법으로 결정할 수 있다. 예를 들어 [그림3]과 같이 링크로 서로 연결된 스위치로 구성되어 있는 네트워크에서는, 위와 같은 결정은 공유 링크에 패킷을 정송하는 스위치에 의해 내려진다. 패킷 교환망의 각 스위치는 패킷별로 독립적인 전송 결정을 내린다. 네트워크 설계자에게 당면한 문제 중 하나는 이런 결정을 어떻게 공평하게 내리는가 하는 것이다. 예를 들면 선입선출 방식으로 패킷을 보내도록 설계할 수 있다. 또 다른 방법은 현재 송신하는 데이터를 라운드 로빈 방식으로 스위치 하여 각각의 다른 흐름마다 패킷을 전송하는 방법이다. 이 방식은 어떤 흐름이 특정한 링크의 대역폭을 확실하게 수신하거나, 정해진 것 이상의 시간 동안 스위치에서 패킷이 지연되지 않는다는 것이 확실한 경우에만 사용할 수 있다. 특정한 흐름에 대해 대역폭을 지정하도록 하는 네트워크를 QoS(Quality of Service)가 보장되었다고 하고 이는 나중에 다룰것이다.

또한 [그림4]를 보면 스위치가 세 개의 패킷 흐름을 하나의 링크로 다중화 해야 하기 때문에 공유 링크의 용량보다 빠르게 패킷을 전달받을 수도 있다. 이런 경우에 스위치는 이들 패킷을 메모리 상에 버퍼링 해야만 한다. 스위치가 내보낼 수 있는 것보다 빠르게 패킷이 들어오는 상황이 장시간 계속되면, 스위치의 버퍼 공간이 모자라 어떤 패킷은 버려야 할 것이다. 스위치가 이런 상태에서 운영되면 혼잡(congest)하다고 한다. 



  1. 교환기를 통하여 다수의 단말이 자유로이 접속되는 형태. 교환기를 거쳐 임의의 복수 단말 간을 접속하는 방식이며, 전화와 같이 접속 후에는 1개의 직통 회선과 마찬가지로 간주되는 회선 교환 방식과 한 번 교환기에서 처리하여 전송하는 축적 교환 방식이 있다. 일반적으로 축적 교환 방식은 접속, 절단 등의 순서와 시간이 필요하게 되지만, 많은 상대와 임의의 조합을 만들 필요가 있을 경우에는 회선 교환방식에 비해 훨씬 경제적이며 상대가 다른 단말과 접속 중이면 기다리게 된다. [본문으로]
  2. DDX(디지털 데이터 교환망)의 서비스이며, 축적교환의 일종이다. 패킷교환에서는 단말(센터 컴퓨터도 포함)상호간에 직접 정보의 송수가 이루어지지 않고, 발신단말에서 송출된 정보를 교환기가 일단 수신하여 기억장치에 축적하고, 망내(網內)를 고속으로 전송하여 착신단말에 보내주는 방식이다. 이 경우 망내로 전송되는 정보는 일정 길이의 블록으로 분할되어 각각의 블록에 수신처 정보나 에러제어 정보 등 전송에 필요한 제어정보를 포함한 헤더(header)가 붙여진다. 이것이 패킷[packet : 소포(小包)의 의미]이다. [본문으로]
  3. 스케줄링(scheduling)의 한 방법이며, 다중 처리에서 태스크의 실행 순서를 사이클릭(cyclic)으로 실행하는 방법 등에 사용되고 있다. 예를 들면 A, B, C의 3개의 태스크가 있을 경우 A→B →C→A→B→C→A→ 와 같이 전환된다. 태스크에 우선도가 주어졌을 경우에는 태스크를 우선도에 의해서 그룹 분할하고, 각 그룹 내에서 라운드 로빈이 실행된다. 이것에 의해 그룹 내의 각 태스크는 평등하게 CPU 시간이 할당된다. [본문으로]

'Study Progamming > Network' 카테고리의 다른 글

[ Mr.jw의 네트워크 ] #1장 기초 - 1  (0) 2017.08.17