전세계를 연결하는 인터네트와 같은 큰 네트웍에서부터 조그만 사무실의 자료 공유를 위한 네트웍에 이르기까지 네트웍 말이 안들어 간곳이 없다. 우리는 여기서 네트웍 운영에서 가장 중요한 장비중의 하나인 NIC(Network Interface CARD, LAN CARD)에 대하여 어떻게 동작 하는지를 살펴 보기로 하자.
현재 가장 보편화 되어 있는 이더넷 방식의 네트웍를 구축 하기위해서는 LAN CARD를 비롯 하여 여러 부속 장비들이 필요 하다. 특히 LAN CARD는 데이터의 송수신을 컨트롤 하는 핵심장비이며, 사용자와 가장 가까이 있는 네트웍 부속품이다. 네트웍에서는 수백에서 수천 바이트의 데이터를 하나로 묶어 패킷(Packet)단위로 데이터를 빠른 속도(이더넷 표준 10Mbps)로 전송한다. 따라서 LAN CARD는 빠른 속도의 패킷을 송수신 하는 기본적인 기능을 지원하기 위한 구조로 되어 있다.
즉 데이터의 입출력과 기본적인 기능을 관장하는 콘트롤 칩, LAN CARD제조회사 마다 다르지만 통신전용 칩과 데이터를 저장하기 위한 버퍼로 되어있다. 버퍼는 종류에 따라 다르지만 8KB, 16KB정도이며, PC와의 통신은 내부 인터럽트를 이용하여 데이터를 전달한다.
[그림 1] LAN CARD 내부구조
LAN CARD는 단순히 PC 혹은 네트웍에서 전달되어오는 정보를 상호 교환 할 수 있도록 만들어 준다. 즉 PC에서 전송 요구가 발생 하면 LAN CARD로 정보를 일정한 형태로 만들어 보내고 LAN CARD에서는 이 정보를 일단 버퍼에 저장한 다음 네트웍에 맞는(Serial) 형태로 보낸다.
여기서 PC와 LAN CARD사이에서 논리적으로 묶어주는 소프트웨어가 필요한데, 이 소프트웨어를 네트웍 드라이버라고 하며, LAN CARD를 직접 제어하는 PACKET 드라이버와 NOS(NETWORK OPERATING SYSTEM)를 통해서 간접적으로 LAN CARD를 제어 하는 방법이있다.
NOS는 사용자에게 투명성(Transparent)을 제공하기위해 도스의 각종 인터럽를 가로채 관련 기능을 수행하도록 되어 있기 때문에 NOS의 기능을 호출하지 않고도 이전과 동일한 방법으로 프로그램을 작성할 수 있다. 단, 네트웍를 지원하는 도스 기능과 유틸리티가 제공하는 지원함수가 알맞게 수행되기만 하면된다.
[그림 2] NOS, DOS, PACKET, LAN CARD의 관계
드라이버(DRIVER)를 다시 요약 하면 다음과 같다.
■ 정 의
■ 드라이버의 종류
1)전용 드라이버 (MONOLITHIC DRIVER)
2) 산업 표준 공유 드라이버
공유 드라이버는 다중의 프로토콜 STACK이 동일한
인터페이스 어댑터를 공유하기 위하
여 규정한 특정사양으로서 아래와 같은 종류가 있다.
◆ NDIS (Network Interface Driver Specification)
MICROSOFT와 3COM에 의해 개발된 규정으로서 LAN MANAGER에 대한 인터페이스표준을 제공한다.
[그림 3] NDIS의 구조
- 프로토콜 MANGER : PROTOCOL.INI FILE로부터 프로토콜 및 MAC 드라이버에 대한 정보를 얻어서 이들을 초기화하는데 사용한다.
- MAC 드라이버 : MEDIA ACCESS CONTROL DRIVER로서 ".DOS", ".OS2"의 확장명을 갖음.
- 프로토콜 STACK : NDIS SPEC에 따른 프로토콜 STACK
◆ ODI (Open Datalink Interface ) 드라이버
NOVELL 에서 규정한 공유 인터페이스 사양
[그림 4] ODI의 구조
- MAC 드라이버 : ODI, SPEC 에 따른 MAC DIRVER
NET.CFG FILE 의 정보를 읽어 초기화 된다.- LSL : 프로토콜 STACK 과 MILD 사이의 ROUTING기능을 제공한다.
- STACK1,2 : IPXODI 및 ODI SPEC 에 따른 TCP/IP
◆ PDS (Packet Driver Specification) DRVIER
FTP 소프트웨어에 의하여 개발된 공용 드라이버 규정.
- PDS 구조
스택 1 | 스택 2 |
PACKET DRIVER |
* PACKET 드라이버 : PDS에
따른 MAC 드라이버
* STACK 1, 2 : IPX 또는 TCP/IP (PDS SPEC)
이더넷 패킷은 헤더와 송수신 주소, 타입, 데이터로 구성되며, 64바이트에서 1518바이트의 범위를 가진다.
+-------------------------------------------------
| 프리엠블 [7]
+-------------------------------------------------
| 프레임시작구분자(SFD) [1]
+------------------------------------------------- <=== 여기서
| 수신측 주소 [2 or 6]
+-------------------------------------------------
| 송신측 주소 [2 or 6]
+-------------------------------------------------
| 데이터 필드의 길이 [2]
+-------------------------------------------------
| 데이터 [0
- 1500]
+-------------------------------------------------
| 패드(Option) [0
- 46]
+-------------------------------------------------
| 체크섬 [4]
+------------------------------------------------- <=== 여기까지 64 - 1518바이트
크기
각 프레임은 프리엠블로 시작하는데, 프리엠블은 7바이트의 크기를 가진다. 각 비트의 패턴은 10101010 이다. 이것은 receiver와 sender의 동기를 맞추는데 이용된다. 다음으로 SFD 즉, Start of Frame Byte가 오는데, 10101011의 패턴을 가지며, 프레임 자체의 시작점을 표시한다. 이 부분을 헤더라고 할 수 있으며, 총 8바이트의 크기이다.
다음으로, 수신자와 송신자의 주소는 해당 LAN 카드에 물리적으로 기록되며, 각 6바이트를 차지한다. 이 주소는 다른 LAN 카드와 중복되지 않도록 주어지며, 이를 통해 네트웍 상에서 사용자를 식별할수 있다. 다음으로 데이터 필드의 길이가 몇 바이트(0 - 1500)인가를 나타내는 2바이트가 따라온다.
각 카드마다 고유한 길이의 데이터 다음에는 패드라는 부분이 있는데, 이 부분은 0에서 46바이트의 크기를 가진다. 데이터가 크기가 작아서 데이터 필드의 길이가 프레임의 최소 크기보다 작아질 경우, 이 부분에 몇 개의 추가적인 바이트를 삽입하게 된다.
Ethernet 프레임의 맨 마지막 필드는 체크섬(Checksum)이다. 이 부분은 32비트의 해시 코드로 이루어져 프레임의 에러 체크에 사용된다. LAN 카드는 수신자의 주소를 이용해 수신 여부를 판별하므로 LAN 카드에 의해 정해지는 헤더 부분과 데이터를 제외하면, 송신자와 수신자 주소가 송수신의 핵심이 된다.
LAN 카드에는 패킷을 주고 받기 위한 버퍼가 있다. 수신하는 패킷을 순환방식으로 저장하기 때문에 링 버퍼라고도 부르는 이버퍼는 256바이트씩 페이지 단위로 패킷을 저장한다. 따라서 16K 의 버퍼에는 모두 64 페이지가 저장되고, 페이지 번호는 40h 부터 7fh까지 있다. 이중 송신용 버퍼는 패킷의 최대 크기가 1514바이트로 처음 여섯 페이지를 차지하고 나머지는 수신용 버퍼로 사용되며 링 방식으로 동작한다.
패킷 버퍼는 페이지를 단위로 하는 대기 행렬의 일종으로 볼수 있다. 패킷 드라이버는 패킷 버퍼와의 송수신을 위해 포트를 이용하는데, 송신할 데이터를 버퍼로 옮기거나 수신한 데이터를 버퍼에서 읽어 올 때는 물론 전용칩의 레지스터에 데이터를 읽고 쓸 때도 포트를 사용한다. 또한 LAN카드를 동작시키기 위한 초기화 작업에서 전용칩을 리셋할 때도 해당 포트에 읽기/쓰기 동작을 한다.
따라서 LAN카드를 PC에 꽂기 전에 먼저 네트웍에서 사용할 인터럽트 번호를 할당 하고, 데이터의 송수신에 사용할 포트의 기준 주소와 사용할 DMA(DIRECT MEMORY ACCESS)를 정하는 작업을 해야 한다.
♥ 필자: 쌍용정보통신(주) 통신사업1팀 권영로
(C) 1997-8 Ssangyong
Information&Communications Corp. |