2009. 5. 17. 21:12

[펌글]SNMP and MIB

출처 Network & Bass | 썸업하자
원문 http://blog.naver.com/curbow/50015350276

I. SNMP (Simple Network Management Protocol)

요 즘 각 기업이 Internet/Intranet의 열풍 속에서 많은 부분의 업무를 Network에 의존하고 있다. E-mail은 기본이고 그룹웨어(GroupWare)의 도입, 그리고 Client/Server에 의한 업무 처리방식의 도입으로 Network의 중요성이 날로 높아지고 있다. 이제 Network의 다운이나 속도 저하로 인하여 업무 처리가 늦어진다면 이것은 단순한 문제가 아니다.
Network의 대형화, 복잡화, Network를 이용한 업무의 증가 등으로 Network 관리에 대한 중요성이 부각되고 있다. Network 다운 시 신속한 대처는 기본이고 발생 가능성을 사전에 제거하는 것이 중요하다. 이에 Network 관리에 이용되는 Protocol이 각각의 목적에 맞게 탄생하고 이용되어지고 있다. 단순히 Network를 관리해주는 Protocol인 SNMP, CMIP등과Traffic을 관리하기 위해 이용되는 RMON등이 있다.
 
1. 출현배경
TCP/IP 환경의 Internet Network망 관리를 위해서 처음에는 ICMP(Internet Control Message Protocol)를 이용하여 각 Terminal장비간의 연결 상태 등을 파악했다. 우리가 주로 쓰는 ping이 ICMP를 이용한 것이다. 그러나 이는 단순하게 상대방 HOST가 작동하고 있는 지에 대한 정보나 응답시간을 측정하는 등의 기능만을 제공하고 있다. 그러나 Internet에 접속되는 Host가 엄청나게 늘어나고 Network의 구성이 복잡해지면서 새로운 표준화된 Protocol이 필요하게 되었다. 이에 따라 88년 초 IAB(Internet Architecture Board)에서는 표준화 작업을 시작했다.
이때까지 연구가 진행되어오던 HEMS(High-Level Entity Management System), SGMP(Simple Gateway Monitoring System), CMIP/CMIS(Common Management Information Protocol/Services)중에서 SGMP를 발전시킨 SNMP를 표준으로 채택하기로 결정했다. HEMS는 연구는 상당히 이루어져있었으나 실제 적용 사례가 없었고 CMIP/CMIS는 너무 방대하고 구현이 전혀 되어있지 않은 상태였다. SGMP는 NYSERNET, SURAnet을 위한 실제적인 요구에 의해서 개발된 것으로 Proteon에서 작업 중이었고 MERIT, IBM, MCI에 의해 NFSNET에서 사용하기 위한 작업을 진행 중이었으며 실제로 SGMP를 이용한 응용프로그램으로 유용한 정보를 얻고 있었다. 결국 IAB는 몇 가지 결정을 내렸다.
첫째 단기적으로 기본적으로 SNMP를 채택하고, 둘째 IAB와 업체들은 ISO CMIS/CMP를 기반으로 한 망 관리 시스템을 개발, 발전시킨다. 셋째, SNMP와 관련된 작업은 IETF은 책임지고, 끝으로 이전의 연구 작업 결과를 적극 수용한다. 특히 HEMS를 위해서 정의된 MIB를 받아들인다는 것이었다.
이렇게 출발한 SNMP는 구현이 쉽고 간편해서 오늘날 가장 일반적인 Network 관리 Protocol이 되어있고 구현의 복잡성, 방대함으로 인하여 아직도 CMIP가 망 관리의 중심으로 자리잡지 못하고 있다.

2. MIB(Management Information Base)
Manager 와 Agent사이에 특정한 정보를 주고 받는 것이 Network 관리의 기본이다. 관리 되어야 할 특정한 정보(Information), 자원(Resource)을 객체(object)라 한다. 이런 객체들을 모아놓은 집합체를 MIB이라고 한다.
Network를 관리한다는 것은 관리대상인 장비 - Workstation, Printer/File Server와 같은 Host는 물론이고 Hub, Router, Switch와 같은 통신장비 - 들이 제공하는 MIB중에서 특정 값을 얻어와서 그 장비의 상태를 파악하거나 그 값을 변경함을 의미한다. 값의 변경은 해당 MIBD의 String이나 수치를 변경시키는 것은 물론이고 값을 변경을 통하여 그 장비의 상태를 변경시킬 수도 있고 그 장비에 일정한 작동을 지시, 수행할 수 있게 한다. 즉 Interface의 관리 값을 수정해서 해당 장비의 통신을 불가능하게 할 수도 있고 Hub의 특정 포트로의 전송을 막을 수도 있다. 또한 특정 MIB의 변경을 통하여 HUB를 Reset시킬 수도 있다.
MIB를 정의하고 구성하는 Framework인 SMI는 RFC1155에 아래와 같은 사항을 정의해놓고 있다.
1. MIB의 각 객체(Objects)들은 ISO(ISO 8824)와 ITU-T(X.208)에 의해 표준화되고 개발된 언어인 ASN.1(Abstract Syntax Notation One)을 사용해서 정의한다.
2. 정의할 모든 객체는 반드시 이름(name), Syntax, Encoding)을 갖고 있어야 한다.
이름 - 해당 객체를 식별하는 객체 식별자(object identifier)
Syntax - 객체의 Data 종류. 예) INTERGER, OCTECT STRING 등
부호화 - 객체의 Data가 어떤 BIT 패턴으로 전송되는가?
(SNMP는 ASN.1의 BES(Besic Encoding Rules)를 이용.)
3. ASN.1에서 정의된 Data 종류 중 SNMP에서 사용할 수 있는 것과 허용되는 구조가 명시되어 있다.
MIB 구조는 계층적 Tree구조의 형태를 이루고 있다. 특정 객체는 객체 식별자(Object Identifier = OID)에 의해서 확인된다. 실제로 OID는 우리가 일반적으로 사용하는 문자가 아니라 연속된 정수이다. MIB Tree는 Root를 기준으로 동일한 범주에 속하는 객체들을 분류하는 식으로 OID가 정해지고 SNMP는 최종 Node인 Leaf만을 읽고 쓸 수가 있다.
예 를 들어System Location에 있는 정보는 OID는 sysLocaion이 아니고 "1.3.6.1.2.1.1.6"이다. 그리고 이 객체는 읽고 쓸 수 있으나 부모 객체인 system("1.3.6.1.2.1.1")은 읽거나 쓸 수 없다. 이에 따르는 하위 객체인 "sysDescr, sysObjectID, ... ,sysServices"를 모두 읽어 오고 싶으면 "1 ~ 7" OID 모두를 지정해서 Agent에게 물어보는 수 밖에 없다. 대부분의 NMS가 system 그룹을 지정하게 해서 값을 얻어오는 데 실제는 위와 같이 조작해서 얻은 것이다.
SNMP SMI는 "iso(1) org(3) dod(6)"의 Sub-Tree로 "internet(1)"을 명시하고 "internet(1)"의 Sub-Tree로 directory(1) , mgmt(2) , experimental(3), private(4)과 private(4)의 Sub-Tree로 enterprises(1)를 정의해놓고 있다. SNMP MIB에 표준으로 정의되어 있지 않는 자신의 회사만이 제공하는 MIB는 이 private(4) enterprises(1)에 정의할 수 있다. 이 이하의 Sub-Tree는 각 업체에서 임의로 사용할 수 있다.
그러나 모든 업체들을 구별하는 OID가 있어야 하는 데 이는 IANA(Internet Assigned Number Authority)에서 관리하고 있다. 그러므로 Private Enterprises MIB를 구현하기 위해서는 IANA에서 OID를 부여 받아야 한다. 그래야 그 하위 MIB의 객체의 유일성이 보장되고 그래야 다른 업체의 사설 MIB와 구별이 가능하다.

 

 

자.. 보시면 아시겠지만 MIB는 자원에 대한 객체들의 모임을 말합니다. 이놈들은 tree구조를 가지고 있고 OID와 값은 같을지언정 표현하는 방식이 틀립니다. 하나는 string이고 하나는 숫자죠...

표현하는 방식을 나타내는거지 별반 차이는 없습니다.

root를 구성하는것들은 이미 정해져 있구요 그 leaf로 내려가면 내려갈수록 복잡해지고 이런것들은 브라우저를 통해서 돌아다니면서 찾아봐야 할정도로 복잡합니다. 그렇다면... mib파일이라는 놈은 무었일까요? 바로 이런 tree중에 leaf를 구성하는 방법 그리고 그 leaf가 의미하는 것들을 보여주는 명세서 입니다.

프로토콜이 만들어지거나.. 새로운 장비가 만들어 졌는데 기존의 장비와는 전혀 다른것들을 snmp를 이용해서 관리하거나 보여주기 위해서 새로운 mib값을 정의해서 snmp가 그것을 알아차릴수 있게 하는것이죠...

하지만 interface나 cpu정도의 mib나 oid는 대부분 범용적이라서 금방 알수가 있습니다.

2009. 5. 17. 21:09

[펌글]TCP 자세히 보기

출처 Network & Bass | 썸업하자
원문 http://blog.naver.com/curbow/50009746107

TCP 자세히 보기

1. 소개

우리는 IP 자세히보기 를 통해서 IP 프로토콜을 헤더차원에서 살펴보았다. 이번 문서에서는 TCP 프로토콜을 헤더차원에서 살펴보도록 할것이다.


2. TCP (Transmission Control Protocol)

2.1. TCP 란

TCP 개념에 대해선 이미 몇개의 문서를 통해서 다루어지긴 했지만 확인차원에서 다시한번 다루어 보도록 하겠다.

TCP 는 기본적으로 IP 와 함께 사용되며, 그런이유로 TCP/IP 라고 불리워진다. IP는 호스트 사이의 데이타 교환을 목적으로 만들어진 프로토콜인데, 기본적으로 IP는 오로지 데이타 교환을 위한 임무만을 수행한다. 즉 네트웍상에서 발생할수 있는 데이타 누락, 패킷의 순서 뒤바뀜 등의 데이타 교정과 관련된 기능을 가지고 있지를 않다.

그래서 만들어 진개 TCP 프로토콜이다. IP 프로토콜의 상위 레벨 프로토콜로써, IP가 제공하지 못하는 기능즉, 데이타 누락검사 패킷순서 뒤바뀜 등 데이타 교정과 관련된 기능을 제공한다.

 +---+----+-------------+
 |IPH|TCPH|Internet Data| 
 +---+----+-------------+

 IPH           : IP Header
 TCPH          : TCP Header
 Internet Data : 교환하고자하는 데이타
			
이 러한 TCP 의 기능상 특징으로 인하여 흔히 TCP 프로토콜을 "신뢰성있는 프로토콜" 이라고한다. TCP 는 이러한 신뢰성 있는 데이타 전송을 위한 방법으로 서버와 클라이언트간에 연결을 설정한다. 이러한 연결을 만드는 특성으로 TCP 프로토콜은 "연결지향 프로토콜" 이라고 말한다.

그림 1. 전 이중통신 선로

TCP 는 이러한 연결을 설정시 위에서의 그림에서와 같은 전 이중 통신 선로를 개설한다. 하나는 읽기 전용의 선로이며, 다른 하나는 쓰기 전용의 선로로써, 각각의 전용선로를 이용함으로 써 읽기와 쓰기를 동시에 할수 있게 된다. 이것은 Unix 에서 IPC 목적으로 pipe 를 생성할때, 읽기와 쓰기전용의 파이프를 동시에 생성하는것과 동일한 원리이다.

TCP 헤더에는 위의 TCP 의 특성을 충족시켜주기 위한 여러가지 기능을 가지는 필드들로 구성되어 있다. 우리는 다음장에서 TCP 헤더의 이러한 필드들을 분석함으로써, 어떻게 TCP 가 서버 클라이언트간 연결을 만들고, 신뢰성 있도록 데이타를 전달하는지 알아보게 될것이다.


2.2. TCP 헤더 구조

TCP 는 다음과 같은 헤더 구조를 가진다. 두 호스트 사이에 전송되는 TCP 데이타 단위를 세그먼트라고 부른다. 그러므로 TCP 세그먼트는 TCP 헤더 + DATA 가 될것이다. 다음은 TCP 세그먼트의 구조이다.

그림 2. TCP 헤더 구조


2.2.1. SOURCE PORT/DESTINATION PORT

source port 는 메시지를 보내는 측에서 통신을 위해 사용하는 port 번호이며, destination port 는 목적지, 즉 메시지를 받는측의 통신 port 번호이다.

여기에 있는 port 번호와 더불어 IP 헤더에 있는 source/destination address 를 이용하면 유일하게 식별되는 통신연결을 만들수 있게 된다.

아마도 IP 의 출발지/목적지 주소와 TCP 헤더의 출발지/목적지 포트 번호가 어플리케이션간 통신을 위한 가장 핵심이라고 할수 있을것이다. 다른 정보들은 통신을 원할하도록 도와주기 위해서 부가적으로 존재하는 것이라고 볼수 있다.

이들 포트번호의 크기는 16bit 크기를 가진다. 그러므로 대략 65536 만큼의 포트를 가질수 있을것이다.


2.2.2. SEQUENCE NUMBER

TCP 세그먼트안의 데이터의 송신 바이트 흐름의 위치를 가리킨다. 다른 호스트로 전달되는 패킷은 여러개의 서로 다른 경로를 거치면서 전달되다 보니 패킷의 순서가 뒤바뀔 수 있다. 이를 수신측에서는 재 조립해야할 필요가 있는데, Sequence Number 를 이용해서 조립하게 된다.


2.2.3. ACK

acknowledgment number 라고 말한다. 다음에 받을것으로 예상되는 데이타 옥텟의 순서번호를 나타낸다.


2.2.4. HLEN

TCP 세그먼트의 길이를 정의한다.


2.2.5. RESERVED

현재는 사용하지 않지만, 나중을 위해서 예약된 필드이다.


2.2.6. (Control)CODE BITS

세그먼트의 용도와 내용을 결정하기 위해서 사용된다. URG, ACK, PSH, RST, SYN, FIN 6개의 비트가 정의되어 있다. TCP는 이러한 비트를 이용해서 패킷의 내용이 어떤 목적으로 전달될 것인지를 설정할 수 있다. 이들 비트중 SYN, ACK, RST를 주목할 필요가 있다.

SYN은 TCP연결을 만들 때, 양 호스간 sequence numbers의 동기화를 이루기 위한 목적으로 사용된다. ACK는 원격 호스트의 sequence number에 대한 응답을 위한 목적으로 사용된다. 즉 데이터를 잘 받았다는 걸 알려주기 위한 목적으로 사용되는데, 원격호스트의 sequence number의 번호에 +1을 해줘서 다시 전달하는 방법을 이용한다. SYN 비트는 특히 세번 악수 기법(three-way handshake)를 위해서 사용된다.

RST 비트가 설정되어 있을 경우 받은 호스트는 즉시 연결을 끊어 버리고 FIN 비트가 설정되어 있을 경우 여러가지 테스트를 거쳐서 연결을 끊게 된다. 일반적인 정상종료를 원한다면 FIN 비트를 설정해서 사용하게 된다. 이들 비트에 대한 자세한 내용은 2.3.3절를 참고하기 바란다.


2.2.7. OPTION & PADDING

옵션은 말그대로 옵션이다. TCP 헤더의 정보를 좀더 확장시키고자 할때 사용한다. PADDING 은 32bit 크기를 채우기 위해서 사용된다.


2.2.8. CHECKSUM

TCP 세그먼트 데이타는 중간에 훼손될수 있으며, 변조될수도 있다. 그러므로 이를 체크할수 있는 장치가 필요하다. CHECKSUM 을 만드는 방법(알고리즘)은 기회가 되면 별도로 설명하도록 하겠다.


2.3. 실제 통신상에서 TCP 패킷의 내용을 살펴보자

위에서 각 TCP 필드에 대한 설명을 해보았지만, 솔직히 위의 정보만을 가지고는 뭐가 뭔지 도대체 알수가 없을 것이다. 그래서 이번에는 실제 TCP/IP 통신이 어떻게 이루어지는지에 대해서 알아보고 이러한 통신이 이루어지도록 어떻게 TCP/IP 패킷(세그먼트)가 전송되어지는지 알아보도록 하겠다.


2.3.1. 테스트 프로그램 준비

셈플로 알아보는 소켓프로그램 에서 제작한 적이 있는 우편번호 서버/클라이언트 프로그램을 이용해서 테스트 하도록 할것이다. 서버 프로그램의 이름은 zipcode 이며 클라이언트 프로그램의 이름은 zipcode_cl 이다.

이와 더불어 tcp/ip 패킷분석을 위해서 tcpdump 를 사용할것이니 준비해놓기 바란다. (아마도 기본 설치되어 있겠지만)


2.3.2. 테스트 방법

테스트를 가장 효과적으로 수행하기 위해서는 서버와 클라이언트가 별도의 네트웍에 묶여 있는게 가장 좋겠지만, 여의치 않을경우 하나의 서버에 서버와 클라이언트를 두고 테스트를 해도 관계 없다.

여기에서의 테스트는 서버와 클라이언트가 별도의 네트웍환경에 묶여있는 것을 기준하여 이루어질것이다.

그림 3. 서버/클라이언트 테스트 환경

Server 은 Port 번호 4445 로 연결하도록 할것이다.


2.3.3. 서버와 클라이언트간의 연결

TCP 는 기본적으로 연결지향의 프로토콜이라고 했다. 이말은 처음 통신을 하기 전에 서로를 연결하는 전용의 통신선로를 개설한다라는 말이 된다. 이는 우리가 전화를 할때

홍길동 : "여보세요 아무개 씨 맞습니까 ?"
아무개 : "내 아무개 입니다."
홍길동 : "아그러세요 저는 홍길동 입니다"
...
.... 이런 저런 대화들 ....
...
				
실제 대화를 하기 위해서 서로간에 확인절차를 거치는 것과 마찬가지다.

TCP 도 통신선로를 만들기 위해서 처음에 이러한 확인 절차를 거친다. 우리가 보통 전화상에서 서로의 확인 작업을 위해서 3번 통화가 이루어지는 것처럼 TCP 상에서도 3번의 데이타 전송이 일어난다.

                 client                                server
                          ① 
         Send SYN seq=x   ---------------------------> Receive SYN segment
                                                              |
                          ②                                  |
Recevie SYN+ACK segment   <-------------------------- Send SYN seq=y, ACK x+1
                |
                |         ③
           send ACK y+1   --------------------------> Receive ACK segment 
				
그 런 이유로 흔히 위의 과정을 "3 way Hand Shaking" 또는 "3번 악수기법" 이라고 한다. 최초에 클라이언트가 seq 번호 x 를 보내면 server 에서는 이 x 에 1 을 더해서 ACK 로 보낸다. 이때 자신의 seq 번호 y 도 포함해서 보낸다. 그러면 클라이언트에서는 server 부터 넘어온 패킷의 ACK가 자신의 seq 번호와 일치하는지 확인하고, 확인이 되면 server 의 seq 번호인 y 에 1을 더해서 ACK로 보낸다. server 에서는 client 가 보낸 ACK 의 번호와 자신의 seq 번호가 일치하는지 확인해서 일치하면 연결이 제대로 되었다는것을 인증하고 데이타 통신에 들어가게 된다.

그럼 tcpdump 를 이용해서 어떻게 위의 3번 악수기법 이 이루어지는 지 확인해 보도록 하겠다. 우선 tcpdump 를 다음과 같은 옵션으로 띄우도록 한다.

   
[root@localhost test]# tcpdump -x tcp 4445
Kernel filter, protocol ALL, TURBO mode (575 frames), datagram packet socket
tcpdump: listening on all devices
...
				
그다음에 zipcode_cl 을 이용해서 서버에 접근해보자 그러면 아래와 같은 패킷 dump 화면이 뜰것이다. ----- 1, ----- 2 는 구분하기 쉽도록 필자가 추가시킨 문자이다.
   
13:42:47.952336 eth0 > localhost.2310 > 211.234.96.141.4445: S 2850317194:2850317194(0) win 5840 <mss 1460,sackOK,timestamp 10265185 0,nop,wscale 0> (DF)
                         4500 003c c1eb 4000 4006 1f2e c0a8 6482                 ----- 1
                         d3ea 608d 0906 115d a9e4 638a 0000 0000
                         a002 16d0 0cc5 0000 0204 05b4 0402 080a
                         009c a261 0000 0000 0103 0300
13:42:48.202336 eth0 < 211.234.96.141.4445 > localhost.2310: S 2213490312:2213490312(0) ack 2850317195 win 5792 <mss 1460,sackOK,timestamp 2310931230 10265185,nop,wscale 0> (DF)
                         4500 003c 0000 4000 3806 e919 d3ea 608d                 ----- 2
                         c0a8 6482 115d 0906 83ef 2e88 a9e4 638b
                         a012 16a0 cd8f 0000 0204 05b4 0402 080a
                         89be 031e 009c a261 0103 0300
13:42:48.202336 eth0 > localhost.2310 > 211.234.96.141.4445: . 1:1(0) ack 1 win 5840 <nop,nop,timestamp 10265210 2310931230> (DF)
                         4500 0034 c1ec 4000 4006 1f35 c0a8 6482                 ----- 3
                         d3ea 608d 0906 115d a9e4 638b 83ef 2e89
                         8010 16d0 fc0b 0000 0101 080a 009c a27a
                         89be 031e
				
3 번 악수 기법을 위해서 3번의 패킷이 오고 갔음을 알수 있다. 언뜻 봤을때 절대 이해할수 없을것 같은 숫자로 된 정보들을 뿌려주는데 원리만 알면 간단하게 분석할수 있다. 위의 숫자로 된 정보들이 바로 TCP/IP 세그먼트의 정보를 16 진수로 나타낸 것이다. 4자리씩 구분되어 있는데, 이 4자리의 크기는 16 비트크기를 가진다(하나의 숫자는 4비트이다. 이 정보만 알고 있다면 위의 패킷정보에서 IP 영역과 TCP 영역을 분리해 낼수 있다.

IP 헤더의 크기는 유동적이긴 하지만 기본적으로 5 * (32 bit) 의 크기를 갖는다. 그러므로 ----- 1 번 패킷을 높고 보자면 IP 헤더는 다음과 같을 것이다.

                         4500 003c c1eb 4000 4006 1f2e c0a8 6482  
                         d3ea 608d 
				
정 말 IP 헤더 정보가 맞는지 확인해보자. IP 헤더의 첫번째 4bit 는 IP의 버젼을 나타낸다. 위에서 보면 '4' 로 되어 있음으로 이 TCP/IP 패킷은 IPv4 를 이용하고 있음을 알수 있다. c0a8 6482 는 source IP, d3ea 608d 는 destination IP 이다.

이제 ---- 1 번 패킷에서 TCP 헤더 정보를 분석해 보도록 하자. 분석한 데이타는 tcpdump 헤더와 비교하면서 계산하도록 하자. TCP 헤더데이타는 0906 부터이다. TCP 의 처음 16bit 는 SOURCE PORT 다음 16bit 는 DESTINATION PORT 를 나타낸다. 0906 을 계산해 보면(진수변환 되는 계산기로) 2310 이며 115d 를 계산해보면 4445 이다. 정확하게 일치하고 있음을 알수 있다. 클라이언트측의 PORT 번호는 서버측 포트 번호와는 달리 임의의 번호로 할당된다.

우리는 ---- 1 번 패킷에서 a9e4 638a 가 시퀀스 넘버임을 유추해낼수 있을것이다. 이것을 계산해 보면 2850317194 임을 알수 있다. ACK는 0000 0000 이다. ACK 는 0000 0000 즉 0 으로 초기화 되어있는데 반해서, 시퀀스 넘버는 0으로 초기화 되어 있지 않다. 실지로 ACK 는 새로운 연결이 이루어질때 마다 0 으로 초기화 되는데 비해 시퀀스 넘버는 새로운 연결이 생길때 마다 임의의 번호로 새로 만들어진다.

Header Length 는 4bit 크기를 가지므로 a002 에서 'a' 임을 알수 있다. 해서 Header Length 는 10(a) 임을 계산할수 있는데, 이때 Length 의 단위는 워드(32 bit) 이다. 그러므로 헤더는 0906 에서 0300 까지의 데이타임을 유추해 낼수 있다.

                                   0906 115d a9e4 638a 0000 0000
                         a002 16d0 0cc5 0000 0204 05b4 0402 080a
                         009c a261 0000 0000 0103 0300
				
즉 최초 세번 악수 기법을 통한 세션 연결시에 오고 가는 3개의 패킷 데이타는 단지 TCP/IP 헤더정보만을 포함하고 있으며, 그외의 아무런 다른 정보도 포함하고 있지 않음을 알수 있다.


2.3.3.1. 패킷 분석을 통해서 알아보는 3번 악수 기법 - 연결

이전에 ---- 1 패킷을 분석함으로써, 우리는 dump 된 패킷을 분석하는 기본적인 기법을 배웠다. 이 방법들을 토대로 정말로 3번 악수 기법이 제대로 이루어 지는지 한번 확인해 보도록 하겠다.

3번 악수 기법을 보면 알겠지만 가장 핵심이 되는 키워드는 SEQ 번호와 ACK 번호 그리고 패킷의 타입을 나타내는 CODE BITS 이다. 이 세가지 필드의 의 계산만 잘하면 TCP 연결이 어떻게 이루어지는지 이해가 가능할것이다. 그럼 ---- 1, ---- 2, ---- 3의 dump 패킷을 분석해서 3번 악수 기법의 흐름을 알아보도록 하자.

---- 1

클라이언트는 자신의 SEQ 를 a9e4 638a (2850317194)로 만들고 . ACK 를 0000 0000 (0) 으로 만들어서 ---- 1 패킷을 서버측 측에 보낸다.

---- 2

서버는 클라이언트로 부터 ---- 1 패킷을 받는다. SEQ 는 a9e4 638a 인데, 여기에 +1 (a9e4 638b) 를 해서 ACK 를 만든다. 그리고 자신의 SEQ 를 83ef 2e88 로 세팅해서 ---- 2 패킷을 만들고 만들어진 패킷을 다시 클라이언트로 보낸다.

CODE BITS 를 보면 값이 02 임을 알수 있다. 2 는 2진수로 10 CODE BITS 의 세팅은 00 00 10 으로 되어있음을 알수 있다. 5번째 BIT 는 SYN 비트 임으로 이 패킷은 최초 연결을 시도하기 위한 패킷임을 알수 있다.

CODE BITS 를 보면 값이 12 임을 알수 있다. 이것을 2진수로 변경 시켜 보면 10 00 10 이다 그러므로 URG 와 SYN 비트가 세팅되어 있음을 알수 있다.

---- 3

클라이언트는 서버로 부터 ---- 2 패킷을 받는다. ---- 2 패킷에서 넘어온 ACK 를 확인해 본다. 최초에 클라이언트가 서버측으로 보낸 SEQ 에 +1 된 값이므로 올바른 데이타임을 확인할수 있다. 이제 ---- 2 에서 넘어온 ACK 를 자신의 SEQ 로 설정하고, ---- 2 에서 넘어온 SEQ (83ef 2e88)에 +1 을 해서 ---- 3 패킷을 만들고 이것을 서버로 보낸다.

CODE BITS 를 보면 값이 10 이다. 2진수로 10 00 00 임으로 URG 가 세팅되어 있음을 알수 있다.

이상 꽤 복잡한것 같지만 곰곰히 생각해 보면 별거 아니란걸 알수 있을것이다.


2.3.3.2. 패킷 분석을 통해서 알아보는 연결 종료

연결과는 좀 다르다. 완전한 종료를 위해서는 아래와 같이 4 번의 패킷 교환이 일어난다.

                 client                                server
                             ① 
         Send SYN seq=x      ---------------------------> Receive FIN segment
                                                                |
                             ②                                 |
         Recevie segment     <-------------------------- Send ACK x+1

                             ①
 Receive FIN + ACK segment   <-------------------------- Send FIN seq=y, ACK x+1 
                |
                |            ②
         Send ACK y + 1      --------------------------> Receive ACK segment
					
완전한 연결종료를 위해서 위의 zipcode 어플리케이션 대신에 telnet(port 23) 을 이용해서 테스트 하기로 했다. 테스트 방법은 telnet 로 해당 서버에 연결한 연결한 다음 login 프롬프트가 떨어지면 (CTRL + ]) 키를 이용해서 telnet> 프롬프트를 부르고 여기에 quit 를 입력해서 연결을 종료시키는 방법이다.
[root@coco test]# telnet 192.168.100.190
Trying 192.168.100.190...
Connected to 192.168.100.190.
Escape character is '^]'.


SunOS 5.8

login:                // 여기에서 CTRL+] 입력
telnet> quit
					
이 과정을 tcpdump 로 패킷 덤프 받은 데이타 내용은 다음과 같다.
17:03:01.412336 eth0 > localhost.2437 > develop.telnet: F 110:110(0) ack 89 win 5840 <nop,nop,timestamp 11466531 71617405> (DF)
                         4500 0034 980c 4000 4006 5826 c0a8 6482         ---- 1
                         c0a8 64be 0985 0017 9d14 6d27 1f57 e476
                         8011 16d0 3621 0000 0101 080a 00ae f723
                         0444 cb7d
17:03:01.412336 eth0 < develop.telnet > localhost.2437: . 89:89(0) ack 111 win 10136 <nop,nop,timestamp 71618004 11466531> (DF)
                         4500 0034 23c2 4000 ff06 0d70 c0a8 64be         ---- 2
                         c0a8 6482 0017 0985 1f57 e476 9d14 6d28
                         8010 2798 2302 0000 0101 080a 0444 cdd4
                         00ae f723

17:03:01.412336 eth0 < develop.telnet > localhost.2437: F 89:89(0) ack 111 win 10136 <nop,nop,timestamp 71618005 11466531> (DF)
                         4500 0034 23c3 4000 ff06 0d6f c0a8 64be         ---- 3
                         c0a8 6482 0017 0985 1f57 e476 9d14 6d28
                         8011 2798 2300 0000 0101 080a 0444 cdd5
                         00ae f723
17:03:01.412336 eth0 > localhost.2437 > develop.telnet: . 111:111(0) ack 90 win 5840 <nop,nop,timestamp 11466531 71618005< (DF)
                         4500 0034 0000 4000 ff06 3132 c0a8 6482         ---- 4
                         c0a8 64be 0985 0017 9d14 6d28 1f57 e477
                         8010 16d0 33c8 0000 0101 080a 00ae f723
                         0444 cdd5
					
패 킷 분석방법은 위에서 모두 설명했으니 굳이 다시 설명하진 않겠다. 주의 해서 볼점은 CODE BITS 부분이다. ---- 1 번을 보면 CODE BITS 가 11 로 설정되어 있음을 볼수 있다. 이를 2진수로 변환하면 10 00 01 이다. FIN 비트 가 세팅되어 있음을 알수 있다.


2.3.3.3. 실 데이타 전송

실 데이타를 전송할때는 연결/종료 와 같은 3번 악수 기법에 의한 복잡한 (뭐 그리 복잡하지도 않지만) 그러한 패킷 교환은 없다. 단지 한쪽에서 데이타를 보내면 받은쪽에서는 데이타를 잘 받았다라는 패킷만을 보내게 된다.

이제 실제 데이타가 전송될때의 TCP/IP 패킷의 분석을 해보도록 하자. 여기에서는 다시 zipcode 의 서버/클라이언트가 사용될것이다. zipcode_cl 을 이용해서 서버여 연결하고 "지역이름 입력 : " 프롬프트가 떨어지면 a 를 입력해보도록 하자.

  
[root@s210-205-210-195 test]# ./zipcode_cl 4445
지역이름 입력 : a
지역이름 입력 : 
					
다음은 위의 결과 를 tcpdump 를 이용해서 dump 뜬 결과 이다.
23:32:49.951938 s210-205-210-195.thrunet.ne.kr.33638 > 211.234.96.141.4445: P 1:256(255) ack 1 win 5840 <nop,nop,timestamp 26681991 2314595836> (DF)
                         4500 0133 484f 4000 4006 176d d2cd d2c3   ---- 1
                         d3ea 608d 8366 115d 5b9e 5641 872e f2e8
                         8018 16d0 19eb 0000 0101 080a 0197 2287
                         89f5 edfc 6100 0000 5066 0140 0100 0000
                         dc81 0408 9460 0140 0f53 8e07 0f53 8e07
                         70f7
23:32:49.967321 211.234.96.141.4445 > s210-205-210-195.thrunet.ne.kr.33638: . ack 256 win 6432 <nop,nop,timestamp 2314596983 26681991> (DF)
                         4500 0034 1f16 4000 3806 49a5 d3ea 608d   ---- 2  
                         d2cd d2c3 115d 8366 872e f2e8 5b9e 5740
                         8010 1920 214f 0000 0101 080a 89f5 f277
                         0197 2287
23:32:49.971577 211.234.96.141.4445 > s210-205-210-195.thrunet.ne.kr.33638: P 1:256(255) ack 256 win 6432 <nop,nop,timestamp 2314596983 26681991> (DF)
                         4500 0133 1f17 4000 3806 48a5 d3ea 608d   ---- 3 
                         d2cd d2c3 115d 8366 872e f2e8 5b9e 5740
                         8018 1920 07d6 0000 0101 080a 89f5 f277
                         0197 2287 656e 6400 7365 6e64 2065 6e64
                         0a00 0000 0000 0000 0000 001c 9e04 0800
                         0000
23:32:49.971653 s210-205-210-195.thrunet.ne.kr.33638 > 211.234.96.141.4445: . ack 256 win 6432 <nop,nop,timestamp 26681993 2314596983> (DF)
                         4500 0034 4850 4000 4006 186b d2cd d2c3   ---- 4
                         d3ea 608d 8366 115d 5b9e 5740 872e f3e7
                         8010 1920 204e 0000 0101 080a 0197 2289
                         89f5 f277
					
---- 1 에서 실제 데이타를 보내고 있으며 여기에서는 서버측으로 'a' 를 보내게 될것이다. 실제 'a' 를 보내는지 확인을 해보자. IP 헤더의 크기는 (5*32) 로 고정되어 있을것이다. 문제는 TCP 헤더의 크기인데, 8018 에서 8 이 헤더의 크기를 나타냄을 알수 있다. 단위는 워드 이므로 계산을 해보면(8 * 32) 8366 에서 부터 edfd 까지가 TCP 헤더 임을 알수 있다. 그러므로 우리가 보내고자 하는 데이타는 6100 에서 부터가 될것이다. 61 은 'a' 라는걸 알수 있다. - 61 은 10 진수 97 을 나타내며 ASCII 코드를 보면 97 은 'a' 를 나타낸다.

서버에서 데이타를 받았다면 서버는 이에 대한 응답 메시지(저 메시지 잘 받았습니다) 를 클라이언트측에 보내야 할것이다. ---- 2 패킷이 바로 응답 메시지가 된다. ---- 2 패킷의 CODE BITS 를 보면 10 으로 세팅되어 있는데, 이것을 2진수로 변경하면 01 00 00 이 된다. 2번째 비트가 켜져 있는데 2번째 비트는 ACK 를 나타낸다. 그러므로 이 패킷은 응답용 패킷이라는 걸 알수 있다. 그렇다면 --- 2 패킷을 받은 클라이언트는 이게 과연 ----2 패킷이 ---- 1 에 대한 응답 메시지인지를 확인해야 하는데 이는 SEQ 번호와 ACK 번호를 계산함으로써 알나 낼수 있을것이다.

---- 3 번 데이타는 서버측에서 클라이언트로 보내는 패킷의 dump 내용이다. 클라이언트로 보내는 데이타는 "send end" 임을 알아낼수 있을 것이다. ---- 4 번 데이타는 이에 대한 응답으로 클라이언트에서 서버측으로 보내는 패킷 dump 내용이다.


3. 결론

이상 TCP 헤더에 대한 비교적 상세한 내용을 다루었다. 이러한 내용들은 나중에 다루게될 RAW 소켓등 낮은 수준에서의 네트웍 프로그래밍을 원한다면 알아두어야할 내용이다. 또한 네트웍 관련 문제해결을 하는데 많은 도움을 줄것이다.

이 문서에서 이해되지 않는 내용등이 있다면 댓글을 달아주길 바란다. 그러면 최대한 공부를 해서라도 답변을 해주도록 하겠다. 

2009. 5. 17. 21:06

[펌글][월간 온더넷 2006/11] 초보자를 위한 네트워크의 이해..

자료출처 : 월간 온더넷 2006년 11월호

 

http://www.ionthenet.co.kr/newspaper/view.php?idx=11581

 

네트워크를 이해하는 가장 빠른 길은 네트워크 구성도를 이해하는 것이라고들 한다. 하지만 구성도가 나타내고자 하는 의미는 고사하고 구성도의 각 요소조차도 알지 못한다면, 구성도를 이해하는 것은 아직은 무리라고 할 수 있다. 하지만 초보자에게 네트워크를 설명하는 가장 쉬운 방법은 아직까지도 구성도 이상의 교재가 없다는 사실은 변함이 없다.

(그림 1)은 일반적인 기업의 네트워크 구성을 나타낸 것이다. 이 구성도를 보고 무엇이 무엇이고 어떤 의미인지를 이해한다면, 굳이

이런 기초 강좌를 볼 필요가 없을 것이다. 하지만 구성도의 용어 중에서 이름은 들어봤지만 무슨 뜻인지를 모르는 것이 절반이 넘는다면, 이번호부터 연재되는 이 강좌가 약간의 길잡이가 될 것이다. 다시 말해 이번 연재 강좌의 목표는 이 네트워크 구성도를 이해할 수

있도록 하는 것으로, 각 구성 요소를 하나씩 하나씩 살펴볼 것이다.

 

 

기본적인 네트워크의 구성
네트워크는 과연 어떤 것인가. (그림 2)는 ‘이것도 네트워크다’라고 할 수 있을 최소한의 네트워크를 나타낸 것이다. 물론 현재는 이런 형식의 피어 투 피어(Peer-to-Peer) 네트워크는 거의 사용되지 않는다. 이런 연결을 지원하는 케이블이나 인터페이스 카드를 구하는 것도 어려울 것이다. 하지만 두 대 이상의 단말기를 연결해 상호 간에 데이터를 공유하고 커뮤니케이션을 할 수 있는 네트워크의 기본적인 조건은 갖추고 있다.
여기 에 사용되는 것은 PC에 설치되는 네트워크 인터페이스 카드(Network Interface Card, NIC), 흔히 LAN 카드라고 부르는 것과 이 두 대의 PC를 연결하기 위한 케이블, 그리고 두 PC 간에 말이 통하도록 해주는 프로토콜이나 운영체제, 애플리케이션 등의 소프트웨어가 전부다.

(그림 3)은 일반적인 소규모 사무실에서 흔히 볼 수 있는 네트워크 구성이다. (그림 2)와의 가장 큰 차이점은 뭔가 다른 장비를 통해 PC와 PC를 연결한다는 것. 그리고 PC와는 다른 역할을 하는 서버라는 컴퓨터가 있다는 정도일 것이다.
우선 PC와 PC를 연결하는 데 사용되는 장비는 일반적으로 허브라고 부르는 것으로, 단순히 두 PC를 연결하는 역할만 한다. 하지만

이렇게 연결하는 것만으로도 네트워크의 기능과 모양을 대폭 바꿀 수 있다. 서버 역시 단순히 한 대의 컴퓨터를 추가한 것을 넘어 다양한 기능과 서비스, 그리고 편의성을 구현할 수 있다.
물론 이것만으로 네트워크를 완성했다고 할 수는 없다. 네트워크는 기업의 규모와 필요에 따라 다양한 모습을 나타내며,

(그림 1)은 일반적인 기업의 요구를 대부분 수용할 수 있는 네트워크를 나타낸 것이다. 필요에 따라 네트워크는 훨씬 더 복잡해질 수도, 단순해질 수도 있다.
이 정도의 설명만으로는 네트워크를 이해한다는 것은 어렵다. 하지만 향후 연재를 통해 설명할 각각의 구성 요소, 즉 NIC나 허브,

스위치, 라우터 같은 네트워크 하드웨어, 운영체제, 미들웨어, 프로토콜, 서버 등이 네트워크의 어떤 부분에 위치하고 어떤 요소와 연결돼 자신의 역할을 수행하는지 알고 있다면, 한결 이해하기가 쉬울 것이다.

 

 

네트워크의 목적과 기능
기본적으로 모든 IT는 특정한 목적을 가지고 개발되고 발전해 왔다. 그런 발전의 한 가운데 있는 것이 바로 기업의 비즈니스 활동이다. 네트워크 역시 기업의 비즈니스를 중심에 두고 발전해 왔으며, 네트워크가 지금처럼 확산되고 보편화되는 데 가장 큰 역할을 한 인터넷 열풍 역시 소위 ‘e-비즈니스’란 새로운 가치를 중심에 두고 있다.
네트워크의 기본 목적은 정보와 서비스를 공유하는 것이며, 이런 정보와 서비스의 공유는 기업의 경쟁력을 향상시키기 위한 것이다. 앞서 언급한 하드웨어와 소프트웨어를 이용해 PC와 서버 등을 연결했다고 해도, 정보와 서비스의 공유가 제대로 이뤄지지 않는다면 네트워크가 아니라고 해도 과언이 아니다.
네트워크가 기업 비즈니스에 미치는 영향은 IT가 기업 비즈니스에 미치는 영향과 같다고 해도 과언이 아니다. 일반 사원의 데스크톱에서부터 기업의 주요 데이터가 저장되는 서버에 이르기까지 모든 IT 시스템은 네트워크 위에서 운용되고 있으며, 기업 커뮤니케이션의 상당 부분은 이미 전자우편과 메시징 시스템, 그리고 IP 텔레포니를 기반으로 움직이고 있다. 또한 인터넷이나 인트라넷을 통해 기업 비즈니스에 필요한 정보가 전송되고 공유되고 있으며, 협력업체나 고객과의 관계도 네트워크를 통해 긴밀하게 이뤄진다.
이렇게 네트워크가 기업 비즈니스에서 중요한 역할을 하고 있는 것은 누구나 알고 있는 사실이다. 그것은 한 순간이라도 네트워크가 정지됐을 때, 어떤 일이 일어나는지를 겪어보면 확실히 알게 될 것이다.
그 렇다면 네트워크는 어떤 기능을 통해 이런 역할들을 수행해 내는 것일까. 네트워크가 수행하는 기능은 네트워크를 구축했을 때 제공받을 수 있는 가장 기본적인 기능인 파일이나 프린터 공유에서부터 고차원의 애플리케이션 서비스까지 무수히 많다. 주요 기능을 정리하면 다음과 같다.

 

·파일 공유
파일 공유는 네트워크가 탄생하게 된 최초의 이유이자 목적이라고 해도 과언이 아니다. 사실 1990년대 초반까지도 중소기업의 네트워크는 파일 공유를 주목적으로 구축되고 운용됐다. 파일 공유는 기업 비즈니스에 있어서 1차원적인 정보의 공유, 즉 문서와 데이터의 공유를 의미한다. 이렇게 기본적인 기능인 까닭에 기본적인 파일 공유 기능은 매우 구현하기도 쉽다. 네트워크를 지원하는 일반적인 운영체제, 예를 들어 윈도우 2000이나 리눅스 등에서는 기본적으로 네트워크를 통한 파일 공유 기능을 지원한다. 하지만 일정 규모 이상의 사용자가 있는 기업에서의 파일 공유는 이런 단순한 기능만으로 이용하기 힘든 경우가 많다. 우선은 개별 PC의 성능 문제도 있고, 공유하고 있는 파일을 안정성을 확보하기가 어렵기 때문에 별도의 파일 서버를 두고, 공유된 파일에 접근할 수 있는 사용자, 파일을 수정하고 삭제할 수 있는 사용자 등에 대해 관리하는 경우가 대부분이다.

 

·프린터 공유
파일 공유와 비슷한 개념으로, 초기 네트워크 구축의 주요 목적 중 하나였던 기능이다. 초기에 프린터는 고가의 출력 장비였기 때문에 보통 워크그룹 단위로 한 대의 프린터를 사용했는데, 네트워크가 없으면 프린터가 연결된 PC에서만 문서를 인쇄할 수 있었다. 프린터 공유 기능을 이용하면 단일 네트워크 내에서 사용자가 자신의 PC에서 다른 사람의 PC 혹은 서버에 연결된 프린터로 바로 문서를 출력할 수 있다. 프린터 공유 기능은 파일 공유 기능만큼이나 기본적인 기능으로, 일반적인 네트워크 지원 운영체제에서 기본으로 지원하고 있다. 하지만 최근에는 기본적으로 네트워크 인터페이스 카드를 장착한 프린터가 대세를 이루고 있기 때문에, 별도로 프린터 공유 기능을 이용하는 경우는 SOHO 환경에서나 볼 수 있는 상황이다.

 

·커뮤니케이션
전자우편으로 대변되는 커뮤니케이션 기능은 현재 네트워크의 가장 중요한 기능 중 하나로 꼽힌다. 초기에는 전자우편을 중심으로 정보가 담긴 메시지를 주고 받는데 중점을 두었지만, 최근에는 전자우편 외에도 MSN과 같은 IM(Instant Message)의 활용이 확대되면서 의사소통에 비중을 둔 커뮤니케이션으로 발전했다. 파일 공유 기능이 단순히 파일의 이동과 관리 기능을 수행하며 정보를 공유한다면, 커뮤니케이션 기능은 사용자와 애플리케이션이 다른 사용자와 애플리케이션과 정보를 주고받으며 의사 소통을 한다는 점에서 다르다. 또한 전자우편이나 IM은 정보의 송수신 상황을 통보해 준다는 점에서도 차이가 있다.

 

·애플리케이션 서비스
기업 전체가 사용하는 대규모 데이터베이스는 네트워크를 기반으로 구현할 수 있는 것이다. 수십 수백 명의 사용자가 동시에 데이터를 조회하고 수정하며, 이런 변경 사항은 모든 사용자에게 똑같이 적용된다. 기업 경쟁력 강화를 위해 사용되는 ERP나 SCM, CRM 등의 모든 엔터프라이즈 애플리케이션은 네트워크를 기반으로 모든 사용자가 연결돼 있을 때 의미가 있다. 이런 애플리케이션 서비스의 대부분은 중앙의 고성능 서버에 데이터베이스와 핵심 기능을 두고, 사용자 PC에는 데이터를 조회하거나 처리를 요청할 수 있는 클라이언트를 두는 형식으로 이뤄진다.

 

·원격 접속
네트워크가 없다면, 사용자가 사무실에서 자신의 PC 앞에 앉아야만 자신의 정보와 데이터를 이용할 수 있다. 하지만 외부와 연결된 네트워크를 갖추고 있다면, 외근 중이거나 지방 출장을 가서도, 또는 재택근무를 하면서 자신의 사무실 PC에 접속해 파일을 관리하거나 전자우편을 받을 수 있다.

이외에도 네트워크가 수행하는 기능은 열거하기에 따라 수없이 많다. 오히려 모든 컴퓨팅은 네트워크를 기반으로 이뤄진다고 생각하는 것이 편할 것이다. 또한 이런 네트워크의 기능은 하나의 기능만으로 수행되기 보다는 여러 가지 기능이 서로 유기적으로 연결돼 이뤄지기 때문에 정확하게 구분할 수 없는 경우가 많다. 하지만 기본적인 네트워크의 기능을 알고 있는 것은 네트워크 하드웨어나 소프트웨어, 프로토콜 등 네트워크 구성 요소의 기능과 역할을 이해하는 데 기반이 될 것이다.

 

네트워크의 분류와 구분
기본적인 네트워크의 형식은 비슷하지만, 보는 관점에 따라 네트워크는 여러 가지 이름으로 불린다. 네트워크의 구성원 간의 관계에 따라 피어 투 피어 네트워크, 클라이언트/서버 네트워크로 나누기도 하고, 네트워크의 서비스 영역에 따라 LAN, MAN, WAN 등으로 나뉘기도 한다. 이들 개념은 시대적인 상황과 주류가 되는 기술에 따라 여러 가지 의미로 해석되기도 하는데, 여기서는 기본적인 개념만을 파악하기로 한다. 실제로 이런 분류는 개념을 이해하는 것만으로도 네트워크를 이해하는 데 충분하다.
피어 투 피어 네트워크는 1대 1 접속을 기본으로 하며, 각각의 PC가 서로 대등하게 연결되는 방식이다. 원초적인 네트워크의 형태라고 볼 수 있으며, 필요한 네트워크 기능을 각각의 PC에서 구현해야 한다. 전용 서버 장치가 필요없기 때문에 2~3명 정도의 소규모 사무실이나 가정에 적합한 네트워크다. 대신 복잡한 네트워크 기능은 구현하기는 어렵다.
클라이언트/서버 네트워크는 서비스를 제공하는 쪽과 이를 요청하고 이용하는 쪽이 구분되는 방식의 네트워크다. 별도의 서버 장치를 두고 파일 공유나 프린터 공유 등의 네트워크 기능을 서버에서 담당하고, 클라이언트에 해당하는 일반 사용자의 PC는 주로 서버가 제공하는 서비스를 이용하는 형식이다. 일반적인 네트워크의 구성으로 서버의 성능과 용량에 따라 대규모 네트워크를 구성할 수 있으며, 다양한 네트워크 기능을 구현할 수 있다.
서비스 영역에 따른 네트워크의 구분은 크게 LAN(Local Area Network)과 WAN(Wide Area Network)의 두 가지로 나눌 수 있다.
일 반적인 기업의 네트워크를 지칭하는 LAN은 규모가 사무실이나 건물, 학교 캠퍼스 등과 같이 비교적 가까운 지역에 한정돼 있는 네트워크를 말한다. WAN은 멀리 떨어져 있는 LAN을 연결한 네트워크라고 이해할 수 있다. LAN에 사용된 기술과 미디어는 전송 거리에서 일정한 제약을 갖고 있기 때문에 LAN에 사용한 기술과 장비 외에 다른 기술과 장비를 사용해 이들 네트워크를 연결해야 하기 때문이다. 하지만 최근에는 LAN을 구성하는 주요 기술의 발전으로 이런 구분이 모호한 경우가 많으며, 고성능화된 LAN 기술을 적용해 대도시 규모의 영역을 연결하는 MAN 등이 등장하면서 LAN과 WAN의 구분은 큰 의미가 없어졌다.

2009. 5. 17. 21:02

[펌글][월간 온더넷 2006/12] 초보자를 위한 네트워크의 이해..

월간 온더넷 2006년 12월호

 

http://www.ionthenet.co.kr/newspaper/view.php?idx=11684

 

 네트워크를 이해하는데 빠지지 않고 등장하는 것이 OSI 7계층 참조모델이다. 실질적인 프로토콜도 아닌 참조모델이 네트워크 기초 강좌에 빠지지 않고 등장하는 것은 초보 네트워커들에게 네트워크의 구성과 동작 방식을 이해하는데 가장 좋은 교재이기 때문이다.


박재곤 기자

네트워크는 수많은 컴퓨터와 장비로 이뤄져 있다. 신기한 것은 이들 구성요소들이 모두 말이 통한다는 것. 장비의 개발업체도 다르고 사용하는 운영체제도 다르지만, 네트워크를 통해 서로 통신을 할 수 있는 것은 바로 프로토콜 때문이다. 때문에 프로토콜은 네트워크가 성립되기 위한 가장 기본적이 요소 중 하나다.
이제 일반명사라고 해도 과언이 아닐 정도로 많이 사용되는 프로토콜은 원래 외교협약같은 좀더 고상한 용어다. 즉 말이 통하지 않는 두 장비가 의사소통을 하기 위한 절차나 규칙 등을 체계적으로 정리해 놓은 것이다.

 

OSI 참조모델에 대한 오해
초기의 네트워크 역시 프로토콜에 따라 통신을 했다. 하지만 OSI 7계층 참조모델(Open System Interconnection Reference Model)이 등장하기 전까지의 네트워크 프로토콜은 IBM의 SNA나 DEC의 DECNet처럼 특정 업체가 자사의 장비들을 연결하기 위해 만든 것들이었다. 따라서 서로 다른 네트워크 간에는 호환되지 않는다는 한계를 갖고 있었다.
OSI 7계층 참조모델은 이런 문제를 해결하기 위해 ISO가 제정한 것이다. OSI 참조모델은 네트워크 통신의 전 과정을 7계층으로 나누고, 각 계층마다 일정한 역할을 수행하도록 해 하나의 네트워크 통신이 완성되는 과정을 나타낸 것이다. 말 그대로 “이런 식으로 프로토콜을 만들면 서로 호환될 수 있으니, 프로토콜들은 이것을 참조하라”는 것이다.
OSI 참조모델에 대한 가장 큰 오해는 바로 모든 네트워크 프로토콜이 OSI 참조모델에 따라 7계층 구조를 갖고 있을 것이라고 생각하는 것이다.
네 트워크는 목적에 따라 두세 단계의 프로토콜만으로도 원하는 통신을 할 수 있다. 따라서 억지로 7단계로 통신 절차를 나눌 필요는 없다. 실제로 우리가 사용하는 네트워크 프로토콜과 OSI 참조모델이 직접적으로 대응되는 경우는 그리 많지 않으며, 많은 프로토콜이 OSI 참조모델의 여러 계층에 걸친 기능을 제공한다. “이 프로토콜은 3~4계층에서 동작한다”는 말을 많이 듣게 되는 것도 이 때문이다.
이런 특징 때문에 OSI 참조모델은 초보자가 네트워크를 이해하는 데 더없이 훌륭한 교재가 되고 있다. OSI 참조 모델은 실제 네트워크 프로토콜을 이해하기 쉽도록 만들어, 네트워크 프로토콜의 역할과 구조, 나아가 네트워크의 동작 방식을 쉽게 이해할 수 있도록 해준다.

 

계층화된 프로토콜의 역할
(표 1)은 OSI 참조 모델을 정리한 것이다. 여기서 가장 아래 부분인 물리 계층부터 각각의 계층마다 고유의 작업들이 정의돼 있다.
또 한 각 계층은 반드시 자신의 영역에서 운영되는 하위 계층을 통해 서비스를 받고, 상위 계층으로 서비스를 제공하도록 규정돼 있다. 예를 들면 3계층의 네트워크 계층은 2계층인 데이터링크 계층을 통해 서비스를 받고, 상위 계층인 전송 계층에 작업한 내용을 서비스하는 식이다.
한편 각 계층은 전송 데이터에 각 계층에서의 요구 조건과 처리 정보를 포함한 헤더라는 고유의 제어 정보를 전달 메시지에 추가해 다음 계층으로 보내며, 수신측의 동일 계층에 의해 해석돼 처리된다. 예를 들면 송신측 컴퓨터의 5계층에서 추가된 헤더는 수신측 컴퓨터의 5계층에서 해석되며, 해석된 헤더는 지정된 작업을 수행한 다음 제거된 상태로 다음 계층으로 넘어가, 최종적으로 수신측 컴퓨터에는 데이터만 전송된다.
이때 각 계층 간에 전달되는 데이터의 단위는 계층에 따라 서로 다른 이름으로 불리며, 이를 ‘서비스 데이터 단위’라고 한다.
프 로토콜이 데이터를 전송하기 위해 사용하는 기본 단위를 PDU(Protocol Data Unit)라고 한다. 즉, 물건을 운반할 때 상자 단위로 포장해 운반하는 것과 같이 프로토콜은 정보의 운반을 위해 PDU라는 상자를 이용하는 것이다.
상자 단위로 물건을 포장해서 운반할 때 상자마다 물품의 내용이나 발송처, 수신처 등을 표기하는 것과 마찬가지로 PDU에도 사용자 정보뿐만 아니라 데이터의 발신처와 수신처에 대한 주소 정보와 전송 중에 에러가 발생했는지 확인하기 위한 패리티, 그밖에 흐름 제어 등을 위한 각종 정보가 함께 들어간다.
계층화된 프로토콜에서는 계층마다 PDU 이름을 독특하게 붙여 사용하는 경우가 있다(표 2). 2계층 PDU는 프레임(Frame), 3계층 PDU는 패킷(Packet), 4계층 PDU는 세그먼트(Segment) 등으로 부르는 것이 일반적이다. 그리고 특별한 이름이 없는 경우에는 그냥 몇 계층의 PDU라고 부른다. 특히 세그먼트라고 불리는 4계층 PDU는 TCP에서 사용하는 경우가 많다.

 

 

TCP/IP와 OSI 참조 모델
일반적으로 가장 많이 사용되는 TCP/IP를 통해 OSI 참조 모델과 프로토콜에 대해 알아보자.
TCP/IP 는 좁은 의미로는 1969년 미국방부가 제시한 ARPNET (Advanced Research Projects Agency NETwork)에서 제안한 프로토콜의 집합 중 인터네트워킹에 대한 핵심적 기능을 제공하는 TCP와 IP만을 지칭한다. 하지만 OSI의 3계층에서 7계층까지 해당 소프트웨어나 서비스 관련 프로토콜을 통틀어 얘기할 때도 사용한다.
TCP/IP는 3계층 프로토콜인 IP와 4계층 프로토콜인 TCP가 합쳐진 용어다(그림 2). 네트워크 계층에 해당하는 IP는 네트워크 환경에 흩어져있는 여러 노드 중에서 지정된 목적지를 찾아가는 경로를 설정하는 작업을 수행하고, TCP는 안정된 데이터 전송을 위해 흐름과 오류를 제어하는 역할을 맡는다.
TCP 외에 또 다른 4계층 프로토콜 중 하나인 UDP(User Datagram Protocol)는 TCP와는 달리 데이터의 신뢰성있는 전송을 보장하지는 않는다. 그러나 신뢰성이 매우 높은 회선을 사용하거나 데이터의 확실한 전송을 요하지 않는 통신, 또는 한번에 많은 상대에게 메시지를 전송할 경우에는 보다 효율적이다.
일반적인 고속 이더넷 환경에서 FTP를 통해 서버에 접속하는 경우를 OSI 참조 모델을 통해 생각해 보자. 우선 클라이언트의 FTP 클라이언트는 애플리케이션 계층의 프로토콜인 FTP 규격에 맞춰 데이터에 헤더를 붙여 하위 계층으로 전송하고, 4계층 TCP 프로토콜이 수신측 서버의 4계층과 통신을 통해 데이터의 정합성을 테스트하고 오류가 있을 경우 재전송을 하는 등의 일을 처리한다. 또한 3계층에서는 IP 어드레스를 통해 송신측이 특정 수신측을 지정하고 경로를 설정한다.
그 아래의 2계층과 1계층에서는 두 노드 사이의 물리적인 연결과 디지털 데이터를 전기적인 신호로 변환해 전송하고 신호가 약할 경우에는 증폭하는 등의 일을 처리한다.

 

 

OSI 참조모델의 계층별 이해

 

물리 계층
OSI 7계층 참조 모델의 1계층은 물리 계층이다. 이 계층에서 담당하는 것은 네트워크 케이블과 신호에 대한 것으로, 물리적 신호(bit)의 전송 규칙을 조정하는 역할을 한다.
물리 계층은 전송 매체에 대한 규정은 정하지 않지만, 이를 구현하는 방법적인 면에서는 전송 매체와 깊은 관계를 맺고 있다. 참고로 물리 계층과 관련된 네트워크 연결 장비들은 다음과 같다.

 

- 허브나 리피터 등의 전기적 신호를 재발생시키는 장비
- 각종 커넥터와 같은 전송 매체 연결 소자 등의 기계적인 연결 장치
- MODEM, CODEC 등 디지털/아날로그 신호 변환기

 

기본적으로 네트워크는 일대일 또는 멀티 포인트 방식으로 연결된다. 잘 알고 있듯이 일대일 방식은 두 통신 장비들이 직접 연결된 상태를 말한다. 이런 식으로 연결하면 회선을 전용으로 사용할 수 있으므로, 장비간 정해진 전송 용량과 대역폭을 보장받을 수 있다. 한편 멀티 포인트 연결은 3대 이상의 장비를 연결하는 방식을 말한다. 이 방식은 같은 주파수대를 공유하며, 전송 매체에 연결된 모든 장비가 전체 기능을 공유할 수 있다. 일반적으로 대규모 네트워크를 구축할 경우에는 일대일 연결과 다중점 방식을 적절히 혼합하는 방식으로 설계한다.
이 같이 다양하게 연결된 네트워크의 형태를 토폴로지라고 부른다. 즉, 어떤 형태나 구조로 연결된 것을 네트워크 토폴로지(Network Topology)라고 이해하면 된다. 단, 눈으로 보이는 물리적인 토폴로지 형태가 논리적으로는 동일하지 않을 수도 있다. 일반적인 토폴로지에는 버스형(Bus), 링형(Ring), 스타형(Star), 메시형(Mesh), 셀룰러형(Cellular) 등이 있다.
1계층에서는 이외에도 전기적인 펄스나 광학적인 방법 또는 전자기적 파동을 통해 신호를 전달하는 방법에 대한 정의도 수행하며, 동기화 방식, 대역폭 등에 대한 개념을 정의한다.

 

데이터 링크 계층
OSI 참조 모델의 두 번째 계층인 데이터링크 계층은 데이터 패킷을 생성하고 전송하는 방법을 규정하는 프로토콜에 대한 계층이다. 이 계층이 하는 일은 물리 계층에서 넘어오는 데이터의 오류를 검사하고 복구 기능을 담당할 뿐 아니라, 시스템 간 전송 속도 차에 의한 오류나 흐름 제어까지 도맡아 처리한다. 쉽게 얘기하자면 화물을 트럭에 싣고, 각 트럭을 고속도로로 보내며 화물이 무사히 목적지에 도착하도록 관리하는 역할을 담당한다.
다른 모든 계층과 마찬가지로 데이터링크 계층 또한 고유의 식별 정보를 전송 데이터 앞에 붙이고 있다. 이 정보에는 수신자와 송신자(물리적 또는 하드웨어적인)의 어드레스와 프레임 길이, 그리고 상위 계층의 정보가 포함돼 있다. 이 계층에 속하는 네트워크 연결 장비로는 브리지, 지능형 허브 등을 들 수 있다.
데이터 링크 계층의 여러 기능은 대개 MAC(Media Access Control)과 LLC(Logical Link Control)의 두 가지 계층으로 다시 세분화할 수 있다. MAC 계층은 동일 채널을 공유하는 통신 방법을 제어하기 위한 것이고, LLC 계층은 데이터 전송을 위해 각 장비들을 논리적으로 연결하고, 연결을 유지하는 역할을 담당한다.

 

네트워크 계층
네트워크 계층은 여러 개의 독립적인 네트워크 사이에서 데이터 전송에 관한 계층이다. 앞서 설명한 데이터링크 계층의 데이터 전송은 물리적인 장치의 어드레스 지정을 통해 단일 네트워크로 연결된 모든 장치에 데이터를 브로드캐스팅하며, 수신측 장비에서 확인해 자신에게 오는 데이터를 수신받는 방식이다.
그러나 네트워크 계층에서는 네트워크와 네트워크를 연결하는 인터네트워킹 환경에서 특정 경로를 선택해 권한이 없는 네트워크에 데이터를 전송하는 것을 미연에 방지할 수 있다. 또한 서로 다른 네트워크로 구성된 인터네트워킹을 통해 올바른 데이터 경로를 보장할 수도 있다. 네트워크 계층에서는 기본적으로 다음과 같은 사항을 수행한다.

 

- 논리적으로 분리된 모든 네트워크에 고유한 네트워크 어드레스를 부여한다.
- 인터네트워크를 통해 컴퓨터와 라우터가 최적의 데이터 경로를 결정하도록 라우팅을 구현한다.
- 네트워크는 인터네트워크 내에서 예상되는 오류의 개수에 따라 서로 다른 단계의 연결 서비스를 구현한다.

 

전송 계층
전송 계층은 복잡한 하위 계층 구조를 상위 계층이 알 필요가 없도록 감추기 위한 계층이다. 여기서는 상위 계층의 메시지를 세그먼트화한 후, 이 세그먼트를 세션 계층이나 상위 계층 프로세스에게 신뢰성 있게 전달하는 역할을 한다. 전송 계층은 하위 계층에서의 신뢰성이 모자라는 연결 서비스나 연결 지향 연결 서비스가 갖는 미비점을 해소하기 위한 역할을 수행한다. 여기서 신뢰성이 보장된다는 말은 데이터가 항상 전달된다는 것을 의미하지는 않는다.
예를 들어 케이블이 끊어졌을 경우에는 데이터의 전달을 보장할 수 없다. 만일 어떤 데이터가 수신측 장치에게 올바르게 전달되지 않은 경우, 전송 계층은 재전송을 개시하거나 상위 계층에게 이 사실을 통보할 수 있으며, 이에 근거해 상위 계층에서는 필요한 조치를 취하거나 사용자에게 옵션을 제공하게 된다.

 

세션 계층
세션 계층은 상위 계층에서 필요로 하는 서버 이름과 어드레스를 하위 계층에서 제공되는 논리 어드레스 정보를 사용해 식별할 뿐 아니라, 서비스 제공자와 요청자 간을 연결하고 대화를 개시하는 역할을 담당한다. 이 기능을 수행하는 경우 세션 계층은 각 네트워크 구성 요소를 소개하거나 식별해내며 액세스 권한을 조정하기도 한다.

 

프리젠테이션 계층
프리젠테이션 계층은 변환과 암호화를 통해 데이터를 주고받는 서로 다른 환경의 컴퓨터와 애플리케이션이 데이터를 이해할 수 있도록 돕는 기능을 수행한다.

 

애플리케이션 계층
사용자로부터 데이터를 받아 하위 계층으로 전달하고, 하위 계층에서 전달하는 데이터를 사용자에게 전달하는 애플리케이션 계층은 여러 가지 실제적인 네트워크 서비스를 제공하는 계층이다.
애 플리케이션 계층에는 각각의 네트워크 서비스에 대한 특정한 주제와 기능이 포함된다. 다시 말해, 이 계층 하부에 있는 여섯 계층이 일반적으로 네트워크 서비스를 지원하는 기술과 작업을 포함하는데 반해, 애플리케이션 계층에서는 특정 네트워크 서비스 기능을 수행하는데 필요한 프로토콜을 지원한다.
애플리케이션 계층 프로토콜이 지원하는 서비스로는 네트워크 서비스에 해당하는 파일, 프린트, 메시지, 애플리케이션, 데이터베이스 서비스 등이 포함된다.
OSI 7계층을 만든 이유는 프로토콜을 체계적으로 연구하기 위한 목적 외에도, 공용으로 사용할 수 있는 공개된 프로토콜을 만들기 위한 것도 있었다. 그러나 7계층이 발표된 시점에 이미 많은 프로토콜이 사용되고 있었고, 특히 WAN에서는 TCP/IP가 표준으로 자리잡아 독보적인 위치를 확보하고 있었다.
그 이후, 1계층과 2계층에서는 이더넷, 3계층과 4계층에서는 TCP/IP, NetBEUI, IPX 등이 업계 표준으로 자리잡았다.
한편 5, 6, 7계층은 각각이 별도로 구현되기보다는 통합된 형태의 서비스라는 이름으로 제공된다. 텔넷, FTP, 전자우편(SMTP, POP), HTTP, 뉴스그룹(NNTP), NetBIOS 등이 이와 같은 서비스에 해당한다.

2009. 5. 17. 21:01

[펌글][월간 온더넷 2007/01] 초보자를 위한 네트워크의 이해..

월간 온더넷 2007년 1월호
http://www.ionthenet.co.kr/newspaper/view.php?idx=11761

범위를 어디까지 정하느냐에 따라 달라지겠지만, 네트워크를 이루는 기본 하드웨어는 LAN 카드, 케이블, 허브, 라우터라는 것이 통념이다. 그리고 이 4가지 요소를 알고 있으면, 네트워크의 절반을 알고 있다고 해도 과언이 아니다. 이번호에는 우선 내부 LAN을 구성하는 3가지 요소에 대해 알아보겠다.

박재곤 기자

첫회에서 알아본 대로 아주 간단하게 PC와 PC를 연결한 것만으로도 네트워크는 구성된다. 하지만 인터넷이 확산된 이후의 네트워크는 통상 여러 대의 PC를 연결한 LAN을 외부 인터넷과 연결한 것까지를 말하는 경우가 대부분이다.
이 렇게 인터넷과 연결된 네트워크를 구성하는 데 필요한 네트워크 하드웨어, 즉 네트워크 장비는 PC에 장착하는 LAN 카드와 여러 대의 PC를 연결하는 허브 또는 스위치, 이렇게 모여진 내부 네트워크를 인터넷과 연결시켜 주는 라우터, 그리고 마지막으로 이들 네트워크 장비를 연결하는 데 사용하는 케이블 정도이다.
물론 사용 환경과 목적에 따라 여러 대의 장비가 필요할 수도 있고, 좀 더 복잡하고 지능적인 장비가 필요할 수도 있다. 하지만 이런 장비들 역시 기본은 이 4가지 장비에 두고 있으므로 이해의 첫걸음은 여기서 시작해야 한다.

 

기본 중의 기본 네트워크 케이블
사실 케이블은 네트워크 하드웨어로 취급받지 못하는 경우가 많다. 별도의 조작이 필요없기도 하고 외형적으로 봐서는 케이블의 차이를 알기도 쉽지 않기 때문에 있는 대로 사용한다는 식이 많기 때문이다.
물 론 네트워크에 사용되는 케이블은 종류도 많고 그 용도도 다양하다. 하지만 UTP(Unshielded Twisted Pair) 케이블을 제외한 대부분의 케이블이 현재는 특수한 용도 또는 아주 오래된 네트워크에만 사용되고 있기 때문에 케이블의 다양한 종류와 역사에 대해서는 흥미가 생길 때 알아봐도 무방하다. 따라서 여기서는 UTP 케이블에 대해서만 알아본다.
이더넷 환경에서 주로 사용되는 케이블은 TP(Twisted Pair) 케이블로, 그 중에서도 특히 UTP가 주를 이루고 있다. TP 케이블은 절연물질을 이용해 외부의 영향으로부터 차폐 효과를 거둘 수 있는가, 없는가에 따라 UTP(Unshielded Twisted Pair)와 STP(Shielded Twisted Pair)로 구분된다(그림 1, 2). STP는 차폐가 되는 장점이 있는 반면, 가격이 비싸고 설치도 까다롭기 때문에 특별한 용도가 아니면 잘 사용하지 않는다.
TP라는 이름에서 알 수 있듯이 TP는 선을 꼬으게 되는데, 그 이유는 선끼리 수평으로 있으면 전기적인 영향이 생겨 데이터 전송률이 떨어지는 문제가 발생할 수 있기 때문이다. 속도가 빠를수록 꼬임수도 많은데 10Mbps 속도의 카테고리 3는 12인치(1피트)당 3∼4회 정도 꼬였고, 100Mbps 속도의 카테고리 5는 1인치당 3∼4회로, 더 많이 꼬여 있는 것으로 알려져 있다.
UTP는 총 8가닥으로 구성돼 있는데, 청색, 오렌지색, 녹색, 갈색의 4가지 기본 색상과 이들과 각각 쌍을 이루는 4가닥의 흰색 선이 있다. 각각의 2쌍 중 한쌍은 전송을, 다른 한쌍을 수신을 담당하게 된다.

 


 

카테고리별 UTP 케이블의 특징
모양이 비슷하게 생겼다고 해서 UTP 케이블이 모두 같은 것은 아니다. UTP 케이블은 전송거리와 전송능력에 따라서 표준상으로 카테고리 1∼7로 구분된다. 일반적인 기업의 LAN 환경에서 많이 사용되는 케이블은 카테고리 5 케이블로, 100Mbps 이더넷까지 무리없이 사용할 수 있다. 하지만 기가비트 이더넷을 사용한다면, 카테고리 5E나 카테고리 6 케이블을 사용해야 한다. 최근에는 10기가비트 이더넷을 지원하는 카테고리 6A와 카테고리 7 케이블에 대한 관심도 높아지고 있다.
카테고리란 EIA/TIA-568 UTP 와이어링 표준 규격으로, 1991년 미국의 EIA/TIA는 상업용 건물의 구내 통신 표준(EIA/TIA 568 Commercial Building Telecommunications Standard)을 발표했는데, 이로써 건물 내 통신 케이블 표준이 자리잡게 된다. 미국의 EIA/TIA 표준은 이후 국제 표준 협회인 ISO의 구내 통신 표준의 모체가 됐으며, ISO의 구내 통신 표준은 현재 세계 각국의 구내 통신 표준의 모체가 되고 있다. 국내의 상업용 건물 구내 통신 표준(TTA 표준) 역시 ISO와 EIA 표준을 근간으로 발표된 것이다.
과거 카테고리 1으로 시작한 UTP 케이블은 20Kbps의 전송 속도를 냈다. 이후 카테고리 2, 3, 4를 거쳐 오늘날 가장 널리 사용되는 카테고리 5 케이블은 155Mbps의 속도를 보장한다. 일반적으로 카테고리 3 케이블은 음성 또는 저속 데이터용에 적합한 등급이며, 고속의 데이터는 카테고리 5 이상의 제품에서 지원한다.
그렇다면 주로 사용되는 카테고리 5와 카테고리 5E, 그리고 카테고리 6의 차이점은 무엇일까. 여러 가지가 있겠지만, 가장 중요한 것은 파워섬(PowerSum)을 고려했는가와 고려하지 않았는가에 있다.
파 워섬이란 여러 쌍의 선을 사용할 때 일어나는 간섭량을 말한다. 파워섬을 고려한 제품은 전체 4쌍을 모두 사용할 수 있는 반면, 파워섬을 고려하지 않은 제품은 두 쌍 간에 발생하는 근단누화와 감쇠만을 고려했기 때문에 두 쌍 이상을 사용하는 것에 대해서는 성능을 보장할 수 없는 것이다. 좀더 쉽게 카테고리 5와 카테고리 5E의 차이를 설명하면, 카테고리 5가 4쌍 중에서 2쌍 만을 송수신을 위한 회선으로 사용되는데 반해, Cat 5E는 모든 4쌍 8가닥 모두를 송수신용으로 사용한다는 점이 다르다. 따라서 Cat 5E는 100MHz의 주파수 대역을 갖고 있는 카테고리 5에 비해 400MHz로 송수신이 가능함으로 그만큼 성능이 향상되는 것이다. 카테고리 6의 경우는 주파수 대역폭이 카테고리 5E보다 2배 더 높다. 또한 신호대 잡음비를 개선해 250MHz까지 송수신할 수 있다.

 

 

PC와 네트워크의 접점 역할 LAN 카드
LAN 카드는 이제 네트워크 장비라기보다는 PC의 기본적인 부품의 하나로 인식될 정도로 보편화된 요소다. 독립적으로 동작하지 않기 때문에 장비라고 하기는 무리가 있고, 또 최근에는 별도의 카드 형태로 구입하는 사용자도 드문 것이 사실이다.
LAN 카드의 정식 명칭은 NIC(Network Interface Card)다. 다시 말해 PC를 네트워크와 연결시켜주는 접점 역할을 하는 것이다. LAN 카드의 역할을 단순하게 설명하면, 컴퓨터의 메모리로부터 데이터를 가져와서 케이블로 보내고, 케이블로부터 받은 데이터를 컴퓨터 메모리로 보내는 것이다.
아주 단순해 보이지만, LAN 카드의 역할은 대략 8가지로 나눌 수 있다. 우선 호스트와 카드 간의 통신, 버퍼링, 프레임 형성, 직/병렬 전환, 엔/디코딩, 케이블 액세스, 접촉, 송수신이 그것이다. 동작 과정을 살펴보자.

① PC와의 통신 : 이 단계의 데이터 전송을 구현하는 방법은 현재 DMA(Direct Memory Access)와 공유 메모리 방식 두 가지가 주로 사용된다. DMA는 DMA 컨트롤러 칩이 CPU로부터 PC의 메모리와 NIC 간의 데이터 전송에 대한 제어권을 넘겨받아 작업을 하는 방식으로, PC의 CPU가 다른 작업을 할 수 있다. 공유 메모리 방식은 NIC의 메모리와 PC의 메모리를 하나의 메모리처럼 사용하는 것으로, 별도의 전송 과정이 필요없기 때문에 속도가 빠르다.

② 버퍼링 : NIC에서 데이터를 다른 NIC나 PC로 보내기 전에 임시로 저장하는 것이다. 데이터가 변환이나 전송 등의 처리보다 빠르게 NIC에 전송됐을 때, 다른 데이터를 처리할 때까지 임시로 저장한다.

③ 프레임 형성 : 프레임은 전송의 기본 단위로 파일이나 메시지는 전송을 위해 프레임으로 나눠 담게 된다. 상대편에서는 이런 프레임을 받아서 파일이나 메시지로 만든다. 프레임은 헤더와 데이터, 꼬리로 이뤄지며, 크기는 이더넷의 경우 1500바이트다. 프레임의 크기는 1KB에서 4KB 사이가 대부분이다. 하지만 기가비트 이더넷에서는 보다 큰 프레임 크기를 사용하기 위한 점보 프레임을 사용하기도 한다.

④ 직/병렬 변환 컨트롤러 : PC에서 데이터는 버스 폭에 따라 한 번에 8, 16, 32비트와 같이 병렬로 전달된다. 하지만 케이블을 통과할 때는 한 번에 1비트씩 전송되는 시리얼 형태를 취하므로 컨버전 작업이 이뤄져야 한다.

⑤ 인코딩/디코딩 : 케이블을 통해 전달되는 것은 디지털 데이터가 아니라 정보를 담고 있는 전기적인 펄스의 연속이다. 대부분의 NIC는 맨체스터(Manchester) 엔코딩을 사용한다. 시리얼 데이터는 비트 주기로 쪼개지고 각 주기는 다시 반으로 쪼개지며, 그 반과 반이 한 비트를 나타낸다. 각 주기는 양에서 음으로, 음에서 양으로의 전극 변화를 통해 1과 0을 나타낸다.

⑥ 케이블 액세스 : 이더넷의 경우 케이블이 비어있음을 확인하고, 동시에 전송하는 충돌을 감지하고는 데이터를 보낸다.

⑦ 전송 : 마지막으로 트랜시버에서 데이터를 전기적인 펄스 형태로 변환해 케이블로 내보낸다.

 

포트만 나와 있는 LAN 카드
LAN 카드는 현재 RJ-45 커넥터를 사용하는 UTP 형식의 이더넷이 업계 표준으로 정착하면서 일반적인 데스크톱 환경을 지배하고 있지만, 이외에도 토큰링이나, FDDI 등도 서버나 특수한 목적에 일부 사용되고 있다. 하지만, LAN 카드의 기본적인 기능은 동일하며, 미디어의 종류에 따라 커넥터의 종류가 바뀌기도 하고, 프로토콜에 따라 내부 구조의 차이가 조금 있을 뿐, 역할은 거의 동일하다.
최근 선보이고 있는 LAN 카드는 WOL(Wake On LAN), 관리, 보안 기능 등이 추가돼, 사용자의 편의를 돕는 경우도 있으며, ASIC을 통해 하나의 칩으로 모든 기능을 통합해 가격을 낮추고, 제품의 오류를 최소화 하는 방향으로 나가고 있다.
특히 최근에는 메인보드에 LAN 카드가 직접 내장돼 나오는 제품이 많기 때문에 별도의 LAN 카드를 구매하는 경우는 많이 줄어들었다. 때문에 별도로 구매하는 LAN 카드라면 노트북 등에서 사용하기 위한 USB 방식의 무선 LAN 카드 정도일 것이다.
현재는 100Mbps를 지원하는 100Base-TX가 가장 대중적인 LAN 카드이며, 튀어보이기 위해 기가비트 이더넷을 지원하는 LAN 카드를 내장한 제품도 나오고 있다.

 

 

LAN의 중심, 허브와 스위치
이제 PC마다 LAN 카드가 내장돼 있고, 케이블이 있다고 생각해 보자. 이제 이들을 하나로 묶어서 연결해 줄 장비가 필요한데, 그것이 바로 허브(Hub)와 스위치(Switch)다. 허브나 스위치는 가까운 거리의 컴퓨터들을 케이블을 이용해 서로 연결해 주거나 다른 허브와의 연결을 통해 네트워크 사이를 연결하는 역할을 담당한다. 허브와 스위치는 그 역할과 기능, 그리고 구조에 따라서 가격대만 수만 원에서 수천만 원을 넘는 것까지 아주 다양한 형태가 있다.
허브는 이름 그대로 LAN의 중심에 위치하면서 바큇살 모양으로 단말 장치를 접속하는 형태의 전송로 중계장치라고 할 수 있다(그림 4). 즉, 스타형 네트워크에서 통신하고자 하는 여러 컴퓨터들을 연결해 주는 장비가 바로 허브다. 허브에는 물리적으로 여러 포트가 있어 여러 컴퓨터들이 연결돼 있다.
일반적인 허브는 각 컴퓨터 간의 네트워크 연결이나 허브와 라우터 등 다른 네트워크 장비와의 연결, 그리고 신호 증폭 기능이 핵심 기능의 전부인 단순한 기능만을 제공한다. 과거에는 기본적인 기능만을 제공하는 허브를 더미 허브라고 하며, 여기에 네트워크 관리 기능을 추가한 것을 인텔리전트 허브라고 구분하기도 했지만 최근 들어서는 인텔리전트 허브는 일반적으로 스위치로 분류된다.
허브는 저렴하기는 하지만 문제는 다른 포트에서 주고받는 데이터들이 관계없는 포트에 연결된 포트까지 전해지는 비효율적인 통신 방법을 채택하고 있다는 점이다. 해서 이를 개선하고자 등장한 것이 바로 스위치다(그림 5).
스 위치는 허브와 외형적으로 구분되지는 않지만, 내부적인 동작에서 가장 큰 차이점을 가지고 있다. 가장 큰 차이는 스위치는 포트에서 입력되는 출발지 MAC들을 자신의 MAC 테이블에 일정시간 기억한다는 점이다. 그래서 특정 MAC을 목적지로 하는 패킷이 오면 MAC 테이블을 찾아서 목적지로만 데이터를 보낸다. 즉, 허브가 하나의 공유 매체, 즉 버스로 내부가 구성돼 있는 반면에 스위치는 스위칭 구조(Switching Fabric) 자체가 달라 각 포트의 사용 대역폭을 최대한 보장하도록 만들어졌다.

 


 

스위칭 기술의 이해
대부분의 스위치들이 각 업체의 독특한 ASIC 기술을 이용해 제작되기 때문에 ASIC 칩의 설계와 그 칩의 입출력 버퍼를 포함해 스위치에 집적되는 방법 등은 스위치를 이해하는 데 중요한 요소다. 스위치의 차이점을 설명하는 데 있어 중요한 요소인 스위칭 구조에 대해 알아보자.

- 블록킹과 논블록킹 방식
일 반적으로 스위칭 ASIC이 처리할 수 있는 최대의 대역폭이 각 포트의 대역폭의 합보다 클 때 이를 논블록킹(Non-blocking)이라고 하고, 이보다 작을 때를 블록킹(Blocking)이라고 한다.고속 버스 구조라고 불리는 논블록킹 방식에서는 스위칭 ASIC 칩들 사이에 고속의 데이터 버스가 연결돼 있다. 프레임이 이 버스에서 전송하기 적합한 형태로 변환된 후, 이를 통해 출력포트로 전송한다. 이 버스는 각 포트의 최대 전송 속도를 동시에 처리할 수 있어서 데이터 경로의 병목 현상이 없다.이런 블록킹과 논블록킹 구조는 일반적으로 스위칭의 매트릭스 구성을 어떻게 하느냐에 따라 매트릭스/크로스 바 구조가 결정되며, 메모리의 속도와 데이터 폭, 버스 속도와 데이터 폭에 따라 공유 메모리/공유 버스 구조가 결정된다.

- 컷스루 방식
컷 스루(Cut-through) 방식은 이더넷 패킷의 MAC 어드레스만을 확인하고 바로 해당 목적지 포트로 전송하는 기법이다. 따라서 최저의 비용으로 스위칭 장비를 구성할 경우 버퍼 메모리를 두지 않을 수도 있다. 이 경우 MAC 어드레스만을 확인하고 전송하기 때문에 오류가 발생한 이더넷 패킷까지도 전송하는 경우가 발생해 전체 네트워크의 효율을 저하시킬 수 있는 요인이 되며, 서로 속도가 다른 포트간의 전송도 불가능하다.

- 축적전송 방식
축적전송(Store-and-Forward) 방식은 각 포트로부터 이더넷 패킷이 입력되면 일단 모든 패킷을 메모리에 저장하고, 저장된 패킷을 읽어 패킷의 오류 유무를 확인한 후 MAC 어드레스를 확인해 해당 목적지 포트로 전송하는 기법이다. 따라서 메모리에 저장하고 읽어내는 과정에서 패킷 전송의 지연 시간이 발생한다. 그러나 오류가 없는 패킷만을 전송하기 때문에 전체 네트워크의 효율을 높일 수 있으며, 메모리에 버퍼링한 후 전송하므로 서로 속도가 다른 포트간 전송도 가능하다. 10Mbps의 이더넷과 100Mbps 고속 이더넷이 공존하는 요즘같은 상황에서는 대부분의 스위칭 장비에서 이를 가장 효율적으로 제어할 수 있는 축적 전송 방식을 채택하고 있다.

- 매트릭스/크로스 바
매 트릭스/크로스 바(Matrix/Cross bar) 방식은 각 입력단과 출력단을 포인트 투 포인트(Point-to-Point)로 채널을 구성하는 방식이다. 마치 여러 개의 도로가 하나의 교차로를 지나는 형태와 유사하다. 트래픽이 많지 않을 때에는, 컷스루로 알려진 방식으로 프레임을 버퍼에 저장하지 않고 출력포트로 전송할 수 있다. 그러나 트래픽이 많을 경우, 곧바로 출력 포트로 전송될 수 없으므로, 이를 저장하기 위한 입력 버퍼가 필요하다.

- 공유 메모리
공유 메모리 방식은 각 포트에 입력되는 모든 패킷을 동일한 버퍼 메모리에 저장한 후 다시 읽어내어 전송하는 방식으로 현재 가장 많이 사용되고 있는 방식이다.

- 공유 버스 방식
공유 버스 방식은 한 버스를 여러 포트가 공유해 패킷을 전송하는 방법으로 공유 메모리의 보조 기능으로 사용됐지만 현재는 거의 사용하지 않는 기술이다.

2009. 5. 17. 20:57

[펌글:월간 온더넷 2007/03] 초보자를 위한 네트워크의 이해..

초고속 인터넷이란 말로 통칭되는 브로드밴드 네트워크는 그동안 기술적으로, 또 실제 서비스 측면에서 수많은 변화를 거쳐 왔으며, 이미 일반 가정에서 없어서는 안될 서비스로 자리잡고 있다. 여기서는 브로드밴드 네트워크의 기본 개념과 기반이 되는 기반 기술, 서비스에 대해 알아본다.

박재곤 기자

광대역 네트워크란 말로 번역되는 브로드밴드 네트워크는 여러 가지 의미를 갖는다. 하지만 일반 사용자에게 브로드밴드 네트워크는 기반이 되는 기술에 관계없이 그저 초고속 인터넷 서비스로 인식돼 온 것이 사실이다.
브 로드밴드 네트워크가 이렇게 초고속 인터넷의 동의어로 인식되는 이유는 브로드밴드란 용어가 내로우밴드(Narrowband, 협대역)와 대비되는 개념으로도 사용되지만, 기술적으로는 베이스밴드(Baseband)와 대비되는 개념이기 때문이다.

 

브로드밴드=초고속 인터넷?
내로우밴드와 대비되는 의미로 브로드밴드는 초고속 인터넷과 동일한 의미를 갖는다. 초고속 인터넷 서비스가 특정 기술이나 서비스 만을 지칭하는 것이 아니라, 기존의 전화회선을 통한 다이얼업 모뎁 접속이나 ISDN 서비스와 비교해 현저하게 빠른 전송속도를 제공하는 서비스를 일컫는 말이기 때문이다. 이런 이유로 2000년을 전후에 전국적으로 확산된 초고속 인터넷 서비스는 기술적인 특성에 관계없이 모두 브로드밴드 네트워크라고 부를 수 있다.
하지만 통신 기초 교과서에 나오는 전송 방식에 따른 구분으로, 베이스밴드와 비교해 설명하면 다소의 차이가 생긴다. 케이블을 통해 신호를 전송하는 방법에는 컴퓨터에서 나오는 디지털 신호를 그대로 전송하는 베이스밴드 방식과 디지털 신호를 아날로그 신호로 변조해 보내는 브로드밴드 방식 두 가지가 있다.
베이스밴드는 복잡한 주파수 변경을 하지 않고, 디지털 신호를 전송매체에 그대로 실어 전송하는 방식으로, 이더넷은 베이스밴드 네트워크의 한 예이다. 이와 달리 브로드밴드는 하나의 단일 링크를 통해 복수의 전송 채널을 전송할 수 있는 기술로, 각각의 채널은 서로 다른 주파수에서 이뤄지기 때문에 다른 네트워크의 통신을 방해하지 않는다.
이런 기준으로 본다면, 홈LAN이라 불리던 초고속 인터넷 서비스는 브로드밴드 네트워크에 포함시키기 어려워진다. 홈LAN은 대단위 아파트 단지를 이더넷으로 연결해 전용회선을 통해 인터넷에 접속할 수 있도록 한 것으로, 기업의 네트워크 환경을 아파트 단지로 옮겨놓은 것이다. 이 경우 베이스밴드 방식의 이더넷을 사용하기 때문에 브로드밴드 네트워크로 보기는 어렵다.
여기서는 대표적인 브로드밴드 네트워크인 xDSL과 케이블모뎀, 그리고 FTTH에 대해 알아보겠다.

 


브로드밴드 네트워크의 선두주자 xDSL
국내에서 가장 많이 사용되고 있는 xDSL은 대표적인 브로드밴드 네트워크 기술이다.
ADSL(Asymmetric Digital Subscriber Line), VDSL(Very high-data rate Digital Subscriber Line) 등 여러 DSL 기술을 총칭해서 부르는 xDSL(xDigital Subscriber Line)은 1989년 벨코어에서 기존의 트위스트 페어 전화선을 사용해 비디오, 영상, 고밀도 그래픽, 그리고 Mbps급 속도로 정보를 전송하는 개념에서 착안된 기술이다.
DSL은 기존의 전화선을 이용한다. ADSL 등장 이전에 많이 사용했던 '삑~'하고 접속소리가 나던 모뎀은 데이터 신호를 아날로그 신호로 변조해 전송하는 방식이다. 이 방식의 문제는 POTS(Plain Old Telephone Service) 회선을 이용하기 때문에 속도가 56Kbps 밖에 나지 않는다는 점이었다. 이 속도로는 멀티미디어 애플리케이션을 전송하기에는 역부족이었다.
이를 극복하고자 개발된 DSL은 현재 가입자 댁내까지 연결된 전화회선이 음성 전송을 위해 해당 매체의 전송 능력 중 극히 일부인 4KHz 대역만을 사용하고 있다는 점에 착안, 나머지 남아 도는 대역을 이용해 고속 데이터 전송을 가능하게 했다.
DSL 기술은 전송 속도나 하향과 상향의 대칭성에 따라 ADSL, SDSL(Symmetric Digital Subscriber Line), VDSL 등 다양하게 분류되며, 이런 기술을 총칭해 xDSL이라고 한다. DSL 구현시 모뎀과 더불어 DSLAM(DSL Access Multiplexer)이란 장비가 사용되는데, 이는 DSL 모뎀에서 송수신되는 데이터를 모아 백본 네트워크로 전송하는 역할을 한다.
 

ADSL(Asymmetric DSL)은 교환국에서 이용자에게 전달되는 다운스트림과 이용자에서 교환국으로 전달되는 업스트림 속도가 달라 교환국으로부터 영상 등의 광대역 정보를 받고, 이용자는 저속의 제어 신호를 전송하는 비대칭적인 전송 형태다. 상향 속도는 선로 변경과 제어 신호 전송으로 사용되므로 하향 속도와 비교할 때 대역폭이 매우 낮다.
대역폭은 1.5∼8Mbps의 하향 속도와 32∼768Kbps의 상향 속도로 사용자가 비대칭으로 이용할 수 있다. ADSL은 하향 속도와 상향 속도가 약 10:1의 비율로 제공된다.
VDSL(Very-high-bit-rate DSL)은 VADSL 혹은 BDSL(Broadband DSL)이라고도 부른다. 이는 VDSL이 선로 거리는 짧지만 ADSL 보다 더 빠른 데이터 속도를 비대칭 송수신하는데 사용되기 때문이다.
ADSL이 비대칭 전송만을 지원한 것에 비해 VDSL은 대칭과 비대칭을 모두 수용할 수 있다. 무엇보다도 FTTH(Fiber To The Home)로 진화하는데 있어 가장 적합한 기술이다. 광 네트워킹은 가입자에 가까이 갈수록 속도는 올라가지만 채널 비용이 높아지기 때문에 VDSL과 같이 유사한 기술을 이용하는 것이 비용 효율적이다.
xDSL은 전송 속도를 높일수록 전송 거리가 짧아지며 해당 전송 선로의 품질에 따라 전송 속도에 차이를 보인다. 역으로 말하면 전화국에서 가입자까지 거리가 멀수록 전송 속도는 낮아진다. 서비스 제공업체가 주장하는 속도는 최적의 통신선로 상태에서 최단 거리에 있을 때의 속도이므로 실제 사용자가 느끼는 속도는 가변적일 수밖에 없다.
xDSL 기술의 핵심은 변조(modulation)에 있다. 변조는 한 신호를 다른 신호의 속성으로 변경하는 과정을 말한다. 현재 xDSL에 사용되는 변조 방식은 DMT(Discrete Multitone modulation),? CAP/QAM(Carrierless Amplitude/Phase modulation/Quadrature Amplitude Modulation) 등이 있다.

 


 

DMT는 3개의 채널을 트래픽이 오버레이되는 256개 서브 채널로 나눠주는 방식으로, 비교적 최근에 나온 멀티 캐리어 기술이다. 이 방식은 입력되는 데이터가 수집된 뒤에, 수많은 작은 개개의 반송파 위에 분포되고, 각각은 QAM 변조 형태를 사용한다. DMT는 ANSI(American National Sta ndards Institute)의 공식 표준이기도 하다.
단 일 캐리어 방식인 CAP/QAM은 입력되는 데이터를 QAM과 같이 단일반송파를 사용해 변조한 후 전화선에 실어보내지만, 반송파 자체는 전송 전에 압축해 보내지 않는다. 이 방식은 구현이 단순해 전력 소모 등 비용 효율이 우수하지만, 각종 신호의 간섭이나 잡음에 취약한 전화 선로의 특성상 전송속도 대비 전송거리에 대한 자동 적응 능력 등에서 기술적 한계가 존재한다.

 

케이블 모뎀의 구현 원리
케이블 모뎀 기술은 케이블 TV(Cable TV) 방송 네트워크를 이용해 인터넷 서비스를 제공하는 것을 말한다. 동축 케이블을 통한 데이터 전송은 양방향 HFC(Hybrid Fiber Coax) 인프라의 구축으로 가능하게 됐다.
케 이블 네트워크의 경우 양방향 서비스가 가능한 구조이며, 이미 가정까지 설치된 유일한 고속 네트워크인 셈이다. 또한 케이블 네트워크 구조는 안정성이 높은 광 케이블 구조이므로 고속의 통신이 가능하다. 가입자 장소에 케이블 모뎀이 설치되고 케이블 집중국에는 CMTS(Cable Modem Termination System), 일명 헤드엔드라는 장비가 설치된다.?
케이 블 서비스 방식은 DSL과 달리 고정된 대역을 지정하지 않고, 대역을 여러 사람과 공유하게 된다. 이는 일반적인 LAN과 같이 이웃의 케이블 네트워크 사용자와 같이 대역폭을 공유하는 것이다. 케이블 네트워크 서비스의 하향 속도는 10∼36Mbps이며, 상향 속도는 256 Kbps∼10Mbps다.
케이블 모뎀은 케이블 TV 네트워크를 통해 인터넷 상의 정보와 같은 디지털 데이터에 고속으로 연결시켜 주는 장비를 말한다. 케이블 모뎀은 텔레비전에 화상을 전송해주는 케이블 TV 네트워크를 그대로 사용한다.
케 이블 모뎀은 방송국에서 가입자로 전송되는 TV 신호 대역폭(다운스트림 채널)과 가입자로부터 방송국으로 송신되는 업스트림 채널을 사용해 데이터 통신을 한다. 일반적으로 케이블 모뎀은 NIC(Network Interface Cards)를 통해 컴퓨터와 데이터를 교환하지만, 아날로그 신호를 변복조한다는 점에서는 아날로그 모뎀과 동일하다.
예를 들어 케이블 TV 회사들은 케이블 네트워크를 통해 인터넷 상의 디지털 정보를 아날로그 신호로 변조시켜 비디오 신호와 함께 전송한다. 케이블 모뎀은 수신된 신호를 컴퓨터에서 받아들일 수 있도록 디지털 신호로 변환시키는 역할을 한다.
인터넷에 데이터를 업로드할 때는 앞에서 설명한 것과 정반대의 순서를 거친다. 케이블 모뎀은 컴퓨터에서 수신된 신호를 아날로그 신호로 변조시키고 케이블 네트워크를 통해 이 신호를 케이블 TV 회사로 전송한다. 케이블 TV 회사에 설치된 장비는 수신된 신호를 디지털로 변환시켜 인터넷으로 전송하는 것이다.

 


 

실패한 기술 '광대역 무선 기술'
한때 유선을 통한 액세스 방법의 대체 방안으로 무선 액세스 서비스는 국내외적으로 상당히 주목을 끌었던 기술이다. 물론 국내에서는 KT와 하나로통신 등이 상용 서비스를 시작하면서 관심을 끌긴 했지만 제대로 시장에 안착하지는 못했다. 때문에 현재는 관심 대상에서 멀어진 기술이기도 하다.?
B-WLL(Broadband Wireless Local Loop)이라 불리는 광대역 무선 기술은 기존 유선 네트워크를 이용한 브로드밴드 액세스 기술과 같이 고정된 상태의 전화국과 사용자를 연결하기 때문에‘Broadband Fixed Wireless Access’ 기술이라고도 명명된다.
WLL은 전화국에서 전화 가입자의 집까지 유선 선로 대신 무선 시스템을 이용해 전화선을 구성하는 방식으로, 농어촌 지역과 같이 인구밀도가 희박한 지역에 전화를 가설할 때 가설비를 줄이기 위한 대안으로 처음에는 개발됐다.
B- WLL은 WLL에서 확장된 기술로, WLL이 음성 위주라면 B-WLL은 고속 데이터, 음성, 영상 전송 등 멀티미디어 서비스를 제공하는데 초점을 맞추고 있다. B-WLL은 케이블없이 26 GHz 대역의 광대역 무선 네트워크를 이용해 최대 10Mbps의 속도를 구현할 수 있다.
B-WLL은 LMDS(Local Multipoint Distribution Service)와 MMDS(Multichannel Multipoint Distribution Service) 등의 서비스로 세분화할 수 있는데, 국가마다 조금씩 부르는 용어가 다르다. 일례로 캐나다에서는 LMDS로 부르는 반면, 미국에서는 LMCS라고 부른다.
이들은 사용 대역에 따라 구분되는데, MMDS는 10GHz 이하의 대역(2.5GHz)이나 미국내 비인가(Unlicense) 대역인 5.7GHz 대역을 이용한다. LMDS는 10GHz 이상의 28GHz 또는 38 GHz 대역을 사용했다.

 

브로드밴드 네트워크의 종착점 FTTH
초고속 인터넷, 다시 말해 가정으로 연결되는 브로드밴드 네트워크 서비스의 이상향은 FTTH(Fibre To The Home)이다. 말 그대로 사용자 가정까지 광 케이블로 연결하는 것이다. 하지만 FTTH는 구현 방식에 따른 문제도 있고, 광 케이블이란 미디어 자체의 특성, 그리고 이에 따른 높은 투자 비용 등 여러 가지 어려움을 갖고 있다.
FTTH의 구현 방식으로는 AON(Active Optical Network) 방식과 PON(Passive Optical Network) 방식이 있다.
AON 방식은 통신업체의 광 인터넷 백본망에 접속되고 하향으로 다수의 광 기가비트 이더넷 포트를 가진 스위치를 집단 거주지의 중앙에 두고, 그 아랫단에 가입자 수 만큼의 100Mbps 광 포트를 지원할 수 있도록 수 내지 수십 대의 광 고속 이더넷 스위치를 연결해 각 세대에 연결된 광케이블을 통해 100Mbps를 지원하는 방식이다. 이 방식은 아파트 단지와 같은 공동주택 환경에 적합한 방식으로, 아파트 관리동의 통신실(MDF)에 광 기가비트 스위치와 TPS(Triple Play Service)를 위한 각종 서버, 주변장비들을 두고 각 동의 장비실에 광 포트를 가진 고속 이더넷 스위치를 설치해 각종 보안과 자동화용 단말기를 이더넷으로 용이하게 접속할 수 있다.
PON은 기업과 SOHO, 일반가정에까지 광섬유에 기반한 초고속 서비스를 제공하는 광가입자망 구축방식의 하나로, 광케이블에 광소자(Passive Optical Splitter)를 사용해 하나의 OLT(Optical Line Termination)가 여러 ONU(Optical Network Unit)를 접속할 수 있게 하는 방식이다.
PON은 일정거리까지는 하나의 광선로를 깔고 접속점(ONU)을 중심으로 여러 개로 회선을 분배할 수 있기 때문에 망 구축 비용이 상대적으로 저렴하다. PON의 일반적인 구조는 CO(Central Office)에 OLT가 설치되고, 1:n의 광분기기(Optical Star Coupler)를 통해 OLT에 다수의 ONU가 연결된다.
하지만 광케이블을 지원하는 장비는 우선 가격이 비싸고, 게다가 설치하기도 매우 까다롭다. 가장 많이 사용되는 LAN 케이블은 마음대로 구부리고 접을 수 있지만, 광 케이블은 직각으로 꺾는 것조차 있을 수 없는 일이다. 물론 최신 광케이블들은 설치와 관리의 편이성이 대폭 향상됐다고는 하지만, 광케이블을 설치할 수 있는 인력도 얼마나 될지 의문이다.
때문에 FTTC(Fiber To The Curb)가 FTTH로 가는 중간 과정으로 각광을 받았다. FTTC는 각 가정 이전까지만 광케이블로 연결하는 것으로, 길이나 큰 건물이 있는 가입자용 네트워크 유닛(ONI : Optical Network Interface)까지는 광섬유를 이용하며, NT(Network Termination) 까지는 수백 미터의 트위스트 페어나 동축 케이블을 이용하는 네트워크 형태. ONU(Optical Network Unit)에서는 광 신호를 전기적 신호로 변환하며, NT는 신호를 트위스트 페어나 동축 케이블에 적합한 신호로 변환하는 기능을 수행한다.
최근에는 통해 가정까지 광케이블로 연결하는 FTTH 서비스에 대한 TV 광고가 시작됐다. FTTC 서비스를 통해 꾸준히 광케이블 포설을 진행해 온 초고속 인터넷 서비스 업체들이 본격적인 FTTH 서비스 경쟁에 돌입한 것이다.

 

 


브로드밴드 네트워크의 역할과 발전 방향
일반 가정에 고속 인터넷 접속 서비스를 제공하기 위해 시작된 브로드밴드 네트워크는 이제 국가 신경망이라고 해도 과언이 아닐만큼 발전에 발전을 거듭해 왔다.
브 로드밴드 네트워크는 기존의 인터넷 접속 서비스 제공에만 머물지 않고 다양한 서비스로 발전해 왔다. 대표적인 것이 TPS(Triple Play Service)라 일컬어지는 음성 데이터 영상 통합 서비스이다. 브로드밴드 네트워크를 이용한 VoIP 서비스는 이미 음성 전화를 위협하는 서비스로 발전을 거듭하고 있고, 현재 논란이 되고 있는 IPTV 서비스가 기존 TV의 위치마저 위협하고 있다. 초기에 음성 전화회선과 케이블 TV 망의 남는 대역을 이용해 시작된 브로드밴드 서비스가 지속적인 기술 개발과 영역 확대를 통해 원래의 서비스를 대체하는 위치에 서게 된 것이다.
브로드밴드 네트워크는 기업 환경에서도 그 역할을 톡톡히 하고 있다. 바로 기업 전용회선의 백업 회선으로서의 역할이다. 브로드밴드 서비스가 활성화되기 전에는 대부분의 기업이 전용회선 장애에 대한 대비책으로 ISDN을 사용하고 있었다. 하지만 ADSL 등의 브로드밴드 서비스가 보편화되면서 전송 속도나 비용 등 모든 면에서 ISDN을 능가하는 백업 회선으로 애용되고 있다. 여기에 이들 브로드밴드 회선을 묶어서 제공하는 브로드밴드 VPN 서비스는 활성화되면서 중소기업의 주 인터넷 회선으로 한몫을 하고 있다.

2009. 5. 17. 20:54

[펌글]초보자를 위한 네트워크의 이해 4 | 네트워크 하드웨어의 이해 2

라우터는 OSI 7계층 모델에서 3계층 네트워크 계층을 책임지는 장비로, 전통적인 네트워크 구성의 정점에 있다. 따라서 필수적인 네트워크 하드웨어라면 라우터까지를 이야기하는 것이 일반적이다. 하지만 이번호에는 라우터와 함께 다계층 스위치까지 알아볼 것이다. 이렇게 기본적인 네트워크 하드웨어에 다계층 스위치가 포함된 것은 네트워크 장비가 이미 전통적인 계층적 정의를 넘어서고 있다는 것을 반증하는 것이다.


박재곤 기자

지난 호에서 설명한 대로 전통적인 네트워크 구성은 라우터, 스위치, NIC 정도로 요약된다. 이런 네트워크 구성을 OSI 7계층 모델을 기준으로 보면, 1계층의 케이블, 2계층의 스위치, 그리고 3계층의 라우터로 볼 수 있으며, 결국 전통적인 네트워크 장비는 3계층 네트워크 계층까지 처리하는 것이 일반적이었다. 따라서 3계층을 처리하는 라우터는 네트워크 구성도에서 최상위층을 차지하고 있었다.
하지만 다계층 스위치의 등장은 이런 전통적인 네트워크 구성을 무너뜨려 버렸다. 네트워크와 네트워크를 연결해 인터넷이란 거대한 네트워크가 가능하도록 하는 것이 3계층 라우터라면, 다계층 스위치는 연결에만 치중했던 기존 네트워크 장비를 보완하며 한 단계 진보한 네트워크 환경을 구성할 수 있도록 해준다. 즉 안정적인 연결을 보장하거나 전송 속도를 높여주는 등을 지능적인 역할을 수행한다. 특히 날로 증가하는 보안 위협으로부터 네트워크를 보호하는 데 결정적인 역할을 수행하고 있다.

 

인터네트워킹을 위한 경로 설정
인터넷에 연결된 개별 네트워크의 수는 이루 헤아릴 수 없이 많은 것이 사실이다. 인터넷의 어원이 인터네트워크(internetwork)에 있듯이, 라우터는 이렇게 서로 연결된 네트워크(internetwork) 간의 경로(Route)를 설정해주는 장비다. 라우터가 ‘경로’에 비중을 둔 이름을 갖게 된 것도 이렇게 수없이 연결된 네트워크 간을 어떻게 연결하는 것이, 다시 말해 어떤 경로로 연결하는 것이 가장 효율적인가를 알려주는 길잡이 역할이 중요하기 때문이다.
라우터의 이런 인터네트워킹 기능은 OSI 참조모델로 살펴보면 훨씬 명확하게 이해할 수 있다. 허브나 스위치가 OSI 참조모델 2계층, 데이터 링크 계층에 속하는 반면, 라우터는 3계층, 즉 네트워크 계층에 해당하는 장비이다. 잘 알려진 대로 네트워크 계층은 여러 개의 독립적인 네트워크 간에 데이터를 전송하는 것에 관한 계층이다.
허브 나 스위치가 속해 있는 데이터링크 계층의 데이터 전송은 물리적인 장치의 주소 지정에 의해 단일 네트워크로 연결된 모든 장치에 데이터를 브로드캐스팅하며, 수신측 장비에서 확인해 자신에게 오는 데이터를 수신하는 방식이다. 이런 방식은 일정한 범위와 크기의 내부 LAN에서는 가능하지만, 네트워크의 규모가 일정 크기를 넘어서면 매우 비효율적인, 그리고 현실적으로 운영할 수 없는 네트워크가 되고 만다. 광대한 인터넷을 향해 브로드캐스팅을 한다는 것은 누가 생각해도 합리적이지 못한 방법이다.
그러나 네트워크 계층의 장비인 라우터는 여러 개의 네트워크가 연결된 환경에서 특정 경로를 선택해 데이터가 전송되도록 한다. 이는 목적지로 데이터를 전송하면서 목적지가 아닌 네트워크에 데이터가 전송되는 것을 방지할 수 있다. 여기서 특정 경로란 다양한 라우팅 알고리즘을 통한 최적의 경로를 말한다.

 




일반 컴퓨터를 닮은 라우터의 구성
라 우터의 기본적인 구성은 일반 컴퓨터와 마찬가지다. 중앙처리 장치인 CPU가 있고, 각종 메모리가 라우터의 운영체제와 환경설정 정보, 그리고 라우팅 정보 등을 담고 있다. 그리고 네트워크 인터페이스를 통해 트래픽을 입출력한다. 때문에 초기에는 소규모 환경에서 값비싼 라우터 장비 대신 일반 PC 서버를 이용해 라우팅 서비스를 구현하는 경우도 적지 않았다.
CPU는 라우터의 성능(처리량)을 결정짓는 부분이기 때문에 소형 라우터보다 중형 라우터가 더 빠른 CPU를 내장하고 있으며, 사용자가 많거나 더 많은 작업을 할수록 메모리 용량이 커야 한다.
라 우터의 메모리에는 라우터 운영체제(예를 들면 시스코의 IOS)와 라우터의 환경 설정에 대한 내용 즉, 라우터 비밀번호, 시리얼 포트의 속도, 포트에 등록된 IP 어드레스 등의 내용이 저장돼 있다. NVRAM( Non-Volatile Random Access Memory)을 사용하기 때문에 라우터를 재부팅해도 수정된 환경이 적용된다.
라우터는 ROM에 있는 부트스트랩 프로그램을 통해 플래시 메모리에 라우터 운영체제를 저장하고 있다가 메모리로 올린다. 네트워크 운영체제는 기능이 향상되고, 제공하는 기능이 많아질수록 버전이 올라가는데, 이때 프로그램 크기도 점차 커지므로 이를 저장하고 운영하기 위한 메모리도 커진다. 따라서 네트워크 운영체제의 버전이나 장비에 따라 필요한 플래시 메모리 용량이 다르다. 일반적으로 시스코 IOS 12 버전이라면 8MB 정도의 메모리가 필요하다.
라우터는 외부 인터넷이나 원거리에 있는 지점간 통신을 하기 위해 통신 포트를 제공한다. 일반적으로 2개를 제공하는 시리얼 포트는 첫번째 포트가 serial0, 두번째 포트는 serial1로 지정돼 있다.
PC 의 COM 포트는 일반적으로 비동기 방식의 포트(Async Port)에 해당하는 반면, 시스코 라우터의 시리얼 포트는 동기(Synchronous) 방식이다. 또한 라우터에도 이더넷 포트가 있어서 스위치나 허브를 연결할 수 있다. 그밖에도 라우터에는 콘솔(console) 포트와 AUX(AUXiliary) 포트가 있는데, 이는 라우터를 처음 설치하거나 유지보수를 위해 설정을 변경할 때 사용한다.

 



라우터의 핵심 : 라우팅 테이블
스 위치가 MAC 어드레스를 기반으로 패킷을 목적지로 전달하는 것처럼, 라우터도 어드레스 테이블에 해당하는 '라우팅 테이블'을 가지고 라우팅 서비스를 제공한다. 이 라우팅 테이블에 기록된 정보를 바탕으로 라우터는 자신에게 보내온 패킷을 어디로 전달할 것인지 결정한다. 보다 정확하게 말하면, 라우터는 철저하게 라우팅 테이블에 의존해 라우팅을 한다. 따라서 라우터의 운영은 라우팅 테이블을 관리하는 것이 절반 이상의 비중을 차지하며, 이 라우팅 테이블을 어떻게 구성하고 관리하느냐에 따라 라우터의 원래 목적, 즉 최적의 경로를 찾는 것이 가능해진다.
라우팅 테이블의 정보를 관리하는 방법은 크게 정적(static) 라우팅과 동적(dynamic) 라우팅으로 나눌 수 있다. 정적 라우팅은 관리자가 직접 라우터에 대해 접속하려는 특정 장소, 즉 상대 라우터를 지정하는 방식이며, 동적 라우팅은 라우터가 자체적으로 라우터끼리의 접속 정보를 주고받아 라우팅 테이블이 자동 갱신되는 방법이다.
동적 라우팅이 당연히 편하고 효과저인 방법처럼 보이지만, 정적 라우팅도 라우터 자체의 부하가 적고 회선 대역폭의 효율이 좋다는 장점이 있다. 때문에 모뎀이나 브로드밴드 네트워크와 같이 필요할 때만 연결하는 환경에서는 라우팅 정보를 라우터끼리 주고받지 않는 정적 라우팅이 주로 이용된다.
동적 라우팅은 자동으로 라우팅 테이블이 갱신된다는 장점으로 인해 장애가 발생된 라우터가 라우팅 정보에세 제거됨으로써 네트워크 장애의 영향을 피할 수 있으며, 일부 라우터가 사라지거나 새로이 추가돼도 항상 최적의 경로로 데이터를 전송할 수 있다. 이미 헤아릴 수 없을 정도로 많은 라우터가 설치돼 있는 인터넷은 정적 라우팅을 적용하기에는 이미 너무 복잡한 상태라고 할 수 있다.

 

라우팅 프로토콜과 라우팅 알고리즘
그렇다면 동적 라우팅 테이블은 어떤 방식으로 만들어지는 것일까. 연결된 라우터끼리 무작위로 정보를 전송해 이를 저장하는 방식으로는 복잡 다단한 구성을 갖고 있는 인터넷에서 라우터가 최적의 경로를 찾을 수 없을 것이다.
이 렇게 라우터끼리 서로의 정보를 주고 받는 방식을 정한 것이 바로 라우팅 프로토콜이며, 이들 라우팅 프로토콜은 일정한 라우팅 알고리즘을 바탕으로 이뤄져 있다. 라우팅 알고리즘은 거리 계산 방식(Distance Vector Advertisement)과 연결 상태 방식(Link State Advertusement)으로 나눠지며, 거리 계산 방식의 라우팅 프로토콜에는 RIP, IGRP, EIGRP가, 연결 상태 방식 라우팅 프로토콜에는 OSPF, IS-IS, NLSP 등이 대표적이다.
거리 계산 방식은 네트워크 어드레스에 대해 거리(홉 수)와 방향(라우터의 어느 포트인지) 정보를 다른 라우터로 보내 라우팅 테이블 정보를 변경하는 방법이다. 반면 연결 상태 방식은 여기에 더해 대역폭, 전송지연, 회선 신뢰도, 부하 등을 적절히 조합해 최적의 경로를 선택한다. 다시 말해 라우터를 여러 개 거쳐서 홉 수가 많더라도 회선 속도가 보다 빠른 쪽으로 경로를 설정할 수 있다는 것이다.

 




계층의 경계 허무는 다계층 스위치
? 전통적인 스위치는 2계층, 즉 링크 계층 네트워킹 장비다. 이것은 더미 허브라 불리던 허브나 리피터가 아무런 지능없이 단순히 물리적인 신호를 증폭하고 전달해 주는 것과는 달리, MAC을 인식할 수 있고, 인식한 MAC을 통해 한단계 수준 높은 서비스를 제공할 수 있다는 것을 의미한다.
스위치가 계층을 넘어서는 첫 번째 사건은 바로 3계층 스위치의 등장이다. 1990년대 후반, 인터넷이 본격적인 확산을 시작하면서 IP 계층이 네트워크 분야의 최대 화두로 등극했다. 하지만 당시 내부 LAN에서 인터넷으로 나가는 관문 역할을 하던 라우터는 이렇게 급증하는 인터넷 트래픽을 원활하게 처리할만한 성능을 갖추고 있지 않았다. 물론 대용량 라우터가 해결책이 될 수도 있었지만, 가격이 만만치 않았다.
이때 등장한 것이 바로 3계층 스위치다. IP 스위치로 불리기도 했던 3계층 스위치는 말 그대로 기존 스위치에서는 처리하지 못했던 3계층 IP 어드레스를 인식할 수 있는 장비였다. 이전까지 라우터가 없으면 인터넷에 접속할 수 없다는 것이 네트워크 상식이었는데, 3계층 스위치가 이런 고정 관념을 깬 것이다. 이 때문에 한때 라우팅 스위치, 스위치드 라우터 같은 용어가 회자됐다.
3계층 스위치가 라우터 대체설까지 나올 정도로 인기를 얻을 수 있었던 것은, 바로 IP 어드레스를 스위칭하듯이 빠르게 처리했기 때문이다. 라우터는 IP 뿐만 아니라 3계층의 모든 프로토콜과 라우팅 알고리즘을 처리하기 위해 최대한 범용적인 프로세서와 메모리를 사용하지만, 늘어나는 IP 트래픽을 처리하기 위해 등장한 3계층 스위치는 이를 위한 ASIC 칩을 사용해 IP 트래픽의 처리 속도를 기존 2계층 스위칭 수준으로 끌어올린 것이다.

 


 

스위칭에 한계는 없다
일단 한번 계층의 벽을 넘은 스위치에게 넘지 못할 벽은 없었다. 닷컴 바람이 뜨거웠던 2000년을 전후해서 4계층인 전송계층 프로토콜을 지원하는 스위치가 등장해 일세를 풍미하게 된다. 4계층 스위치는 3계층 IP 프로토콜을 넘어서 4계층 TCP나 UDP, ICMP 등의 포트 정보까지 분류해 패킷을 제어할 수 있으니, 이를 통해 트래픽 우선순위를 지정할 수 있고, 대역폭 할당이나 액세스 컨트롤, 로드밸런싱 등의 기능을 제공할 수 있다.
4계 층 스위치는 그 등장 배경 때문에 웹 스위치란 이름으로 널리 알려진다. 각종 인터넷 서비스가 확산일로를 달리고 대형 인터넷 데이터 센터가 우후죽순 생겨나던 시절, 아무리 고성능 네트워크 장비와 서버를 동원해도 하나의 서비스나 컨텐츠에 집중되는 수많은 인터넷 트래픽을 감당하기에는 불안한 상황이 된 것이다.
4계층 스위치는 새로이 생겨난 트래픽 제어라는 강력한 기능으로 여러 대의 서버를 하나의 서버처럼 보이게 하고는, 내부에서는 각각의 서버에 부하를 골고루 분산시켜주는 서버 로드밸런싱 장비로 각광을 받게 된다. 이를 이용하면 각각의 서버, 혹은 각각의 네트워크 연결 사이의 부하를 조절해 로드밸런싱 기능을 제공하며, 특히 여러 개의 서버로 구성된 웹 사이트의 경우는 각각의 웹 서버에 대한 부하를 조절해 같은 용량의 서버와 대역폭을 좀더 효율적으로 사용해 더 많은 트래픽을 빠른 속도로 처리할 수 있다. 특히 웹 서버의 로드밸런싱에 많이 사용된 덕에 웹 스위치라는 이름을 얻게 된 것이다.
당연한 일이지만, 스위칭의 계층 뛰어넘기는 여기서 멈추지 않았다. 웹 서버 로드밸런싱을 중심으로 시장을 형성한 다계층 스위치는 단순 서버 로드밸런싱에서 시작해 글로벌 서버 로드밸런싱, 파이어월 로드밸런싱, VPN 로드밸런싱 등 다양한 분야의 로드밸런싱으로 영역을 넓혔으며, 결국 보안 분야로까지 진출하고 말았다.
보안 장비로 각광받고 있는 7계층 스위치는 각각의 컨텐츠나 애플리케이션을 인식하고 가장 적합한 경로로 데이터를 전송하는 등, 더욱 큰 폭의 성능 향상을 꾀할 수 있게 됐다. 심지어 7계층 스위치 중에서는 트래픽을 분석해 바이러스 패턴을 검색하고, 이를 차단하는 보안 솔루션까지도 선보이고 있다. 특히 초기에는 패킷 필터링 기능만을 제공하는데 그쳤지만, 이제는 세션 단위의 필터링과 컨텐츠 검사까지 기능을 확장하고 있다. 이렇게 애플리케이션 계층까지 파고들면서 다계층 스위치는 애플리케이션 스위치로 불리기 시작했다.

 


 

용도에 따른 다계층 스위치의 활용
다계층 스위치는 현재 보안 관련 분야에 가장 많이 사용되고 있으며, 과거처럼 보안 장비를 지원하는 정도가 아니라, 보안 기능의 표면에서 활약하고 있는 경우가 많다. 하지만 모든 다계층 스위치가 이렇게 사용되고 있는 것은 아니다. 다계층 스위치는 여전히 그 이름만큼 많은 분야에서 사용되고 있으며, 실제로 그만큼 다양한 기능을 갖고 있다. 다계층 스위치가 어디에서 어떻게 사용되고 있는지 대표적인 용도별로 알아 본다.

·서버 로드밸런싱
다 계층 스위치가 아무리 애플리케이션 계층으로 치고 올라간다 해도, 서버 로드밸런싱은 여전히 다계층 스위치의 가장 중요한 기능중 하나다. 클라이언트로부터 요청을 받은 4계층 스위치는 연결된 서버들 주에서 가장 상태가 좋은 서버로 로드를 분배한다. 여기서 서버의 상태를 모니터링하는 것과 로드를 분배하는 두 가지 기능이 다계층 스위치의 가장 핵심적인 요소다.

(그림 10)은 중규모 이상 사이트의 가장 일반적인 다계층 스위치 적용 구성이다. 이런 구성에서는 다계층 스위치가 지원하는 가상 IP 수와 지원 가능한 실제 서버, 그리고 스위치의 최대 처리량이 허락한다면, 수십, 수백대의 서버도 연결할 수 있다. 규모가 작다면 여기서 2계층 스위치를 빼고 직접 연결해도 무방하다.

 



·파이어월 로드밸런싱
인 터넷을 통한 e-비즈니스와 금융 서비스, 전자상거래 등이 증가하면서 파이어월이나 VPN 등은 기업 네트워크의 필수 요소가 되고 있다. 그러나 단일 장비로 서비스를 제공한다는 것은 SPOF가 발생할 여지를 남길 뿐 아니라 점차 늘어나는 대역폭을 감당하기 어려운 상황에 직면해 있다. 또한 보안 레벨을 강화할수록 보안 장비에 걸리는 부하도 높아지기 때문에 지연, 속도 저하 등의 문제가 발생할 수 있다.
이같은 문제는 다계층 스위치의 로드밸런싱과 리다이렉션을 통한 페일오버 기능으로 해결하는 것이 일반적인 추세다. 다계층 스위치와 보안 장비를 연계해 사용할 경우 얻을 수 있는 장점으로는 하나 이상의 보안 장비를 사용함으로 인한 성능 향상과 장애 발생시에도 여분의 장비를 통한 중단없는 서비스를 제공할 수 있다는 것이다. 이외에도 동적 로드밸런싱을 통해 보안 솔루션의 응답 속도를 향상시킬 수 있고, 시스템의 변경없이 보안 솔루션을 확장, 관리할 수 있다는 점에서 유리하다.
물 론 파이어월을 구성하는 방식 중에 두 대의 파이어월을 병렬로 설치한 후 하나는 액티브 상태로, 다른 하나는 스탠바이 상태로 만들어 장애에 대비하는 방식도 있다. 하지만 이같은 구성은 장애에 대한 대비는 가능하지만, 네트워크 장비의 효율과 확장성이 취약하다는 단점이 있다.다계층 스위치는 단지 두 대의 파이어월뿐 아니라 동시에 여러 대의 파이어월을 하나의 클러스터로 묶어 서비스를 제공할 수 있기 때문에 이같은 문제를 일거에 해결할 수 있다. 이 경우에는 스탠바이 상태로 대기하고 있는 파이어월 없이 모든 장비가 액티브 상태로 동작하며, 다계층 스위치가 이들 사이의 부하를 조절하고, 하나의 장비에 문제가 발생할 경우에는 페일오버 기능까지 제공해, 안정성과 성능 향상에 기여한다.

 

·VPN 로드밸런싱
파이어월이 급증하는 트래픽을 감당하기 어려운 것과 마찬가지로 VPN 역시 터널을 구성하고 전송하는 데이터를 암호화/복호화하는 과정에서 상당한 부하가 발생한다. 특히 지점의 경우는 내부 사용자만 감당하면 되지만, 지점의 모든 네트워크가 집중되는 본사의 경우는 몇십 개에서 많게는 수천 개의 터널을 유지해야 하기 때문에 안정성과 확장성이 더욱 중요시된다. 물론 이것도 다계층 스위치의 로드밸런싱 기능으로 VPN 클러스터를 구축해 해결할 수 있다.
하지만 VPN 로드밸런싱은 외부 다계층 스위치와 내부 다계층 스위치를 통과하는 IP가 각각 다르기 때문에 VPN에서 내부로 전송되는 패킷을 내부 다계층 스위치가 테이블을 갖고 있다가, 되돌아가는 응답 패킷은 이 테이블을 참조하는 등 각기 다른 방법을 통해 VPN의 특성을 지원해야 한다.
더 욱 큰 문제는 본사에서 지점으로 통신을 시도하는 경우다. 이 경우에는 어떤 VPN으로 보내야하는지 판단해야하는 기능이 필요하다. 특히 터널이 구성되지 않은 지점으로 통신을 시도할 경우에는 전송된 패킷이 경로를 찾지 못해 결국 폐기되는 수밖에 없다.