|
필자가 지난호에서 정보고속도로는 전국 집집마다 광케이블을 설치하는 것이라고 했었는데 이제 그 개념을 수정해야겠다. 지난 11일 정부는 계획을 수정하고 공공주택까지는 광케이블을, 나머지 지역은 케이블 모뎀이나 XDSL 기술을 사용한 통신로를 설치하기로 했기 때문이다. 덕분에 비용도 줄어들고 완료시일도 2015년에서 2010년으로 앞당겨 지게 됐다. 이것은 요근래 몇 년동안 컴퓨터 통신 기술이 급격히 발달되었음을 나타낸다. 지난호에서는 역사를 따라가며 변화되어온 네트워크의 모습들을 살펴보았다. 이번호에서는 네트워크를 이룩하고 있는 구성요소중 하부요소들을 살펴보고 특히 현재 LAN의 주종을 이루고 있는 Ethernet에 대해 살펴볼 것이다. |
네트워크는 어떻게, 무엇으로 이뤄져 있을까? 네트워크를 이루고 있는 컴퓨터와 OS를 보면 일단 쉽게 다음을 알 수 있다. 컴퓨터를 뜯어보면 슬롯에 랜카드(네트워크 어댑터)가 꼽혀있는 것을 볼 수 있다. 그 다음 윈도우95를 쓰고 있다면 제어판의 '네트워크'항목을 보면 여기서는 크게 어댑터의 드라이버와 프로토콜, 서비스 및 클라이언트 프로그램을 볼 수 있다. 마지막으로 네텀이나 FTP, 웹브라우져 같은 응용 프로그램을 볼 수 있다. 컴퓨터 밖으로 나가서 네트워크 케이블을 따라가면 허브, 브릿지, 라우터 같은 장비를 만날 수 도 있을 것이다.
이처럼 네트워크를 이루고 있는 구성요소들을 체계적으로 분류하고 표준화 하기 위해 국제 표준 기관 ISO(International Standards Organization)에서 OSI(Open Systems Interconnection) 7 Layer Reference Model 이란 것을 만들었다.
1. OSI 7계층 참조 모델
이 작업은 1977년에 시작되어 1983년 까지 이뤄진 매우 길고도 방대한 작업이었다. 이 표준화 작업의 기초는 당시 네트워크의 주종을 이루고 있었던 IBM의 SNA와 DEC의 DECNet 이라는 네트워크 였다.
OSI 7계층 참조모델은 네트워크를 이루고 있는 구성요소들을 계층적 방법으로 나누고 각 계층의 표준을 정한 것이었다. 이와같은 표준이 있기 까지 각 제작사별로 중구난방으로 흩어져 있던 방식들이 통합되어 가면서 네트워크는 비약적 발전을 이루게 된 것이다.
OSI 참조모델이라 불리는 이 계층 모델은 다음과 같은 7계층으로 이뤄져 있다.
7계층 |
예 | |
Application Layer |
응용 계층 |
WWW, Telnet, NetBIOS, FTP |
Presentation Layer |
표현 계층 | |
Session Layer |
작업 계층 | |
Tranport Layer |
전송 계층 |
TCP/IP |
Network Layer |
네트워크 계층 | |
Data Link Layer |
데이터 링크 계층 |
랜 어댑터 |
Physical Layer |
물리 계층 |
각각을 간단하게 살펴보면 다음과 같다.
?7층 : 어플레케이션층
여러 가지 서비스를 제공한다. 사용자로부터 정보를 입력받아 아래층으로 전달하고 아래층에서 보내주는 정보를 사용자에게 전달한다.
?6층 : 프리젠테이션층
사용자가 주는 정보는 통신에 적당한 형태로 변환하고 세션층에서 전달한 정보는 사용자에 맞게 변환한다.
?5층 : 세션층
정보가 흐르는 통로를 만들거나 폐쇄한다. 암호를 확인하거나 속도 조절도 행한다.
?4층 : 트랜스포트층
정보의 전달을 관리 감독한다. 네트워크층에서 온 정보를 세션층의 어느 어플리케이션에 보낼것인가 판독하고 네트워크 층으로 나가는 경우는 경로를 선택한다.
?3층 : 네트워크층
정보가 전달될 상대의 주소를 찾고 나에게 온 정보의 주소를 확인하여 내것이면 트랜스포트층으로 전달한다.
?2층 : 데이터링크층
네트워크층에서 확인한 주소의 상대와 물리적 연결을 위한 통로를 열고 유지한다. 에러를 검출하고 수정한다.
?1층 : 물리층
데이터를 비트 단위로 쪼개어 전기적 신호로 변환한다.
위의 7계층이 이해가 안되는 경우는 그냥 어플리케이션층, 프로토콜층, 물리층으로 이해하면 편하다. 실제로 랜카드에는 1,2층이 탑재되어 있고 프로토콜에는 3,4층이, 웹브라우져등에는 5,6,7층이 탑재되어 있다.
네트워크를 다루는 프로그램은 컴퓨터의 자원을 다루는 것인데 컴퓨터의 자원은 기본적으로 OS가 다룬다. 과거에는 DOS를 띄운 상태에서 네트워크 프로그램이 램상주로 뜨기도 하였으나 현재는 OS자체가 네트워크를 담당하게 되었고 OS의 기능중 특별히 네트워크를 강조할 때 NOS(Network OS)라고 한다. 현재 시장을 3분하고 있는 NOS로는 UNIX, NetWare, Windows 등이 있다.
실제 ISO 7 계층을 만든 이유중 하나는 전 세계 사람이 공용하여 쓸 수 있는 공짜의, 공개된 프로토콜을 만들기 위한 것도 있었다. 그러나 7계층이 발표된 시점에 이미 많은 프로토콜이 사용되고 있었고 특히 WAN에서는 TCP/IP가 표준으로 자리잡아 독보적인 위치를 확보하고 있었다. 그 이후, 1 계층과 2 계층에서는 Ethernet이, 3계층과 4계층에서는 TCP/IP, NetBuei, IPX등이 업계표준으로 자리잡게 되었다.
OSI 7계층에 따른 프로토콜(OSI 프로토콜) 교과서 같은 곳에 소개되다가 차세대 시리얼 버스 규격인 IEEE1394에 사용되고 있다.
5,6,7계층은 따로 따로 구현되기 보다 통합되어 여러 가지 '서비스'라는 이름으로 제공된다. Telnet, FTP, e-mail(SMTP, POP), News(NNTP), NetBIOS 등이 이 서비스 층에 해당된다.
LAN 외에 여러 통신에 공통적으로 적용되는 1, 2 계층에 대해 자세히 살펴보겠다. 조금 지루할 지 모르지만 기초가 되는 부분이고 잘 따라가면 의미를 잘 모르고 사용해온 단어들을 이해할 수 있을 것이다.
1.1. Layer 1 - Physical Layer
물리층은 네트워크 케이블과 신호에 관한 규칙이다. 상위층에서 보내는 데이터를 케이블에 맞게 변환하여 내보내고 반대의 일을 수행한다. 따라서 케이블의 종류와 그 케이블에 흐르는 신호의 규격을 정하고 있다. 네트워크 업계에도 10/90 법칙이 있는데 그것은 케이블링 작업이 네트워크 비용의 10%를 차지하지만 고장원인의 90%를 제공한다는 뜻이다. 현재는 기술이 많이 발전하여 고장율이 많이 줄었지만, 자기손으로 직접 네트워크를 구축하는 사람에게 있어서는 매우 주의를 요하는 부분이다.
네트워크의 데이터 전송속도는 초당 10Mbps 정도로(Ethernet) 매우 빠른 편이다. 전자공학을 전공한 사람은 알겠지만 일반 구리선(전화선)은 전송속도가 빨라지면 자체 정전용량이 생기고 주위 신호들과 간섭(전자파)이 일어나게 되므로 1Mbps이상은 사용할 수 없다. 이 문제를 해결하려면 신호선 주위를 그라운드선으로 감싸는 동축케이블을 사용해야 한다. 동축 케이블은 거리에 따 100Mbps 이상의 속도 까지도 전송이 가능하다.
그러나 동축 케이블은 가격이 비싸고 선이 두꺼워 공사가 불편한 단점이 있다. 그래서 그 중간단계로 트위스티드 패어 라인(twisted pair line)이 널리 쓰이고 있다. 줄여서 TP 케이블 이라고 부른다. 이 선은 신호선과 그라운드선을 꼬아서 보내는 것인데 이렇게 함으로서 어느정도 잡음의 영향을 줄일 수 있다. TP 케이블에는 UTP(Unshielded TP)와 STP(Shielded TP)가 있는데 전자는 선을 꼬으기만 한 일반적인 TP 케이블이고 STP는 UTP 주위를 다시 접지선으로 감싼 형태를 취한다. UTP는 10Mbps까지, 후자는 100Mbps까지도 전송이 가능하다.
더욱 더 고속의 데이터를 전송하기 위해 광케이블이 사용된다. 앞의 케이블들은 전기적 신호를 이용하므로 전자파의 간섭이 없을 수가 없다. 그러나 광 케이블은 빛을 사용하기 때문에 이론적으로 간섭이 0% 이며 현존하는 최고속도의 케이블이다.
선을 이용하지 않고 무선으로도 데이터를 전송할 수 있다. 무선 랜등이 여기에 해당한다. 무선은 선을 이용하지 않기 때문에 케이블링 작업이 필요없다는 장점이 있지만 현재 기술로 고속의 데이터 전송이 어렵다.(얼마전 삼성이 발표한 무선 랜카드는 2Mbps 속도 이다)
1계층의 표준으로 널리 쓰이고 있는 것이 RS-232이다. RS-232에서는 15m 이내의 거리에서 9600bps의 속도를 표준으로 하며 논리 1 은 +3V이상, 논리 0은 -3V이상의 신호를 규정하고 있다. 실제로는 ±12V가 가장 널리 쓰인다. PC의 COM1에서 COM4까지가 RS-232C를 사용하고 있다. Ethernet에서는 방식에 따라 약간의 차이가 있지만 0V와 약-2V를 사용한다.
1계층에서 정의되는 또한가지는 토폴로지이다. 우리말로 번역하기가 어려운데 '망형( 網形)'정도의 뜻을 같는다. RS-232에서는 1대1 형태(point-to-point) 연결만을 허용한다. 이더넷은 버스형(스타형)구조를 사용한다. 버스형과 스타형이 그림은 다르지만 전기적으로는 아무 차이가 없다.
1.2. Layer 2 - Data Link Layer
줄여서 링크 층이라고도 부른다. 상위층에서 보낸 데이터를 쪼개고 전송에 필요한 정보를 담아 하위층인 물리 층에 전달한다. 정보를 전송하기 좋은 단위로 끊은 다음 목적지의 주소정보 등을 붙이고(헤더) 에러 정정을 하는 경우 그에 관련된 정보를 뒤에 붙여서 보낸다. 에러가 발생한 경우 재전송을 요구하는 등의 일을 수행한다. 크게 보면 전송, 에러제어, 흐름제어로 나눌 수 있다.
1.2.1. 전송
전송은 직렬 전송의 방법을 뜻하며 크게 비동기(asynchronous)방식과 동기(synchronous)방식으로 나눌 수 있다. 전자와 후자는 '클럭'의 유무로 구분되는데 클럭 없이 전송하는 경우를 비동기, 클럭과 함께 전송하는 경우를 동기라고 부른다. PC의 직렬포트 COM1-COM4는 비동기 방식을 사용한다. 당신이 ABC라는 글자를 보내고 싶은 경우 ABC의 ASCII코드 41h, 42h, 43h를 전송해야 한다. 상위 층에서 414243h를 전달받은 링크 층은 414243h의 2진수에 해당하는 10000001 10000010 10000011을 전송한다. 그 파형을 그리면 다음과 같다.
이 파형만 가지고는 어디가 시작이고 어디서 값을 읽어야 하는지 찾기가 어렵다. 따라서 비동기 방식에서는 다음과 같은 약속을 하고 데이터를 전송한다.
① 아무 신호도 없을 경우 1을 유지한다.
② 한 바이트씩 전송하는데 데이터 앞에 반드시 스타트 비트(보통 0)를 보낸다.
③ 서로 약속한 속도로만 통신한다.
④ 경우에 따라 한 바이트 전송후 패리티를 보내거나 스톱비트(보통 1)를 보낸다.
전송속도를 알면 한 비트가 몇초인지를 알 수 있다. 9600bps로 통신하는 경우 1비트는
1 over 9600 REIMAGE 104 mu sec |
가 된다. 평소에는 1이었다가 시작시에 0으로 떨어지므로 신호가 0으로 떨이진 시점으로부터 해서
104+52=156 mu sec |
뒤부터
104 mu sec |
간격으로 8번 데이터를 읽으면 한 바이트를 읽은 것이 된다.
이 방식은 구현하기 쉽고 간단하지만 매 바이트마다 스타트 비트와 스틉비트, 패리티 등이 들어가므로 대량의 데이터를 보낼 경우 낭비가 생긴다. 8MB를 전송할 경우 스타트 비트만 사용한다 하더라고 1MB의 시간을 더 필요로 하게 되는 것이다.
실제로 모뎀을 사용하는 경우 속도와 스타트비트, 스톱비트, 패리티를 설정한 경험들이 있을 것이다. 모뎀은 PC의 직렬포트와 전화선 사이에 붙어서 PC의 직렬포트와 비동기 통신을 수행한다. 실제로는 모뎀내에 직렬포트를 내장하고 있어서 PC의 직렬포트를 죽이고 모뎀 자신이 PC의 직렬포트가 된다.
동기방식은 데이터와 '클럭'을 같이 전송한다. 클럭이 뛸 때 데이터 값을 읽어보면 되기 때문에 매 바이트마다 스타트 비트를 줄 필요가 없으므로 더 효율적으로 데이터를 전송할 수 있다. 대신, 신호선, 그라운드선 외에 클럭선이 같이 가야 한다는 단점이 있다. 그러나 지금은 클럭선 없이 신호선과 그라운드 선 만으로 동기전송을 하는 기술들이 사용되고 있다. 신호선에 신호를 코딩하여 보내고 받는 측에서는 디코딩 하여 클럭을 추출하고 추출된 클럭으로 데이터를 읽는다.
제일 간단한 것이 맨체스터 코딩 이라는 방법이다. 1은 01로 0은 10으로 전송하면 매 데이터 마다 1→0 또는 0→1로의 전환(transition)이 있기 때문에 이 전환점을 기준으로 조금 뒤에 데이터를 읽으면 틀림없이 읽을 수 있다.
이 외에 널리 쓰이는 것으로 DPLL(Digital Phase Locked Loop)라는 기술이 있는데 전공자 외에는 이해하기가 쉽지 않으므로 설명하지 않겠다.
실제 이더넷에서는 맨체스터 코딩을 이용한 동기 방식을 취하고 데이터를 64바이트에서 1518 바이트 단위로 묶어서 전송한다. 이 묶음을 프레임(Frame)이라고 부른다(패킷과 다르다). 프레임의 시작은 앞에 10101010을 7번 반복하고 다시 10101011을 보냄으로 알린다. 비동기 전송과 달리 스타트 비트가 필요 없으므로 일정 패턴을 반복하는 것으로 대신한다.
현재 저속전송은 비동기 전송이, 고속전송은 동기 전송이 주류를 이루고 있다. 우리가 널리 쓰는 모뎀은 비동기전송을 사용하는 대표적인 기기이다.
1.2.2. 에러제어
전송 다음으로 중요한 것이 '에러제어'이다. 에러를 어떻게 발견하고 발견시에 어떻게 처리할 것인가. 가장 기초적인 에러정정방법으로 패리티 비트를 사용하는 방법이 있다. 패리티는 대부분 바이트 단위로, 8비트 외에 패리티 비트를 추가하여 전체 1의 개수를 짝수개로 맞추는 짝수 패리티와 홀수로 맞추는 홀수 패리티가 있다. A글자의 경우 아스키 코드로 1000 0001이므로 짝수 패리티를 더한 신호는 1000 0001 0 이 된다. 과거 통신의 초기시대에는 아스키 코드중 127개만을 사용하였기 때문에 7비트면 모든 글자를 표현할 수 있었으므로 대게 8번째 비트로 패리티를 사용했었다. 때문에 유닉스의 vi, mail등이 7비트 코드만을 다루고 있고 지금도 많은 혼란을 야기하고 있다.
받는 측에서는 데이터 비트열과 패리티의 1을 계수하여 짝수 패리티를 쓸 경우 홀수개가 나오면 에러를 표시한다. 신호열 내의 1의 개수를 구하는 것은 간단한 로직으로 가능하기 때문에 쉽게 구현할 수 있다. 만약 위의 A가 깨져서 1001 0001이 되었다면 패리티를 포함하여 1001 0001 0 이 전송 되었을 것이다. 이 때 1의 개수는 3으로 홀수 이므로 에러가 된 것이다.
그러나 패리티는 각 바이트마다 1비트를 추가하므로 스타트 비트와 마찬가지로 막대한 낭비요인이 되며 에러가 짝수개로 날 경우 잡지 못한다. 두비트가 깨져서 짝수, 홀수만 맞으면 잡지 못하는 것이다. 또한 대부분의 에러는 한두비트가 깨지는 경우보단 여러 비트가 통체로 깨지는 경우가 많다. 위에서 살펴본 것 처럼 9600 bps의 경우 한 데이터 비트는 104μsec 이므로 이렇게 짧은 시간만 깨지는 경우는 별로 없다. 이런 경우를 버스트 에러(burst error)라고 부르며 이 에러를 잡기 위해선 블록(위에선 프레임)단위의 에러 체크 방법이 필요하다.
버스트 에러 체크 방법으로 가장 널리 쓰이는 것이 CRC(Cyclic Redundancy Check) 방법이다. 현재 PC통신에서 이더넷 까지 대부분의 통신에서 이 CRC 방식이 사용되고 있다. CRC 방식에 대한 자세한 소개는 이 기사의 범주를 넘으므로 생략하지만 간략히 살펴보면 데이터를 보내기 미리 약속된 polynomial generator 패턴(CRC-16에서는 1 1000 0000 0000 0101)으로 데이터에 대해 모듈로-2 연산을 수행한다. CRC-16의 경우 모듈로 연산을 수행하면 16비트의 나머지가 나오는데 이 나머지를 붙여서 전송한다. 수신측에서는 데이터에 대해 똑같이 모듈로 연산을 수행하고 나머지와 비교하여 틀리면 에러로 잡는다. CRC에서는 polynomial generator의 비트수보다 작은수의 모든 에러와 보다 큰 모든 버스트 에러를 잡을 수 있다. CRC는 이처럼 프레임 단위로 사용하기 때문에 다른 말로 FCS(Frame Check Sequence)라고도 부른다.
1.2.3. 흐름제어
대부분의 경우 우리가 전송하려는 데이터의 크기는 데이터 링크층에서 사용하는 프레임의 크기보다 훨씬 크다. 따라서 여러개의 프레임으로 쪼개서(실은 패킷을 쪼개는 것이지만) 보내게 된다. 만약 아무런 에러도 없고 1대1로 묶여있다면 무조건 전송하고 받았거니 하고 생각하면 되겠지만 에러는 항상 존재하며 네트워크는 여러 개의 DTE가 복수개 물려 있는 경우가 대부분이다. 따라서 프레임을 받은 쪽에서는 잘 받았다는 신호를 보낸 쪽으로 보내 안심을 시켜야 한다. 이러한 일련의 과정, 데이터를 순서대로 보내고 잘 받았는지 확인하고 못받았을 경우 대처하는 방법 흐름제어라고 한다.
받는 쪽에서 잘 받았다는 신호를 Ack신호라고 부른다. 흐름제어의 대표적인 방법으로 Xon/Xoff 방법이 있지만 네트워크에서는 잘 사용되지 않으므로 생략하겠다.
1.2.4. 다중 접속 제어
데이터 링크층의 또다른 중요한 기능은 다중 접속 제어(Multiple Access Control)이다. 위에서 언급한 세가지, 전송, 에러제어, 흐름제어는 일단 두 DTE간에 일대일의 통신회선이 확보된 뒤의 이야기 이다. 그러나 네트워크에서 많은 DTE들은 한 라인에 묶여 있고 서로 대화를 원하므로 일단은 교통정리를 해야 한다.
교통정리의 두가지 방법 'Random Access'와 'Token'에 대해서는 지난호에 간략히 소개했으므로 생략하고 Random Access중 CSMA/CD는 다음장 이더넷에서 살펴보겠다.
2. EtherNet
이더넷은 OSI 7계층중 1, 2 계층에 해당하는 LAN 표준규격이다. IEEE에 의해서 802.3 이라는 규격으로 명명되어져 있다. 실제로 1, 2계층을 쉽게 구현하기 위해 2계층은 다시 LLC(Link Layer Contorl) 층과 MAC(Medium Access Contorl)층으로 나눠진다. LLC층은 상위층과 MAC층을 연결하고 흐름제어를 담당한다. 실제 2계층의 거의 모든 기능은 MAC층이 담당하고 있다.
MAU는 다른 말로 트랜시버라고도 부른다.
2.1. Ehernet의 MAC층
MAC층에서는 상위층에서 넘어온 패킷을 쪼개 프레임 단위로 쪼개고 주소관리, 전송, 에러체크, 흐름제어를 담당한다.
앞에서 살펴본 것 처럼 상위층에서 전달받은 패킷은 다음과 같은 프레임으로 변환된다.
64∼1518 octet | |||||
Preamble 프리앰블 |
SFD 프레임시작 |
DA 목적지 주소 |
SA 발신지 주소 |
데이터 |
CRC |
7 octet |
1 octet |
6 octet |
6 octet |
46∼1500 octet |
4octet |
데이터 통신에서는 1바이트를 옥텟 이란 단위로 부른다. 프리앰블과 프레임시작은 앞장에서 설명했다. 주소는 6옥텟, 48비트 길이이며 각각의 이더넷 제어기는 전세계적으로 고유한 주소를 가진다. 초기에는 제록스가, 현재는 IEEE가 그 주소를 관리한다. 일반적으로 이더넷, 혹은 MAC 어드레스라고 불리며 앞의 24비트는 메이커가 할당받은 주소를, 뒤의 24비트는 메이커가 할당한 번호를 나타낸다.
이더넷 주소는 00-20-AF-21-3C-80 또는 00:20:AF:21:3C:80 등으로 표기하며 앞의 24비트가 메이커 주소이다. 예를 들어 3COM의 경우 00-60-8C, 00-20-AF, 00-A0-24등의 주소를 사용한다. 인텔은 00-AA-00이다.
데이터 부에는 실제 전송할 데이터가 들어간다. 마지막으로 CRC를 계산하여 추가한다.
같은 라인에 물려 있는 노드끼리 통신할 때 비록 2 노드간의 대화라 할 지라도 그 신호는 모든 노드들에 전달된다. 마치 한 테이블에 다같이 앉아 있으면 모든 대화가 들리는 것과 마찬가지 이다. 따라서 각 노드는 일단 프레임을 수신하고 그 프레임의 DA가 자신과 같을 경우 CRC를 체크 한 다음 상위층으로 전달한다.
이 외에 MAC층의 중요한 기능으로 다중 접속 관리가 있다. 지난번에 살펴본 것 처럼, 이더넷은 Random Access 방식, CSMA/CD방식을 채택했다. 이 관리를 MAC층에서 담당한다. 송신의 경우 다음 절차를 따른다.
? 상위층에서 데이터를 받아 프레임으로 가공한다.
? 라인상에 매게신호를 살피고 있을 경우 대기한다.
? 라인이 비어있을 경우 규정시간을 기다리고 송신을 개시한다.
? 전송중 출돌이 검지되면 다른 노드들도 확실히 알 수 있도록 잼(JAM) 패턴을 32비트 분 송출한다.
? 충돌 발생시 랜덤 시간만큼 기다린 후 재전송을 실시한다. 16번 까지 재전송을 시도하고 실패할 경우 전송을 포기하고 상위층에 통보한다.
전송중에 다른 노드들도 듣고 있으므로 왜 충돌이 발생할 까 의아해 할 수 도 있다. 이론적으로는 라인이 비어있을 때만 통신이 가능하기 때문이다. 그러나 라인의 길이가 길어지면 신호가 가는데 어느정도 시간이 걸리게 된다. 한 쪽 노드에서 통신을 개시했는데 그 신호가 나에게 오기전 나도 통신을 개시할 수 있고 그렇게 되면 충돌이 발생하게 된다.
수신은 다음과 같은 순서를 따른다.
? 물리층에서 프리앰블을 받아 비트열의 수신을 개시하고 SFD부터 프레임의 재조립을 시작한다.
? 프레임의 수신이 완료되면 길이를 체크하여 규정길이 이상, 이하일 경우 폐기한다.
? 목적지 주소가 자신의 주소와 일치하거나 브로드캐스트, 멀티캐스트 주소일 경우 처리를 계속하고 아니면 폐기한다.
? CRC 에러를 검사한다.
? 정상프레임은 상위층에 전달한다.
만약, 한 라인에 너무 많은 노드가 물려있게 되면 기다리는 시간이 길어지고 충돌횟수도 많아져 전체적으로 속도가 저하된다.
2.2. Ethernet의 물리층
이더넷의 물리층에는 크게 10Base2, 10Base5, 10BaseT방식이 널리 사용된다. 앞의 10은 전송속도를 Mbps단위로 나타낸 것이고 뒤의 2는 200m(실제로은 185m), 5는 500m 까지 전송을 보장한다는 뜻이다. T는 Twited의 약자로 UTP 케이블을 나타낸다.
2.2.1. 10Base5 와 10Base2
10Base5와 10Base2는 모두 동축케이블을 사용하므로 유사한 성격을 지닌다. 그러나 전자가 케이블이 더 두껍고 먼 거리까지 전송이 가능하다.
먼저 10Base5에 대해 살펴보자. 케이블로 50Ω동축 케이블을 사용하고 같은 동축 케이블을 사용하는 10Base2와 구분짓기 위해 Thick 케이블이라고 부른다(케이블이 더 두껍다). 케이블은 보통 노란색을 칠하기 때문에 Yellow 케이블이라고도 부른다. 그 접속도를 다음에 그린다.
10Base5는 케이블 가격이 고가이고 다루기 힘들어서(지름이 약 1cm인데 무겁고 잘 휘지 않는다) 건물내 백본등에 사용되는 것이 보통이다.
10Base2도 역시 50Ω 동축케이블을 사용하지만 전송거리가 185m로 짧다. 대신 케이블이 (10Base5에 비해) 가늘어 공사가 간편하고 접속도 간단하다. 10Base2와 구분지기 위해 케이블을 Thin 케이블 이라고 부른다. 통상 BNC 케이블(사용되는 커넥터의 이름이 BNC이다)이라고도 부른다. 구성도는 다음과 같다.
Thick Net이나 Thin Net 모두 케이블의 양 종단에 50Ω 종단저항(터미네이터)를 사용한다. 신호규격이 전류로 되어 있기 때문에 저항을 달지 않으면 전압이 나타나지 않기 때문이다. 터미네이터를 사용한 경우 논리 1은 0V, 논리 0은 -2.05V가 된다.
Thin Net은 케이블의 길이가 최대 185m라고 했는데 그 이상으로도 신호를 보내고 싶은 경우, 리피터라는 장비를 이용한다. 리피터는 일종의 버퍼 앰프로서 약해진 신호를 다시 강화시키는 역할을 한다. 리피터가 사용되기 전 까지, 한케이블에 묶인 노드들을 한 세그먼트라고 부른다. 그림을 보자.
그림에서 네트워크는 리피터에 의해 두 개의 세그먼트로 분리된 것 처럼 보인다. 그러나 리피터는 단순히 신호의 증폭만을 수행하므로 실제로는 같은 네트워크이다. 이더넷 규격에서 10Base5와 10Base2는 최대 2리피터, 3세그먼트 까지의 연결만을 허용한다. 이렇게 한 이유는 신호의 시간지연이다. 신호선이 그 이상 길어지면 네트워크의 끝에서 끝까지 신호가 전달되는데 시간이 많이 걸리기 때문에 충돌이 발생할 확률이 높아지게 된다.네트워크의 한쪽 끝에서 다른쪽 끝까지 신호가 왕복하는데 걸리는 시간을 round trip delay라고 부르고 이 신호가 길수록 충돌의 확률이 높아진다.
동축케이블을 이용한 네트워크 연결은 별도의 장비없이 커넥터와 케이블 만으로 구성이 가능하다는 장점이 있으나 버스형 토폴로지이기 때문에 한 노드가 죽을 경우 그 효과가 전체 네트워크에 미친다는 점에서 고장의 확률이 높다.
2.2.2. 10BaseT
실제로 가장 널리 쓰이는 이더넷의 물리층은 10BaseT이다. 전화선에 사용되는 UTP선과 RJ-45규격 잭을 사용한다. STP가 거의 사용되지 않기 때문에 그냥 TP케이블이라고도 부른다.
그림에서 보는 것 처럼 허브와 케이블만으로 간편하게 공사를 할 수 있다. 동축케이블은 케이블이 모든 DTE를 지나가야 하기 때문에 PC의 배치에 따라 공사에 어려움이 있을 수도 있지만 10BaseT는 허브를 중심으로 연결하기 때문에 그럴 염려가 없다. 케이블의 최대길이는 100m이다.
세그먼트를 구성할 경우 4 리피터(허브), 5 세그먼트를 구성할 수 있다.
3. 그밖에...
이더넷 외에 비교적 널리 쓰이는 네트워크 1,2층 방식으로 토큰링, 토큰버스 방식이 있다. 각 노드가 순번을 가지고 자기 차례가 돌아올 때 통신을 하는 방식이다. 같은 규격에 토폴로지에 따라 링방식, 버스방식이 구분된다. 네트워크가 비어 있어도 자기에게 주도권이 돌아올 때 까지 기다려야 하고 일정시간만을 전송하고는 혹시 있을지 모르는 전송을 위해 일단 정지하고 다른 노드에게 제어권을 넘겨야 한다. 언뜻 보면 속도도 느리고 불합리 한 것 처럼 보이지만 어떤 환경내에서도 일정시간만큼은 시간이 확보되므로 정해진 시간내에는 반드시 전송을 시작할 수있다. CSMA/CD에서는 네트워크의 부하(노드수와 노드가 전송하려는 데이터량)가 일정수준을 넘어가면 항상 충돌이 발생하여 네트워크가 다운되는 경우가 발생할 수 있지만 토큰 방식은 적어도 그럴 염려는 없다. 때문에 전송할 데이터는 많지 않지만 반드시 시간내에 데이터가 전달되어야 하는 공장자동화, 차량내 데이터통신 등에는 토큰 방식이 사용된다. 토큰 방식은 광케이블을 이용하는 FDDI에도 사용된다.
네트워크 어댑터 다음으로 널리 사용되는 1,2층 디바이스로는 모뎀이 있다. 정보고속도로에서 광케이블 대신 XDSL, 케이블 모뎀등을 사용한다고 하니 잠깐 짚고 넘어가자.
모뎀은 Modulator/DeModulator의 약자로 아나로그 신호가 흐르는 전화선에 디지털 신호를 흐르게 하기 위한 장비이다. 그러나, 실제로 전화선에는 디지털 신호가 흐르고 있다. 지난호에서 잠깐 언급한 TDMA 방식을 사용한다. 아나로그 회선의 초당 8000번의 비율로, 8비트로 샘플링 하여 디지틀로 변환한 다음 24개씩 묶어서 전송한다. 교환기에서는 이 신호들을 접수하여 행선지의 교환국으로 전송한다.
24개 전화신호를 디지털 로 변환하여 1초 이내에 집어 넣으려면, 초당 몇 비트를 전송해야 할까? 1초에 8000번, 8비트로 샘플링 하므로 각 전화 채널당
8 TIMES 8000=64000 |
비트가 필요하며 제어신호는 초당 8000비트를 사용하므로
64000 times 24 + 8000 = 1544000 |
, 1.544 MBPS의 속도가 필요하다. 어디서 많이 본 숫자 같지 않은가? 현재의 T1라인이 이 속도를 기준으로 하고 있다. 애초에 데이터 통신이 전화국에서 개발되었음을 기억해야 할 것이다.
교환국에서는 각 전화의 디지털 화된 신호들을 해당 교환국으로 보내고 받은 교환국은 다시 반대의 과정을 거쳐 아나로그 신호로 가정까지 전달한다.
따라서 현재 모뎀의 최고속도는, 샘플링 율에 따라 64Kbps가 되어야 하지만, 이상하게도 T1규격에서 6번, 12번 채널은 7비트로 샘플링 하도록 되어 있기 때문에 56kbps로 제한되게 된다. 56kbps도 비동기 전송이기 때문에 실제 데이터 율은 더 적지만 압축 기술을 사용하여 그 차이를 극복하고 있다. 하지만, 아무리 노력해도 56kbps이상은 뛰어넘을 수가 없다.
그러면, ADSL, HDSL등은 어떻게 된 것일까? 지난호를 기억하는 독자는 알겠지만 DSL기술은 이 샘플링 과정을 거치지 않는다. 전화국까지 오는 고속 네트워크 라인이 직접 가정까지 들어가는 것이다. 따로 선을 깔지 않고 이미 가정에 들어와 있는 선을 사용하지만 DSL을 사용하려면 AD 변환기를 거치지 않도록 하고 네트워크에 접속시켜야 한다. 앞에서 구리선의 대역폭이 1Mbps라고 했는데 AD 변환과 DA 변환과정을 거치지 않기 때문에 다양한 변조방법을 사용할 수 있어 그 이상의 데이터를 전송할 수 있는 것이다. 대신, 전화국과 가입자간의 거리가 짧아야 한다. 64Kbps정도의 음성 신호는 멀리 전달될 수 있지만 고속의 데이터는 멀리 전달되면 에러율이 높아진다.
케이블 모뎀은 케이블이 네트워크의 동축 케이블과 비슷한 특성을 지닌다는 점을 이용한 것이다. 동축 케이블은 구리선보다 대역폭이 훨씬 넓기 때문에 TV 전파를 다 보내고도 남는 대역폭이 있으므로 이 대역폭을 사용하겠다는 전략이다.
여기까지 긴 여정을 마치고, 다음호에서는 3,4층의 프로토콜에 대해 살펴보겠다.
용어정리 ◆ 랜카드? 랜카드라는 말은 일본 사람들이 만들어낸 재패니쉬이고 실제로는 이더넷 어댑터, NIC(Network Interface Card)이 표준말이다. ◆ XDSL : ADSL, HDSL등 기존 전화선을 이용한 고속 데이터 전송방법이다. ADSL은 Assymetric Digital Subscriber Line의 약자로 1.5Mbps정도의 전송속도를 가진다. ◆ FDDI(Fiber Distributed Data Interface) : 광케이블을 사용하고 100Mbps의 전송속도와 2중루프를 통해 한쪽 링크가 끊어져도 전송을 보장하는 네트워크 방식이다. 100km까지의 거리와 한 토큰당 1000대의 연결을 지원하는 대규모 네트워크로 주로 학교 캠퍼스나 회사등의 백본으로 사용된다. ◆ IEEE1394 : ATM, 가전제품, 컴퓨터를 하나로 묶기 위해 IEEE가 정한 시리얼 버스 규격이다. 실제로는 애플사의 FireWire를 표준화 한 것이다. 케이블에 두 개의 TP 신호선(각각은 +,- 패어로 총 4선)과 두 개의 파워선이 포함되고 최대속도는 400Mbps이다. |