RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제IT교육센터 정성재 강사

 

1. 커널(kernel)의 개요
(1) 커널: 리눅스에서 커널은 시스템 자원을 소유하고 관리하는 역할을 담당한다. 보통 하드웨어,
          메모리, 프로세스 스케줄링을 담당하고 프로그램이 하드웨어 자원을 간접적으로 접근할
          수 있도록 해준다.
(2) 커널버전
   1) 기본구성
     메이저.마이너.패치레벨
   2) 설명
     ㄱ. 메이저릴리즈: 메이저 릴리즈는 커널에 매우 큰 변화가 생겼을 경우를 나타낸다.
     ㄴ. 마이너릴리즈: 마이너 릴리즈는 중요한 기능상의 변화가 생기거나 추가된 경우를 나타내며
                      이것들을 한꺼번에 모아서 메이저릴리즈로 발표된다. 또한 마이너릴리즈는
                      두 가지로 나뉜다.
        a. 짝수번호 릴리즈: 짝수번호인 커널은 안정버전이다. (예 2.0, 2.2, 2.4, 2.6)
        b. 홀수번호 릴리즈: 홀수번호인 커널은 개발버전이다. (예 2.1, 2.3, 2.5) 주로 커널 개발
                           자들이 이용한다. 마이너 릴리즈의 개발 목표가 이루어지고 테스트 결과
                           안정성이 입증되면 짝수번호인 마이너릴리즈가 만들어진다.
     ㄷ. 패치레벨: 버그가 수정되고 새로운 기능의 계획이 추가되면 커널의 패치 레벨이 증가한다.
                  일반적으로 최근 버그가 수정된 가장 최신 버전의 커널을 사용하는 것이 안정적
                  이다.
(3) 필요한 도구: 자신만의 커널을 만들기 위해 C 컴파일러(리눅스에서는 GNU C컴파일러인 gcc), 어
                 셈블러, 링커, make유틸리티 등의 개발도구가 필요하다. 리눅스 설치시 개발옵션을
                 선택하면 기본적으로 설치된다.

2. 사용자 커널 컴파일
(1) 커널설정
   1) 설명: 커널을 만드는 첫번째 단계는 설정이다. 커널에는 파일시스템, SCSI, 네트워크 등 선택
           옵션이 있다. 이러한 많은 옵션들은 직접 포함되거나 모듈로 만들어져 커널의 기능이 된
           다. 설정 과정 중 원하는 옵션을 선택하면 된다.
   2) 설정규칙
     y: 커널에 컴파일(yes)
     m: 모듈로 컴파일(module)
     n: 기능을 사용하지 않음(no)
   3) 환경설정의 저장: 설정된 환경은 보통 /usr/src/linux/.config에 기록된다.
(2) 환경설정도구
   1) make config: 가장 기초적인 자동 설정도구로 시스템의 터미널 종류에 상관없이 실행가능하다.
                  이 명령을 실행하면 콘솔이나 윈도우에 각 옵션에 대한 질문이 나타난다. 사용자
                  는 질문에 대해 각각 y,m,n으로 대답한다. 이 도구는 상당히 장황하고 모든 옵션
                  에 대해 답을 해야한다.
   2) make menuconfig: 화살표키와 다른 키를 이용해 커널을 설정할 수 있는 텍스트 모드의 윈도우
                      환경을 제공한다. 이 때 터미널에서 커서를 제어할 수 있는 커스(curses)라이
                      브러리가 필요하다.
   3) make xconfig: X윈도우 기반하에서 사용한다. 라디오버튼으로 선택하는 방식이다.

3. 커널소스구하기
(1) 개요: 리눅스 커널은 리눅스의 창시자인 리누스 토발즈와 앨랜 콕스(Alan Cox)에 의해 개발되어
          발표되고 있다. 토발즈가 발표하는 커널은 두 가지형태로 배포된다. 하나는 안정버전과
          테스트가 필요한 개발버전으로 나뉘어 있다. 앨랜 콕스의 커널은 토발즈의 커널보다 새로
          운 기능의 커널을 패치하는 형태로 제공된다.
(2) 커널소스파일의 예
    linux-2.4.21.tar.gz
     => (설명)
        2 : 커널의 주 버전
        4 : 홀수면 개발버전을 나타내고, 짝수면 안정버전을 나타낸다.
       21 : 패치된 횟수이다.
(3) 커널 소스 구하기
   1) 설명: 관련사이트는 ftp.kernel.org 이므로 여기서 최신의 커널을 구할 수 있다.
   2) 참고: 최신 커널 버전 알아보기
     ㄱ. 설명: finger명령을 이용하여 최신의 커널버전을 알아볼 수 있다.
     ㄴ. 사용예
        [posein@www posein]# finger @ftp.kernel.org
        The latest stable version of the Linux kernel is:           2.4.21
        The latest prepatch for the stable Linux kernel tree is:    2.4.22-pre9
        The latest snapshot for the stable Linux kernel tree is:    2.4.21-bk23
        The latest beta version of the Linux kernel is:             2.6.0-test2
        The latest 2.2 version of the Linux kernel is:              2.2.25
        The latest 2.0 version of the Linux kernel is:              2.0.39
        The latest prepatch for the 2.0 Linux kernel tree is:       2.0.40-rc6
        The latest -ac patch to the stable Linux kernels is:        2.4.22-pre6-ac1

4. 커널소스풀기
(1) /usr/src 디렉토리로 이동한다.
(2) 관련사이트에 접속한다.
    ftp ftp.kernel.org    
(3) ID와 패스워드를 입력: 각각 anonymous/anonymous 라고 입력하거나 ftp/ftp라고 입력한다.
(4) cd /pub/linux/kernel/v2.4 로 이동한다.
(5) get 명령어를 이용하여 다운받는다.
   예) get linux-2.4.21.tar.gz
(6) tar 명령을 이용하여 압축을 푼다.
    tar zxvf linux-2.4.21.tar.gz
(7) 압축을 푼 디렉토리로 이동한다.
    cd linux-2.4.21 (예전의 경우에는 linux라는 디렉토리로 생성되는 경우도 있었음)

5. 커널컴파일(Kernel Compile)순서
make mrproper => make menuconfig => make dep => make clean => make bzImage => make install =>
make modules => make modules_install

(참고) make mrproper
       커널 컴파일시 make mrproper명령을 새로운 커널 설정을 위한 것으로, 기존에 설정되어 있는
      커널 설정값을 모두 초기화하고, 컴파일되어 있던 오브젝트(object, .o확장자를 가진 파일,
      이를 커널에서 모듈이라고 함)파일을 제거하여 커널 상태를 새로운 커널 설정에 맞도록 초기
      화해 주는 명령이다. 이 명령은 커널 컴파일시에 매번 실행할 필요는 없다. 기존 커널 설정을
      모두 무시하고 다시 설정하고자 할 때나 새로운 의존성을 설정하고자 할 때 요구되므로, 기존
      설정에 새로운 기능을 추가하는 경우에는 이 명령을 실행하지 않아도 된다.

6. 커널환경설정
(1) 환경설정 명령의 종류
   1) make config : 기본 텍스트명령으로 각 옵션을 선택한다.
   2) make xconfig : X윈도우 환경하에서 설정하는 명령이다.
   3) make menuconfig : 가장 많이 쓰이는 방법으로 ncurses를 이용한다.
(2) 커널 옵션 설정 규칙
   1) 기본규칙: 'y' 또는 '*'는 커널에 적재되도록 하는 것이며, 'm'은 모듈로 해당 기능을 사용함
               을 의미하고, 'n'은 커널에 해당기능을 사용하지 않겠다는 뜻이다.
   2) 참고: 불필요한 설정들은 시스템 자원을 많이 소모함으로 가능한 선택하지 않고, 기본적인 것
           들만 커널에 포함시키고 나머지들은 모듈로 작동될 수 있도록 한다.
(3) Menu
   1) Code maturity level options (N)
     ㄱ. 설명: 커널 코드의 성숙도를 선택하는 부분으로 '*'을 선택하면 개발 단계의 기능들을 사용
              한다는 의미이며, 'n'은 커널에서 안정적인 기능들만 사용하겠다는 설정이다. 기본적
              으로 'n'으로 한다.
     ㄴ. 메뉴
        Prompt for develpment and/or incomplete code/drivers
   2) Loadable module support
     ㄱ. 설명: 커널에서 모듈을 사용할 수 있도록 선택해주는 부분이다.
     ㄴ. 메뉴항목
        Enable loadable module support (Y)
         => 동적 모듈 기능을 가능하게 해주는 기능으로 원하는 기능을 메모리에 올려놓고 필요없는
           기능은 메모리에서 빼내는 것을 가능하게 해준다. 꼭 선택하도록 한다.
        Set version information on all module symbols (N)
         => 커널이 바뀌어도 기존의 모듈을 사용하게 해준다. 특별한 경우가 아니면 필요없지만
           가지고 있는 하드웨어 드라이버가 별도의 모듈로 제공되는 경우에는 선택해야 한다.
        Kernel module loader (Y)
         => 모듈에 대해 커널이 항상 대비해 주도록 설정하는 것이다. insmod나 modprobe등의
           명령을 사용하지 않고, kerneld라는 데몬이 자동적으로 모듈이 어느 기능을 수행하지
           않으면 자동적으로 모듈을 메모리에서 제거하는 기능을 갖는다. 유용하므로 반드시 선택
           하도록 한다.
   3) Processor type and features
     ㄱ. 설명: 자신의 컴퓨터에 맞는 CPU를 선택하는 부분이다. 컴파일후 재부팅시 일어나는 Panic
              현상의 대부분이 이곳 설정에서 발생한다. 만약 정확히 모른다면 386을 선택해도
              된다.
     ㄴ. 메뉴항목
       (Pentium-III/Celeron(Coppermine)) Processor family
         => 자신의 시스템에 맞는 CPU를 선택한다.
       [*] PGE extensions (not for Cyrix/Transmeta)
         => Pentium-II 계열선택시에 나타나는 메뉴로 PGE 지원여부이다. Cyrix나 Transmeta CPU가
           아니면 선택한다.
       [*] Machine Check Exception
        => 시스템에 문제점이 발생시에 프로세서가 커널에서 통지하는 것을 허락하는 옵션이다.
          선택하도록 한다. (Y)
       Toshiba Laptop support (N)
         => 도시바 랩톱인 경우에 선택한다.
       Dell laptop support (N)
         => 델의 랩톱인 경우에 선택한다.
       /dev/cpu/microcode - Intel IA32 CPU microcode support (N)
         => 펜티엄 프로, 펜티엄 II,III,IV등 IA32인텔계열의 프로세스에서 마이크로코드를
           업데이트할 수 있게 해주는 옵션이다. 그러나 리눅스커널에서 포함되어 있지 않는
           실제 마이크로코드 바이너리 데이터를 가지고 있어야 한다. File systems 항목에서
           "/dev 파일시스템 지원"이라는 옵션과 함께 설정해야 한다.
       /dev/cpu/*/msr - Model-specific register support (N)
         => 특권을 가진 프로세스들이 x86 Model-Specific Register(MSRs)에 접근할 수 있도록
           해주는 장치로 /dev/cpu/0/msr부터 /dev/cpu/21/msr디바이스에 주 장치번호 202와
           부장치번호 0~31을 가진다. 주로 멀티프로세스 시스템에서 적용된다.
       /dev/cpu/*/cpuid - CPU information support (N)
         => /dev/cpu/0/cpuid부터 /dev/cpu/31/cpuid에서 주장치번호 202와 부장치번호 0~31을
           가지는 디바이스로 프로세스들이 특정 프로세서에 실행될 수 있도록 지시하는 x86
           CPUID에 접근할 수 있도록 해준다. 역시 이것도 멀티프로세스 시스템에서 사용한다.
       (off) High Memory Support
         => x86리눅스 기반 시스템에서 물리적인 메모리를 최대 64기가 바이트까지 사용할 수
           있는데, 32비트 계열의 인텔 프로세스에서는 메모리주소 공간이 4기가 바이트까지만
           지원되어 그 이상의 물리적인 메모리를 가지고 있더라고 커널에서 모든 메모리가 영구
           적으로 매핑되지 못한다. 이 때 영구적으로 매핑되지 않는 메모리를 상위메모리(High
           Memory)라고 부르는데, 이 상위 메모리를 설정하는 옵션이다. 사용중인 시스템의 램이
           1GB 이하인 경우에는 off로 설정하고, 1~4GB인 경우에는 "4GB"로 설정하고 그 이상인
           경우에는 "64GB"로 설정한다.
       Math emulation (N)
        => 386이나 486SX에서는 수학 코프로세서(Math coprocessor)를 가지고 있지 않는 시스템에서
          에뮬레이터기능이 요구될 때 선택하는 옵션이다. 펜티엄급 CPU에서는 이 옵션이 필요없다.
       MTRR (Memory Type Range Register) support (N)
        => 인텔 펜티엄 프로와 펜티엄 II시스템에 있는 MTRR을 지원하는 것으로 프로세스가 메모리
          영역에 접근할 수 있도록 제어해 주는 기능을 한다. 이를 선택하면 PCI또는 AGP VGA카드의
          성능이 향상되며, X서버에서도 이 기능을 사용하므로 선택하도록 한다. 참고로 DVD-ROM을
          사용하는 경우에는 필히 선택한다.
       Symmetric multi-processing support (N)
        => 두 개이상의 CPU를 사용할 경우 선택한다. 최대 16개의 CPU를 지원한다. 이 옵션을 선택
          한 경우에는 Character devices  --->< > Enhanced Real Time Clock Support도 선택해야
          하며 General setup  --->< >   Advanced Power Management BIOS support는 'n'로 해야
          된다.
       Multi-node NUMA system support (NEW) (N)
        => 선택하지 않는다.
       Unsynced TSC support (NEW) (N)
        => 선택하지 않는다.
   4) General setup
     ㄱ. 설명: 일반적인 설정을 한다.
     ㄴ. 메뉴
        Networking support (Y)
         => 리눅스에서 네트워킹을 사용하게 해주는 옵션이다. 네트워크가 연결되어 있지 않더라고
           반드시 선택한다.
        PCI support (Y)
         => PCI 주변기기를 위하여 꼭 선택한다.
       (Any)   PCI access mode
         => PCI주변기기를 탐색하는 방법으로 "Bios"를 선택하면 바이오스가 이용되고, "Direct"를
           선택하면 바이오스가 이용되지 않는다. "Any"를 선택하면 커널이 직접 탐색하고 실패하는
           경우에는 바이오스에 의해서 실행하도록 한다.
        [*] ISA bus support
         => 메인보드에 ISA 슬롯이 있는 경우에 선택한다.
        PCI device name database (Y)
         => 커널에는 알려진 모든 PCI장치명에 대한 데이터베이스가 있어서 /proc/pci, /proc/iopor
           ts 그리고 유사한 파일명으로 사용자들이 이해할 수 있는 정보를 제공해준다. 이러한 데
           이터베이스는 대략 80KB정도의 커널 이미지크기이지만, 부팅될 때마다 제거되기 때문에
           커널 메모리를 차지하지 않으므로 선택한다.
        EISA support (N)
         => EISA(Extended Industry Standard Architecture)버스를 지원하는 경우에 선택한다.
           이것은 IBM마이크로채널 버스를 대체하기 위해 개발된 것으로 현재는 거의 사용하지
           않는다.
        MCA support (N)
         => MCA(MicroChannel Architecture)는 IBM ps/2기종과 랩톱에서 지원되는 것으로 PCI 또는
           ISA와 유사하다. 현재 거의 사용되지 않는다.
        Support for hot-pluggable devices (Y)
         => 이 기능은 주로 랩톱 컴퓨터나 노트북에서 PCMCIA카드와 같이 시스템이 동작되는 상태
           에서 장치를 끼워 바로 작동되도록 하고자 할 때 사용되는 기능으로 일반 데스크탑에서
           는 USB장치를 사용할 경우 선택한다.
       PCMCIA/CardBus support (N)
        => 노트북이나 랩톱컴퓨터에서 사용되는 기능이다.
       PCI Hotplug Support  --->
       System V IPC (Y)
        => 프로세스 사이에서 동기화와 정보교환을 위한 라이브러리 함수와 시스템 콜 모음이다.
          리눅스에서는 도스용 프로그램을 에뮬레이터를 통해서 실행시킬수 있다. 선택하도록 한다.
       BSD Process Accounting (Y)
        => 프로세스가 존재할 때에 사용자가 커널 프로세스의 정보를 알 수 있도록 해주는 옵션
          이다. 선택하도록 한다.
       Sysctl support (Y)
        => 시스템을 재부팅하지 않고 시행중인 커널 매개 변수를 동적으로 변경한다. /proc파일시스
          템이 설치되어 있으면 편집가능한 sysctl요소 트리는 /proc/sys에 생성된다. 커널의 크기
          가 8kb 늘어난다.
       (ELF) Kernel core (/proc/kcore) format
         => 커널 코어이미지(core image)를 담고 있는 /proc/kcore파일의 포맷 형태로 ELF 또는
           a.out로 설정한 것인가를 선택하는 옵션이다. 이 옵션을 사용하기 위해서는
           File systems  --->[*] /proc file system support를 같이 선택해야 한다. 커널해커가
           아니라면 ELF로 설정한다.
          Kernel support for a.out binaries (N)
          Kernel support for ELF binaries (Y)                                
          Kernel support for MISC binaries (N)
           => a.out(Assembler.Output)는 초창기 유닉스에서 쓰이던 방법이다. 슬랙웨어 바이너리
             파일 형태인 ELF가 나오기 전의 바이너리로 요즘은 사용되지 않으므로 선택하지 말고
             ELF는 리눅스 바이너리 포맷의 표준이므로 반드시 선택해야 한다. MISC는 선택하지
             않는다.
       Power Management support (Y)
         => 전원 관리 기능설정부분으로 시스템을 끄거나 사용하지 않을 경우에 절전모드로 전환
           하여 소비를 줄여주는 기능으로 APM(Advanced Power Management) 또는 ACPI(Advanced
           Configuration and Power Interface)에 의해서 작동될 수 있는데 이 기능을 사용하기
           위해서는 Advanced Power Management BIOS support [M]과 [*]     Use real mode APM
           BIOS call to power off (NEW) (Y)와 같이 사용한다.
   5) Memory Technology Devices (MTD) : 임베디드 시스템에 사용되는 메모리 장치 특히 플래시
                                       장치에 관련된 기능과 모듈들을 선택하는 옵션이다.
                                       선택하지 않도록 한다. (N)
   6) Parallel port support : 로컬시스템에서 로컬프린터를 사용할 경우에 이 옵션을 'y'로 설정
                             하거나 'm'으로 설정한다. 이 때 PC-style hardware (NEW)도 모듈로
                             설정하도록 한다.(Y or N or M)
   7) Plug and Play configuration: PNP기능을 사용하기 위해서는 반드시 이 옵션을 선택한다. ISA
                                  카드를 사용하지 않는 경우에는 ISA Plug and Play support는
                                  선택하지 않는다. (Y)
   8) Block devices
     Normal PC floppy disk support (Y)
      => 플로피 드라이브 지원여부이다. 선택하도록 한다.
     XT hard disk support (N)
      => 286컴퓨터에 사용되던 XT하드 디스크를 지원하는 옵션이다. 요즘은 이런 방식의 하드디스크
        는 사용하지 않으므로 선택하지 않는다.
     Compaq SMART2 support (N)
     Compaq Smart Array 5xxx support (N)
      => 컴팩 장치를 사용할 때 선택한다.
     Mylex DAC960/DAC1100 PCI RAID Controller suppor (N)
      => 해당회사의 RAID 컨트롤러를 사용하지 않는다면 선택하지 않는다.
     Loopback device support (M)
      => 파일 속에 파일시스템을 만들어 마운트하여 사용하도록 해준다. 블록 디바이스처럼 사용할
        수 있도록 해주는 기능이다. 특정한 파일시스템 테스트 또는 CD-ROM 이미지 테스트 등에
        유용하게 사용된다. 이 옵션을 모듈로 선택한다.
     Network block device support (N)
      => 네트워크로 연결된 서버의 파일 시스템을 마운트하여 블록 디바이스처럼 사용하고자할 때
        사용하는 옵션으로 이 옵션을 사용하지 않아도 NFS서비스를 이용할 수 있으므로 이 옵션은
        선택하지 않도록 한다.
     RAM disk support (N)
      => RAM을 하드디스크처럼 사용하고자 할 때 사용하는 옵션이다. 선택하지 않아도 된다.
     [*] Per partition statistics in /proc/partitions (NEW) (Y)
      => 파티션 상태를 /proc/partitions 라는 파일에 기록한다. 선택하도록 한다.
   9) Multi-device support (RAID and LVM) (Y)
     ㄱ. 설명: RAID장치를 사용할 수 있도록 커널에서 지원하는 소프트웨어 RAID를 사용하거나 LVM
              기능을 사용하기 위해서는 이 옵션을 선택한다.
     ㄴ. 메뉴
        Multiple devices driver support (RAID and LVM)
        RAID support (Y)
         => 이 드라이버는 여러 개의 하드 디스크 파티션을 하나의 논리적인 블록 디바이스로 통합
           시켜주는 기능을 한다. 단순히 하나의 파티션을 다른 하나의 파티션에 추가하거나 여러
           하드디스크들을 RAID/1/4/5디바이스로 연결시켜 주어 하드디스크에 이상이 생겼을 경우
           대처하고자 할 때 사용한다.
         Linear (append) mode (Y)
         RAID-0 (striping) mode (Y)
         RAID-1 (mirroring) mode (Y)
         RAID-4/RAID-5 mode (Y)
         Multipath I/O support (Y)
        Logical volume manager (LVM) support (Y)
         => 여러 개의 하드디스크, 여러 개의 파티션, 다중장치 혹은 루프 디바이스까지 하나의
           볼륨 그룹으로 묶어주는 역할을 하는 것으로 일종의 가상디스크 개념이다. 볼륨그룹내
           에서 가상 파티션이라 할 수 있는 논리 볼륨을 생성할 수 있으며, 용량에 따라서 볼륨
           그룹, 논리 볼륨의 크기를 조절할 수 있다. 논리 볼륨은 /dev/VolumeGroup/Name/Logical
           Name명을 가진 블록디바이스로 접근된다.
   10) Networking options
     ㄱ. 설명: 네트워크관련된 부분을 상세히 설정한다.
     ㄴ. 메뉴
        Packet socket (Y)
         => tcpdump와 같이 커널에서 실행중인 중간 네트워크 프로토콜없이 네트워크 디바이스와
           직접 통신할 수 있게 해준다. 이 옵션은 선택하도록 한다.(Y)
        Packet socket: mmapped IO
         => 패킷 프로토콜 드라이버가 IO매카니즘을 이용하게 되어 보다 빠른 통신이 가능하게 해준
           다. 선택하지 않아도 된다.(N)
        Netlink device emulation (NEW)
         => 커널의 어떤부분 또는 모듈과 사용자 프로세스들 사이에 쌍방향통신이 가능하도록 해주는
           옵션이다. 꼭 선택하도록 한다.(Y)
        Network packet filtering (replaces ipchains)
         => 리눅스 박스를 통과하는 패킷들을 필터링하는 설정에 관련된 옵션이다. ipchains는 커널
           2.2에서 사용하던 필터링기법이고, 2.4커널에서는 iptables를 사용한다. 방화벽을 설정
           하거나 마스커레이드를 사용한다면 선택한다.(Y)
         *Network packet filtering debugging (NEW)
            => 필터링관련 오류분석하는데 있어서 유용한 메시지를 줄 수 있으므로 디버깅 정보를
              필요로 하는 경우에 선택한다.(N)
        Socket Filtering
         => 사용자 공간 필터를 소켓에 연결할 수 있도록 해주고, 패킷 통과를 허용하거나 거부할
           수 있도록 해준다. 기본적으로는 선택하지 않는다.(N)
        Unix domain sockets
         => 소켓들은 네트워크 접속이 이루어지게 하고 접근될 수 있도록 하는 표준 유닉스 메카니
           즘으로 X윈도우나 syslog와 같은 프로그램들은 이 소켓을 이용하므로 선택한다.(Y)
        TCP/IP networking
         => 꼭 선택해야 하는 옵션이다. X윈도우 구동이나 로컬호스트의 핑과도 관련이 있다.(Y)
          * IP: multicasting
           => 네트워크상의 여러 컴퓨터에 동시에 같은 자료를 전송할 수 있도록 하는데 필요한
             옵션이다. 주로 인터넷방송국과 같은 스트리밍서비스하는 MBONE에 접속하기 위해 필요
             한 옵션이다. 기본적으로 선택하지 않는다.(N)
          * IP: advanced router
           => 시스템이 네트워크 패킷들은 포워드해주거나 재분배하는 기능을 갖는 라우터로 사용
             시에 필요한 옵션이다. IP 포워딩이나 마스커레이드를 사용할 경우에는 선택해야 한다.
             (Y)
          * IP: kernel level autoconfiguration
           => 커널이 부팅될 때 아이피와 라우팅테이블을 자동으로 설정할 수 있도록 해준다. 디스
             크가 없는 리눅스 시스템이 네트워크로 부팅될 수 있도록 하기 위해서는 이 옵션을
             선택해야 한다. 그러나 네트워크 이더넷 부팅을 하지 않는다면 사용하지 않도록 한다.
             만일 이 옵션을 선택하는 경우에 커널 부팅시 네트워크 부팅 설정을 하기 위해 오랜
             시간 동안 멈추는 현상이 있다.(N)
          * IP: tunneling
           => 하나의 프로토콜안에 다른 프로토콜 자료를 캡슐화하여 서로 다른 프로토콜 사이에서
             전송하는 기능으로 이 옵션을 Mobile쪽에서 사용되므로 선택하지 않는다.(N)
          * IP: GRE tunnels over IP
           => GRE(Generic Routing Encapsulation)는 시스코 라우터 사용시 유용하며, 멀티캐스트
             및 IPV6를 지원하지만 일반적으로 선택하지 않는다.(N)
          * IP: multicast routing
           => 멀티캐스팅 서비스를 할 경우에만 선택한다. 일반적으로 선택하지 않는다.(N)
          * IP: TCP Explicit Congestion Notification support (N)
           => ECN(Explicit Congestion Notification)는 라우터로 하여금 네트워크 폭주시 클라이
             언트에게 통보하게 하여 버려지는 패킷들이 감소되어 네트워크 성능을 향상시켜 주는
             데 이 옵션은 커널에 ECN기능을 추가해 주고, 실행도중 ECN기능이 꺼지도록 하는
             sysctl(/proc/sys/net/ipv4/tcp_ecn)도 추가해 준다. 일반적으로 선택하지 않는다.(N)
          * IP: TCP syncookie support (disabled per default) (Y)
           => TCP/IP의 결점을 이용하여 서버에 접속할 수 없도록 하는 SYN ATTACK을 막기 위해서는
             이 옵션을 반드시 선택해야 한다. 이 옵션을 사용하기 위해서는 File systems  --->
            /proc file system support와 General setup  --->[*] Sysctl support를 꼭 선택해야
            한다. 그리고나서 시스템이 부팅된 후 echo 1>/proc/sys/net/ipv4/tcp_syscookies 를
            실행시켜야 한다.
        IP: Netfilter Configuration : 필터링관련 프로그램사용허부를 설정한다. 2.4커널에서
                                     사용하는 iptables, 2.2커널에서 사용하는 ipchains, 2.0
                                     커널에서 사용하는 ipfwadm에 관련된 설정을 한다.
         * Connection tracking (required for masq/NAT) (NEW) (M)
          => 접속추적기능(Connection tracking)은 어떠한 패킷들이 리눅스 머신을 통과했는지
            기록하여 어떻게 접속되는지를 알 수 있도록 해준다. 이 옵션은 마스커레이드나 다른
            네트워크 주소변환(Network Address Translation, NAT)에 이용되며, 또한 패킷 필터링
            을 향상시키는데 사용될 수 있다.
           - FTP protocol support (NEW) (M)
            => FTP서비스에 대한 접속 추적기능을 사용하고자 할 때 사용한다.
           - Amanda protocol support (NEW) (N)
            => Amanda라는 백업패키지를 사용하는 경우에만 선택한다.
           -  TFTP protocol support (NEW) (N)
            => TFTP 를 사용하는 경우에만 선택한다.
           - IRC protocol support (NEW) (N)
            => 인터넷 채팅인 IRC에 대해서 접속 추적기능을 사용하고자 할 때 사용한다.
         * IP tables support (required for filtering/masq/NAT) (NEW) (Y)
          => iptables를 이용하여 패킷필터링, 마스커레이딩, 포트포워딩등 NAT기능을 사용할 때
            사용하는 옵션이다. 선택하도록 한다.(Y)
          - limit match support (NEW) (M)
           => 방화벽 규칙의 일치율을 조절할 수 있도록 해주는 옵션으로 "LOG target support"와
             함께 유용하게 쓰이며 일부 무차별 공격(DoS attack)을 막는데 유용하다.
          - MAC address match support (NEW) (M)
           => 이더넷카드의 맥주소를 패킷의 이더넷 주소에 따라서 패킷들과 일치시켜주는 기능을
            한다.
          - Packet type match support (NEW) (M)
           => 패킷이 BROADCAST, MULTICAST 등 주어진 조건과 매칭되는 것을 찾아주는 옵션이다.
          - netfilter MARK match support (NEW) (M)
           => Mark타겟에 의해서 설정되는데, 패킷 내에 있는 'ntmakr'값에 따라서 패킷들이 일치
             하는 값에 따라서 일치하도록 해주는 옵션이다.
          - Multiple port match support (NEW) (M)
           => 일련의 출발지 포트 또는 목적지 포트에 따라서 TCP 내지 UDP패킷들을 일치하도록 해
             주는 기능으로 일반적으로 하나의 규칙으로 단일 포트 범위만 일치해 줄 수 있다.(M)
          - TOS match support (NEW) (N)
           => IP패킷의 서비스 필드 유형에 따라서 패킷들을 일치시켜 준다.
          - ECN match support (NEW) (N)
           => TCP 헤더 필드의 ECN과 패킷들을 일치시켜준다.
          - AH/ESP match support (NEW) (N)
           => AH/ESP 패킷들을 일치시켜 준다.
          - LENGTH match support (NEW) (N)
          - TTL match support (NEW) (N)
          - tcpmss match support (NEW) (N)
           => TCP SYN 패킷의 MSS값을 검사할 수 있도록 해주며, 그러한 접속에 있어서 최대 패킷의
             크기를 조절해 주는 'tcpms  s'일치성을 부여한다.
          - Helper match support (NEW) (N)
          - Connection state match support (NEW) (M)
           => 추적된 접속과 관계에 따라 패킷들이 일치하도록 해주는 옵션으로 패킷 분류에 있어서
             매우 강력한 도구이다.
          - Connection tracking match support (NEW) (M)
           => 일반적인 conntrack 일치하도록 해주는 옵션이다.
          - Packet filtering (NEW) (M)
           => 패킷 필터링을 사용하고자한다면 선택한다.
             * REJECT target support (NEW) (M)
              => 거부 필터링 규칙이 들어오는 패킷에 응답하여 ICMP에러 메시지가 말없이 없어지지
                않고 나타나도록 지시하고자 할 때 사용한다.
          - Full NAT (NEW) (M)
           => 마스커레이딩, 포트포워딩, 또는 다른 형태의 완전한 네트워크 주소 포트변환기능을
             허용한다. 이는 iptables에서 'nat'테이블로 조절된다.
             * MASQUERADE target support (NEW) (M)
              => 마스커레이딩 환경에서 사용한다.
             * REDIRECT target support (NEW) (M)
              => 외부에서 들어오는 패킷들을 내부의 인터페이스 주소로 리다이렉트시키고자 할 때
               사용한다. 특히 포트 포워딩을 하고자 할 때 사용한다.
             * NAT of local connections (READ HELP) (NEW)
              => 로컬에서 접속하는 NAT를 가능하게 해주는 옵션이다.
          - Packet mangling (NEW) (M)
           => iptables에 패킷이 어떻게 라우트되는가에 영향을 주는 다양한 패킷 변환에 이용되는
             'mangle'테이블에 부여한다.
             * TOS target support (NEW) (M)
              => 'TOS'타겟을 부여하여 라우팅이 이뤄지기 전에 아이피 패킷에 대한 서비스 필드
                유형을 바꾸는 'mangle'테이블 내에서 생성할 수 있도록 해준다.
             * MARK target support (NEW) (M)
              => 'MARK'타겟을 부여하여 'mangle'테이블 내에서 라우팅이 이뤄지기 전에 패킷과
                연관된 넷필터 마크 필드를 변경하는 규칙을 만들 수 있다.
          - LOG target support (NEW) (M)
           => iptables내에서 패킷 헤더를 syslog에 기록하도록 하는 규칙을 만들 수 있도록 'LOG'
             타겟을 제공한다.
          - TCPMSS target support (NEW) (M)
           => TCP SYN패킷의 MSS값을 바꿀 수 있도록 해주고, 그러한 접속시 최대 크기를 조절할 수
             있도록 해주는 'TCPMSS'타겟을 사용하고자 할 때 쓰는 옵션이다.
          - ARP tables support (NEW) (M)
           => ARP 테이블 지원여부이다.
         * ipchains (2.2-style) support (NEW) (Y)
          => 커널 2.2대에서 사용하는 방화벽툴인 ipchains를 사용할 때 선택한다.
         * ipfwadm (2.0-style) support (NEW) (N)
          => 커널 2.0대에서 사용하는 방화벽툴인 ipfwadm를 사용할 때 선택한다.
        802.1Q VLAN Support (N)
         => 802.1Q VLAN 사용할 대 설정한다.
        The IPX protocol (N)
         => 노벨 네트워크 프로토콜을 사용할 때 설정한다.
        Applet!alk protocol support (N)
         => 애플 컴퓨터를 위한 네트워크 프로토콜을 사용할 때 설정한다.
        DECnet Support (N)
         => DEC사에서 개발한 프로토콜을 사용할 때 설정한다.
        802.1d Ethernet Bridging (N)
         => 리눅스 박스에서 하나의 이더넷을 브릿지로 하여 이더넷 네트워크를 연결하고자 할 때
           사용하는 옵션으로 이 기능이 필요할 때만 선택하도록 한다.
        QoS and/or fair queueing (N)
         => 패킷 스케줄에 따라 패킷을 제어할 때 사용되는 옵션으로 일반적으로 선택하지 않는다.
        Network testing   ---> (N)
         => Network 테스트관련 설정이다. 선택하지 않도록 한다.
   11) Telephony Support : 음성전화카드를 사용할 때만 선택한다. 보이스 모뎀과는 상관없으므로
                          선택하지 않는다. (N)
   12) ATA/IDE/MFM/RLL support
     Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (Y)
      => EIDE 하드디스크 및 CD-ROM등을 사용하기 위해서는 반드시 이 옵션을 선택해야 한다.
      * Use old disk-only driver on primary interface (N)
       => 선택이 필요없다.
      * Include IDE/ATA-2 DISK support (Y)
       => IDE 하드디스크 사용시 꼭 선택한다.
       - Use multi-mode by default : 멀티모드관련 부분으로 보통 아래와 같이 메시지가 나온다면
                                    꼭 선택해야 한다. (Y)
         hda: set_multimode: status=0x51 { DriveReady SeekComplete Error }
         hda: set_multimode: error=0x04 { DriveStatusError }
      * Auto-Geometry Resizing support (N)
       => HDD의 Geometry 조정 지원 여부를 지정한다.
      * PCMCIA IDE support (N)
       => PCMCIA 방식의 IDE를 사용할 경우 선택한다.
      * Include IDE/ATAPI CDROM support (Y)
       => EIDE CD-ROM을 사용할 경우 선택한다.
      * Include IDE/ATAPI TAPE support (N)
       => 백업테이프를 사용할 경우 선택한다.
      * Include IDE/ATAPI FLOPPY support (N)
       => IDE로 연결하여 사용하는 플로피 장치를 사용할 경우에 선택한다.
      * SCSI emulation support (M)
       => IDE CD-ROM과 같이 IDE주변기기를 SCSI장치처럼 사용할 수 있도록 에뮬레이트해주는 옵션
         으로 CD-RW을 사용한다면 설정해야 한다.
      * IDE Taskfile Access (N)
       => 선택하지 않는다.
      * CMD640 chipset bugfix/support (N)
       => CMD 640칩을 탑재한 마더보드를 사용할 경우 심각한 데이터를 상실시킬 수 있는 결함이
         있을 때 이러한 문제를 해결할 때 사용한다.
      * ISA-PNP EIDE support (N)
       => ISA타입 EIDE장치를 사용할 때 선택한다. 요즘은 잘 사용하지 않는다.
      PCI IDE chipset support
      * Generic PCI IDE chipset support (Y)
       => 마더보드의 IDE칩에 의해서 DMA기능을 사용하기 위해서는 이 기능을 선택한다. DMA33이상
         의 하드디스크를 사용하면 꼭 선택한다.
        - Sharing PCI IDE interrupts support
         => IDE칩이 다른 주변기기와 같은 IRQ를 사용할 수 있도록 허가할 때 사용하는 옵션이다.
           선택하도록 한다.(Y)
        - Generic PCI bus-master DMA support
         => DMA를 지원하는 하드디스크를 사용할 경우 선택하면 CPU의 부하를 줄일 수 있다.(Y)
        - Boot off-board chipsets first support
         => 마더보드에 내장되어 있는 IDE커넥터 외에 PCI카드 커넥터를 사용하는 경우 PCI카드의
           커넥터 인터페이스 ide0, ide1로 부여하는 옵션이다. ATA100 Controller Card등을 쓴다면
           이 옵션을 선택하고 그렇지 않은 경우에는 선택하지 않는다.(N)
        - Enable DMA only for disks
         => DMA 기능을 사용여부를 지정하는 옵션이다. (Y)
        - Pacific Digital ADMA-100 basic support (NEW) (N)
        - AEC62XX chipset support (N)
        - ALI M15x3 chipset suppor (N)
        - AMD Viper support (N)
        - CMD64X chipset support (N)
        - CY82C693 chipset support (N)
        - Cyrix CS5530 MediaGX chipset support (N)
        - HPT34X chipset support (N)
        - HPT366 chipset support (N)
        - Intel PIIXn chipsets support (N)
        - PIIXn Tuning support (N)
         => 인텔 칩셋 보드를 사용하는 경우에 선택한다. 보통 440BX, 440LX칩을 사용한 보드를
           지원하는 옵션이다.
        - NS87415 chipset support (N)
        - PROMISE PDC202{46|62|65|67} support (NEW) (N)
        - PROMISE PDC202{68|69|70|71|75|76|77} support (NEW) (N)
        - RZ1000 chipset bugfix/support (N)
        - SCx200 chipset support (NEW) (N)
        - ServerWorks OSB4/CSB5/CSB6 chipsets support (N)
        - SiS5513 chipset support (N)
        - SLC90E66 chipset support (N)
        - Tekram TRM290 chipset support (N)
        - VIA82CXXX chipset support (N)
      * Other IDE chipset support (N)
       => 그 외 기타 IDE관련 칩셋 지원이다. 해당 칩셋을 사용하는 보드라면 선택하도록 한다.
       - Generic 4 drives/port support (NEW) (N)
       - ALI M14xx support (NEW) (N)
       - DTC-2278 support (NEW) (N)
       - Holtek HT6560B support (NEW) (N)
       - QDI QD65xx support (NEW) (N)
       - UMC-8672 support (NEW) (N)
     Old hard disk (MFM/RLL/IDE) driver (NEW) (N)
      => 예전에 사용하던 MFM방식의 하드디스크를 장착했을 경우 사용한다. 현재는 거의 사용하지
        않으므로 선택할 필요가 없다.
     IGNORE word93 Validation BITS (N)
   13) SCSI support : 스카시장치를 사용하고자 하면 선택해야 한다. 또한 E-IDE CD-RW을 사용하기
                     위해서는  SCSI generic support를 사용해야 한다. 이 때 SCSI CD-ROM support
                     는 선택할 필요가 없다. (N)
   14) Fusion MPT device support : LSI 로직의 관련 장치를 사용할 때 선택한다. (N)
   15) I2O device support : Intelligent Input/Output(I20)은 전용 I/O프로세서를 가지고 있어 CPU
                           가 I/O처리를 잃지 않도록 해서 빠른 입출력 속도를 내고자 할 때 사용
                           한다. 이러한 아키텍쳐를 가진 인터페이스 어탭터 카드를 가지고 있는
                           경우에만 선택하도록 한다. (N)
   16) Network device support
      ㄱ. 설명: 네트워크장치를 선택하는 옵션이다. 맞는 장치를 선택하면 된다.
      ㄴ. 메뉴
         Ethernet (10 or 100Mbit) : 보통 사용하는 이더넷카드를 설정하는 옵션이다.
          * 정리: 일반적으로 사용하는 이더넷카드정리
           3COM cards : 유명한 3COM사의 네트워크카드이다.
           Other ISA cards : 예전에 사용하던 10MBPS용 이더넷카드를 선택할 수 있다. 예전의 ISA
                            랜카드를 사용하려면 NE2000/NE1000 support (NEW) 를 선택한다.
          * 참고: 하나로통신이나 한국통신의 ADSL 외장형모뎀을 사용하기 위해서는 PPP모듈에 대
                 해서 설정을 해주어야 한다. PPP(Point-to-Point Protocol) support항목에서 2가지
                 를 선택한다.
             PPP support for async serial ports (NEW)
             PPP support for sync tty ports (NEW)
   17) Amateur Radio support: 아마추어 햄통신을 할 경우에 선택한다. (N)
   18) IrDA (infrared) support: IrDA(무선 적외선 포트)장치가 있다면 선택한다. 이 기능을 사용
                               하려면 irmanager와 irattach와 같은 유틸리티가 필요하다. (N)
   19) ISDN subsystem: ISDN을 사용할 경우에만 선택한다. 현재는 거의 서비스를 하지 않고 있다.
   20) Old CD-ROM drivers (not SCSI, not IDE) : 2배속과 같은 구형의 CD-ROM을 사용할 때 선택
                                               한다. (N)
   21) Input core support: USB방식의 키보드와 마우스를 사용할 때 선택해야 한다. (Y or M)
   22) Character devices
      Virtual terminal: 리눅스에서 지원하는 가상 콘솔을 사용하기 위해서는 이 옵션을 선택해야
                       한다. CTRL+ALT+F1~F6키를 사용하는 콘솔이다.
       * Support for console on virtual terminal (Y)
        => 시스템콘솔은 모든 커널메시지와 경고메시지를 전달받고, 싱글 유저 모드로 로그인을
          할 수 있도록 해주는 디바이스로 이 옵션을 선택해 줌으로써 가상 콘솔을 "console=tty4"
          와 같은 명령을 사용하여 시스템 콘솔을 사용할 수 있다.
      Standard/generic (8250/16550 and compatible UARTs) serial support (N)
       => 시리얼포트에 장착된 디바이스(모뎀, 마우스)를 사용하고자 할 때 사용한다.
       * Support for console on serial port (N)
        => 시리얼 콘솔로 부팅할 경우처럼 시리얼포트를 시스템 콘솔로 사용할 수 있다.
      Non-standard serial port support (N)
       => 표준 시리얼포트가 아닌 멀티 포트를 지원할 때 사용한다.
      Unix98 PTY support (Y)
       => 가상 접속 터미널 디바이스의 /dev/pts파일 시스템 형태를 사용하고자할 때 사용하는 옵
         션으로 선택한다.
      (256) Maximum number of Unix98 PTYs in use (0-2048) (256)
       => 동시에 가상 터미널로 접속 가능한 디바이스 개수를 설정한다. 동시 접속자 수를 늘리려면
        값을 증가시키면 된다.
      I2C support (N)
       => I-Square-C라고 하면 많은 마이크로 컨트롤러에서 사용되는 느린 직렬버스 프로토콜로 필립
         스에서 개발된 것으로 하드웨어 센서 기능과 비디오지원시 이 기능을 필요로 한다.
      Mice (Y)
       => 시리얼 마우스가 아닌 PS/2마우스를 설정할 때 사용된다.
      Joysticks (N)
       => 조이스틱을 설정할 때 사용한다.
      QIC-02 tape support (N)
       => 비스카시 테입 드라이브를 가지고 있다면 선택한다.
      Watchdog Cards (N)
       => 시스템이 잠금 상태로 서비스를 제공할 수 없는 상태일 경우 시스템을 다시 시작할 수
        있도록 해주는 기능이다. 일반적으로 선택하지 않는다.
      Intel i8x0 Random Number Generator support (N)
       => 인텔 i8xx기반 마더보드에 있는 난수 발생기를 커널 차원에서 지원해주는 드라이버이다.
      /dev/nvram support (N)
       => 일반 PC바이오스라고 하고, 아타리에서는 NVRAM이라고 부르는데, 하드 디스크에 두기는
         위험한 데이터 또는 정전되었을 때 사라지면 안되는 데이터들을 저장하는데 사용된다.
      Enhanced Real Time Clock Support (Y)
       => PC에 내장된 실시간 클럭을 액세스 할 수 있도록 해주는 기능이다. 이러한 클럭정보는
         /proc/rtc파일을 통하여 볼 수 있으며, 멀티 프로세스를 사용하는 시스템이라면 이 옵션
         을 선택하도록 한다.
      Double Talk PC internal speech card support (N)
       => RC system사에 만든 음성합성장치인 Double Talk PC를 위한 기능이다.
      Ftape, the floppy tape device driver (N)
       => 플로피디스크 컨트롤러에 연결된 테이프 드라이브가 있다면 사용한다.
      /dev/agpgart (AGP Support) (M)
       => agpgart모듈은 3D 가속 비디오카드의 AGP기능을 사용할 수 있도록 해준다. 커널에 이
         모듈이 로딩되어 비디오 카드나 특수한 값을 전송하여 GART레지스터에 프로그래밍할 수
         있도록 해준다. AGP비디오 카드를 가지고 있어 이 기능을 사용하고자 한다면 모듈로 선
         택하고 자신의 마더보드에 있는 AGP지원 칩을 선택한다.
      Direct Rendering Manager (XFree86 DRI support)
       => XFree86 4.0이상부터 지원되는 DRI(Direct Rendering Infrastructure)를 커널에서 사용할
         수 있도록 해주는 기능이다. 이 모듈은 동기화 및 보안 그리고 DMA전송을 지원한다. 커널
         2.2대부터 지원해 즈는 비디오 카드 칩으로는 3DFX 부두계열, GMX200, ATI RAGE128, I810,
         MATROX의 G200/G400등이 있다.
   23) Multimedia devices: 멀티미디어관련 장치를 설정하는 부분이다. (N)
   24) File systems
     ㄱ. 설명: 파일시스템 여부를 설정하는 단계로 필요없는 파일시스템에 대해서는 설정하지
               않도록 한다.
     ㄴ. 메뉴
        Quota support (Y)
         => 사용자들에게 계정 용량을 제한하기 위하여 디스크 쿼타를 설정한다면 선택해야 한다.
        Kernel automounter support (N)
        Kernel automounter version 4 support (also supports v3) (Y)
         => 원격 호스트의 파일 시스템들은 유저들의 요구에 따라 자동으로 마운트해주는 기능으로
           NFS서버를 마운트하고자 한다면 선택해야 한다.
        Reiserfs support (Y)
         => 저널링 파일시스템(Journalling Filesystem)인 reiserfs파일시스템은 정전 또는 시스템
           장애로 인하여 생긴 파일시스템 문제를 리눅스 표준 파일 시스템인 ext2와 같이 시스템을
           체크하지 않고, 인덱스에 대한 로그를 기록하여 손상된 파일 시스템을 복구하는 파일시스
           템으로 이 파일시스템을 사용한다면 선택한다.
        DOS FAT fs support (Y)
         => 윈도우 95/98을 사용하여 이러한 운영체제의 파일 시스템을 리눅스에서 사용하고자 할
           때 필요한 옵션이다.
        Virtual memory file system support (former shm fs) (N)
         => 가상메모리에 있는 모든 파일들을 보존해주는 파일시스템을 지원하는 옵션이다. 이 기능
           을 사용하려면 /etc/fstab에 다음과 같이 설정해야 한다.
           tmpfs    /dev/shm    tmpfs    defaults   0 0
        Simple RAM-based file system support (N)
         => RAMfs는 램내에 있는 모든 파일들을 보존해주는 파일 시스템으로 읽고 쓰기가 가능한
           파일시스템이다. 이 기능을 사용한다면 /etc/fstab에 다음을 추가해야 한다.
           ramfs    /dev/ramfs    ramfs    defaults   0 0
        ISO 9660 CDROM file system support (Y)
         => CD-ROM을 마운트하기 위해서는 반드시 선택해야 한다.
          * Microsoft Joliet CDROM extensions
           => 마이크로소프트사의 CD-ROM형식이다.
        NTFS file system support (read only) (Y)
         => 리눅스와 Microsoft NT를 같이 사용한다면 선택해야 한다.
        /proc file system support (Y)
         => 커널과 프로세스 정보들을 가지는 /proc파일시스템 지원을 위한 옵션이다 .반드시 선택
          해야 한다.
        /dev/pts file system for Unix98 PTYs (Y)
         => 가상 터미널 포트로 /dev/pts를 사용할 수 있도록 해주는 옵션으로 반드시 선택해야
           한다.
        Second extended fs support (Y)
         => 리눅스 파일시스템인 ext2를 지원하는 옵션이므로 반드시 선택해야 한다.
        Network File Systems (Y)
         => 삼바와 NFS같은 네트워크 파일시스템을 지원하는 옵션이다.
         * NFS file system support (Y)
          => NFS 클라이언트로 사용하게 되면 필요하다.
         * NFS server support (Y)
          => NFS 서버로 사용시에 필요하다.
         * SMB file system support (to mount Windows shares etc.) (Y)
          => 삼바 윈도우 서버를 마운트할 때 필요하다. 삼바서버를 운영시에는 필요가 없다.
        Partition Types
          => 확장된 형태의 파티션 타입을 선택할 때 쓴다. 지정하지 않는다.
        Native Language Support
          => 추가로 사용할 언어를 지정할 때 쓴다.
            "Korean charset (CP949, EUC-KR) (NEW)" 찾아 선택하도록 한다.
   25) Console drivers
      ㄱ. 설명: 콘솔 드라이버에서 유용한 옵션으로 프레임버퍼(Frame Buffer)의 지원으로 커널
               부팅시 펭귄 그림을 화면 좌측 상단에 띄울 수 있고, 커널 메시지를 해상도에 따
               라 조절할 수 있도록 해준다.
      ㄴ. 메뉴
         VGA text console (Y)
         Video mode selection support (Y)
          => LILO에 "vga=옵션"을 설정하여 부팅시 VGA해상도를 선택할 수 있다.
            Color    640x480   800x600   1024x768   1280x1024   1600x1200
             8비트    0x301     0x303     0x305       0x317      0x31D
            16비트    0x311     0x314     0x317       0x31A      0x31E
            24비트    0x312     0x315     0x318       0x31B      0x31F
   26) Sound : 사운드 카드를 설정할 때 한다. (N)
   27) USB support
     ㄱ. 설명: UBS장치를 설정해 주는 옵션이다. 이 항목에서 USB마우스, USB키보드,스캐너,프린터
              화상카메라등을 설정할 수 있다.
     ㄴ. 메뉴
        Support for USB (Y)
         => 장치를 사용하려면 반드시 선택해야 한다.
        UHCI Alternate Driver (JE) support (Y)
         => 현재마더보드에서 사용하는 방식으로 꼭 선택해야 한다.
        Preliminary USB device filesystem (Y)
         => USB장치관련 파일시스템을 지원하도록 해준다 .선택하도록 한다.
        USB Human Interface Device (full HID) support (Y)
         => USB장치들을 커널에 탑재되도록 하거나 모듈화 해준다. 선택하도록 한다.
   28) Bluetooth support (N)
      => 블루투스를 사용하면 선택하도록 한다.
   29) Kernel hacking
      Kernel debugging (Y)
       => 커널 디버깅중에 시스템이 다운되었을 경우 Magic키를 사용하여 시스템을 제어할 수
         있도록 해준다. 선택하도록 한다. Magic키를 사용하는 방법은 sysRq+Alt+[명령키]를 조합
         하여 누른다. 대표적인 명령키로는 K는 현재의 가상 콘솔의 모든 프로그램을 죽이고자
         할 때 사용하며, B키는 하드디스크를 언마운트하지 않은 상태에서 바로 재부팅하고자 할 때
         사용한다. 그 외의 자세한 옵션은 /usr/src/linux/Documentation/sysrq.txt에 있다.
   30) Library routines (N)
      => zlib관련 루틴사용여부이다. 선택하지 않는다.
(4) 저장하고 빠져나오기: 커널옵션을 설정한 후에 EXIT버튼을 눌러 저장하고 빠져나온다.

7. 의존성검사 및 클리닝
(1) 커널 의존성 검사
   1) 설명: 커널의 이미지를 생성하기에 앞서 필요한 라이브러리나 헤더 파일 등이 시스템에 제대
           로 있는지의 의존성을 확인한다.
   2) 사용법
     make dep
(2) 크리닝
   1) 설명: 기존의 소스로 컴파일을 한번이라도 한 경우에 생겼을 오브젝트 파일이나 임시 파일,
           커널 이미지등의 잔여물을 없애기 위한 것으로 소스 파일이나 rpm파일을 새로 가져와서
           처음 할 경우에는 안 해도 별 상관없지만, 습관처럼 사용해도 된다.
   2) 사용법
     make clean

8. 커널이미지 만들기(컴파일단계)
(1) 설명: 컴파일 과정은 make bzImage명령을 실행하여 수행한다. 이 명령을 수행하게 되면 커널의
          이미지는 /usr/src/linux/arch/i386/boot디렉토리에 bzImage로 생성된다. 그러나 이렇게
          생성된 커널이미지는 /boot디렉토리로 자동 이동되지 않으므로 make install명령을 실행
          하여 /boot/vmlinuz-커널 버전파일로 복사하고, 바뀐 커널 이미지로 정보를 변경해야
          한다.
(2) 커널이미지의 종류
   1) make zImage: 커널의 이미지를 GNU zip형식으로 압축하여 만든다. 커널 사이즈가 크기않은
                  시절에 많이 사용하였다. 요즘에도 사용할 수 있지만 현재의 커널들이 상당히
                  많은 기능과 드라이버를 제공하기 때문에 이 컴파일 명령으로 만들어진 커널이
                  지는 크기가 너무 커져 커널에 올리기가 어렵다.
   2) make bzImage: 커널의 이미지를 압축률이 높은 .bz형식으로 압축하여 만든다. make zImage와
                   같지만, 큰 커널이미지를 만들 때 유용하다. 일반적으로 사용한다.
   3) make zlilo: 커널의 이미지를 만든 후에 LILO에 등록한다.
   4) make zdisk: 커널의 이미지를 만든 후에 플로피디스크에 복사
   5) make bzlilo: make bzImage와 lilo명령을 한번에 수행하는 결과를 보이게 된다. 따라서 make
                  bzImage에 의해서 생성된 커널이미지를 /boot디렉토리로 복사하고 바뀐 커널이미
                  지로 리로정보를 갱신하도록 lilo명령을 실행하도록 하는 일련의 컴파일명령이다.
(3) make install : 이 명령을 수행하기 위해서는 먼저 /sbin/installkernel파일이 존재해야 한다.
                   이 명령을 수행하면 커널이미지를 생성하고 생성한 이미지를 /boot디렉토리에
                   커널이미지를 복사하고, lilo명령을 수행하여 lilo정보를 변경하면 된다.
(4) 사용예
   make bzImage
   make install

9. 커널모듈 만들기(make modules)
(1) 설명: 커널 모듈은 make modules명령에 의해서 만들어지며 make modules_install명령에 의해
          /lib/modules/커널버전 디렉토리로 자동 복사하게 된다. 그리고 depmod -a 명령을 실행
          하여 컴파일된 모듈에게 의존성을 부여하게 된다. 이렇게 생긴 모듈은 커널에 적재되는
          것이 아니므로 커널에 적재하려면 modprobe 나 insmod명령으로 해당 모듈 드라이버를
          띄워야 한다.
(2) 사용예
   make modules
   make modules_install
   depmod -a

10. Boot Loader의 환경설정파일 편집
(1) lilo인 경우
   1) 설명: 커널 컴파일후에는 새로운 커널로 부트 로더 정보를 갱신해 주어야 하는데, 컴파일된
           커널 이미지의 경로를 /etc/lilo.conf에서 커널 이미지부분을 추가하거나 수정해야 한다.
   2) 사용예
     boot=/dev/hda
     map=/boot/map
     install=/boot/boot.b
     prompt
     timeout=50
     message=/boot/message
     lba32
     default=linux

     image=/boot/vmlinuz-2.4.2-3
       label=linux
       read-only
       root=/dev/hda7

     image=/boot/vmlinuz-2.4.18
       label=linux_new
       read-only
       root=/dev/hda7
        => 이렇게 새로운 커널 이미지를 리로설정파일에 추가하면 컴파일이 잘못되어 커널이미지에
          이상이 있어 부팅되지 못할 경우 기존의 커널이미지로 부팅하여 복구할 수 있도록 하기
          위해서이다.
(2) grub인 경우
   1) 설명: grub.conf에 커널이미지부분을 추가한다.
   2) 사용예
     default=0
     timeout=10
     splashimage=(hd0,0)/grub/splash.xpm.gz
     title Red Hat Linux (2.4.20-8)
             root (hd0,0)
             kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
             initrd /initrd-2.4.20-8.img

     title Red Hat Linux (2.4.21)
             root (hd0,0)
             kernel /vmlinuz-2.4.21
             initrd /initrd-2.4.21.img           // mkinitrd 명령으로 생성해야 한다.
(3) 참고: mkinitrd 명령을 통한 초기화 램디스크 이미지 생성
   1) 설명: 레드햇 8.0 버전부터는 본격적으로 ext3파일시스템을 사용한다. ext3 파일시스템에서는
           부팅시 필요한 모듈과 이미지를 초기화 램디스크 이미지로 부팅시에 부트로더가 읽어들이
           도록 되어 있다. 따라서 해당 이미지를 만들어 줘야 한다.
   2) 사용법
     mkinitrd /boot/initrd-커널버전.img 커널버전
   3) 사용예
     mkinitrd /boot/initrd-2.4.21.img 2.4.21

출처 : 대전국제IT교육센터 정성재 강사

 

1. 모듈(Module)이란?
모듈의 사전적인 의미는 프로그램이나 하드웨어 기능단위, 교환가능한 구성부분, 그리고, 우주선의
일부를 이루지만 독립적으로 행동할 수 있는 작은 소선을 뜻한다. 리눅스에서의 모듈은 우주선의 경
우와 비슷하다. 우주선의 모체는 커널이미지이고, 작은 소선이 커널 모듈이다. 커널 모듈이 필요할
때는 커널 이미지에 합류하고 필요하지 않을 때에는 커널에서 빠져 나와 모듈 형태로 존재하므로 시
스템의 메모리를 절약할 수 있다. 따라서, 보통 모듈이 로드되었다는 것은 커널 밖에 존재하던 해당
드라이버가 커널의 일부로 되었다는 뜻이다. 언로드하면 다시 커널과 별도로 존재한다.

2. 모듈관리
(1) 개요: 리눅스 시스템에서 시스템장치를 제어하는 코드는 컴파일되어 커널에 포함될 수 있다.
          그런데 커널은 대부분의 시스템장치에 대한 기능을 이미 내장하고 있으므로 모노리딕(mono
          lithic)이라 하며 커널이 자체에 모든 시스템 하드웨어를 관리한다는 의미이다. 모노리딕
          커널은 그다지 융통성이 뛰어나지 못해 시스템에 새로운 장치가 추가될 경우 커널을 새롭
          게 만들어야 할 필요가 있다. 또한 모노리딕 커널은 실제 시스템에 장착되지 않은 하드웨
          어 드라이버까지 포함하고 있으므로 지나치게 비대해질 가능성이 있다. 대신 대부분의
          사용자들은 모듈형(modular)커널을 사용하는데 이것은 커널이 필요한 경우에만 장치 드라
          이버를 적재하는 방식이다 모듈을 이용하면 드라이버를 업그레이드하는 편리한 방식을
          통해 시스템이 운영중에도 하드웨어 설정을 변경할 수 있다.
(2) 모듈파일
   1) 설명: 리눅스 커널 모듈은 C컴파일러로 만들어진 오브젝트(.o)이지만 실행파일(이 경우 커널
           실행파일)안에 링크되어 들어가지 않는다. 대부분의 모듈은 커널과 함께 컴파일되어
           배포된다. 모듈은 커널과 매우 밀접한 관계가 있으므로 여러 커널이 설치될 경우 각
           커널에 맞는 독립된 모듈의 집합이 설치된다. 이것은 모듈이 다른 버전 커널에 삽입을
           막아준다.
   2) 모듈의 위치: '모듈은 /lib/modules/커널버전' 디렉토리에 위치한다. 여기서 커널버전은
                  uname -r의 실행 결과 나오는 문자열이 된다. 또한 이 디렉토리의 하위디렉토리
                  로 아래와 같은 디렉토리가 생성되면서 관련 모듈들이 위치한다.
     ㄱ. block: RAID 제어기, IDE 테이프 드라이버와 같은 블록장치를 위한 모듈
     ㄴ. cdrom: 비표준 CD-ROM장치를 위한 장치 드라이버
     ㄷ. fs: MS도스와 같이 파일시스템을 위한 드라이버(msdos.o)
     ㄹ. ipv4: IP 매스커레이딩(masquerading)과 같이 IP처리에 관련된 모듈
     ㅁ. misc: 다른 분류에 속하지 않는 것으로 이 디렉토리의 최상위는 비어 있다.
     ㅂ. net: 네트워크 인터페이스 드라이버 모듈
     ㅅ. scsi: SCSI 컨트롤러 드라이버 모듈
     ㅇ. video: 비디오 어댑터을 위한 특별한 드라이버 모듈
    (참고) 2.4 커널버전인 경우에는 /lib/modules/2.4.2-3/kernel/drivers 에 위치한다.
(3) 모듈의 사용: 모듈이 로드되면 동작중인 커널에 동적으로 링크되어 사용한다. 대부분의 리눅스
                 커널 모듈은 자동으로 처리된다. 그러나 종종 필요한 모듈을 직접 처리해야 하는
                 경우도 있으며 스크립트에서도 모듈을 처리하는 부분을 볼수도 있다. 예를 들면
                 특정 드라이버에 문제가 있을 경우 새 버전의 드라이버 소스 코드를 구해 컴파일
                 한 후 새로운 모듈을 동작중인 커널에 넣을 필요가 있다. 이 경우에는 모듈관련
                 명령어를 사용해야 한다.

3. 모듈관련명령어
(1) lsmod
   1) 설명: 적재된 각각의 모듈명, 크기, 사용횟수 다른 참조 모듈 등의 정보를 출력한다. 이 명령
           의 실행결과는 /proc/modules파일의 내용과 같다.
   2) 사용법
     lsmod
   3) 사용예
     [root@www /root]# lsmod
     Module                  Size  Used by
     autofs                 11296   1  (autoclean)
     8139too                16512   1  (autoclean)
     3c59x                  25376   1  (autoclean)
     ipchains               39360   0  (unused)
     usb-uhci               20752   0  (unused)
     usbcore                49728   1  [usb-uhci]
(2) insmod
   1) 설명: 동작중인 커널에 모듈을 적재한다. 모듈은 자동으로 검색되고 삽입된다. 그러나 의존성
           이 있는 모듈인 경우에는 적재를 하지 못한다.
   2) 사용법
     insmod [option] 모듈
   3) option
     -s : 실행결과를 터미널 대신 syslog에 기록한다.
     -v : 메시지를 자세히 보여준다.
   4) 사용예
     [root@www scsi]# insmod ide-scsi.o
(3) modprobe
   1) 설명: insmod와 마찬가지로 modprobe도 모듈을 적재할 때 사용된다. 그러나 modprobe는 단일
           모듈, 의존성이 있는 여러 모듈, 특정 디렉토리의 모든 모듈들을 적재할 수 있다. -r
           옵션을 사용하면 모듈을 제거할 때에도 사용할 수 있다. 또한 모듈에 '기호=값'형식을
           이용하여 매개변수를 전달할 수 있다. 만일 모듈이 다른 모듈에 의존하고 있을 경우
           필요한 모듈을 먼저 적재한다. 이 명령어는 최상위 모듈디렉토리에 존재하는 modules.dep
           파일을 참고해 모듈간의 의존성을 해결한다.
   2) 사용법
     modprobe [option] 모듈 [기호=값]
   3) option
     -l : 사용가능한 모든 모듈을 보여준다.
     -r : rmmod와 같이 모듈을 제거한다. 여러 모듈을 한꺼번에 지정할 수 있다. 또한 의존성이
         걸려 있는 모듈들도 찾아 자동으로 제거한다.
     -c : 기본값과 /etc/modules.conf(배포판에 따라 /etc/conf.modules)에 정의된 지시자를 포함
         해 완전한 모듈설정을 보여준다.
   4) 사용예
     ㄱ. [root@www net]# modprobe -l
         /lib/modules/2.4.18/kernel/drivers/block/loop.o
         /lib/modules/2.4.18/kernel/drivers/md/lvm-mod.o
         /lib/modules/2.4.18/kernel/drivers/net/3c501.o
         /lib/modules/2.4.18/kernel/drivers/net/3c503.o
           => 사용가능한 모든 모듈을 보여준다.
     ㄴ. [root@www net]# modprobe ide-scsi
           => ide-scsi 라는 모듈을 올린다.
     ㄷ. [root@www net]# modprobe -r ide-scsi
           => ide-scsi라는 모듈을 제거한다.
     ㄹ. [root@www net]# modprobe -c
           => 모듈설정들을 보여준다.
(4) rmmod
   1) 설명: 모듈을 커널에서 제거하는 명령이다. 의존성이 있는 모듈은 제거하지 못한다.
   2) 사용법
     rmmod [option] 모듈
   3) option
     -a : 사용되지 않는 모든 모듈을 제거한다.
   4) 사용예
     [root@www /etc]# rmmod ide-scsi
(5) modinfo
   1) 설명: 모듈 오브젝트 파일의 모듈 정보를 보여준다. 어떤 모듈은 아무 정보도 없으며, 어떤
           모듈은 한 행 정도의 간단한 설명이 있고 몇몇은 비교적 상세하게 설명하고 있다.
   2) 사용법
     modinfo option 모듈_오브젝트_파일
   3) option
     -a : 모듈 제작자를 표시한다.
     -d : 모듈에 대한 설명을 보여준다.
     -p : 모듈이 지원하는 매개변수를 보여준다.
   4) 사용예
     ㄱ. [root@www net]# modinfo -d 3c59x.o
         3Com 3c59x/3c9xx ethernet driver LK1.1.16 19 July 2001
           => 모듈에 대한 설명을 보여준다.
     ㄴ. [root@www net]# modinfo -p 3c59x.o
           => 모듈이 지원하는 매개변수를 보여준다.

4. 모듈 사용하기
(1)모듈 올리기
    1) insmod 모듈이름
      예) insmod ne io=0x300 irq=3 (참고로 '*' 가 아니고 그냥 알파벳 'x'임.)
    2) modprobe 모듈이름
      예) modprobe ne
    *한꺼번에 할 경우
      modprobe ne io=0x300 irq=3
   (참고) insmod와 modprobe명령 모두 모듈을 적재하지만 insmod명령을 사용하면 의존성문제때문에
         모듈이 적재되지 않는 경우도 있고, 적재되더라도 정상적으로 동작하지 않을 수도 있다. 따
         라서, modprobe 명령을 이용하는 것이 좋다.
(2)모듈의 확인 : lsmod
    *사용예
     [root@house /root]# lsmod
     Module                  Size  Used by
     autofs                  9316   1  (autoclean)
     lockd                  31496   1  (autoclean)
     sunrpc                 53028   1  (autoclean) [lockd]
     ne                      6672   1  (autoclean)
     8390                    6076   0  (autoclean) [ne]
     eepro100               15924   1  (autoclean)
     aic7xxx               135768   2
   (설명) 위에서는 ne 라는 모듈과 다른 여러 모듈이 사용중임을 알 수 있다. 이 예에서는 ne(8390
         과 의존성이 있는 모듈)와 eepro100이 랜카드 모듈이고 두 개 모두 used항목이 1이기 때문
         에 현재 사용중임을 알 수 있다.
(3)모듈 내리기(삭제)
    rmmod 모듈이름
   (참고) 모듈이 현재 사용중이라면 모듈의 삭제가 안된다. 이 경우에는 ifconfig eth0 down등의 명
         령으로 이더넷카드 사용을 중지하고 rmmod명령을 사용해야 한다.
(4)모듈의 관련파일
    1) /boot/module-info : 모듈, 특히 랜카드관련 모듈에 대한 정보를 볼 수 있다. (배포판에 따라
                          또는 2.4대 커널에는 없을 수도 있음)
    2) /etc/modules.conf : 부팅과 동시에 로드되는 모듈들을 알 수 있다. 또한 modprobe과정없이
                          모듈을 올릴 수 있다.
       예) ne io=0x300 irq=3 인 경우
           alias eth1 ne      => alias [인터페이스이름] [모듈]
           options ne io=0x300 irq=3 => options [모듈] io=[설정한 주소] irq=[설정한 irq값]
     (참고) 2.2 커널버전에서는 /etc/conf.modules 이었음
    3) /usr/src/linux/Documentation/networking/net-modules.txt : 리눅스에서 사용가능한 이더넷
                                                                카드에 대한 정보를 담고있다.

5. 모듈관련 설정파일: /etc/modules.conf
(1) 설명: 경우에 따라 하드웨어 인터럽트나 DMA채널값 등의 모듈 인자를 조절해야 하는 경우가
          있다. 또한 모듈을 삽입하거나 제거를 위해 특별한 절차를 따라야 할 때도 있는데, 이
          러한 설정을 하는 파일이 /etc/modules.conf(또는 /etc/conf.modules)이다.
(2) 설정
   1) 주석: 공백행이나 #로 시작되는 행은 무시한다.
   2) keep: path지시자보다 앞서 나오면 기본 경로를 유지하고 지정된 경로를 추가한다.
   3) depfile=절대경로:
     ㄱ. 설명: 모듈 의존성 파일 modules.dep의 기본위치를 변경한다.
     ㄴ. 사용예
        depfile=/lib/modules/2.4.18/modules.dep
   4) path=경로: 이 지시자는 모듈을 검색할 디렉토리를 지정한다.
   5) options 모듈 옵션1=값1 옵션2=값2
     ㄱ. 설명: modules.conf나 modprobe명령행에서 options를 이용해 모듈에 특정한 값을 전달할 수
              있다. 명령행에서 지정한 값이 설정 파일의 값보다 우선 적용된다. 모듈은 .so확장자
              를 제외한 모듈명이다. 옵션은 '옵션=값'의 형식을 이용하며 이 값들은 모듈이 인식할
              수 있는 값이어야 하며 'modinfo -p'를 이용해 확인할 수 있다.
     ㄴ. 사용예
        option ne io=0x300 irq=3
   6) alias
     ㄱ. 설명: 앨리어스를 이용해 특정 모듈에 대한 일반 이름을 부여한다.
     ㄴ. 사용예
        alias eth0 3c59x
   7) pre-install 모듈명령
     ㄱ. 설명: 모듈을 적재하기 전에 지정된 셀 명령을 실행한다. 예를 들어 PCMCIA서비스는 pcmcia
              _core모듈보다 앞서 실행되어야 하는 데 이런 경우에 사용한다.
     ㄴ. 사용예
        pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start
   8) install 모듈명령: 기본 모듈 적재 명령 대신 이곳에 지정된 명령을 사용한다.
   9) post-install: 모듈을 적재한 후 지정된 쉘 명령을 실행한다.
   10)pre-remove 모듈: 모듈을 제거 전에 지정 쉘 명령을 실행한다.
   11)remove 모듈: 기본 모듈 제거 명령 대신 이곳에 지정된 명령을 사용한다.
   12)post-remove 모듈: 모듈을 제거한 후 지정 쉘 명령을 실행한다.
(3) /etc/modules.conf의 예
    alias eth0 8139too
    alias eth1 ne    
    options ne io=0x300 irq=3

6. 모듈 의존성파일: modules.dep
(1) 설명: modprobe명령은 모듈 사이의 의존성을 파악해 자동으로 필요한 모듈을 먼저 적재할 수
          있다. 이를 위해 modprobe는 적재해야 할 모듈을 찾기 위해 /lib/modules/커널버전/module
          s.dep를 검색한다.
(2) modules.dep의 형식
   module_name.o: 의존성1 의존성2 .....
(3) modules.dep의 예
   /lib/modules/2.4.18/kernel/net/ipv4/netfilter/ip_conntrack_ftp.o:       /lib/modules/2.4.18
   /kernel/net/ipv4/netfilter/ip_conntrack.o
(4) 참고
    시스템에서 사용할 수 있는 모든 모듈은 modules.dep에 등록되어 있으며 .o확장자를 포함한 전체
   경로를 통해 참조한다. 다른 모듈이 필요로 하지 않은 모듈도 등록되어 있으며 의존성 부분은 비
   어 있다. modprobe에 의해 필요한 모든 모듈이 커널에 우선 적재되고 나면 원래 의도했던 모듈을
   적재한다.
(5) 관련명령어: depmod
    modprobe가 정상으로 동작하기 위해 modules.dep는 항상 적절하게 갱신되어야 한다. 만일 모듈
   간의 의존성이 변경되면서 modules.dep이 수정되지 않는다면 의존성을 가진 필요한 모듈을 찾지
   못해 modprobe가 동작하지 않는다. 따라서 modules.dep는 시스템이 부팅할 때마다 갱신된다.
   이 때 갱신해주는 명령이 'depmod -a'이다. 이러한 작업은 모듈간의 의존성이 변경되었을 경우에
   필요하다. 보통 /etc/rc.d/rc.sysinit파일에 등록되어 부팅시마다 수행한다.

(참고) 모듈로 설치하지 않고 커널 속에 집어넣기
1. 개요
   모듈로 설치하지 않고 커널이미지 안에 네트워크 모듈을 집어넣을 수 있다. 이 방법은 리눅스가
  모듈기능을 지원하기 전에 사용하던 방법으로 커널 컴파일시에 네트워크 카드를 선택하고 컴파일
  한 후에 /etc/lilo.conf에 랜카드 관련 항목을 입력하여 인식시킨다.
2. 방법
  (1) 커널 컴파일시에 네트워크카드를 인식시키고 컴파일한다.
  (2) /etc/lilo.conf파일에 다음과 같은 형식으로 내용을 적는다.
     append="ether=3, 0x300, eth0"
      => ehter는 이더넷을 가리키고, eth0에 IRQ는 3, IO주소는 0x300를 할당한다는 뜻이다.
  (3) /sbin/lilo를 실행하여 lilo.conf파일을 재반영시킨다.
  (4) 시스템을 재부팅하면 랜카드가 인식된다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. 프린터데몬 및 관련파일
(1) lpd : Line Printer Daemon의 약자로 리눅스에서 프린트 서비스를 담당하는 데몬이다.
(2) lpr
   1) 설명: 데몬에게 프린트 작업을 요청하는 일을 하는 명령이다.
   2) 사용법
     lpr [option] 파일이름
   3) option
     -b : 배너(banner)나 헤더(header)를 출력하지 않는다.
     -F : 파일의 포맷을 설정한다.
     -K(또는 -#num) : 한 페이지당 몇장씩 출력할 것인지 출력할 문서의 장수를 지정한다.
     -m : 에러 메시지를 메일로 보낸다.
     -P 프린터이름 : 기본 설정된 프린터 이외에 사용할 프린터를 지정한다.
     -Q : 기본값으로 사용하는 큐 이외의 다른 큐를 설정한다.
     -R : 원격 프린트 작업을 보낼 때 원격 계정 이름을 구별하기 위해 사용된다.
     -s : 지정된 파일을 spool 디렉토리로 복사하는 대신 심볼릭링크를 한다.
     -T : 타이틀 페이지에 들어갈 타이틀을 설정한다.
     -w : 페이지의 폭을 정한다.
(3) /etc/printcap
   1) 설명 : 프린터 설정파일로 lpd가 구동할 때 참조하는 파일이다.
   2) 설정예
     hp:\
             :sh:\
             :ml=0:\
             :mx=0:\
             :sd=/var/spool/lpd/hp:\
             :lp=/dev/lp0:\
             :lpd_bounce=true:\
             :if=/usr/share/printconf/mf_wrapper:
      => (설명)
        프린터 설정항목들은 ':'으로 구분되며, 원래는 한 줄로 적어야 하는데, 여러 줄에 걸쳐
       입력되므로 '\'가 붙었다.
        hp: 프린터의 이름을 정의한 것이다. printtool의 Name and Aliases항목에서 설정한다.
        sh: 표기페이지(burst page)를 인쇄하는 설정이다. 버스트페이지란 사용자, 프린트된 파일
           이름, 작업번호, 또는 기타 다른 정보를 인쇄하는 페이지이다.
        sd: spool directory의 약자. 일반적으로 'var/spool/lpd/프린터이름'으로 설정된다.
        mx: 이것은 프린터로 보내어질 파일의 최대크기를 정의한다. #0은 최대 파일 크기를 정의
           하지 않는다.
        lp: 프린트를 위한 장치이름이다.
        if: input filter의 약자. 어떤 파일이든지 프린터로 보내질 때, |(pipeline)을 통하여 if
           명령과 함께 프린트 큐(queue)에 저장된다.
2. 프린트관련 유틸리티
(1) lpq
   1) 설명: 프린트 큐에 있는 작업의 목록을 보여주는 명령이다. 프린터 데몬으로부터 필요한
           정보를 가져온다.
   2) 사용법
     lpq [option]
   3) option
     -P : 특정프린터를 지정한다.
     -a : /etc/printcap파일에 있는 모든 프린터들에 대한 정보를 보여준다.
     -s : 결과를 간략하게(short format) 보여준다.
     -l : 결과를 자세하게(long format) 보여준다.
(2) lprm
   1) 설명: 프린터 큐에 대기중인 작업을 삭제하는 명령으로 프린트를 취소하고 싶은 작업의 번호를
           입력한다. 작업번호를 명시하지 않을 경우, 프린트 요청한 마지막 작업을 삭제한다.
   2) 사용법
     lprm [option]
   3) option
     -P : 특정한 프린트 큐를 지정한다.
     -a : 프린트 큐에 있는 모든 작업을 삭제한다.
     -V : 작업의 진행상황을 보여준다.(verbose)
(3) lpc
   1) 설명: 라인 프린터컨트롤 프로그램으로 프린터나 프린트 큐를 제어한다.
   2) 사용법 : lpc 라고 입력하면 된다.
   3) 사용예
     [root@www /root]# lpc
     lpc>
       => 이 상태에서 커맨드를 입력하면 된다.
   4) command
     disable : 새로운 프린트작업을 못하게 한다.
     enable  : 프린트작업이 가능하게 한다.
     down    : 지정된 프린터를 사용할 수 없게 한다.
     up      : 모든 환경을 활성화시키고, 새로운 lpd데몬을 구동시킨다.
     status  : 지정된 프린터의 상태를 확인한다.
     quit    : lpc를 끝낸다. exit와 같다.

3. 파일의 인쇄
(1) 일반적인 파일 출력하기
    [root@www /root]# cat a.txt > /dev/lp
     => /dev/lp는 프린터에 대한 심볼릭 링크이다. 프린터 사용할 수 있는 권한자는 루트권한자나
       프린트데몬에 등록된 그룹의 사용자만이 직접 파일을 보내어 사용하는 것이 가능하다. 일반
       사용자는 lpr명령을 사용해야 한다.
(2) 포스트스크립트(Postscripts)파일 출력하기
   1) 설명 : 포스트 스크립트파일을 프린트할 때 가장 큰 문제는 사용하는 프린터와 드라이버가
            포스트 스크립트를 지원하느냐가 중요하다. 만약 지원하지 않으면 고스트스크립트(GS :
            Ghostscripts)를 이용할 수 있다. 이것은 포스트스크립트처리를 하여 포스트 스크립트
            프린터가 아닌 일반프린터가 이해할 수 있는 형식으로 바꾸어 주는 프로그램이다.
   2) 사용법
     ㄱ. gs 사용
        gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\ |lpr test.txt
     ㄴ. Ghostview : Ghostscript를 X-window에서 구현한 것으로 Postscript파일을 출력전에 살펴볼
                    수 있다.(ftp://prep.ai.mit.edu/pub/gnu)

4. 프린터의 설정
(1) 설명: x-window상에서 printtool이라는 명령으로 설정하면 손쉽게 할 수 있다.
(2) 설정하기
   1) printtool 실행
   2) New 선택
   3) Name and Aliases항목에서 Queue Name설정
   4) Queue Type에서 맞는 타입설정 : 로컬인 경우에는 기본값을 사용하면 된다.
   5) Printer Driver항목에서 맞는 모델선택
   6) APPLY를 선택한다.
(3) 확인: /etc/printcap 파일을 확인해본다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. 기본적인 시스템 하드웨어 설정
(1) 바이오스 : PC에 설치된 펌웨어를 보통 기본 입출력 시스템(BIOS, Basic Input/Output System)
              또는 바이오스라 부르며 시스템이 시작된 후 운영체제가 시작될 때까지 각 장치를 점검
              한다. BIOS프로그램은 보통 ROM에 저장되어 있어 ROM-BIOS라고도 부른다. 시스템에
              따라 차이는 있지만 이 과정에는 시스템의 초기화, 메모리 및 기타장치 의 테스트,
              저장 장치에서 운영체제를 읽어들이는 것등이 포함된다. 또한 낮은 수준의 시스템
              설정 인터페이스를 제공하며 사용자로 하여금 부팅시에 이들을 설정할 수 있게 하며
              자원을 할당한다. 보통 디스크설정, 메모리 설정, 보드에서 제공하는 포트(시리얼/
              패러럴등), 시계, 부트 장치 등을 설정할 수 있다.
(2) 자원 할당 : 바이오스 설정 중에서 몇몇 세부 사항에는 인터럽트(IRQ), I/O주소, DMA(Direct
               Memory Access)채널 등의 시스템 자원이 포함되어 있다.
   1) 포트 : 리눅스에서는 표준 직렬(Serial), 병렬(Parrarel), 조이스틱포트 모두 지원한다. 또한
           이러한 포트들과 주변기기는 /dev디렉토리에서 파일로 관리된다. 직렬포트는 ttyS0,
           ttyS1..등의 이름으로 사용되어 /dev디렉토리에서는 /dev/ttyS0, /dev/ttyS1등으로
           존재하고 마찬가지로 패러럴포트는 lp0,lp1..의 이름으로 사용되어 /dev/lp0, /dev/lp1
           등으로 존재한다.
     ㄱ. 직렬포트 : CPU는 직렬포트로 들어온 데이터를 처리하기 위해서 그 데이터가 어디에서 온
                  것이며, 어떤 신호를 사용되어 CPU가 데이터를 처리하도록 요청하엿는가를 알고
                  있어야 하는데 그 정보를 나타내는 값이 I/O주소(I/O ports)와 IRQ(Interrupt
                  ReQuest)로 직렬 포트 장치들은 이 값들을 메모리에 저장해 두어야 한다. 일반
                  적인 ISA버스에는 IRQ0~IRQ15까지 총 16개의 IRQ가 있다.
     ㄴ. 직렬포트 IRQ와 주소
        포트    리눅스장치파일    IRQ           기능                  I/O주소
        COM1      /dev/ttyS0       4    마우스                         0x3f8
        COM2      /dev/ttyS1       3    플로터/외장모뎀                0x2f8
        COM3      /dev/ttyS2       4    사용안함(마우스와 충돌)        0x3e8
        COM4      /dev/ttyS3       3    내장모뎀                       0x2e8
   2) 인터럽트 : PC 마이크로 프로세서에게 전달되는 전기적 신호로 현재 작업을 잠시 멈추고 비동
               기적 이벤트(예를 들면 키보드 누름)에 반응하도록 한다. 최근의 PC장치들은 인터럽
               트를 공유할 수 있으나 구형 하드웨어는 다른 장치와 충돌하지 않도록 직접 고유값으
               로 지정해야 한다. 보통 IRQ(Interrupt ReQuest)라 부른다.
     ㄱ. IRQ 목록
       IRQ               기능
       IRQ0         System timer
       IRQ1         Keyboard controller
       IRQ2         공유
       IRQ3         COM2/COM4
       IRQ4         COM1/COM3
       IRQ5         LPT2/SOUND CARD
       IRQ6         Floppy Drive Controller
       IRQ7         LPT1 parallel Port
       IRQ8         Real-Time Clock(TTC)
       IRQ9         예비(주로 미디카드에서 사용)
       IRQ10        Lan Card
       IRQ11        SCSI Adapter
       IRQ12        PS/2 Mouse
       IRQ13        Coprocessor
       IRQ14        IDE Controller(Primary)
       IRQ15        IDE Controller(Secondary)
     ㄴ. 관련파일 : /proc/interrupts => 현재 사용중인 IRQ를 알 수 있다. 병렬포트에 대한 내용은
                                      없다.
       예)
       [posein@www posein]$ cat /proc/interrupts
                  CPU0
         0:   51736181          XT-PIC  timer
         1:          5          XT-PIC  keyboard
         2:          0          XT-PIC  cascade
         5:     260033          XT-PIC  usb-uhci, usb-uhci, usb-uhci, eth1
         8:          1          XT-PIC  rtc
        12:    2979673          XT-PIC  eth0
        14:     131256          XT-PIC  ide0
        15:          2          XT-PIC  ide1
       NMI:          0
       LOC:          0
       ERR:          0
   3) I/O주소 : 마이크로 프로세서의 메모리 맵(메모리 번지를 정의한 목록)에 위치하며 네트워크
               인터페이스와 같은 입출력 장치를 위해 예약되어 있다. 마이크로 프로세서는 메모리에
               데이터를 기록하는 방법과 동일하게 장치에 데이터를 기록할 수 있고, 이것은 장치
               인터 페이스를 간단하게 할 수 있다. 만일 여러 장치들이 우연히 동일한 I/O주소를
               공유하게 되면 시스템 충돌이 일어난다.
     ㄱ. 표준 I/O 주소
      060h + 064h        Keyboard Controller
      170h + 376h        Secondary IDE Controller
      1F0h + 3F6h        Primary IDE Controller
      220h               Sound Card
      300h               Lan Card
      330h               SCSI Adapter
      3F2h               Floppy Drive Controller
      3F8h               COM1
      2F8h               COM2
      3E8h               COM3
      2E8h               COM4
      378h               LPT1
      278h               LPT2
     ㄴ. 관련파일 : /proc/ioports => 현재 사용중인 I/O 주소에 대한 정보를 알 수 있다.
     ㄷ. 관련 명령 : setserial 명령어를 이용하여 직렬포트를 확인할 수 있다.
        [root@www /root]# setserial -g /dev/ttyS*
        /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
        /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
        .....
   4) DMA : 몇몇 장치들이 DMA채널을 이용해 메모리에 직접 작업하고 마이크로 프로세서는 다른
           작업할 수 있게 해준다. 만일 DMA가 없을 경우 모든 데이터는 장치들의 포트를 통해
           읽어서 메모리에 저장해야 되며 이 마이크로 프로세서에 의해 수행된다. DMA를 지원하는
           장치들은 마이크로 프로세서가 작업중일 때 메모리에 직접 접근해서 필요한 데이터를
           기록하게 된다. 이것을 결과적으로 성능을 향상시키는 역할을 한다.
     ㄱ. 관련파일 : /proc/dma => dma의 값을 알 수 있다.
(3) 1024 실린더 제한 : 대부분의 PC운영에서 바이오스는 마스터 부트 레코드(MBR)이라고 알려진
                      디스크의 시작부분에서 운영체제를 불러온다. 윈도우즈 운영체제 사용자들은
                      부트 레코드가 다른 곳에 설치되지 않으므로 MBR에 대해 별로 신경을 쓰지
                      않는다. 그러나 리눅스의 경우 사용자가 부트로더(LILO)를 MBR이나 루트
                      파티션에 설치할 수 있다. 이러한 유연성 때문에 종종 바이오스와 LILO가
                      부팅에 실패하는 경우가 생긴다. 이 문제는 바이오스가 우선 LILO를 메모리
                      로 로드한 뒤 실행해야 하지만 바이오스는 1024 실린더 이후의 디스크 영역
                      에는 접근할 수 없기 때문이다. 만일 바이오스가 전체 LILO를 읽을 수 없다면
                      부팅에 실패하게 된다. 또한 구 버전의 LILO는 비슷한 이유로 커널 이미지를
                      반드시 1024 실린더 안쪽에 위치시켜야만 한다.

2. SCSI와 NIC 장치 설정
(1) 네트워크 인터페이스 카드
   1) 네트워크 카드의 시대적 분류
    ㄱ. 점퍼시대 : 이 방식의 하드웨어는 점퍼 위치를 변경함으로써 설정할 수 있도록 만들었다. 이
                 러한 방식은 점퍼 설정에 필요한 관련문서를 참고해 PC를 열어 내부에 접근해야
                 한다.
    ㄴ. 비휘발성 메모리시대 : 이 방법도 여전히 수동으로 설정한다. 점퍼를 제거하고 비휘발성 메모
                          리에 저장하는 방식이다. 물리적으로 접근해야 하는 문제는 없어 졌지만
                          제조사에서 제공되는 프로그램을 이용해야 한다. 이러한 프로그램은
                          대부분 MS-DOS용으로 만들어져 리눅스에서 이 장치를 사용하기 위해서는
                          초기 설정을 위한 별도의 MS-DOS시스템이 필요하다.
    ㄷ. 현재 : 최근 PCI 버스 방식의 네트워크 카드들은 대부분 자동으로 설정된다. 운영체제가
             시작되기 전에 시스템 초기화 단계에서 설정한다. 이러한 자동화는 수동으로 설정하는
             불편함과 장치 충돌을 방지한다.
   2) /proc 파일시스템 이용
     운영중인 리눅스 시스템에 새로운 하드웨어를 추가할 경우 기존의 장치들이 사용하는 리소스를
    확인할 필요가 있는데 이러한 커널의 상태 정보는 /proc에 저장된다. interrupt, dma, ioports
    등의 파일들은 현재 사용중인 자원을 보여준다.
     예) 1. /proc/interrupts
         2. /proc/dma
         3. /proc/ioports

3. 기타관련명령어
(1) lspci
   1) 설명: 시스템에 사용되는 PCI관련 정보를 출력해주는 명령어이다.
   2) 사용법
     lspci [options]
   3) options
     -v : 정보를 자세히 출력해준다.
   4) 사용예
     [root@mybestone /root]# lspci
     00:00.0 Host bridge: VIA Technologies, Inc.: Unknown device 3128 (rev 01)
     00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]
     00:08.0 VGA compatible controller: ATI Technologies Inc 3D Rage II+ 215GTB [Mach64 GTB] (rev 9a)
     00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
     00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
     00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge
     00:11.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06)
     00:11.2 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1b)
     00:11.3 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1b)
     00:11.4 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1b)
     00:11.5 Multimedia audio controller: VIA Technologies, Inc. AC97 Audio Controller (rev 30)

출처 : 대전국제 IT교육센터 정성재 강사

 

1. 리눅스와 하드웨어 개요
운영체제에서 하드웨어의 인식은 굉장히 중요하다. 사용자가 하드웨어에게 명령을 내리고자 한다면
운영체제에서 하드웨어를 인식해야 한다. 내부적으로는 커널이 하드웨어를 지원하고 인식해야 제어할
수 있다. 리눅스에서 하드웨어의 종류에 따른 여러 가지 특성을 분석해보자.

2. 하드웨어와 관계된 기본 자원
(1) 하드웨어 관련 로그
   1) 설명: 부팅이란 쉽게 설명하면 커널이 하드웨어를 인식하는 단계이다. 부팅을 시작하면 커널은
           부팅하면서 인식되는 하드웨어 정보를 화면에 보여주고, 또한 그 정보를 기록한다. 그
           정보가 기록되는 파일이 /var/log/dmesg이다.
   2) 확인: 로그정보의 확인은 로그 기록파일명과 같은 dmesg 명령을 이용한다. 이 명령을 내리면
           부팅시 발생된 로그를 확인할 수 있으며, 이 내용은 /var/log/dmesg라는 파일에서 가져
           온다.
(2) 하드웨어 자동인식 데몬 kudzu
   1) 설명: 리눅스에서도 윈도우처럼 자동으로 하드웨어를 인식하여 설치해주는 데몬이 있는데 이
           데몬이 kudzu이다. 새로운 하드웨어를 인식하고 설정하여 그 설정된 목록을 파일에 저장
           한다. 이 파일은 데이터베이스화하여 관리되고, 새로운 하드웨어 발견시 이 파일과 비교
           하여 기록에 없으면 새 하드웨어로 인식하여 데이터베이스를 갱신한다.
   2) 관련 파일 및 디렉토리
    ㄱ. /etc/sysconfig/hwconf: kudzu가 인식한 하드웨어를 설정하여 데이터베이스화하여 관리하는
                              파일이다. 이 파일에 현재 장착된 하드웨어의 정보가 담겨 있다.
    ㄴ. /usr/share/hwdata : kudzu가 인식할 수 있는 하드웨어의 목록파일이 들어 있는 디렉토리이
                           다.
(3) /proc 디렉토리: 관련 하드웨어에 대한 정보는 가상파일시스템의 일종인 /proc디렉토리에 위치
                    하게 된다. 이 디렉토리내의 파일을 통해 여러 하드웨어 정보를 알 수 있다.
(4) 관련 유틸리티 : hwbrowser
   X window 기반 그래픽 유틸리티인 hwbrowser는 현재 찾아낸 하드웨어의 정보를 보여주는 프로그램
  이다.

3. 각 하드웨어별 분석
(1) CPU
   현재 리눅스에서 지원되는 CPU의 종류를 살펴보면 Intel의 x86계열과 IA-64, Compaq Alpha, IBM
  S/390, PowerPC, Motorola 68k, SPARC 등을 지원한다. CPU 갯수로 보면 리눅스 커널 디자인상으로
  는 총 32개까지 지원이 가능하지만 x86계열은 8개까지 지원한다. 그러나, x86계열에서 실제적으로
  4개 이상은 사용하지 않는다.
(2) Memory
   리눅스는 i586인 경우에 기본으로 1GB의 메모리를 지원한다. i686/athlon을 사용하는 경우에는
  4GB까지 사용가능하다. 또한 인텔의 PAE(Physical Address Extensions)를 지원하는 CPU인 경우에는
  최대 64GB까지 지원한다.
(3) Block Device 와 Character Device
   1) 설명: 리눅스에서는 장치들을 파일화하여 관리한다. 이러한 파일들은 /dev디렉토리에 위치하게
           되고, 크게 Block Device와 Character Device로 분리하여 관리된다. 또한 블록디바이스나
           캐릭터 디바이스의 쉬운 접근을 위해 심볼릭링크(Symbolic Link)로 사용하기도 한다.
   2) Block Device
    ㄱ. 설명: Block 단위로 전송하는 장치들을 말하며, 흔히 Random한 접근이 가능한 장치를 일컫기
             도 한다. Floppy, IDE, SCSI, RAID 등이 이러한 장치에 속한다.
    ㄴ. 블록 디바이스 파일의 예
       [root@www dev]# ls -l /dev/fd0
       brw-rw----    1 root     floppy     2,   0  8월 31 08:31 /dev/fd0
        => 첫번째필드가 권한을 나타내는 부분에서 맨 앞쪽이 b로 표기됨을 알 수 있다. 또한 /dev
          디렉토리안에 있는 디바이스들은 두 개의 숫자로 이루어진 식별자값을 갖는데, 이 들 숫자
          를 각각 Major Number, Minor Number라 부른다. Major 번호는 노드번호와 동일하며, Minor
          번호는 의례적으로 첨자번호(예를 들면 fd다음에 붙는 숫자값)을 부여하게 된다.
   (참고) Major/Minor Number관련 정보는 /usr/src/linux-커널버전/Documentation/devices.txt
         파일에서 찾아볼 수 있다.
    ㄷ. Block Device의 종류
       hd[a-t] : IDE 하드디스크 드라이브
       sd[a-z] : SCSI 하드디스크 드라이브
       fd[0-7] : 표준 플로피 디스크 드라이브
       md[0-31] : 소프트웨어적 RAID 디스크
       loop[0-15] : loopback devices
       ram[0-19] : ramdisks
   3) Character Device
    ㄱ. 설명: Character단위로 전송하는 장치를 말하며, 흔히 순차적 접근만이 가능한 장치를 일컫
             는다.
    ㄴ. 캐릭터 디바이스 파일의 예
       [root@www dev]# ls -l /dev/tty1
       crw-------    1 root     root       4,   1  1월 21 19:58 /dev/tty1
        => 첫번째 필드의 맨 앞쪽이 c로 표기되어 있다.
    ㄷ. Character Device의 종류
      tty[0-31]  : 가상 콘솔장치
      ttyS[0-9]+ : Serial Ports
      lp[0-3]    : Parallel Ports
      null       : 휴지통같은 장치
      zero       : 무제한의 0값을 갖는 장치
      [u]random  : 랜덤한 정보를 갖는 장치
      fb[0-31]   : framebuffer 장치
   4) Symbolic Links
    ㄱ. 설명: 블록디바이스나 캐릭터디바이스의 접근을 쉽게 하기 위해 링크를 걸어둔 장치를
             말한다.
    ㄴ. 종류
      /dev/cdrom => /dev/hd[a-t], /dev/sd[a-z]+
      /dev/modem => /dev/ttyS[0-9]+
      /dev/pilot => /dev/ttyS[0-9]+
   5) 관련명령어: mknod, hdparm
(4) System Bus Support
   1) PCI 장치
    ㄱ. 설명: 리눅스는 PCI 버스관련 장치들도 지원한다. 대부분 커널에서 자동으로 인식한다.
    ㄴ. 관련명령어
       lspci
         => 현재 설치된 pci관련 장치의 정보를 보여준다.
    ㄷ. 관련디렉토리
       /proc/bus/pci
   2) ISA 장치
    ㄱ. 설명: PCI 이전에 사용하던 슬롯으로 현재는 거의 사용되지 않는다.
    ㄴ. 관련디렉토리
       /proc/isapnp
        => 찾아진 ISA 장치의 정보가 기록된다.
(5) Hotswappable Bus Support
   1) USB & IEEE 1394
    ㄱ. 명령어: /sbin/hotplug
         => USB나 IEEE 1394 관련 주변장치를 찾아 커널에게 알려주는 명령이다.
    ㄴ. 관련디렉토리: /proc/bus
        => 장치들의 정보는 /proc/bus의 하위디렉토리에 기록된다.
    ㄷ. /etc/hotplug
        => 관련장치들이 기록되는 환경설정디렉토리이다.
    ㄹ. USB 장치관련 파일
       /dev/usb
    ㅁ. 관련명령어
      a. /sbin/lsusb
          => 설치된 USB장치의 리스트를 보여주는 명령이다.
      b. /sbin/usbmodules
          => USB장치를 커널모듈로 등록시키는 명령이다.
    ㅂ. 관련문서 : "/usr/share/doc/hotplug-버전" 디렉토리나 커널소스의
                  /usr/src/linux-2.4/Documentation/usb 디렉토리에서 참고할 수 있다.
   2) PCMCIA
    ㄱ. /etc/sysconfig/pcmcia : 시스템에서 사용하는 PCMCIA 컨트롤러에 관한 내용이 설정된다.
    ㄴ. /sbin/cardmgr : Hotswap 이벤트를 모니터링하는 데몬이다.
    ㄷ. /sbin/cardctl : PCMCIA 카드를 제어하는 프로그램이다.
    ㄹ. /etc/pcmcia : PCMCIA 관련 환경파일들이 존재하는 디렉토리이다.
    ㅁ. /etc/init.d/pcmcia : 스크립트 데몬파일이다.
    ㅂ. 관련문서: man pcmcia 하거나 "/usr/share/doc/kernel-pcmcia-cs-버전" 디렉토리에서 참조
                 한다.
(6) Peripheral Device Ports
   1) Serial Ports
    ㄱ. /proc/tty/driver/serial
       => 현재 시리얼포트의 설정상태를 보여준다.
    ㄴ. /sbin/setserial
       => 시리얼포트의 정보를 보여주거나 설정하는 명령이다.
    ㄷ. /etc/rc.serial
       => 시스템부팅시에 시리얼포트를 사용하도록 해주는 스크립트이다.
    ㄹ. 관련 심볼릭링크
       /dev/modem
       /dev/pilot
    ㅁ. 관련문서
       /usr/src/linux-커널버전/Documentation/serial-console.txt
   2) Parallel Ports
     커널모듈형태로 지원되며 /etc/modules.conf에서 parport_lowlevel 이라는 이름으로 사용된다.
    x86계열 아키텍쳐에서는 패러럴포트는 parport_pc 라고 인식한다.
(7) Console and Graphics
   1) Console
    ㄱ. 설명: 리눅스는 기본적으로 SVGA 텍스트 콘솔을 지원한다. 커널 부트파라미터에서 'vga'라는
             값으로 조정한다.
    ㄴ. 관련명령어
       /usr/bin/setterm
   2) Frame Buffer
    ㄱ. 설명: 프레임버퍼란 화면에 나타날 영상정보를 일시적으로 저장하는 기억장치이다. 비디오카
             드의 중앙처리장치(CPU)로부터 도형을 표현하는 디스플레이 리스트를 받아 변환하여 프
             레임 버퍼에 기록한다. 프레임 버퍼의 각 기억 단위는 화면의 하나의 화소에 하나씩 대
             응하여 화면에 그대로 반영된다. 즉 화면의 각 점의 온(on)/오프(off)나 색깔을 비트맵
             으로 기억하고 있으며 이 기억 장치에 어떤 내용을 써넣으면 그것이 화면에 표시된다.
             이는 대개 시스템의 주기억 장치와는 별도로 분리되어 있으며, 특별한 기술을 사용하여
             속도를 빠르게 하기도 한다. 프레임버퍼를 이용하여 콘솔모드에서 한글쓰기 등이 가능
             하다.
    ㄴ. 리눅스와 프레임버퍼: 리눅스에서 프레임버퍼는 모드 그래픽하드웨어에 대해 지원되는 것은
                            아니고 일부 비디오카드에 대해서만 지원한다. fbset 이라는 프레임버
                            퍼를 관리하는 RPM패키지가 제공되며, /usr/sbin/fbset 이라는 명령과
                            /etc/fs.modes라는 환경설정파일을 이용한다.
    ㄷ. 관련문서
       /usr/src/linux-커널버전/Documentation/fb
       /usr/src/linux-커널버전/Documentation/svga.txt

4. 하드웨어관련 문서 찾아보기
(1) 레드햇리눅스 관련문서
   1) 사이트: http://www.redhat.com/support/hardware
   2) 설명 : 레드햇사에서 테스트한 하드웨어를 포함하여 레드햇리눅스와 호환되는 하드웨어목록과
            관련 정보를 얻을 수 있다.
(2) X-Window System관련 문서
   1) 사이트: http://www.xfree86.org
   2) 설명: X-window 지원하는 비디오카드 등의 하드웨어 정보를 알 수 있다.
(3) 기타관련문서
   1) 사이트: http://www.tldp.org
   2) 설명: The Linux Documentation Project의 약자로 하드웨어뿐만아니라 리눅스와 관련된 거의
           모든 문서를 찾을 수 있다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. 리눅스에서 IP 부여
(1) 명령어 이용하는 방법 : ifconfig, route 등의 명령어를 이용하여 IP를 부여한다.
   1) 사용예
     ifconfig eth0 192.168.0.5 netmask 255.255.255.0 broadcast 192.168.0.255
     route add -net 192.168.0.0 netmask 255.255.255.0 eth0
     route add default gw 192.168.0.1
   2) 장점 : /etc/sysconfig/network-scripts/ifcfg-eth0파일에서의 설정이 필요없다.
   3) 단점 : 재부팅시 재설정을 필요로 한다.
   4) 주의점: network 데몬을 재가동해서는 안된다. network데몬은 시스템의 /etc/sysconfig 디렉
            토리이하에 존재하는 네트워크 관련파일의 정보를 보고 설정한다.
   5) 보완책 : ifconfig, route같은 명령을 이용하여 IP를 부여하면 시스템을 재부팅했을 경우에는
              그 설정이 없어진다. 따라서, 명령어를 이용하여 지속적인 IP세팅을 하려면 부팅시
              마다 항상 참조하는 파일인 /etc/rc.d/rc.local파일안에 설정하면 된다.
(2) /etc/sysconfig/network-scripts/ifcfg-eth0파일을 이용 : 설정하고자 하는 IP를 다음과 같이
                                                           파일안에 넣는다.
   1) 설정예
     DEVICE=eth0
     BOOTPROTO=static
     BROADCAST=192.168.0.255
     IPADDR=192.168.0.5
     NETMASK=255.255.255.0
     NETWORK=192.168.0.0
     ONBOOT=yes
(3) netconfig를 이용 : 레드햇 리눅스 text모드에서 사용가능하다.
(4) linuxconf를 이용 : text모드, 웹브라우저(네스케이프)모드, X-window모드 세가지형태로 지원한
                      다. (레드햇 7.x버전이하만 가능하고 레드햇 8 버전에서는 지원하지 않는다.)
(5) netcfg, netconf를 이용 : X-window에서만 지원한다. (레드햇 7.x버전이하만 가능하고 레드햇 8
                             버전에서는 지원하지 않는다.)
(6) redhat-config-network: 레드햇리눅스 8에서 지원하는 명령으로 X-window 에서만 지원한다.
                           neat라고 입력해도 된다.

2. IP를 변경하기
(1) 명령어를 이용한 설정을 했을 경우
   1) 네트워크 인터페이스의 작동을 중단시킨다.
      ifdown eth0      또는   ifconfig eth0 down
   2) 역시 명령어를 이용하여 변경을 한다. 만약 /etc/rc.d/rc.local파일 안에 설정을 했을 경우에는
     그 파일안에서 설정을 변경한다.
   3) 네트워크 인터페이스를 재작동시킨다.
      ifup eth0        또는   ifconfig eth0 up
(2) /etc/sysconfig/network-scripts/ifcfg-eth0파일과 /etc/sysconfig/network파일을 이용했을
    경우 리눅스에서 네트워크카드(랜카드)는 ethx(여기서 x는 해당숫자임)로 관리한다. 만약 시스템
    에 랜카드가 하나라면 eth0 이다. IP를 변경하기 위해서 편집해야 할 파일은 다음의 두 가지
    파일이다.
   1) 관련파일
    ㄱ. /etc/sysconfig/network-scripts/ifcfg-eth0 : IP,Netmask,Broadcast값을 변경하기위한 파일
    ㄴ. /etc/sysconfig/network : Gateway값을 변경하기 위한 파일
       참고로 이더넷카드를 두 개 장착했을 경우 두번째 이더넷카드의 설정은 ifcfg-eth1번이다.
   2) 설정순서
    ㄱ. 네트워크 인터페이스의 작동을 중단시킨다.
       ifdown eth0             또는    ifconfig eth0 down
    ㄴ. /etc/sysconfig/network-scripts/ifcfg-eth0파일안에 다음과 같은 형식으로 IP를 적는다.
       (설정예)
      DEVICE=eth0
      BOOTPROTO=static
      BROADCAST=192.168.0.255
      IPADDR=192.168.0.5
      NETMASK=255.255.255.0
      NETWORK=192.168.0.0
      ONBOOT=yes
    ㄷ. 네트워크 인터페이스를 재작동시킨다.
       ifup eth0
    ㄹ. /etc/sysconfig/network파일안에 게이트웨이값을 부여한다.
       NETWORKING=yes
       HOSTNAME=www
       GATEWAY=192.168.0.1
    ㅁ. 재부팅하거나 네트워크 데몬을 재가동한다.
       /etc/rc.d/init.d/network stop 한 뒤 /etc/rc.d/init.d/network start
         또는
       /etc/rc.d/init.d/network restart
         또는
       service network restart

(참고1) 고정IP와 유동IP의 비교
1. /etc/sysconfig/network 파일: 게이트웨이 설정파일
  (1) 고정IP : 게이트웨이항목이 한 줄 더 있다.
     NETWORKING=yes
     HOSTNAME=www
     GATEWAY=192.168.0.1
  (2)유동IP
     NETWORKING=yes
     HOSTNAME=www

2. /etc/sysconfig/network-scripts/ifcfg-eth0 : 이더넷카드 설정파일
  (1) 고정IP
     DEVICE=eth0
     BOOTPROTO=static
     BROADCAST=192.168.0.255
     IPADDR=192.168.0.5
     NETMASK=255.255.255.0
     NETWORK=192.168.0.0
     ONBOOT=yes
  (2) 유동IP
     DEVICE=eth0
     BOOTPROTO=dhcp
     ONBOOT=yes

(참고2) 추천하는 /etc/sysconfig/network파일과 /etc/sysconfig/network-scripts/ifcfg-eth0
1. /etc/sysconfig/network
   NETWORKING=yes
   HOSTNAME=www
   GATEWAY=192.168.0.1               //유동아이피인 경우에는 생략한다.
   GATEWAYDEV=eth0                   //기본적으로 생략가능하다.
   FORWARD_IPV4=false                //ipchain등을 이용하여 방화벽이나 인터넷 공유시에는 true
                                       로 값을 지정해야 한다.
2. /etc/sysconfig/network-scripts/ifcfg-eth0
   DEVICE=eth0
   BOOTPROTO=static                 //유동아이피인 경우에는 'dhcp'가 된다.
   IPADDR=192.168.0.2               //부여받은 IP어드레스를 적으면 된다.
   NETMASK=255.255.255.0            //부여받은 넷마스크값을 적으면 된다.
   NETWORK=192.168.0.0              //보통 부여받은 아이피의 맨 끝자리가 0인 값이다.
   BROADCAST=192.168.0.255          //보통 부여받은 아이피의 맨 끝자리가 255인 값이다.
   ONBOOT=yes

3. IP를 추가로 부여하기
(1) 설명: 시스템에 이더넷카드(eth0)가 하나만 존재한다. 기존의 IP 이외에 남는 IP가 존재하여
          추가로 IP를 부여하고자 한다. 리눅스에서는 이러한 기능을 지원하는데 이러한 방법을
          Alias IP라고 한다.
(2) 방법 : 다음과 같이 세가지 방법이 있다.
   1) 명령어를 이용하는 방법: ifconfig 명령을 이용하는 방법이다. 이 방법을 사용해서 명령을
                             내렸을 경우 재부팅하면 설정값이 부여되지 않는다.
   2) 파일을 이용하는 방법: 가장 쉬운 방법으로 기존의 파일을 복사하여 설정하면 된다.
   3) netconfig 유틸리티를 이용하는 방법: 그래픽하게 지원하는 방법으로 이 설정을 하면 자동
                                         으로 해당파일이 생성된다.
(3) 사용예: 기존의 eth0에 추가로 203.xxx.xxx.76번을 부여해본다.
   1) 명령어를 이용하는 방법
     ifconfig eth0:0 203.xxx.xxx.76 netmask 255.255.255.0 broadcast 203.xxx.xxx.0
       => eth0:0 으로 추가로 부여할 IP를 지정하면 된다. 절대로 이 설정후에 network데몬을 재시
         작해서는 안된다. network데몬은 관련파일의 정보를 가져와 설정한다.
   2) 파일을 이용하는 방법
    ㄱ. cd /etc/sysconfig/network-scripts 로 이동한다.
    ㄴ. 기존의 이더넷카드 설정파일인 ifcfg-eth0을 ifcfg-eth0:0으로 복사한다.
    ㄷ. ifcfg-eth0:0의 설정내용을 변경한다.(/etc/sysconfig/network-scripts/ifcfg-eth0:0)
       DEVICE=eth0:0                  // 이 디바이스명을 잘 적어줘야 한다.
       BOOTPROTO=static
       BROADCAST=203.xxx.xxx.255
       IPADDR=203.xxx.xxx.76
       NETMASK=255.255.255.0
       NETWORK=203.xxx.xxx.0
       ONBOOT=yes
   3) netconfig 유틸리티 이용하기
     netconfig --device eth0:0 명령을 내린 뒤 설정한다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. /etc/modules.conf
(1) 설명: 네트워크 인터페이스카드 설정관련 파일이다. 이 파일에서 모듈화된 네트워크 디바이스를
          파일화시킨다.
(2) 예
   [root@www root]# cat /etc/modules.conf
   alias parport_lowlevel parport_pc
   alias eth0 8139too
   alias eth1 8139too
   alias sound-slot-0 via82cxxx_audio
   post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
   pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
   alias usb-controller usb-uhci
    => Realtek 8139 이더넷카드를 eth0 으로 alias 시킨다.

2. /etc/sysconfig/network
(1) 설명: 전체 네트워크 설정과 관련된 항목들이 들어있는 파일이다. 게이트웨이주소, 호스트네임
          등이 기록된다.
(2) 주요항목
   1) NETWORKING = yes|no
       => 네트워킹 사용 유무를 지정한다.
   2) HOSTNAME = 호스트이름
       => 전체도메인이름을 지정을 기본으로 하나 임의로 지정해도 상관없다.
   3) GATEWAY = 게이트웨이 IP
       => 게이트웨이 IP를 지정한다.
   4) GATEWAYDEV=디바이스명
       => GATEWAY로 연결된 디바이스를 지정한다.
   5) FORWARD_IPV4=false/true 또는 yes/no
       => 이 시스템을 게이트웨이나 라우터를 사용할 때는 필요한 항목이다. 구체적으로 ipchains등
         을 이용하여 방화벽이나 인터넷 공유시에는 true나 yes로 값을 지정해야 한다.
   6) NISDOMAIN = NIS 도메인이름
       => NIS 도메인 이름을 지정한다. 또는 "DOMAINNAME= "이라고 해도 된다.
  (3) 사용예
     NETWORKING=yes       // 네트워크를 작동시킨다.
     HOSTNAME=www         // 호스트이름을 나타낸다. 이 곳의 호스트이름은 다음라인의 도메인이름
                           을 포함해야 한다.
     DOMAINNAME=          // NIS서비스 등을 받을 경우 네트워크의 도메인 이름을 나타낸다.
     GATEWAY=192.168.0.1  // 게이트웨이 주소를 나타내며 유동아이피인 경우에는 생략된다.
     GATEWAYDEV=eth0      // 기본 게이트웨이와 연결되어 있는 인터페이스를 지정한다. 생략가능
     FORWARD_IPV4=false   //  참고로 설정값은 true/false, yes/no

3. /etc/sysconfig/network-scripts 디렉토리
(1) 설명: 리눅스에서 네트워크 인터페이스환경설정과 관련된 파일들이 저장되는 디렉토리이다.
(2) 관련파일
   1) /etc/sysconfig/network-scripts/ifcfg-eth0 : 첫번째 이더넷카드의 설정파일이다.
   2) /etc/sysconfig/network-scripts/ifcfg-eth1 : 두번째 이더넷카드의 설정파일이다.
   3) /etc/sysconfig/network-scripts/ifcfg-eth0:0
       => 첫번째 이더넷카드에 추가로 IP주소를 부여할 때 설정하는파일이다.
   4) /etc/sysconfig/network-scripts/ifcfg-eth1-range0
    ㄱ. 설명: 여러 IP를 한번에 부여할 수 있다. 현재 이 파일은 두번째 랜카드에 특정 IP 대역을
             부여하기 위한 파일이다.
    ㄴ. 사용예
       [root@www network-scripts]# cat ifcfg-eth1-range0
       IPADDR_START=192.168.3.1
       IPADDR_END=192.168.3.254
       CLONENUM_START=0
        => eth1 이더넷카드에 192.168.3.1부터 192.168.3.254까지 부여하였다. C클래스 기준으로
          최대 256개를 부여할 수 있다.
(3) ifcfg-ethx의 주요설정
    DEVICE=디바이스명
     => 네트워크 인터페이스 장치명을 나타낸다.
    BOOTPROTO=none|static|dhcp
     => 프로토콜을 나타낸다. 고정아이피인 경우에는 static 유동아이피인 경우에는 'dhcp'가 된다.
    IPADDR=아이피주소
     => 부여받은 IP어드레스를 적으면 된다.
    NETMASK=넷마스크값
     => 부여받은 넷마스크값을 적으면 된다.
    NETWORK=네트워크주소
     => 부여받은 네트워크주소값을 적는다. 보통 부여받은 아이피의 맨 끝자리가 0인 값이다.
    BROADCAST=브로드캐스트주소
     => 부여받은 브로드캐스트값을 적는다. 보통 부여받은 아이피의 맨 끝자리가 255인 값이다.
    GATEWAY=게이트웨이주소
     => 이 파일에 게이트웨이값을 부여하면 /etc/sysconfig/network파일의 설정은 반영되지 않는다.
       가능하면 게이트웨이값 설정은 /etc/sysconfig/network파일에서 하도록 한다.
    USERCTL=yes|no
     => 일반적으로 네트워크인터페이스의 작동 유무 결정은 root만이 가능한데 일반사용자도 작동
       가능하게 해주는 설정이다.
    PEERDNS=yes|no
     => ppp0같은 모뎀을 사용하거나 dhcp를 사용하는 경우에는 이 값을 yes로 설정하는데 DNS서버
       관련파일인 /etc/resolv.conf파일에 설정내용을 자동으로 업데이트한다. 이 값을 no로 하면
       이 파일의 내용을 업데이트하지 않는다.
    ONBOOT=yes|no
     => 부팅시에 해당디바이스 활성화 유무를 결정한다.
(4) 설정예(ifcfg-ethx기준)
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.0.2
    NETMASK=255.255.255.0
    NETWORK=192.168.0.0
    BROADCAST=192.168.0.255
    ONBOOT=yes

4. /etc/host.conf
(1) 설명 : DNS 서비스를 제공할 때, 먼저 이 파일을 검사하여 파일의 설정에 따라 서비스한다.
(2) 주요내용
    [root@www root]# cat /etc/host.conf
    order hosts, bind
      => /etc/hosts파일을 먼저 검색 후, /etc/resolv.conf파일 내용을 참조한다.

5. /etc/hosts
(1) 설명: DNS 서버를 사용하기 이전에 사용하던 파일로 IP주소와 호스트이름을 매핑시켜 데이터베
          이스화해서 사용하는 파일이다. 로컬 네트워크상에서 접속을 쉽게하기 위해 등록해서 사용
          할 수 있다.
(2) 구성예 : 3개의 필드로 구성되어 있다.
    IP_Address         전체_도메인명  별칭
(3) 기본구성
   [root@www /root]# cat /etc/hosts
   127.0.0.1           localhost.localdomain localhost
    => 기본 3개의 필드로 구성되어 있다. 현재시스템을 접속할 때 그냥 localhost라고 해도 된다.
(4) 설정예
   203.247.40.252  www.mybestone.com      mybestone
    => 만약 위와 같아면 telnet 203.247.40.252 대신에 telnet mybestone으로 가능하다.

6. /etc/resolv.conf
(1) 설명: 사용하고자 하는 네임서버(DNS)를 설정하는 파일이다. 보통 자신이 속한 도메인을 관장
          하는 DNS서버를 첫번째로 등록하고, 그 외에 잘 알려진 곳의 서버를 등록한다. 3개까지
          설정가능하다.
(2) 설정예
   [root@www /root]# cat /etc/resolv.conf
   search linux.com
   nameserver 168.126.63.1
   nameserver 203.247.32.31
    => search는 기본을 검색하는 도메인을 지정할 때 사용하지만 사용하지 않아도 된다. nameserver
      에 사용하는 네임서버의 IP를 지정하면 된다.

7. /proc/sys/net/ipv4/ip_forward
(1) 설명: IP를 포워딩시킬 때 설정해야 하는 파일이다. 즉, ipchains나 iptables를 통한 인터넷공
          유, NAT(Network Address Translation) 등을 할 때 꼭 설정해야 하는 파일이다.
(2) 설정
   1) 기본값확인
     [root@www root]# cat /proc/sys/net/ipv4/ip_forward
     0
      => 즉 기본값은 IP 포워딩을 허용하지 않는다.
   2) IP 포워딩 허용하기
     [root@www root]# echo 1 > /proc/sys/net/ipv4/ip_forward
       => IP 포워딩을 허용한다.

8. 기타: /etc/rc.d/rc.local파일을 이용한 네트워크 설정
(1) 설명: 이 파일안에 네트워크 명령어로 설정할 경우에는 /etc/sysconfig/network-scripts/ifcfg
          -eth0 파일 설정이 별도로 필요하지 않다.
(2) 설정예: 랜카드 두 개를 장착했을 겨우
   ifconfig eth0 210.123.193.194 netmask 255.255.255.192
   route add -net 210.123.193.192 netmask 255.255.255.192 eth0
   route add default gw 210.123.193.193
   ifconfig eth1 192.168.0.1 netmask 255.255.255.0
   route add -net 192.168.0.0 netmask 255.255.255.0 eth1

9. 일반사용자와 네트워크 인터페이스
(1) 설명: 원칙적으로 네트워크 인터페이스는 루트사용자만 임의로 조작가능하다. 그러나 관련파일
          에서 설정을 하면 일반사용자도 네트워크 인터페이스를 임의로 다운시키거나 업시킬수
          있다.
(2) 설정
   1) 방법: ifcfg-ethx 파일에서 'USERCTL' 이라는 변수를 사용한다.
   2) 사용예
     [posein@www network-scripts]$ cat ifcfg-eth1
     DEVICE=eth1
     BOOTPROTO=static
     BROADCAST=192.168.0.255
     IPADDR=192.168.0.1
     NETMASK=255.255.255.0
     NETWORK=192.168.0.0
     ONBOOT=yes
     USERCTL=yes                // 사용자가 임의로 네트워크 인터페이스를 up/down시킬 수 있다.
   3) 사용명령1
    ㄱ. 설명: ifup/down 스크립트명령을 이용해야 한다.
    ㄴ. 사용법
       ifup 네트워크_인터페이스
       ifdown 네트워크_인터페이스
    ㄷ. 사용예
       [posein@www posein]$ /sbin/ifdown eth1
        => ifup/ifdown 명령은 /sbin디렉토리에 위치하고 있는데 일반사용자는 패스가 설정되어 있
          지 않으므로 절대경로로 입력해야 한다.
   4) 사용명령2
    ㄱ. 설명: usernetctl이라는 명령을 이용할 수도 있다.
    ㄴ. 사용법
       usernetctl 네트워크_인터페이스  [up | down]
    ㄷ. 사용예
       [posein@www posein]$ /usr/sbin/usernetctl eth1 down
        => eth1 인터페이스의 작동을 중지시켰다. 역시 일반사용자가 명령을 실행하려면 패스가 설
          정되어 있지 않으므로 절대경로로 입력해야 한다.

10. Route에 대하여
(1) 기본 Route 설정
   기본 라우트설정 즉 Gateway값을 부여할 수 있는 파일은 /etc/sysconfig/network파일과 /etc/sys
  config/network-scirpts/ifcfg-ethx에서 모두 가능하다. /etc/sysconfig/network파일이 전체 기본
  라우트 파일이고, /etc/sysconfig/network-scripts/ifcfg-ethx에 부여하면 해당 인터페이스의
  게이트값으로 설정된다.
(2) 정적 라우트에 대하여
   1) 설명: 리눅스 커널 2.2이상 버전에서는 자동으로 라우트를 생성해준다. 그러나 특정파일에
           정적 라우트(Static Route)를 정의할 수 있다.
   2) 관련파일 : /etc/sysconfig/static-routes
    ㄱ. 설명: 정적라우트를 정의할 때 사용한다.
    ㄴ. 파일 선언법
       <device> host|net <argument to route command>
    ㄷ. 사용예
      a. eth0 host 192.168.2.2 eth0
        => 호스트 192.168.2.2가 부여된 eth0 을 통하여 라우팅된다.
      b. any host 192.168.2.0 netmask 255.255.255.0 ppp0
        => 192.168.2.0 네트워크 호스트들 ppp0을 통하여 라우팅된다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. telnet : 원격서버접속
(1) telnet이란?
    원격의 텔넷 서버에 접속하기 위한 시스템 기본 텔넷 클라이언트  프로그램이다.
(2) 사용법
    telnet [hostname or IP_Address ] (port)
     => 포트를 입력하지 않으면 기본적으로 23번 포트로 연결된다. 왜냐하면 텔넷의 기본포트가
       23번이기 때문이다. (참고로 ftp의 포트는 21번이고, 전체 포트의 확인은 /etc/services에서
       한다.)
(3) 사용예
   1) telnet 192.168.1.100
       => 192.168.1.100 서버로 텔넷서비스를 시도한다.
   2) telnet mybestone.com
       => mybestone.com 이라는 도메인으로 텔넷서비스를 시도한다.
(4) 관련파일
   1) /etc/hosts
    ㄱ. 설명: 인터넷을 이용하기 위해서는 DNS서버를 이용한다. 이 DNS서버보다 먼저 참조하는
              파일이 /etc/hosts파일이다. 이 파일에 해당 IP주소와 간단한 이름을 붙이면 그
              간단한 이름만으로도 텔넷접속이 가능하다. 즉 /etc/hosts 파일에는 주로 DNS를 거치
              지 않고 연결될 수 있는 컴퓨터의 리스트를 나열한다. 어떻게 보면 윈도우의 단축아이
              콘과 비슷하다.
    ㄴ. 사용예
       [root@www root]# cat /etc/hosts
       192.168.3.137      posein
        => telnet posein 이라고 입력하면 해당 IP주소(192.168.3.137)로 telnet 접속된다.
    ㄷ. 참고
       /etc/hosts파일을 열어보면 기본값으로 127.0.0.1 localhost.localdomain localhost라는 설정
      이 있는데 이것은 그냥 나눈다. 127.0.0.1은 자기 자신을 가리키는 내부 IP 주소대역이고
      localhost라는 것은 내부네트워크 테스트등에 유용하게 쓰인다.
   2) /etc/issue, /etc/issue.net
     사용자가 로그인 할 때 'login : ' 이라는 메시지를 보여주기 전에 출력되는 내용을 적는 파일
    이다. /etc/issue는 로컬에서 로그인할 때 보여주는 메시지이고, /etc/issue.net은 telnet을
    통해 네트웍으로 접근해 올 때 보여주는 파일이다.
   3) /etc/motd
     성공적으로 로그인되었을 때 접속된 사용자에게 메시지를 화면에 보여주는 파일이다. 이 파일에
    전달하고자하는 메시지의 내용을 적어넣으면 된다.

2. ftp
(1) 설명 : file transfer protocol의 약자로 원격의 FTP서버에 접속하여 파일을 전송하고 내려받도
           록 해주는 기본 클라이언트 프로그램이다.
(2) 사용법
    ftp [hostname or IP_Address]
(3) 사용예
    ftp 211.36.134.233
   (참고) ftp는 파일을 다운받거나 업할때 쓰이는 프로그램이다. 대부분의 사이트에서 ftp는 계정없
        이도 가능하도록 되어있다. 로그인시 ID와 password를 anonymous(익명이라는 뜻)로 입력하면
        된다. 물론 계정이 있는 경우에는 해당 ID와 패스워드를 입력하면 자신의 홈디렉토리로
        접속한다.
(4) ftp 명령어 : ftp접속후 help 또는 ? 라 입력하면 리스트를 볼 수 있다.
   ls  [dir_name]  : 디렉토리의 리스트를 보여준다. 'dir'명령과 동일하다.
   put [File_name] : 로컬 시스템에 있는 파일을 원격의 FTP서버로 전송한다. send [file_name]과
                    같다.
   get [file_name] : 원격의 ftp서버에 있는 파일을 자신의 로컬시스템으로 가져온다.
                    recv [file_name]과 같다.
   size [File_name] : 원격의 ftp서버에 있는 파일의 크기를 출력한다.
   mkdir [dir_name] : 원격의 ftp서버에 새로운 디렉토리를 생성한다.
   rmdir [dir_name] : 원격의 ftp서버에 있는 디렉토리를 제거한다.
   status : 현재의 상태를 출력한다.
   exit : 현재의 ftp서버에서 빠져 나온다. quit명령과 동일하다.
   mput [file1 file2 ..] : 로컬시스템에 있는 여러개의 파일을 동시에 보낼때 사용한다.
   cd [dir_name] : 디렉토리를 이동한다.
   rename [file1 file2] : 원격의 ftp서버에 있는 file1의 이름을 file2로 바꾼다.
   chmod : 원격의 ftp서버에 있는 파일이나 디렉토리의 퍼미션을 조정한다.
   delete [file_name] : 파일을 삭제한다.
   mdetete [file1 file2 ...] : 여러개의 파일을 동시에 삭제한다.
   close : 현재 연결을 끊는다.
   open IP주소 또는 호스트네임 : 새로운 서버로 연결을 시도한다.
   lcd [dir_name] : 로컬 호스트의 작업디렉토리를 변경한다. 윈도우계열에서는 지원되지 않는다.
(5) 기타명령어
   hash : 파일전송 및 다운시 진행상태를 '#'으로 나타낸다.
   bi : 바이너리모드로 파일을 전송하거나 다운받는다.

3.ping(Packet Internet Groper)
(1) 개요 : 네트워크 연결을 확인할 수 있는 명령어로 원격의 호스트(로컬 호스트 포함)와 서로
           연결이 되어 있는지의 확인여부와 패킷을 보내고 받는 시간이 출력되므로 어느 정도의
           네트워크 장애가 있는지 미루어 짐작할 수 있다.
(2) 사용법
   ping [option] IP_Address or Host_name
(3) option
   -c 개수 : 몇 개의 패킷을 보낼 것인지를 정한다. 이 옵션이 없으면 무한대로 보낸다. 멈추고자
            할 경우에는 [CTRL]+[C]를 누른다.
   -i 초   : 몇 초 간격으로 패킷을 보낼 것인지를 결정한다. 이 옵션이 없으면 기본값인 1초 간격
            으로 보낸다.
   -s 패킷크기 : 보내고자 하는 패킷 크기를 bytes 단위로 설정한다. 이 옵션이 없으면 기본값은
                56bytes이다. 즉 기본 56bytes와 ICMP 헤더데이터인 8bytes를 합쳐서 총 64bytes패
                킷을 원격지 호스트로 보낸다. 만일 1024bytes의 패킷을 보내려고 한다면 '-s 1016
                '으로 설정한다. 최대 값은 헤더데이터인 8bytes를 뺀 65,507bytes이다.
   -w 초 : 패킷을 보내고 몇 초 후에 실행을 멈출 것인지를 설정한다. 만약 -c 옵션과 동시에 사용
          했을 경우 둘 중 먼저 끝나는 값을 반영한다.
   -n : IP 주소만으로 체크한다. DNS서버가 다운되었거나 사용할 수 없을 때 쓴다.
(4) 참고
   1) 원리: ping은 ICMP echo packet을 보내어 상대방에게 응답 패킷을 받아 네트워크의 연결 상태
           를 체크한다. 응답시간, 유실된 패킷 등의 상태를 알 수 있다.
   2) ping에 응답하지 않기
    ㄱ. 설명: /proc/sys/net/ipv4/icmp_echo_ignore_all 의 파일을 vi편집기로 열어보면 0이라는 값
             으로 되어있다. 0값은 ping에 응답을 하고 1로 수정하면 ping에 응답하지 않는다.
    ㄴ. 사용예
       [root@mybestone /root]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
   3) 주의점: ping 명령어를 잘못 사용하면 원격지 호스트에 대한 공격(attack)이 될 수 있으므로
             주의해야 한다.
(5) 사용예
    [posein@www posein]$ ping -c 4 www.yahoo.com
    PING www.yahoo.akadns.net (66.218.71.86) from 210.123.193.194 : 56(84) bytes of data.
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=0 ttl=55 time=167.032 msec
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=1 ttl=55 time=359.955 msec
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=2 ttl=55 time=129.962 msec
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=3 ttl=55 time=169.950 msec
    --- www.yahoo.akadns.net ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max/mdev = 129.962/206.724/359.955/89.862 ms
     => ping은 ICMP 패킷에 64Bytes 메시지를 실어서 보낸다. icmp_seq는 패킷의 순서를 나타내고
       time은 밀리세컨드(1/1000초) 단위로 이 값은 적게 나올 수록 상대편과 가깝거나 네트워크
       부하가 적다는 것을 의미한다.
(6) 특징 : ping이 사용하는 프로토콜은 ICMP(Internet Control Message Protocol)이며, 결과값중
           TTL(Time To Live)은 패킷이 살아서 갈 수 있는 라우팅 최대값이다.

4.ifconfig
(1) 개요 : ifconfig는 interface config의 약자로 네트워크 인터페이스 관련 명령어로 설정하거나
           직접확인하는 명령어이다.
(2) 사용법
   ifconfig [interface] [address] [up/down] [option]
    => (설명)
      interface : NIC(Network Interface Card)를 말하며, 보통 랜(LAN)카드 또는 이더넷(Ethernet)
                 카드라 한다. 리눅스에서는 랜카드가 하나인 경우 eth0으로 설정되며, 만약 두개를
                 장착하면 두번째 랜카드는 eth1이 된다.
      address : 보통 IP가 부여된다.
      up/down : 네트워크를 활성화/비활성화 시킨다.
      option : netmask, broadcast등을 설정할 수 있다.
(3) 사용예
   1) ethernet카드에 부여된 IP확인
     ifconfig [인터페이스이름]
       => 현재 네트워크 인터페이스에 설정되어 있는 값을 알 수 있다. 만약 인터페이스 이름을
         입력하지 않으면 모든 인터페이스의 값을 출력한다. ifconfig -a 한것과 같다.
     예) ifconfig 
          => 현재 설정된 모든 이더넷카드의 IP설정을 보여준다.
         ifconfig eth0
          =>  첫번째 이더넷카드인 eth0의 IP설정을 보여준다.
   2) ethernet카드의 작동을 중지시키거나 활성화시킨다.
     ifconfig [인터페이스 이름] [up | down]
       => 특정 네트워크 인터페이스를 활성화(up)하거나 비활성화(down)시킨다.
     예) ifconfig eth0 down
           => eth0카드의 작동을 중지시킨다. ifdown eth0과 같다.
         ifconfig eth0 up
           => eth0카드의 작동을 활성화한다. ifup eth0과 같다.
   3) ethernet카드에 IP주소, 넷마스크값, 브로드캐스트값을 부여한다.
     ifconfig [인터페이스이름] [IP주소] [기타설정] [up | down] : 네트워크의 설정
     예) ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
          => 첫번째 랜카드인 eth0에 IP주소를 192.168.0.2를 부여하고 Netmask는 255.255.255.0
            Broadcast는 192.168.0.255를 부여하고 활성화시킨다.
         ifconfig eth0 192.168.0.2 up
          => 첫번째 랜카드인 eth0에 192.168.0.2를 부여하고 활성화시킨다. 보통 IP주소만 부여하
            면 Netmask등은 자동설정된다. 하지만 기본 클래스인 A,B,C 클래스가 아닌 다른 서브넷
            를 사용할 경우에는 꼭 부여해야 한다.
         ifconfig eth0 192.168.3.1 netmask 255.255.255.128 up
(4) ifconfig의 항목 설명
   1) Link encap : Ehternet => 장치에 사용중인 프로토콜이 Ethernet임을 나타낸다.
   2) Hwaddr : 이더넷 카드에 있는 고유 하드웨어 주소로, 48비트로 되어 있다. 보통 MAC(Media
              Address Control)주소라고도 한다.
   3) inet addr : IP주소를 나타낸다.
   4) Bcast : 브로드 캐스트 주소를 나타낸다.
   5) Mask : 넷마스크(Netmask)값을 나타낸다.
   6) UP : 인터페이스가 활성화되어 있음을 나타낸다.
   7) BROADCAST : 브로드 캐스트를 사용한다.
   8) RUNNING : 동작중임을 뜻한다.
   9) MULTICAST : 멀티 캐스트를 사용한다.
   10) MTU : Maximum Transmission Unit의 약자로 한번에 전송할 수 있는 최대 패킷의 크기를
            말한다.
   11) Metric : 라우팅할 때 참조되는 거리로 로컬인 경우 값이 1이 된다.
   12) RX/TX : 받은 패킷/전송한 패킷의 총 개수(packets), 그 중 에러가 발생한 패킷의 수는
              errors에, 그냥 버린 패킷의 수는 dropped, 손실된 패킷의 개수는 overruns에 표시
              된다.
   13) collisions : 충돌이 발생한 패킷의 수
   14) Interrupt : Ethernet 카드가 현재 사용중인 IRQ
   15) Base address : Ethernet 카드가 현재 사용중인 주소
(5) IP Alias 사용하기
   1) 설명: Ethernet카드에 IP를 하나만 부여하는 것이 아니라 여러 개의 IP를 부여할 수 있다. 이
           러한 기능을 IP Alias라고 한다. 첫번째 Ethernet카드에 추가로 IP를 부여할 경우에는
           eth0:0, eth0:1 등으로 표기하여 부여하면 된다.
   2) 방법
     [root@www root]# ifconfig eth0:0 203.247.xxx.xxx
(6) 참고
   1) ifconfig명령으로 설정한 것은 시스템을 재부팅하면 그 정보가 사라진다. 따라서, 지속적으로
     유지하려면 /etc/rc.d/rc.local파일에 위의 설정을 입력해 놓거나 /etc/sysconfig/network-scr
     ipts/ifcfg-eth0파일에 설정해 놓아야 한다.
   2) ifconfig 명령으로 스니핑상태를 알 수 있다.
    ㄱ. 정상적인 상태
       [root@www /root]# ifconfig eth0
       eth0      Link encap:Ethernet  HWaddr 00:C1:26:03:65:08
                 inet addr:203.247.40.252  Bcast:203.247.40.255  Mask:255.255.255.0
                 UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                 RX packets:250100 errors:2 dropped:0 overruns:0 frame:0
                 TX packets:7404 errors:0 dropped:0 overruns:0 carrier:0
                 collisions:394 txqueuelen:100
                 Interrupt:5 Base address:0xf000
    ㄴ. 스니핑상태
       [root@www /root]# ifconfig eth0
       eth0      Link encap:Ethernet  HWaddr 00:C1:26:03:65:08
                 inet addr:203.247.40.252  Bcast:203.247.40.255  Mask:255.255.255.0
                 UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1  // PROMISC상태
                 RX packets:250100 errors:2 dropped:0 overruns:0 frame:0
                 TX packets:7404 errors:0 dropped:0 overruns:0 carrier:0
                 collisions:394 txqueuelen:100
                 Interrupt:5 Base address:0xf000

5.라우팅과 route 명령어
(1) 라우팅의 개요
   TCP/IP 프로토콜에서는 패킷들이 어디서부터 어디로 보내져야 하는지 결정이 되어야 하는데 이
  경로를 결정하는 것이 라우팅이다. 이러한 경로를 적어놓은 것을 라우팅 테이블이라고 한다.
(2) 라우팅의 종류
   1) 정적라우팅(Static Routing): 라우팅 경로를 시스템 관리자가 직접 적어주는 방식으로 일반적
                                 으로 사용하는 방법이다.
   2) 동적라우팅(Dynamic Routing)
    ㄱ. 설명: 라우팅 경로를 수동으로 작성하는 것이 아니라 라우팅 프로토콜을 사용해서 경로를
             동적으로 변화시키는 방법이다. 이것은 주로 라우터와 라우터 사이에 사용된다. 리눅스
             시스템을 라우터로 사용하지 않는다면 동적라우팅을 설정할 필요는 없다.
    ㄴ. 동적라우팅을 사용하는 프로그램의 종류
       a. routed: RIP(Routing Information  Protocol)을 사용하는 동적 라우팅 데몬프로그램이다.
       b. gated: OSPF(Open Short Path First)프로토콜을 사용하는 동적 라우팅 데몬프로그램이다.
(3) 라우팅관련 명령어: route
   1) 설명: route 명령어는 현재 사용하고 있는 리눅스 시스템의 라우팅 테이블이 어떻게 구성되어
           있는지 알 수 있다. 또한, 라우팅 정보를 추가,삭제할 수 있다.
   2) 사용법
     route [add/del] [-destination] [netmask 넷마스트값] [gw 게이트웨이값] [[dev] [NIC]]
      => 설명
      add/del : 라우팅 테이블에 추가(add)하거나 삭제(del)한다.
      -destination : 호스트주소(-host), 네트워크 주소(-net), default를 지정한다.
      netmask : 넷마스크값을 지정한다. 일반적으로 ifconfig명령으로 가능하므로 생략한다.
      gw : 호스트가 사용할 게이트웨이주소를 지정한다.
(4) 사용예
   1) 라우팅 테이블 확인
     [root@mybestone ~]# route
     Kernel IP routing table
     Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
     192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
     203.247.40.0    *               255.255.255.0   U     0      0        0 eth0
     127.0.0.0       *               255.0.0.0       U     0      0        0 lo
     default         203.247.40.1    0.0.0.0         UG    0      0        0 eth0
      => 현재 설정되어 있는 라우팅 테이블을 보여준다. netstat -r 명령과 같다.
        (항목설명)
          - Destination: 목적지 네트워크 주소를 나타낸다. default로 표시되는 것은 목적지 네트
                        워크로 등록되지 않은 다른 모든 네트워크 주소를 처리하는 곳이다. 네트워
                        크 주소는 IP주소할당법을 따른다. 시스템의 주소가 192.168.1.1이고 넷마
                        스크가 255.255.255.0이면 C클래스이므로 네트워크 주소는 192.168.1.0 이
                        된다.
          - Gateway: 목적지 주소로 보내기 위한 게이트웨이 주소를 가리킨다. 보통 목적지가 자신
                    의 네트워크 인터페이스와 직접 연결되어 있는 것이면 '*'로 표시되고 그러지
                    않으면 게이트웨이의 IP주소가 입력된다.
          - Genmask: 목적지의 네트워크 주소를 알아내기 위한 넷마스크이다. IP주소에 Netmask를
                    AND연산자로 계산하면 목적지의 네트워크 주소를 알 수 있다.
          - Flags: 목적지 네트워크와의 연결 상태를 보여준다. 상태로 표시되는 기호는 다음과 같
                  다.
            U: 인터페이스가 사용되고 있음을 나타낸다.
            G: 라우트가 게이트웨이로 사용되고 있음을 나타낸다.
            H: 오직 단독 호스트만이 라우트를 거쳐서 접근할 수 있다. 이러한 경우의 루프백 엔트
              리는 127.0.0.1이 된다.
            D: 테이블 엔트리가 설정된 경우, ICMP 리다이렉트 메시지로 운영된다.
            M: 테이블 엔트리가 설정된 경우, ICMP 리다이렉트 메시지에 의해 수정되고 있음을 나타
              낸다.
          - Metric: 목적지 네트워크와의 거리(Hop count)를 나타낸다. 직접 연결되어 있으면 0이고
                   라우터를 하나 거칠때마다 1씩 증가한다.
          - Ref/Use: 다른 라우터가 목적지로 가기 위해 참조한 횟수와 사용한 횟수를 나타낸다.
          - Iface: 목적지 네트워크와 연결된 인터페이스를 가리킨다.
   2) 라우팅 정보 삭제
     route del -net [IP_Address] netmask [netmask값] dev [Net_interface]
      예) route del -net 192.168.3.0 netmask 255.255.255.0
   3) 라우팅 정보 추가
     route add -net [IP_Address] netmask [netmask값] dev [Net_interface]
      예) route add -net 192.168.3.128 netmask 255.255.255.192 dev eth0
   4) 기본 게이트웨이 삭제
     route del default gw [IP_Address] dev [Net_interface]
      예) route del default gw 192.168.3.1
   5) 기본 게이트웨이 추가
     route add default gw [IP_Address] dev [Net_interface]
      예) route add default gw 192.168.3.254 eth0

(주의) route명령도 시스템이 재부팅되면 그 정보는 모두 사라진다. 따라서 /etc/sysconfig/network
       와 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 직접수정해야 한다.

6. netstat
(1) 개요 : 네트워크의 연결 상태를 확인하는 명령
(2) 사용법
    netstat [option] [address family options]
(3) option
   -a : 연결된 모든 소켓을 출력
   -n : 기호화된 호스트나 포트이름, 유저이름 대신에 숫자로 표시한다. 예를 들면 www은 80으로
       표기한다.
   -p : 소켓에 대한 PID/프로그램을 출력
   -r : 라우팅 테이블을 출력
   -i : 인터페이스 테이블을 출력
   -s : SNMP(Simple Network Managemanet Protocol)와 같은 네트워크 통계를 출력
   -c : 계속되는 리스트를 출력
   -t : tcp를 이용하여 접속한 리스트를 출력한다.
   -u : udp를 이용하여 접속한 리스트를 출력한다.
(4)address family options
   1) 형태 : --protocol (inet, unix, ipx, ax25등)
   2) 사용법
      netstat --inet
(5)사용예
   1) netstat -anp
      => 연결된 모든 소켓의 PID및 프로그램을 출력하되 호스트, 포트이름등을 숫자로 출력한다.
   2) netstat -r
      => 라우팅 테이블에 대한 정보를 출력한다. route 명령의 결과와 유사하다.
   3) netstat -t
      => tcp로 접속한 리스트를 출력한다.
   4) netstat -inet -p
      => 인터넷으로 접속한 상태를 보여주고 프로그램과 PID를 출력한다.
(6) netstat명령의 결과에서 state부분에 나타나는 연결상태
   LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
   SYS-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
   SYN_RECEIVED : 서버의 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만,
                 아직 클라이언트에게 확인 메시지는 받지 않는 상태
   ESTABLISHED : 3Way-Handshaking이 완료된 후 서로 연결된 상태
   FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청
                                     하고 회신을 받아 종료하는 과정의 상태
   CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
   TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그멘트 위해 당분간 소켓을 열어놓은
              상태
   CLOSED : 완전히 종료된 상태

7. traceroute
(1) 개요 : 특정 호스트 또는 연결된 노드를 알아보는 명령어로 특히 라우팅에 어떤 장애가 있을
           경우 그 위치를 파악할 수 있다. 윈도우계열의 tracert 명령과 유사하다. 루트권한자만
           사용가능한 명령이다.
(2) 사용법
   traceroute [Host_name or IP_Address]
(3) 사용예
   [root@www root]# traceroute www.yahoo.co.kr
   traceroute to yahoo.co.kr (211.32.119.151), 30 hops max, 38 byte packets
    1  203.247.40.1 (203.247.40.1)  1.692 ms  1.688 ms  1.663 ms
    2  203.247.37.2 (203.247.37.2)  0.656 ms  0.493 ms  0.456 ms
    3  yahoo.co.kr (211.32.119.151)  0.593 ms  0.854 ms  0.592 ms
     => 각 3개의 TTL값을 전달하여 시간을 보여준다.
(4) 참고
   1) traceroute 동작원리
    ㄱ. 1.1.1.1에서 목적지 10.10.10.10에 대한 TTL=1인 ICMP echo request를 생성하고 전달한다.
    ㄴ. 첫번째 ip네트워크장비가 TTL을 1로 감소시키고 TTL=0이 되므로 TTL이 모자라 더이상 packet
       전달할 수 없다는 ICMP time exceed를 1.1.1.1에게 전달하여 delay를 알아낸다.
    ㄷ. 1.1.1.1에서는 TTL=2인 ICMP echo request를 보낸다. 목적지까지 가는 경로상의 두번째 장비
       가 ICMP time exceed를 발생시키고 1.1.1.1에서는 이것으로 두번째 장비까지의 delay를 알아
       낸다.
    ㄹ. 이 같은 방법을 연속적으로 하여 해당 목적지까지 계속 보낸다.
   2) traceroute time out : *
    ㄱ. 종종 목적지 중간경로에 있는 장비에서 timeout현상(*로 표기됨)이 발생하는데 이것이 sourc
       e와 destination간의 네트웍상태를 정확히 나타내는 것은 아니다.
    ㄴ. 몇몇 IP네트워크 장비에서 ICMP packet이 아닌 다른 일반적인 packet에 보다 많은 시간을
       할애하도록 설계된 경우가 있는데, 해당 IP네트워크장비가 매우 바쁠경우에 TTL=0인 packet에
       대해서 ICMP time exceed등을 생성하고 전달하는 작업을 하지 않는 경우가 많다.
    ㄷ. 다른 경우는 중간경로에 있는 IP네트워크 장비가 아예 ICMP echo reply 혹은 ICMP time exce
       ed를 발생하지 않는 경우인데 주로 이러한 장비들은 Firewall인 경우가 많다. 그러나 Firewal
       l이라고 해서 ICMP echo reply, ICMP time exceed를 생성하지 않는 것이 아니며, 관리자의 설
       정에 따라 좌우된다.
    ㄹ. *의 결과는 traceroute수행시 중간경로상의 timeout현상에 대해서는 무시해도 좋으며, 최종
       목적지와 ping상태가 좋은지를 파악하는 것이 보다 중요하다.

8. hostname
(1) 개요 : 호스트네임을 화면에 출력한다. 명령어는 /bin/hostname에 있다.
(2) 사용법
   1) hostname 출력
     hostname [option]
      *option
       -v : 호스트네임을 출력한다.
       -d : DNS 도메인 네임을 출력한다.
           예)eles.co.kr로 등록했으면 eles.co.kr로 값이 나타난다.
       -f : 완전한 호스트네임(FQDN)을 출력한다.
           예)www.eles.co.kr
       -a : 호스트 네임에 대한 Alias이름을 출력한다.
       -i : 호스트 네임에 대한 IP주소를 출력한다.
   2) hostname 바꾸기
    예) hostname new_hostname
(3) 사용예
   1) [posein@www posein]$ hostname
      www
   2) [posein@www posein]$ hostname -i
      203.247.xxx.xxx
(4) 참고
   1) 설명: hostname 명령어를 이용하여 hostname을 변경한 경우 재부팅을 하면 변경전의 값으로 돌
           아간다. 그러므로, 완전한 변경을 하려면 다음과 같은 절차를 거쳐야 한다.
   2) 방법
    ㄱ. /etc/sysconfig/network 파일에서 'HOSTNAME'이라는 항목의 값을 변경한다.
    ㄴ. /etc/rc.d/init.d/network restart하거나 재부팅한다.

9. host
(1) 개요 : 원격의 호스트에 대한 정보를 출력
(2) 사용법
   host [option] 호스트명
(3) option
   -a: -a: 원격호스트에 모든정보(A, MX, NS 등)를 보여준다.
   -v: 좀 더 자세히 출력한다.
(4) 사용예
   1) [root@www root]# host kr.yahoo.com
        => 기본 IP주소에 대한 정보를 보여준다.
   2) [root@www root]# host -a daum.net
        => 모든 정보를 보여준다.

10. nslookup
(1) 개요 : DNS를 조회하는 명령이다. 바로 값을 DNS서버를 조회할 수도 있고, 여러 도메인을
           조회할 경우에는 대화형으로 조회할 수도 있다.
(2) 사용법
   nslookup [option] [hostname]
(3) option
   -type=mx : mx설정관련 부분을 출력한다.
(4) 사용예
   1) nslookup => 현재서버의 DNS이름과 IP를 출력하고, '>'와 함께 대화형모드로 접속한다.
   2) nslookup yahoo.co.kr => 현재서버의 DNS이름과 IP출력과 함께 yahoo.co.kr의 사이트의 정보도
                            함께 출력한다.
   3) nslookup -type=mx yahoo.co.kr => yahoo.co.kr의 mx(메일설정관련)에 대한 정보도 출력한다.
   4) 대화형모드의 사용 : 아무 옵션이나 도메인 없이 그냥 nslookup이라는 명령만 내리면 '>'와
                         함께 대화형 모드로 접속한다. 여기에서는 여러 도메인의 정보를 조회할
                         경우에 편리하다. 조회후에는 exit를 치면 셀프롬프트상태로 빠져나온다.
    ㄱ. > server yahoo.co.kr => 대화형모드 접속후에는 'server'라는 입력한 후 도메인네임을 적
                                 어주면 정보가 나타난다.
    ㄴ. > set type=mx
        > mybestone.com
        Server:         203.247.40.252
        Address:        203.247.40.252#53

        mybestone.com   mail exchanger = 10 mybestone.com.
         => 특정도메인의 메일서버를 확인한다.
    ㄷ. > set type=ns
        > mybestone.com
        Server:         203.247.40.252
        Address:        203.247.40.252#53

        mybestone.com   nameserver = ns.mybestone.com.
         => 특정도메인의 네임서버를 확인한다.
    ㄹ. > exit
         => nslookup 대화형모드를 중단한다. 

11. dig
(1) 설명: 도메인명(FQDN:Fully Qualified Domain Name)으로 정보를 알아볼 수 있는 명령이다.
(2) 사용법
   dig 도메인명 [type]
    => [type] 에는 MX, A, ANY 등 DNS 서버설정에 사용하는 값을 지정할 수 있다.
(3) 사용예
   1) [posein@www posein]$ dig www.daum.net

      ; <<>> DiG 9.2.1 <<>> www.daum.net
      ;; global options:  printcmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47916
      ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 2, ADDITIONAL: 0

      ;; QUESTION SECTION:
      ;www.daum.net.                  IN      A

      ;; ANSWER SECTION:
      www.daum.net.           86400   IN      A       211.233.28.114
      www.daum.net.           86400   IN      A       211.233.28.115
      www.daum.net.           86400   IN      A       211.233.28.116
      www.daum.net.           86400   IN      A       211.32.117.21
      www.daum.net.           86400   IN      A       211.233.28.112
      www.daum.net.           86400   IN      A       211.233.28.113

      ;; AUTHORITY SECTION:
      daum.net.               86400   IN      NS      ns2.daum.net.
      daum.net.               86400   IN      NS      ns.daum.net.
  
      ;; Query time: 159 msec
      ;; SERVER: 203.247.40.252#53(203.247.40.252)
      ;; WHEN: Wed Jan 29 09:40:20 2003
      ;; MSG SIZE  rcvd: 161
   2) [posein@www posein]$ dig www.daum.net mx
        => 메일서버 세팅인 MX 설정관련 부분만 보여준다.

(참고) ARP(Address Resolution Protocol)
(1) 주소결정 프로토콜이라고 한다.
(2) 하드웨어주소(NIC 주소, MAC 주소라고도 함)를 IP주소(논리주소)와 연계시키기 위한 프로토콜.
(3) 48bit인 하드웨어 주소를 32bit인 IP주소와 매핑시킨다.
(4) 목적 호스트의 IP주소를 알고 있는데, 물리주소(MAC address)를 모르는 경우에 사용한다.

12. arp
(1) 개요 : ARP(Address Resolution Protocol)캐쉬를 설정하는 것으로 ARP캐쉬는 현재 접속되어
           있는 32비트 IP주소를 하드웨어주소(MAC address)로 바꾸어서 기억하는 곳이다. 이
           ARP캐쉬를 보면 현재 들어와 있는 호스트를 알아낼 수 있다.약 15분정도 쓰이지 않은
           MAC주소는 ARP캐쉬에서 제거된다.
(2) 사용법
   arp [option]
(3) option
   -a : ARP캐쉬에 기록되어 있는 것 중 특정한 호스트의 정보를 보여준다.
   -d : ARP캐쉬에서 해당 호스트를 제거한다.
   -n : 결과를 도메인 주소대신에 32bit IP주소로 출력한다.
(4) 사용예
   1) [root@www /root]# arp
      AddressHWtypeHWaddress    Flags Mask  Iface        Flags Mask            Iface
      cslee.hannam.ac.kr     ether   00:A0:C9:8E:8C:4C   C                     eth0
      192.168.0.3            ether   00:60:97:AA:FF:71   C                     eth1
      203.247.40.1           ether   00:E0:16:7C:63:8C   C                     eth0
   2) [root@www /root]# arp -n
      Address                 HWtype  HWaddress           Flags Mask            Iface
      203.247.40.164          ether   00:A0:C9:8E:8C:4C   C                     eth0
      192.168.0.3             ether   00:60:97:AA:FF:71   C                     eth1
      203.247.40.1            ether   00:E0:16:7C:63:8C   C                     eth0

13. 네트워크 설정관련 유틸리티
(1) 개요
  ifconfig, route, netstat, ping, traceroute 등은 리눅스를 포함한 모든 유닉스계열에서 공통적으
로 사용되는 명령어이다. linuxconf(레드햇리눅스 7.1 이전에 사용)는 리눅스에서만 실행되며,
netconfig는 레드햇리눅스에서 text(콘솔)모드에서 사용되고, netcfg와 netconf는 레드햇리눅스의
X-window에서 실행된다. 물론 netconf명령은 콘솔모드에서도 실행되지만 X-window만큼 원할하지 못
하다.
(2) 관련유틸리티
   1) netcofig
    ㄱ. 설명: 콘솔에서 손쉽게 IP주소, 넷마스크, 게이트웨이, 네임서버 주소를 입력할 수 있다.
             리눅스를 텍스트모드로 설치할 때 나타나는 설정유틸리티로 kudzu라는 데몬이 부팅시
             에 이용하는 유틸리티이기도 하다.
    ㄴ. 사용법
       netconfig [option] [Network_interface]
    ㄷ. option
       --device : 이더넷카드 디바이스명을 지정한다.
    ㄹ. 사용예
      a. [root@www root]# netconfig
          => 기본 eth0의 네트웍을 설정한다.
      b. [root@www root]# netconfig --device eth1
          => eth1의 네트웍을 설정한다.

   2) netconf : linuxconf에 포함되어 있는 모듈로 네트워크에 관련된 모든 설정을 할 수 있다.
               (레드햇 7.x버전이하만 가능하고 레드햇 8 버전 이후에서는 지원하지 않는다.)
   3) netcfg : X-window에서 지원하는 네트워크 유틸리티이다. 이 유틸리티를 사용하면
             /etc/sysconfig/network파일과 /etc/sysconfig/network-scripts/ifcfg-eth#파일에
             기록되고, 네임서버는 /etc/resolv.conf에 기록된다. (레드햇 7.x버전이하만 가능하고
             레드햇 8 이후버전에서는 지원하지 않는다.)
   4) redhat-config-network
    ㄱ. 설명: X-window인 GNOME 기반 네트워크 유틸리티로 레드햇 8 버전에서 지원한다. neat라고
             입력해도 된다.
    ㄴ. 사용법
       redhat-config-network
       neat
    ㄷ. 참고
       이 툴을 사용하면 /etc/sysconfig/networking이라는 디렉토리안에 설정과 관련된 디렉토리 및
      파일들이 생성된다. 또한 /etc/sysconfig/network-scripts 디렉토리안의 설정과 같은 파일들이
     /etc/sysconfig/networking/profiles 디렉토리안에 같이 생성된다.

14. 기타 네트워크관련 유틸리티
(1) mii-tool
   1) 설명: Media Independent Interface(MII) Tool의 약자로 보통 네트워크 인터페이스의 상태를
           체크하고 설정하는 유틸리티이다.
   2) 사용법
     mii-tool [option] [Network_interface]
   3) option
     -v : 상태정보를 더 자세히 보여준다. (--verbose)
     -r : 자동인식을 위해 재시작한다. (--restart)
     -F : 강제로 설정한다. (--force)
   4) 사용예
    ㄱ. [root@www root]# mii-tool
        eth0: autonegotiation failed, link ok
        eth1: negotiated 100baseTx-FD, link ok
         => 현재 설정된 이더넷카드의 정보를 보여준다.
    ㄴ. [root@www root]# mii-tool -v
        eth0: autonegotiation failed, link ok
          product info: vendor 00:00:00, model 0 rev 0
          basic mode:   autonegotiation enabled
          basic status: autonegotiation complete, link ok
          capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
          advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
        eth1: negotiated 100baseTx-FD, link ok
          product info: vendor 00:00:00, model 0 rev 0
          basic mode:   autonegotiation enabled
          basic status: autonegotiation complete, link ok
          capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
          advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
          link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
           => 이더넷카드의 정보를 좀 더 자세히 보여준다.
    ㄷ. [root@www root]# mii-tool -v --force 100baseTx-FD eth1
          => 자동인식한 설정을 없애고, 강제적으로 설정을 한다.
    ㄹ. [root@www root]# mii-tool -r
          => 자동으로 인식하도록 한다.
(2) mtr
   1) 설명: 네트워크 진단 도구로 traceroute 명령과 유사하며 각각의 라우터에 패킷을 보내 확인
           한다.
   2) 사용법
     mtr 도메인명
   3) 사용예
     mtr www.yahoo.co.kr

출처 : 대전국제IT교육센터 정성재 강사

 

1. 리눅스 네트워크의 개요
(1) 개요: 리눅스에서 네트워크 서비스를 사용하려면 가장 먼저 네트워크 하드웨어를 설치해야 하고
          다음으로 네트워크 프로토콜, 네트워크 서비스 프로그램 순으로 설치해야 한다.
(2) 순서
   1) 네트워크 하드웨어의 설치: Ethernet Card나 모뎀, 시리얼/패러럴 케이블 등의 설치가 해당
                               된다.
   2) 네트워크 프로토콜의 설치: TCP/IP 프로토콜이나 SLIP, PPP등을 설치해야 한다. 현재 배포판
                               리눅스에서는 이러한 프로토콜이 기본적으로 제공되므로 따로 설치
                               할 필요는 없다.
   3) 네트워크 서비스 프로그램의 설치: 실제 사용할 네트워크 서비스 프로그램을 설치한다. 웹서비
                                      스를 위한 웹서버나 메일서버등이 이에 해당된다.

2. 네트워크 하드웨어 설치
(1) 리눅스에서 지원하는 네트워크 하드웨어
   1) 설명: 리눅스는 다양한 네트워크 하드웨어를 지원한다. 일반 이더넷카드, 모뎀이외에 ISDN,
           AX.25, ATM등도 지원한다.
   2) 대표적인 네트워크 하드웨어
    ㄱ. lo : 로컬 루프백(Local loop back) 인터페이스를 가리킨다. 물리적으로 존재하는 인터페이
            스가 아니라 가상으로 만들어진 것으로 네트워크 카드의 유무와 상관없이 항상 컴퓨터
            자신을 가리키며 IP는 127.0.0.1을 갖는다. 리눅스는 자기자신 IP에게 PING이 안되므로
            자신에게 PING 테스트등 네트워크 디버깅을 할 때 쓰인다.
    ㄴ. ethx: 일반적으로 사용하는 이더넷카드의 인터페이스를 나타낸다. 랜카드는 여러장을 동시에
             장착할 수 있으며 그것은 각각 번호로 구분한다. 즉 첫번째 랜카드는 eth0, 두번째 랜
             카드는 eth1 등이 된다.
    ㄷ. dlx: D-Link DE-600 포켓 어댑터 시리즈의 어댑터 인터페이스이다. 이것은 패러럴 포트를
            통해 구동되는 DE-600에서만 사용된다.
    ㄹ. slx: SLIP 인터페이스를 나타낸다.
    ㅁ. pppx: PPP인터페이스를 나타낸다. 가정에서 사용하는 모뎀으로 네트워크를 사용할 때 사용
            하는 인터페이스이다.
    ㅂ. plipx: 패러럴 케이블을 사용하는 패러럴 라인 인터페이스를 나타낸다.
(2) 이더넷(Ethernet Card) 설치하기
   1) 설명: 현재 나오는 리눅스에서는 대부분의 PCI 랜카드는 자동으로 인식하여 설치해주기 때문
           에 별도의 설정이 필요가 없다. 구형 ISA 랜카드인 경우에는 자동으로 인식이 안 될수도
           있다. 이 경우에는 관련 모듈을 추가하여 올려줘야 한다.
   2) 사용예: ne2000호환 ISA방식의 LAN Card설치하기
    ㄱ. 시스템의 하드웨어적 설정 : 마더보드의 CMOS에서 "PNP OS Installed : NO"로 설정한다.
                                   그리고, 사용하고자 하는 IRQ관련부분을 ISA로 놓는다.
    ㄴ. LAN Card의 PNP기능 제거
      점퍼로 PNP 기능을 제거할 수 있는 경우 제거하고, 점퍼가 없는 경우에는 프로그램으로 제거해
     야 한다. NE2000관련된 소프트웨어가 몇가지 되므로 알맞는 프로그램을 다운받는다. 도스용 부
     팅디스켓을 만들어 부팅디스켓에 넣은 뒤 PNP기능을 제거하고, 사용하지 않는 IO 어드레스와
     IRQ로 세팅을 한다. 메이커 계열인 Realtek 8019는 "rset8019.exe"를 사용하면 되고, Intel
     EthernetExpress Pro/10 ISA는 "e10disk.exe"를 사용하면 된다. 참고로 리눅스에서 빈 IO 어드
     레스와 IRQ의 확인은 각각 "/proc/ioports"와 "/proc/interrupts"이다.
    ㄷ. 모듈올린다.
      a. 첫번째 방법 : modprobe 명령이용
         modprobe ne io=0x300 irq=3 => io값과 irq값은 시스템에 따라 달라질 수 있다.
      b. 두번째 방법 : /etc/modules.conf 이용하여 다음과 같이 삽입
        alias eth0 ne
        options ne io=0x300 irq=3
    ㄹ. 해당 ip를 부여한다.
   (참고)/etc/rc.d/rc.local파일이용하는 법 : 맨 마지막 부분에 다음과 같이 삽입한다.
      modprobe ne io=0x300 irq=3
      ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
      route add -net 192.168.0.0 netmask 255.255.255.0 eth0
      route add default gw 192.168.0.1 eth0

출처 : 대전국제IT교육센터 정성재 강사

 

1. 프로토콜(Protocol)이란?
사람은 언어를 사용한다. 한국사람은 한국어를 사용하고 미국사람은 영어를 사용한다. 미리 정해진
특별한 규칙에 의해 서로 의사소통을 한다. 프토토콜이란 바로 컴퓨터간의 통신을 위해 미리 정해진
특별한 규칙이자 규약을 말한다.

2. TCP/IP란?
(1) 개요 : TCP/IP는 컴퓨터의 기종에 관계없이 정보교환이 가능케 해주는 것으로 인터넷에서 정보
           전송을 위해 사용하는 프로토콜(통신규약)이다. TCP(Transmission Control Protocol)와
           IP(Internet Protocol)라는 두개의 프로토콜의 이름을 따서 만든 것이다. 인터넷에서
           사용하는 대부분의 통신은 이 두개의 프로토콜을 사용하여 서로 정보를 교환한다. 그러나
           인터넷에서 사용하는 프로토콜은 TCP/IP만 사용하는 것은 아니며, 다른 프로토콜도 사용
           한다.
(2) TCP와 IP 프로토콜의 역할
   1) TCP프로토콜
     ㄱ. IP프로토콜에 의해서 만들어진 패킷들의 전송 흐름 부분을 담당한다.
     ㄴ. 패킷이 목적지 주소에 올바른 순서로 도달하도록 제어한다.
     ㄷ. 패킷이 중간에 유실되지 않도록 한다.
   2) IP프로토콜
     ㄱ. 보내고자 하는 자료를 패킷으로 쪼갠다.
     ㄴ. 목적지 주소를 지정한다.
     ㄷ. 쪼개진 패킷을 목적지 주소로 운반한다.
(3) TCP/IP 프로토콜과 OSI 7 레이어 구조 비교
   

TCP/IP 프로토콜 구조 OSI 7 레이어 구조
APPLICATION APPLICATION
PRESENTATION
SESSION
TRANSPORT TRANSPORT
INTERNET NETWORK
NETWORK INTERFACE DATA LINK
PHYSICAL


(4) TCP/IP 프로토콜 계층설명
   1) Application Layer(응용계층)
    사용자 응용 프로그램으로부터 요청을 받아들여서 이를 적절한 메시지로 변환하고 하위 계층인
   Transport Layer로 전달한다. 이 계층에서 지원하는 프로토콜에는 FTP, NFS, POP, SMTP, TELNET,
   SNMP, DNS, HTTP, NNTP(뉴스송수신) 등이 있다.
   2) Transport Layer(트랜스포트 계층)
    ㄱ. 개요 : 이 계층의 역할은 Application Layer로 부터 받은 데이터를 세그먼트(Segment)형태로
             만들어 네트워크를 통해 상대방까지 전달하는 역할을 한다. TCP와 UDP 두가지 프로토콜
             이 제공된다.
    ㄴ. TCP(Transmission Control Protocol)
      연결지향(Connection Oriented)전송 프로토콜로 세그먼트가 상대측까지 제대로 전달되었는지
     응답(Ack)을 주고 받음으로서 점검한다. 즉 TCP는 IP에 의해 전달되는 패킷의 오류를 검사하고
     재전송을 요구하는 등의 보다 정교한 제어를 담당한다. TCP는 패킷을 전송할 두 지점을 네트워
     크상에 있는 최단 경로로 찾아서 1:1로 직접 연결한 뒤에 패킷을 주고 받기 때문에 전송과 오류
     수정에 있어 신뢰도가 높다. 두 지점을 직접 제어하기 때문에 다른 프로토콜에 비해 상대적으로
     많은 전송 시간이 필요하다. 그러나 안전성과 신뢰성이 뛰어나 사용자 데이터 전송, 대용량 전
     송에 이용된다.
    ㄷ. UDP(User Datagram Protocol)
      비연결(Connectionless)전송 프로토콜로 세그먼트를 보내기만하고 Ack를 주고 받지 않는다.
     따라서 제대로 전달되었는지 확인하지 않는 특성을 갖고 있고, 오류 수정을 하지 않는다. 오류
     수정 등의 기능은 없지만 TCP에 비해 속도가 빠르며, 직접 연결에 따른 네트워크 부하를 줄일
     수 있다. 보통 시스템 내부 메시지 전달과 데이터 전달, 소규모 데이터 전송에 이용된다.
   3) Internet Layer(인터넷 계층)
    ㄱ. 개요 : Transport계층에서 받은 패킷을 목적지까지 효율적으로 전달하는 역할을 한다. 패킷
              이 목적지에 제대로 도착되었는지, 데이터의 손상 여부에 대해서는 상위 계층에서 처
              리한다. 이 계층에 해당하는 프로토콜은 ICMP, IP, ARP가 있다.
    ㄴ. ICMP(Internet Control Message Protocol)
       메시지에 대한 오류 보고와 이에 대한 피드백을 원래 호스트에 보고하는 역할을 수행한다.
      ICMP제어 메시지는 IP패킷의 형태로 전달된다.
    ㄷ. IP(Internet Protocol)
       데이터 세그먼트를 패킷으로 만들어 이를 목적지로 전달하는 역할을 수행한다. 그러나 전달
      여부를 보장하지는 않는다. 라우터(Router)는 Internet Layer에 원격 네트워크간 패킷의 전달
      을 담당하는 장치로서 최적 경로를 결정하고 결정된 경로로 패킷을 전달하는 역할을 한다.
    ㄷ. ARP(Address Resolusion Protocol) : 주소찾기 프로토콜
       IP 프로토콜은 하드웨어 주소(Physical 계층에서 MAC Address라고도 하며 Lan Card에 설정에
      있는 고유한 값)와 논리적인 할당에 의한 IP주소를 갖는다. 개별 호스트는 비록 독자의 IP주소
      를 할당받지만 실제의 데이터 전달은 하드웨어 주소를 알아야 한다. 따라서, 이 두 가지의 주
      소를 적절히 매칭시킬 필요가 있는데 동적으로 특정 프로토콜에 의해서 필요한 때마다 목적지
      호스트의 하드웨어 주소를 찾는 역할을 한다.
   4) Network Interface layer(네트워크 인터페이스 계층)
     이더넷 카드 등으로 연결된 물리적인 네트워크를 의미하며, 프레임을 물리적인 회선에 올리거나
    내려받는 역할을 한다. 즉, 보내는 쪽은 상위계층에서 받은 패킷을 프레임으로 만들어서 물리적
    인 회선에 올리게 되고, 받는 쪽은 필요한 데이터를 추출하여 조합한 프레임을 패킷으로 변환
    하여 상위계층으로 전달한다.

3. IP 주소
(1) 개요 : 사람으로 말하면 주민등록번호에 해당하는 것으로 하나의 IP주소는 전세계적으로
           고유하다. 고유한 만큼 IP주소는 완전히 개인것이 아니다. IP주소는 사용 후 해당
           ISP업체에 반납해야 한다.
(2) IP주소의 구성
   1) 구성
     IP주소 = 네트워크 부분주소 + 호스트 부분 주소
   2) 특징 : 32비트의 숫자로 8비트 4부분으로 구성되어 있으며, 각 부분은 .(dot)으로 구분한다.
            각 부분은 십진수 숫자로 0-255 까지의 숫자를 갖는다.

    (참고1) 8비트는 다음과 같다.
        2726252423222120
        으로 구성되어 있으므로 한 자리가 가질수 있는 최대의 수는 255이다.

   3) IP주소 예
     192.168.0.2
      => 이 주소 방식을 IPv4(IP version 4)라고 하며, 위 예에서 192.168.0.0 네트워크에 속해
        있는 주소라고 할 때, 192.168.0은 네트워크 ID를 나타내는 부분이고 마지막 2는 호스트
        ID를 나타낸다. IP주소의 첫번째 자리는 주소의 클래스를 구분하는 자리로, A,B,C,D,E 5개
        의 클래스가 있다. A,B,C 클래스는 일반적인 목적으로 사용되고, 나머지는 특수 목적으로
        사용된다.
(3) IP 클래스
   1) A 클래스(N.H.H.H)
     IP 주소 첫번째 자리의 1bit가 '0'이며, 네트워크 ID는 0~127까지 나타낼 수 있다. 속해있는
    IP주소는 0.0.0.0 ~ 127.255.255.255까지 가능하다. 이 중 0.0.0.0과 127.0.0.0는 각각 기본
    라우터와 루프백 네트워크 주소를 나타내는 특수용도로 사용되므로 실질적으로 사용 가능한
    네트워크 주소는 1 ~ 126 까지이다.
   2) B 클래스(N.N.H.H)
     IP 첫번째 자리의 2bit가 '10'이며 네트워크 주소는 128.0 ~ 191.255 까지 사용한다.
   3) C 클래스(N.N.N.H)
     IP주소 첫번째 자리의 3bit가 '110'이며, 네트워크 주소는 192.0.0 ~ 223.255.255 이다.
   4) D 클래스
     IP주소 첫번째 자리의 4bit가 '1110'이며, 다중 방송 통신(MULTICAST)용으로 사용된다.
   5) E 클래스
     연구용으로 사용된다. 보통 E 클래스를 D 클래스와 같이 묶어 D클래스라고 통칭한다.
   6) 참고
     특정한 네트워크 클래스라도 맨 처음과 마지막IP주소는 네트워크 인터페이스를 나타내는데 사용
    하지 않고 특수한 용도로 사용한다. 맨 마지막이 0인 네트워크 주소는 네트워크 전체를 나타내는
    네트워크 주소이고, 제일마지막이 255인 주소는 브로드캐스트 주소로 사용하기 때문에 네트워크
    인터페이스를 나타내는 주소로 사용하지 않는다.

(참고2) 클래스별 IP 네트워크 전체 범위
클래스 IP 네트워크 전체 범위
A 클래스 0.0.0.0 127.255.255.255
B 클래스 128.0.0.0 191.255.255.255
C 클래스 192.0.0.0 223.255.255.255
D 클래스 224.0.0.0 255.255.255.255


(4) 기타 특수한 IP
   1) 내부 IP : 직접 인터넷에 연결되지 않고 내부 네트워크를 구축할 경우에 사용하는 IP이다.
     -A 클래스(1개의 네트워크)      : 10.0.0.0 ~  10.255.255.255
     -B 클래스(16개의 네트워크)   : 172.16.0.0 ~ 172.31.255.255
     -C 클래스(256개의 네트워크) : 192.168.0.0 ~ 192.168.255.255
   2) 루프백 IP : 루프백네트워크라 하면 127.0.0.0 네트워크이다. 관련파일은 /etc/hosts이다.
     -A 클래스 : 127.0.0.0 ~ 127.255.255.255


4. 넷마스크(netmask)
(1) 개요 : 서브 넷마스크(sub netmask) 또는 줄여서 서브넷이라고 한다. 서브넷을 구성하는 이유는
           체계적인 네트워크의 구성과 트래픽장애를 제거하기 위해서이다.
(2) 네트워크주소와 브로드캐스트
   1) 네트워크주소
    ㄱ. 설명: 네트워크 주소는 서브 네트워크에 속한 모든 IP 호스트를 말할 때 사용한다. 일반적
             으로 서브 네트워크 주소는 최하위(맨위쪽) IP주소가 네트워크 주소이다.
    ㄴ. 클래스와 호스트의 갯수
     a. C클래스: 하나의 C클래스로 하나의 네트워크를 구성했을 경우, 네트워크 주소가 192.168.2.0
                이라고 표현하면 192.168.2.0부터 192.168.2.255까지의 모든 IP 호스트(256개)를
                말한다.
     b. B클래스: B클래스 네트워크일 경우에 172.16.0.0으로 표현하면 172.16.0.0부터 172.16.255.
                255까지의 모든 호스트를 말하면 호스트의 개수는 256*256인 65,536개이다.
     c. A클래스: A클래스 네트워크인 경우에 10.0.0.0으로 표현하면 10.0.0.0 부터 10.255.255.255
                까지의 모든 호스트를 말하며 갯수는 256*256*256인 16,777,216개의 호스트가 이에
                해당된다.
    ㄷ. 특징: 넷마스크값과 브로드캐스드값이 주어지면 네트워크주소는 자동으로 계산할 수 있다.
   2) 브로드캐스트
    ㄱ. 설명: 브로드캐스트는 넷마스크로 나누어진 지역 서브 네트워크의 모든 IP호스트가 듣는
             특별한 주소이다. 일반적 브로드캐스트 주소는 서브 네트워크의 최상위(맨뒤쪽)의 IP
             주소가 이에 해당된다.
    ㄴ. 특징: 넷마스크값과 네트워크 주소가 주어지면 브로드캐스트 주소는 자동으로 계산할 수
             있다.
   3) 구성예
     IP 주소          : 192.168.2.20
     넷마스크 주소    : 255.255.255.0
     네트워크 주소    : 192.168.2.0
     브로드캐스트주소 : 192.168.2.255
(3) 서브넷마스크와 네트워크 계산
   1) 각 클래스별 IP주소를 기준으로 넷마스크, 브로드캐스트, 네트워크주소 분석
    ㄱ. IP주소
       - A클래스인 경우: 10.2.1.3
       - B클래스인 경우: 172.16.1.3
       - C클래스인 경우: 192.168.1.3
    ㄴ. 넷마스크
       - 하나의 A클래스 네트워크일 경우: 255.0.0.0
       - 하나의 B클래스 네트워크일 경우: 255.255.0.0
       - 하나의 C클래스 네트워크일 경우: 255.255.255.0
    ㄷ. 네트워크주소
       - 하나의 A클래스 네트워크일 경우: 10.0.0.0
       - 하나의 B클래스 네트워크일 경우: 172.16.0.0
       - 하나의 C클래스 네트워크일 경우: 192.168.1.0
    ㄹ. 브로드캐스트 주소
       - 하나의 A클래스 네트워크일 경우: 10.255.255.255
       - 하나의 B클래스 네트워크일 경우: 172.16.255.255
       - 하나의 C클래스 네트워크일 경우: 192.168.1.255

   2) 하나의 C클래스의 넷마스크값이 255.255.255.0인 경우
192.168.3.0
네트워크주소
192.168.3.1
192.168.3.2
.
.
.
192.168.3.253
192.168.3.254
실제 네트워크 인터페이스에 사용할 수 있는 IP주소
(호스트 부분의 IP주소를 의미)로 총
254개를 사용할 수 있다.
192.168.3.255
브로드캐스트


   3) 하나의 C클래스를 두 개의 서브넷으로 나눌 경우(서브넷마스크: 255.255.255.128)
192.168.3.0
네트워크주소
서브넷 1
(128개)
총256개
사용가능한 IP호스트는
총 252개이다.
192.168.3.1
192.168.3.2
.
.
.
192.168.3.125
192.168.3.126
사용가능한
IP호스트
(126개)
192.168.3.127
브로드캐스트주소
192.168.3.128
네트워크주소
서브넷 2
(128개)
192.168.3.129
192.168.3.130
.
.
.
192.168.3.253
192.168.3.254
사용가능한
IP호스트
(126개)
192.168.3.255
브로드캐스트


   4) 하나의 C클래스를 네개의 서브넷으로 나눌 경우(서브 넷마스크: 255.255.255.192)
192.168.3.0
네트워크주소
서브넷1
(64개)
총 256개
사용 가능한IP 호스트는
총 248개
192.168.3.1
192.168.3.2
.
.
.
192.168.3.61
192.168.3.62
사용가능한
IP 호스트
(62개)
192.168.3.63
브로드캐스트주소
192.168.3.64
네트워크주소
서브넷2
(64개)
192.168.3.65
192.168.3.66
.
.
.
192.168.3.125
192.168.3.126
사용가능한
IP 호스트
(62개)
192.168.3.128
브로드캐스트주소
192.168.3.129
네트워크주소
서브넷3
(64개)
192.168.3.130
192.168.3.131
.
.
.
192.168.3.189
192.168.3.190
사용가능한
IP 호스트
(62개)
192.168.3.191
브로드캐스트주소
192.168.3.192
네트워크주소
서브넷1
(64개)
192.168.3.193
192.168.3.194
.
.
.
192.168.3.253
192.168.3.254
사용가능한
IP 호스트
(62개)
192.168.3.255
브로드캐스트주소



5. DNS
(1) 개요 : Domain Name System의 약어로 도메인 네임을 IP주소와 매칭시켜 클라이언트에게
          IP주소를 알려주는 역할을 하는 서버를 말한다. 처음 인터넷이 생겼을 때는 IP주소를
          사용해 통신을 했는데, IP주소는 기억하기 어려웠다. 그래서, 등장한 것이 영문이름이고
          이것을 관리하는것이 DNS 서버이다.
(2) DNS의 역사
   Domain Name System의 역사는 인터넷에서 컴퓨터에 이름 대 주소 매핑 서비스를 제공하기 위해
  개발되었다. 1987년 DNS가 소개되기 전까지는 주로 hosts파일이라는 정적 공유 파일을 사용하여
  친숙한 컴퓨터의 이름을 IP주소에 매핑하는 방법을 사용하였다. 초기 인터넷은 규모가 작았기
  때문에 중앙에서 관리하는 한 파일을 사용해서 매핑하는 데 충분했으며 이 파일은 FTP를 이용하여
  인터넷에 연결된 곳에 게시되고 다운로드되었다. 각 인터넷 사이트는 주기적으로 이 Hosts파일
  복사본을 업데이트했고 업데이트된 Hosts파일의 버전이 게시되어 네트워크 변경 내용을 반영하였다.
  인터넷을 사용하는 컴퓨터의 수가 증가함에 따라 한 기관이 중앙에서 모든 인터넷 호스트를 단일
  Hosts파일에서 관리하는 것이 불가능해졌다. 또한 파일이 점차 커지면서 모든 사이트에 업데이트된
  최신 상태의 파일을 유지하고 배포하기가 어려워졌다. 그래서, 등장한 것이 Domain Name System
  이다.
(3) Domain Name의 이해
   1) IP주소 : 컴퓨터가 이해하는 숫자로된 컴퓨터의 주소를 말한다.
   .   예) 168.126.63.1
   2) Domain Name : 인간이 이해하는 영문으로 된 주소를 말한다.
       예) www.yahoo.com
   3) DNS 서비스 : IP주소를 도메인네임과 상호변경시켜주는 서비스를 말한다.
(4) Domain Name의 구성 : 마침표(.)로 각각의 레이블을 구분하며 각 레이블은 2개 이상이 존재하며
                         여러단계로 구분되어 진다.
   1) 최상위 도메인 : 이름을 사용하는 국가/지역 또는 조직의 종류를 나타내는 데 사용된다.
     예) .com, .kr 등
   2) 둘째 수준 도메인 : 인터넷에서 사용하기 위해 개인 또는 조직에 등록되는 이름.
     예) yahoo.com, kisa.or.kr 등
   3) 하위 도메인 : 등록된 둘째 수준 도메인이름에서 파생된 추가 이름으로 조직이 만들 수 있는
                   이름이다. 즉, 조직의 DNS이름 트리를 확장하여 부서나 지역으로 분리할 때 추가
                   하는 이름이 포함된다.
     예)kr.yahoo.com등
   4) 호스트 또는 리소스 이름 : 호스트 또는 리소스를 식별하기 위한 이름으로 보통 컴퓨터의
                               이름이 등록된다. 사용용도에 따라 www, ftp, home등이 사용된다.
    예)www.yahoo.com등
(5) DNS가 제공하는 기능
   1) 도메인 네임과 자원레코드에 대한 정보를 저장하고 있다. 트리구조화된 네임존과 네임과
     관련된 정보를 저장하고 있다. 개념적으로 도메인트리의 각 노드와 HOST는 한세트의 정보에
     이름을 부여하고, 질의작업은 특정세트로부터 고유의 정보유형을 추출한다. 인터넷은 도메인
     네임을 사용하여 호스트들을 식별하는데, 주소자원에 대한 질의를 답변하기 위해 관련 정보들을
     담고 있다.
   2) 네임서버의 기능을 제공한다.
   3) 클라이언트 요청에 응답하여 네임 서버들로부터 정보를 추출하는 기능을 제공한다.
(6) DNS의 설정
   DNS는 도메인과 IP주소를 매칭시키는 역할을 하므로, 어느 DNS주소를 설정해도 상관이 없다. 특정
  DNS가 다운됐을 경우를 대비해 두세곳을 설정해두는것이 좋다. PING테스트를 해서 속도가 빠른
  곳으로 설정한다. 일반적인 경우라면 DNS는 자신이 속한 네트워크에 있는 것으로 설정하는 것이
  좋다. 로컬네트워크가 대체적으로 외부망보다 빠르기 때문이다. 물론 현재 리눅스서버로 DNS서버를
  구축했을 경우에는 자기 자신의 IP가 Name Server의 역할을 한다.
(7) 관련파일 : 현재 리눅스시스템에서 DNS서버의 설정확인은 /etc/resolv.conf에서 확인한다.
   예) /etc/resolv.conf
      nameserver    168.126.63.1                             //한국통신 DNS
      nameserver    210.94.0.7                               //하나로통신 DNS

6. PPP설정과 사용
(1) PPP(Point-to-Point Protocol)
   1) 설명: 모뎀을 이용하여 인터넷 전용선에 연결된 것처럼 인터넷을 사용하는 프로토콜을 말한다.
           PPP의 목적은 호스트가 전화접속을 이용하여 네트워크, 즉 네트워크나 인터넷에 접속할
           수 있도록 하는 것이다. TCP/IP에 대한 초기의 라인프로토콜은 SLIP(Serial Line Inter
           net Protocol)이었다.
   2) 모뎀설정: modeltool & minicom
    ㄱ. 연결: PPP연결은 /usr/sbin/pppd와 /usr/sbin/chat을 사용해서 이루어진다.
       a. pppd: 명령 자체로 모뎀을 제어할 수 있지만, 실제 다이얼링이나 로그인을 할 수 없다.
       b. chat: 모뎀에 명령을 내리고, 필요한 로그인 정보를 제공한다.
   3) 리눅스에서 설정단계
    ㄱ. PPP지원을 커널에 컴파일해 넣기: Kernel에 PPP지원 추가, 재 컴파일
    ㄴ. 인터넷 서비스 업체에서 정보받기: 전화번호, 유동 IP, DNS IP, 비밀번호 및 인증프로토콜
                                        (PAP)
    ㄷ. 모뎀과 직렬포트설정: IRQ 설정
    ㄹ. DNS 설정
       - /etc/resolv.conf (DNS 지정)
       - /etc/host.conf
    ㅁ. /etc/ppp/options 파일은 pppd를 실행할 때 프롬프트에서 입력할 옵션을 대신 처리하도록
       하는데 사용한다.
        예) /dev/modem (모뎀 포트)
            crtscts (하드웨어 흐름제어방식인 RTS/CTS를 사용한다.)
            defaultroute (연결된 ISP의 router로 패킷을 전송한다.)
    ㅂ. kernel에서 모뎀과 직렬 포트의 IRQ 설정이 제대로 되어 있는지 확인한다.
   4) PPP관련 설정파일: 참고로 버전에 따라 존재하지 않을 수도 있다.
    ㄱ. /usr/sbin/ppp-on: PPP연결할 때 사용하는 스크립트
    ㄴ. /usr/sbin/ppp-off: PPP연결을 끊을 때 사용하는 스크립트
    ㄷ. /usr/ppp/ppp-on-dialer
(2) 리눅스의 PPP기반에서 사용하는 인증 프로토콜
   1) PAP(Password Authenication Protocol)
   2) CHAP(Challenge Handshake Authentication Protocol)

7. 주요서비스와 포트번호
(1) 개요 : Transport Layer는 Application Layer에 데이터를 전송하기 위해서 포트번호를 사용한
           다. 이러한 포트들을 사용하여 네트워크상의 다른 호스트와 동시에 세션을 지원할 수
           있게 된다. /etc/services파일에 각 네트워크 서비스와 일반적으로 그 서비스에 사용되는
           포트 번호를 지정하고 있다.
(2) 주요 서비스와 포트번호
   21    FTP       File Transfer Protocol
   23    Telnet
   25    SMTP      Simple Mail Transfer Protocol
   53    DNS       Domain Name System
   80    www       World Wide Web
   110   POP3      Post Office Protocol 3
   119   NNTP      Network News Transfer Protocol
   143   IMAP      Internet Mail Access Protocol
   161   SNMP      Simple Network Management Protocol

출처 : 대전국제IT교육센터 정성재 강사

 

1. LAN(Local Area Network)
(1) LAN이란?
   LAN은 하나의 사무실, 집과 같은 소규모의 한정된 지역에서 컴퓨터와 컴퓨터 사이에 데이터를
  주고 받을 수 있는 네트워크를 말한다.
(2) LAN의 형태
   1) 클라이언트/서버(Client/Server) 방식
     클라이언트/서버 방식은 네트워크를 일반적으로 사용하고 있는 PC를 클라이언트라고 하고, 네트
    워크를 감독하고 클라이언트의 요구사항을 처리하는 컴퓨터인 서버로 구분하여 사용하는 방식을
    말한다. 즉 네트워크에 연결된 컴퓨터들의 역할이 다르다. 이런 방식은 서버가 항상 네트워크를
    감시하고 관리하므로 신뢰성이 높은 편이다.
     그러나 아주 많은 클라이언트가 존재하면 서버에 무리가 가게 되어 성능이 떨어질 우려가 있으
    므로 이러한 경우에는 여러 대의 서버를 둘 수도 있다. 네트워크를 활용하기 위한 역할을 분담
    하는 것이 클라이언트/서버 방식의 특징이다.
   2) 피어 투 피어(Peer-to-Peer) 방식
     피어 투 피어 방식은 네트워크에 연결된 컴퓨터들이 모두 동등한 지위를 가진다. 모든 PC가
    서버/클라이언트의 구분이 없고 필요한 상황에 따라 클라이언트와 서버의 역할을 바꿔가며 수행
    을 한다.
(3) LAN 구성장비
   1) Ethernet
    ㄱ. 설명
       이더넷(Ethernet)은 근거리 컴퓨터들의 통신을 위해 사용되는 네트워크 매체의 일종이다. 이
      더넷 외에 일반 전화선 모뎀, ADSL 모뎀, CATV모뎀, ISDN모뎀등도 쓰인다. 이더넷카드는 Local
      Area Network를 연결할 때 주로 쓰이기 때문에 랜(LAN)카드라고 불리운다. 이더넷은 10Mbps와
      100Mbps가 주로 쓰이며 기가바이트급도 있다.
    ㄴ. 이더넷의 종류
       이더넷에는 먼저 속도로 분류하면 10Mbps급과 100Mbps급이 있지만, 현재 대부분은 10/100Mbps
      를 모두 지원하는 랜카드가 출시된다. 물론 100Mbps의 랜카드가 장착되어 있어도 허브등이 10M
      bps로 작동한다면 10Mbps로 작동한다. 버스 방식은 ISA 방식과 PCI방식이 있는 데 PCI는 32bit
      로 작동하고, ISA방식은 16bit로 작동하므로 PCI방식이 더 낫다. 또한 PCI방식의 랜카드인 경
      우에는 IRQ와 IO 주소를 하드웨어에서 자동으로 설정해주므로 설치도 쉽다. 유명한 벤더(Vend
      or)에는 3COM, INTEL, Realtek, 그리고 ISA방식으로 유명한 NE2000호환등이 있다.
   2) 케이블(Cable): 실제적으로 신호를 전송하게 되는 물리적인 전송매체이다. 이더넷을 연결하는
                    케이블에는 보통 BNC케이블과 UTP케이블 이 2가지가 주로 사용된다. 요즘은 거
                    의 UTP케이블만 사용된다.
    ㄱ. BNC케이블
       보통 동축케이블(Coaxial Cable)이라고 불리우는 BNC케이블은 가정에 들어오는 케이블TV의 선
      이나 안테나선을 생각하면 된다. 이 케이블은 UTP케이블에 비해 잡음에 매우 강하다. 그 이유
      는 안쪽의 중심 도체를 절연체로 감싸고 그 위에 다시 외부도체를 넣고 그것을 다시 외부 피복
      으로 감싸는 방식으로 케이블을 구성하였기 때문이다. 그 외의 장점으로는 대역폭(신호를 한번
      에 보낼 수 있는 크기 혹은 용량)이 넓어서 여러 채널을 동시에 수용할 수 있고 빠르게 전송할
      수 있다. 그러나 케이블을 여러 겹으로 제작하다보니 무거워지고 두께가 굵어져 가격이 비싸다.
       컴퓨터 네트워크 구축할 때도 BNC케이블의 구조를 보면 선 가운데에 굵은 구리선 하나가 있으
      며, 연결되는 컴퓨터는 하나의 선으로 계속 이어나간다. 잇는 과정에서는 T커넥터를 사용하며,
      선의 양쪽끝에는 터미네이터라는 장치도 연결해야 된다. BNC케이블은 UTP처럼 허브라는 장치없
      이 여러 대의 컴퓨터를 연결할 수는 있지만, 한 컴퓨터에 문제가 생기면 전체 네트워크에 영향
      을 받을 수가 있어서 그리 안전하지 못하다. 거리는 180m에서 500m정도까지 연결가능하다.
    ㄴ. UTP(Unshieled Twisted Pair)
       트위스티드 페어 케이블(Twisted Pair Cable)은 두 개의 선이 서로 꼬여진 형태로 만들어졌는
      데 그 이유는 전자신호가 변형되는 것을 줄이기 위해서이다. 이 케이블은 가격이 저렴하고 PC
      의 네트워크 구성에 적합하지만 잡음에 약하고 단독으로 연결할 때 약 100여미터밖에 전송할
      수 없다. 트위스트 페어 케이블에는 두가지 종류가 있는데 하나는 STP(Shielded Twisted Pair)
      와 UTP(Unshielded Twisted Pair)가 있다. STP는 안쪽의 꼬인선과 바깥쪽의 피복사이에 차폐물
      을 입힌 것을 말하고 UTP는 입히지 않는 것을 말한다. 일반적으로 사용하는 케이블은 UTP이다.
       UTP케이블은 전화선보다 약간 두껍게 피복된 피복선이다. 안에는 8개의 회선이 있으면 연결단
      자는 RJ45라 불리우며 전화선단자보다 약간 크다. 보통 허브라는 연결 매체를 통해 각 컴퓨터
      마나 하나의 선으로 연결되기 때문에 한 곳에 연결 문제가 발생하더라도 다른 컴퓨터는 전혀
      지장을 받지 않는다. 케이블에는 10Mbps인 Category3와 100Mbps인 Category5가 있는데, 요즘은
      대부분 Category5이다. 8개의 내부선은 연결 방법에 따라 배열은 약간 달리하는데 용도에 따른
      배열은 다음과 같다.
     

허브와 PC의연결(일반적인 연결방법) 흰주,주,흰녹,파,흰파,녹,흰갈,갈
PC대PC 2대의 연결, 허브와 허브 UPLINK로 연결 흰녹,녹,흰주,파,흰파,주,흰갈,갈


       위의 표에서 첫줄 배열이 100Mbps권장 배열이다. 8가닥중 실질적으로 쓰이는 것은 1,2,3,6번
      인 흰주, 주, 흰녹, 녹이다. 일반적인 연결은 양쪽 모두 표의 첫줄 배열대로 연결하면 되고,
      허브없이 케이블만으로 PC 2대를 연결할 경우에는 한쪽의 배열만 표의 아래줄처럼 하면 된다.
      배열을 모두 외우지 말고 일반적인 배열만 외우고, 실질적인 배열이 1,2,3,6번이므로 이것을
      다시 1,2,3,4로 할 경우에 1번과 3번, 2번과 4번의 위치를 바꾸면 표 아래줄의 배열이 나오게
      된다. UTP방식의 전달거리는 약 100M정도이다.
    ㄷ. 광 케이블(Optical Fiber Cable)
       광케이블은 매우 가는 유리섬유를 이용해 정보를 보낸다. 넓은 대역폭(3.3GHZ)를 갖고 전송속
      도도 매우 빠르고(1Gbps), 오류도 적다. 또한 빛을 이용해 정보를 보내기 때문에 전기적인 간
      섭을 받지 않는다. 머리카락 굵기만큼의 유리섬유를 이용하여 정보를 보내는 것으로 광섬유의
      한쪽 끝에는 레이저나 LED같은 광원이 위치하고 다른 한쪽에는 광탐지기가 위치한다. 케이블의
      크기가 상대적으로 작고 가볍지만, 설치시 고도의 기술이 요구된다.
   3) 허브(HUB)
     LAN에서 기본적으로 사용되는 것으로 네트워크 케이블을 하나로 집중시켜 주는 장비를 말한다.
    대부분 하나의 사무실에 네트워크 케이블을 하나로 모아서 외부와 연결시켜 줌으로써 배선을 간
    편하게 해주고 전송 중에 문제가 생기는 신호를 복원해 주며, 신호가 충돌되는 것을 검사하는 기
    능 등을 수행한다.
   4) 라우터
     라우터는 랜과 랜을 연결해주는 망 연동장치이다. 대개 외부로 연결되는 선로와 내부의 네트워크
    를 연결하여 인터넷이 가능하도록 해준다. 그러나 소규모의 망에서 사용하기에는 비용부담이 큰
    단점이 있어서, 집처럼 작은 네트워크에서는 소프트웨어적으로 작동하는 라우터를 많이 사용한다.
    소프트웨어 라우터는 네트워크에 연결된 컴퓨터 중 한대에 프로그램을 인스톨하여 외부망과 내부
    의 네트워크를 연결해준다.

2. WAN(Wide Area Network)
WAN은 먼 거리 네트워크와 통신하기 위한 기술을 말한다. LAN과 LAN을 상호 연결하기 위해 라우터들
이 데이터를 전송하고 수신하기 위한 네트워크를 구성하는데 이것을 WAN이라 한다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. 네트워크란?
네트워크란 간단히 설명하면 여러 대의 컴퓨터를 연결하여 정보를 서로 공유할 수 있도록 만든 체계
를 말한다. 집에 컴퓨터가 두 대가 있어서 자료를 공유하거나 또는 게임을 하기 위해서 서로 연결하
였다면 그것도 일종의 네트워크이다.

2. 네트워크를 사용하는 이유
(1) 자료를 손쉽게 얻거나 보내기 위해서 사용한다.
(2) 프린터나 스캐너같은 주변기기를 여러 대의 컴퓨터에서 공유하기 위해 사용한다.
(3) 인터넷 회선이 하나인 경우, 공유하여 여러 대의 컴퓨터가 인터넷을 이용하기 위해서 사용한다.
(4) 웹서비스와 메일서비스같은 여러 인터넷 서비스를 할 수 있다.
(5) 자신의 중요한 데이터를 다른 컴퓨터에 백업할 수 있기 때문에 데이터보관을 위해서도 사용한다.
(6) 인터넷에 연결되어 있는 경우 전자우편을 통해 전세계에 있는 사람들과 각종 문서나 자료를 손
    쉽게 주고 받을 수 있다.

3. 네트워크의 역사
네트워크의 역사는 인터넷의 역사와 직접적으로 연결된다. 인터넷도 처음엔 컴퓨터 두 대를 네트워
크로 구성하면서 시작했다. 처음 네트워크가 만들어진 것은 1960년대 후반 미국의 ARPA(The Advanced
Reseach Projects Agency)라는 기구이다. 미,소 냉전시대에 탄생된 ARPA는 소련이 세계 최초 인공위
성인 스프투니크를 발사하자 이에 자극을 받아 창설된 기구이다. ARPA는 전쟁이 일어나 도시가 파괴
되어도 두절되지 않는 통신망을 구축하는 연구를 하였다.
이 연구의 결과로 탄생한 것이 현재 인터넷의 모태가 된 ARPANET이다. 이 ARPANET이 일반연구소와
대학에 공개되면서 군사적인 목적보다는 연구목적으로 더 많이 사용하게 되었다. 그리고 1970년대
중반에 군사적인 목적의 네트워크와 일반 네트워크를 분리시킴으로써 자유로운 네트워크 구성의 토대
를 마련하게 되었다.
인터넷이라는 용어가 처음 나온 것은 1980년대 초반으로 이때부터 인터넷이 급격한 성장을 하기 시
작했다. 그러나, 그 때는 일반에 잘 알려지지 않았었고 주로 대학과 연구소의 학술망, 연구망들이 인
터넷을 구성하고 있었다.
1990년대가 되자 인터넷은 일반에 널리 공개되었고, 기업에서 관심을 가지기 시작해서, 인터넷을 사
용하는 인구가 폭발적으로 증가하였다. 1990년대 후반에는 다양한 인터넷서비스가 생겨났고 멀티미디
어를 더욱 빠르고 다양하게 전송할 수 있는 기술이 등장하였다.
현재 인터넷의 사용자는 계속 증가하여 전 세계적으로 약 15억의 이용자가 있으며, 국내에서 1000만
명에 육박하고 있다. 앞으로도 인터넷 사용자는 계속 증가할 것이고 그에 따른 요구 또한 다양해 질
것이므로 아직도 많은 발전 가능성을 열어놓고 있다.

4. 인터넷 서비스의 종류
(1) 개요: 인터넷에 관련된 서비스가 다양하지만 그 중 대표적인 몇가지에 대해서만 소개하겠다.
(2) 종류
   1) WWW(World Wide Web)
     가장 보편적으로 사용하는 인터넷 정보 제공 방식이다. 인터넷 익스플로어나 네스케이프같은
    웹브라우저를 이용하여 문자, 그림, 음성, 동영상 등 여러 형태의 정보를 검색할 수 있다. 인터
    넷 주소를 이용하여 각종 데이터를 하나의 통합된 문서 형태로 제공한다.
     WWW는 웹서버라는 컴퓨터에 정보를 저장해놓고, 외부에서 웹브라우저를 사용하여 정보를 요구
    하는 컴퓨터에 각종 정보를 제공한다. 웹브라우저가 정보를 요구하는 방식은 인터넷주소(URL:
    Uniform Resource Locators)를 불러내서 사용하는데, 일반적으로 사용하는
    http://www.yahoo.co.kr(야후코리아)같은 인터넷 주소를 의미한다.
   2) FTP(File Transfer Protocol)
     FTP란 파일을 서로 주고 받게 해주는 프로토콜을 말한다. FTP는 다른 컴퓨터에 저장되어 있는
    자료를 가장 빠르게 가져올 수 있는 방법중에 하나이다. FTP를 사용하면 다른 컴퓨터의 파일을
    자신의 컴퓨터로 그대로 복사할 수 있다.
     FTP를 사용하려면 먼저 FTP서버라 불리우는 FTP지원 사이트의 주소를 알아야 하고, FTP서버에
    접속하기 위한 FTP프로그램도 설치해야 한다. FTP사이트는 보통 일반인에게 공개되어 있고, 이
    러한 사이트는 익명이라는 의미의 anonymous 계정으로 로그인할 수 있다. 그러나, 사용자의 ID
    와 패스워드를 묻는 경우에는 모두 입력해야 접속할 수 있다.
   3) TELNET
     텔넷은 자신이 사용권한을 가지고 있다는 전제하에 다른 사람의 호스트 컴퓨터를 원격지에서
    접근하여 작업을 수행할 수 있도록 해주는 방법이다. 이 방법 역시 이용하려면 텔넷을 지원하는
    서버가 존재해야 하며, 텔넷접속을 위한 프로그램도 설치해야 한다.
   4) 전자우편
     인터넷을 통해 편지를 주고 받을 수 있는 것을 말한다. 서로의 전자우편주소(이름@회사주소,
   
posein@korea.com)를 알아야 가능하고 문자나 음성, 그림, 동영상 등 어떤 형태의 편지도 보낼
    수 있다.
     아웃룩 익스프레스나 넷스케이프 메신저 서비스 등으로 전자 우편을 보낼 수 있으며 전자우편
    은 전 세계 어느 곳이라도 보낼 수 있다.

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2022/01   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)