■ 네트워크 디바이스의 형태는 다양하지만, 리눅스 서버에서 가장 많이 다루는 것이 이더넷을 중점적으로 살펴보자.


(1) 커널 부팅과 네트워크 디바이스 드라이버
: 커널 부팅이 끝나고, 초기화 부팅 스크립터 과정을 거치면 대부분의 네트워크 디바이스 드라이버가 커널에 올라가 대기상태가 된다.
그러나 아직 네트워크 디바이스를 검출하고, 이를 초기화한 후에 해당 디바이스를 다룰 수 있는 구조체를 커널에 등록한 상태일 뿐으로 커널과 연결되어 동작하는 것은 아니다.

하지만 init 프로세스에 의해 동작하는 부팅 초기화 스크립트에 의해 proc 파일시스템이 /proc 디렉토리에 마운트되어 있다면, 현재 등록된 네트워크  디바이스 드라이버에 대한 정보를 확인 할 수 있다.

○ 네트워크 디바이스 드라이버 정보 확인 명령 : cat /proc/net/dev


- lo : 자기 자신에게 송수신하는 루프백 네트워크 디바이스. (src : linux/drivers/net/loopback.c)
- dummy0 : 커널 컴파일 옵션에서 선택하는 디바이스, 라우팅 포인터용. (src : linux/drivers/net/dummy.c)
- eth0 : 이더넷 디바이스.
- wlan0 : 무선랜 디바이스.


(2) ifconfig
: 네트워크 디바이스는 config 명령으로 활성화시켜 커널과 연결하거나 비활성화 시켜서 연결을 끊는다.

○ 디바이스 활성화 명령 : config [interface] [ip] [netmask mask] [up | down]
  ex) config lo 127.0.0.1 up
        config eth0:0 192.168.10.101 netmask 255.255.255.0 up

- 네트워크와 관련된 부팅 초기화 스크립트가 수행되면, 네트워크가 활성화 되어 응용 프로그램에서 네트워크 디바이스를 이용해 외부와 통신할 수 있게 된다.

○ 리눅스가 다루는 네트워크는 대부분 TCP/IP를 기반으로 하기 때문에 route 명령으로 경로를 설정하고, DHCP와 같은 프로토콜을 사용할 때는 인터페이스만 활성화 시키고, DHCP 클라이언트 프로그램을 이용해 IP를 얻어온다. (ifconfig eth0 up)

○ ifconfig -a 명령은 네트워크 디바이스 드라이버가 제공하는 내용을 보여준다.


(3) 인터페이스 이름
: 네트워크 디바이스 각각에는 lo, dummy0, eth0 처럼 이름이 있다.

○ 드라이버를 저장하고, 대개 이더넷 디바이스는 eth로 시작하고, 디바이스마다 0,1,2,3과 같은 식으로 번호를 붙인다.
○ 주소가 127.0.0.1인 루프백 네트워크 디바이스는 lo라는 이름만 사용할 수 있다.
○ dummy는 리눅스 네트워크를 기반으로 하기 때문에 네트워크 디바이스가 없을 경우 포함되는 디바이스다.


(4) 하드웨어 주소
: 리눅스가 TCP/IP 기반의 프로토콜을 주로 이용하므로 네트워크 주소라 하면 IP를 먼저 떠올리지만, IP는 TCP/IP 프로토콜에서 호스트를 구별하기 위한 주소지 실제 네트워크망에서 사용되는 하드웨어 주소가 아니다.

○ 이더넷 하드웨어라면 MAC주소가 있지만, ppp 디바이스의 경우에는 하드웨어에서 사용하는 주소가 없다.
○ 네트워크 디바이스 드라이버는 실제 데이터를 네트워크망에 전송하고, 수신하는 하드웨어 주소를 관리해야 한다.
○ ifconfig -a 명령의 HWaddr 가 이더넷 MAC 주소이다.


(5) 네트워크 주소
: 응용 프로그램에서 외부와 통신하기 위해서는 다른 호스트를 구별해야 하는데, TCP/IP 프로토콜인 경우에는 IP 주소를 사용한다.

○ 각 네트워크 디바이스 드라이버가 네트워크 디바이스가 다루는 네트워크 주소를 관리한다.
○ ifconfig -a 명령의 inet addr / Bcast / Mask가 TCP/IP로 표현되는 IP 이다.


(6) 활성화 상태
: 디바이스 드라이버가 커널에 적재되어 초기화 되었다고 해서 네트워크 디바이스가 동작하는 것은 아니다. 동작하기 위해서는 반드시 활성화가 되어야 한다.

○ ifconfig 명령을 이용해 활성화 / 비활성화 할 수 있다.
○ ifconfig -a 명령을 사용했을때 UP 과 RUNNING 문자열을 포함한다.


(7) 브로드 캐스트 / 멀티 캐스트
: 네트워크 디바이스가 데이터를 목적지에 전달하는 방법에 따라 유니 캐스트, 브로드 캐스트, 멀티 캐스트와 같은 형식으로 구분된다.

○ 유니 캐스트 : 가장 일반적인 데이터 전송 방식으로 1:1을 의미한다.
○ 브로드 캐스트 : 네트워크망에 포함된 모든 네트워크 디바이스에 동일한 데이터를 전송하는 1:N 방식이다.
○ 멀티 캐스트 : 그룹을 지정하고, 이 그룹에 포함된 호스트에 데이터를 전송한다.
○ ifconfig -a 명령의 BROADCAST, MULTICAST 문자열을 확인할 수 있다.


(8) 데이터 처리 능력
: 시리얼 통신 디바이스와 달리 네트워크 디바이스는 데이터를 프레임 단위로 송수신한다.

○ 한 프레임으로 전송할 수 있는 데이터량을 MTU라 하고, 이는 커다란 패킷을 전송할 때 분할에 대한 기준 정보가 된다.
○ 네트워크 디바이스 드라이버에는 이 값이 있어야 한다.
○ ifconfig -a 명령으로 보여준 내용에서 MTU 문자열로 표시한다.
○ 송신 시 네트워크 디바이스가 바쁠 때 시스템에 대기할 수 있는 큐의 크기는 txqueuelen 으로 표시된다.


(9) 송신 및 수신 통계
: 네트워크 디바이스 드라이버는 데이터의 송신과 수신에 관련된 통계 정보를 처리한다.

○ 수신 데이터
  - packets : 수신 패킷 수
  - errors : 수신 에러 패킷 수
  - dropped : 에러나 처리량을 초과하여 버려진 패킷 수
  - overruns : 하드웨어에서 처리되지 못하고 버려진 뒤 이어 수신된 데이터의 수
  - frame : 수신 신호 파형의 이상 에러 수
  - bytes : 총 수신 데이터량

○ 송신 데이터
  - packets : 송신 패킷 수
  - errors : 송신 에러 수
  - dropped : 에러난 처리량 초과에 의해 버려진 패킷 수
  - overruns : 하드웨어에서 처리되지 못하고 버려진 뒤 이어 수신된 데이터의 수
  - carrier : 전송 신호 검출 에러 수
  - collisions : 송신 충돌 검출 수
  - bytes : 총 송신 데이터량


(10) 하드웨어 정보
: 하드웨어가 필요없는 dummy, lo와 같은 네트워크 디바이스를 제외한 다른 네트워크 디바이스 드라이버에는 하드웨어에 접근하기 위한 I/O 주소와 인터럽트가 필요하다.

○ ifconfig -a 명령에서 보여주는 내용에서는 Interrupt : 44 로 표시된다.

by 민트앤라떼 2012. 4. 12. 17:28