스터디 OT

 1. 스터디의 목적


 1.1. C언어를 배우는 이유

 1.1.1 학교 커리 큘럼

  - 1학년

컴퓨터프로그래밍기초

C언어 


  - 2학년

객체지향프로그래밍 

Java 

Database 

 

자료구조 

C언어 


  - 3학년

 네트워크 프로그래밍

Java 

데이터베이스 설계 및 실습 

 

모바일프로그래밍

Android(Java) 

고급 윈도우 프로그래밍

C++

웹 시스템 설계 및 개발

JSP 


  - 4학년

고급시스템프로그래밍

Linux 


 1.2. 어떻게 C언어를 배울 것인가?

  - 개인 학습이후 몇 가지 개념이 들어가는 과제 수준의 프로그래밍


 1.3. 각자 동아리에 대해 이루고자 하는 목표

  -  


< 참고 사이트 >

SoEn: 소프트웨어 공학 연구소

코딩 도장

한빛미디어 이것이 C언어다


SoEn의 목차


제 1장 프로그래밍 입문

제 2장 첫 번째 예제

제 3장 변수

제 4장 제어문

제 5장 연산자

제 6장 함수

제 7장 기억 부류

제 8장 표준 함수

제 9장 배열

제 10장 포인터

제 11장 배열과 포인터

제 12장 문자열 함수

제 13장 구조체

제 14장 C언어 실습

제 15장 포인터 고급

제 16장 함수 고급

제 17장 파일 입출력

제 18장 C언어 고급 문법

제 19장 자료구조

제 20장 알고리즘

부록


1. 데이터베이스의 역사

1.1. 파일 시스템(File System)

 : '파일(File)' 개념은 자료를 저장하는 기본적인 방법으로 사용

 : 파일에 기초하여 자료나 정보를 처리하는 시스템

 : 파일 시스템에서는 개별 응용프로그램이 직접 파일에 접근하여 기록, 갱신, 삭제를 할 수 있으며, 파일에 있는 데이터의 올바른 관리 여부는 전적으로 응용프로그램에 달려 있다.


[파일 시스템의 문제점]

1.1.1. 데이터 종속성(data dependency)

 : 데이터를 사용하는 프로그램의 구조가 데이터 구조(파일 구조)의 영향을 받는다.

 : 개발과 유지보수가 어려워진다.

1.1.2. 데이터 무결성(data integrity)의 침해

 : 저장된 데이터의 내용이 본래 의도했던 데이터의 형식, 범위를 준수해야 한다.

 : 응용프로그램에서 사용자가 데이터를 올바르게 입력했는지 검사하는 기능을 구현해야 한다.

1.1.3. 데이터 중복성(data redundancy)

 : 같은 내용의 데이터가 여러 곳에 중복하여 저장되는 것을 의미한다.

 : 데이터가 중복 저장되면 저장 공간의 낭비라는 문제 외에도 다음에 설명할 데이터의 불일치, 보안의 어려움과 같은 문제들이 발생할 수 있다.

1.1.4. 데이터 불일치(data inconsistency)

 : 중복 저장된 데이터들이 서로 일치하지 않는 것을 의미한다.

1.1.5. 데이터 표준화(data standard)의 어려움

 : 많은 수의 개발자들이 협력 작업을 하는 작업환경에서 개발자들간의 코딩 방식이나 변수 선언에서 차이점이 생겨 제 3자가 프로그램에 대한 이해가 어려워지고 두 응용프로그램 간의 호환성에 문제가 생긴다.

1.1.6. 데이터 보안성(data security)의 결여

 : 데이터가 저장되어 있는 파일은 그 내용이 Text 형식이나 잘 알려진 형식으로 저장되기 때문에 보안을 유지하기가 어렵다.




1.2. 데이터 베이스의 등장

  - 데이터베이스

   : 모아놓은 데이터의 집합

  - 데이터베이스 관리 시스템

   : 데이터를 관리 하는 S/W

  - 데이터베이스 시스템

   : 데이터베이스에 기초해서 데이터나 정보를 처리하는 체제

1.2.1. 데이터 독립성(independency) 지원

 : 사용자 또는 응용프로그램이 직접 데이터베이스에 접근할 수 없고 반드시 DBMS를 통해서만 접근이 가능하다.

 : DBMS는 데이터베이스 내에 있는 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않도록 함으로써 데이터 독립성을 보장한다.

1.2.2. 데이터 무결성 유지

 : DBMS는 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입(type), 길이, 값의 범위 등에 대한 정보를 가지고 있다.

 : 위반하는 데이터가 들어올 경우 처리를 거절함으로써 데이터의 무결성을 지원

1.2.3. 데이터 중복성 및 불일치 최소화

 : 데이터베이스를 공용하는 조직 전체의 관점에서 관리한다.

 : 중복성을 방지하며 그 결과로서 중복된 데이터 간의 불일치 문제를 해결한다.

1.2.4. 데이터 표준화의 용이성

 : 데이터베이스 관리자(DBA)가 존재

 : DBA는 데이터베이스의 설계과정을 주도함으로써 부서 간 이해를 조정하고 관리될 데이터를 표준화 시킬수 있다.

 : DBMS는 데이터의 구조에 관한 정보를 가지고 있으며 응용프로그램에서 데이터에 접근하기 위해서 DBMS가 가지고 있는 구조 정보에 따라야 하기 때문에 자연스럽게 표준화가 이루어질 수 있다.

1.2.5. 높은 데이터 보안성

 : 데이터에 대한 접근을 제한 할 수 있다.

 : 저장된 데이터베이스는 일반적으로 DBMS를 통하지 않고는 외부에서 내용을 알아내기 매우 어렵기 때문에 데이터가 보호될 수 있다.

1.2.6. 데이터 공유(data sharing)의 용이성

 : 데이터를 통합 관리하고 DBMS를 통해 여러 사용자의 요구를 동시적으로 처리할 수 있는 능력을 가지고 있으며 데이터를 쉽게 이용할 수 있는 수단을 제공한다.




1.3. 관계형 데이터베이스 모델

 - 데이터베이스의 모델

 : 계층형 모델

 : 네트워크 모델

 : 관계형 모델

  : 데이터가 테이블 형태로 표현

  : 민감한 데이터에 대한 엑세스 제어를 구현하기 쉬움

  : 데이터베이스의 간결성(Clarity)와 가시성(Visibility)이 증진됨 ( 표 형식의 데이터 요소 탐색 )

  : 사용자가 데이터를 쉽게 다룰 수 있도록 해주는 질의어(SQL)가 제공된다. 




2. 관계형 데이터베이스 용어

2.1. 릴레이션(Relation), 테이블(Table), 관계 

 : 지금까지 테이블이라고 지칭했던 것으로 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위.

 : 서로 구분할 수 있는 이름을 갖는다.

 : 동일한 데이터베이스 내에서는 같은 이름을 가진 릴레이션이 존재할 수 없다.

2.2. 속성(Attribute), 열(Column)

 : 객체가 지닌 구체적인 정보의 항목에 해당하는 것.

 : 관리해야 할 필요가 있는 속성들의 집합.

2.3. 튜플(Tuple), 행(Row), 레코드(Record)

 : 값의 나열(리스트), 테이블의 행.

 : 개체에 속한 구성원들 개개의 정보를 표현.

2.4. 도메인(Domain), 타입(Type)

 : 하나의 속성이 취할 수 있는 허가된 값의 집합.

 : 테이블에 포함된 각각의 속성(열)들이 가질 수 있는 값들의 집합.

 : 테이블에 저장되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리되도록 하기 위함.




3. 기본키와 외래키

 - 키의 필요성

  : 관계형 데이터베이스에서는 중복된 튜플(행, 레코드)의 삽입을 막아야 할 필요가 있다.

3.1. 기본키(Primary key)

 : 튜플(행, 레코드)를 구분하는 기준으로 사용되는 키

 : 기본적으로 데이터의 길이가 짧은 것을 기본 키로 정한다.

3.2. 후보키(Candidate key)

 : 레코드의 중복 여부를 확인

 - 후보키의 속성

  : 최소성, 유일성

 - 후보키의 개념

  : 테이블에서 각 튜플(행, 레코드)를 구별하는데 기준이 되는 하나 혹은 그 이상의 컬럼들의 집합

  (후보키는 테이블에 있는 각 튜플을 고유하게 식별할 수 있어야 한다.)

3.3. 대체키(Alternate key)

 : 선택되지 않은 후보키

3.4. 복합키(Composite key)

 : 두 개 이상의 속성, 열이 모여 키의 역할을 하는 경우

3.5. 외래키(Foreign Key)

 : 테이블 간의 데이터의 일치와 무결성을 보증해주는 수단

 * 무결성이 깨어지게 되면 이를 막기 위한 DBMS의 조치

  - 제한(restricted)

   : 삭제하려는 레코드의 부서번호값을 사원 테이블에서 가지고 있는 레코드가 있으면 삭제 연산 거절

  - 연쇄(cascade)

   : 삭제 연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원 테이블의 레코드도 함께 삭제

  - 널값으로 대체(nullify)

   : 삭제 연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원 테이블의 레코드에서 부서번호를 null값으로 바꾼다.

 



4. 뷰

 - 가상 테이블

  : 데이터를 바라볼 수 있도록 해주는 수단

  : 데이터베이스 관리자는 사용자에 따라 필요에 맞는 뷰를 생성하여 제공할수 있다.

  * 전체 조직 관점에서의 테이블

  * 다양한 관점에서의 세 가지 뷰

 - 일반 테이블과 뷰의 차이점

  : 일반 테이블이 실제로 물리적인 데이터를 갖고 있는 반면에 뷰는 물리적인 데이터를 갖고 있지 않다.

  : 뷰는 정의된 일반 테이블로부터 데이터를 가져다 보여주는것이다. 따라서 뷰는 일반 테이블이 있어야 정의 가능하다.


 - 뷰를 정의 하는 SQL 명령문

CREATE VIEW view_emp1
AS SELECT   empid, ename, hire_date, salary
FROM        emp;
CREATE VIEW high_salary
AS SELECT   empid, ename, dept, salary
FROM        emp
WHERE       salary >= 350;

 - 뷰 high_salary에 대한 질의

SELECT empid, ename, salary
FROM   high_salary
WHERE  dept = '영업부';

 - DBMS의 일반테이블에 대한 질의

SELECT empid, ename, salary
FROM   emp
WHERE  salary >= 350
AND    dept = '영업부';

 - 뷰의 목적

  : 하나의 테이블에 대한 여러 관점으로 보는 것이 필요 할 때

  : 일반 사용자에게 감추어야 할 컬럼이 있을 때, 그것을 제외한 뷰를 만든다.


 - 뷰에 대한 튜플의 삽입

  : 튜플의 삽입 가능 여부는 null 값이 저장될 컬럼들이 null값을 허용하는 가에 달려있다.


5. SQL 언어

 - 비절차적 언어(non-procedural language), 사용자는 자신이 원하는 것만을 명시

5.1. SELECT

 : 테이블에 저장된 정보를 조회하는 데 사용한다.

 - 사원에 대한 모든 정보를 보이시오.

 - 곽희준 사원의 담당업무는 무엇인가?

 - 급여가 300을 넘고 담당업무가 영업관리인 사원의 모든 정보를 보이시오.

 - 모든 사원의 이름과 급여를 보이되 사원 이름을 가나다순으로 보이시오.

 - 부서번호와 그 부서에 속한 사원들의 급여액 합계를 보이시오.

 - 가장 많은 급여를 받는 사원의 급여액과 가장 적은 급여를 받는 사원의 급여액을 보이시오.

 - 가장 많은 급여를 받는 사원의 이름을 보이시오.

 - 사원들의 현재 급여와 급여를 10% 인상했을 때의 예상 급여를 보이시오.

 - 모든 사원들의 이름과 부서 이름을 보이시오.

 - 곽희준 사원이 속한 부서의 예산은 얼마인가?

 - 사원의 이름과 그 사원의 상사(manager) 이름을 보이시오.


5.2. INSERT

 : 테이블에 레코드를 삽입할 때 사용한다.

 : 기본적으로 INSERT문은 한번에 하나의 레코드를 삽입할 수 있다.


5.3. UPDATE

 : 테이블에 저장되어 있는 튜플의 값을 변경할 때 사용한다.

 - 홍성길 사원의 부서번호를 400으로, 급여를 500으로 변경하시오.

 - 영업부에 속한 사업의 급여를 20%인상하시오.



5.4. DELETE

 : 테이블에 있는 레코드를 삭제할 때 사용한다.

 - 홍성길 사원의 정보를 사원 정보에서 삭제하시오.

 - 모든 사원의 정보를 사원 정보에서 삭제하시오.


5.5. CREATE

 : 테이블, 뷰, 사용자 등 데이터베이스 내의 객체들을 생성하는 데 사용된다.

 - dept, emp 테이블을 생성하는 문장

 - dept, emp 테이블을 연결하여 뷰를 만드는 문장


5.6. DROP

 : 데이터베이스 내의 객체를 제거하는 역할

 - dept 테이블과 뷰 new_emp를 제거하는 문장


세성 중간.hwp

세성 중간.hwp

세성 중간 문제.hwp

세계문명과 성경2 기말고사.hwp



1. 자료 구조와 알고리즘

1.1. 자료구조와 알고리즘

 - 자료구조?

  : 

 - 알고리즘?

  : 문제를 해결할 수 있는 방법을 고안하는 것

  : 방법에 따라 컴퓨터가 수행하여야 할 단계적인 절차를 자세히 기술하는 것

 - 알고리즘의 조건

  : 입력

  : 0개 이상의 입력이 존재하여야 한다.

 

  : 출력

  : 1개 이상의 출력이 존재하여야 한다.


  : 명백성

  : 각 명령어의 의미는 모호하지 않고 명확해야 한다.


  : 유한성

  : 한정된 수의 단계 후에는 반드시 종료되어야 한다.


  : 유효성

  : 각 명령어들은 실행 가능한 연산이어야 한다.


 - 알고리즘을 기술하는 4가지 방법

  : 영어나 한국어 같은 자연어

  : 흐름도(flowchart)

  : 유사 코드(pseudo-code)

  : 프로그래밍 언어


1.2. 추상 데이터 타입

 - 정보 은닉 기법?

  : 

 - 추상 데이터 타입 이란?

  : 데이터 타입의 정의가 그 데이터 타입의 구현으로부터 분리된 데이터 타입을 

  : 즉, 자료 구조를 추상적, 수학적으로 정의한 것

  : 추상적이란 어떤 시스템의 간략화된 기술 또는 명세로서 시스템의 정말 핵심적인 구조나 동작에만 집중하는 것이다.

  : 데이터나 연산이 무엇(what)인가는 정의되지만 데이터나 연산을 어떻게(how) 컴퓨터상에서 구현할 것인지는 정의되지 않는다.


1.3. 알고리즘의 성능 분석

 - 실행 시간 측정 방법

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void main() {
	// ------------------------------------------
	clock_t start, finish;
	double duration;
	// 실행 시간 저장
	start = clock();
	// ------------------------------------------
	// 시간을 측정하기 위한 코드

	// 시간을 측정하기 위한 코드	
	//------------------------------------------
	// 끝나는 시간 저장
	finish = clock();
	duration = (double)(finish - start) / CLOCKS_PER_SEC;
	printf("%f 초 입니다. \n", duration);

}

 - 알고리즘의 복잡도 분석 방법

  : 여러 가지 문제점을 생각해서 바로 구현하지 않고 알고리즘의 효율성을 따져보는 기법

  : 복잡도 분석(complexity analysis)

  : 모든 입력을 고려하는 방법이고 실행 하드웨어나 소프트웨어 환경과는 관계없이 알고리즘의 효율성을 평가 할 수 있다.


 - 시간 복잡도 함수


  : 시간 복잡도( time complexity )

  : 알고리즘의 실행 시간 분석

  : 연산의 실행 횟수는 고정된 숫자가 아니라 n에 대한 함수이다.

  : 연산의 개수를 입력의 개수 n의 함수로 나타낸 것을 시간 복잡도 함수라고 하고 T⒩이라고 표기한다.


  : 공간 복잡도( space complexity )

  : 알고리즘이 사용하는 기억 공간 분석


 알고리즘 A

알고리즘 B 

알고리즘 C 

sum ← n*n ;

sum ← 0

for i ← 1 to n do

 sum ← sum + n ; 

sum ← 0

for i ← 1 to n do

  for j ← 1 to n do

    sum ← sum + 1 ; 


  * 실행 속도를 예측하기 위한 연산의 횟수

 

알고리즘 A

알고리즘 B 

알고리즘 C 

대입 연산

n + 1 

n * n + 1

덧셈 연산 

 

n * n

곱셈 연산 

 

 

나눗셈 연산 

 

 

 

전체 연산 수 

2n + 1 

2n^2 + 1


  * 입력의 개수에 따른 연산의 수

알고리즘 A 

알고리즘 B 

알고리즘 C 

2t

( 2n + 1 )t 

( 2n^2 + 1 ) 


 - 빅오 표기법

  : T⒩ = n^2 + n + 1

 - 빅오 표기법 이외의 표기법


 - 최선, 평균, 최악의 경우


5. Routing Protocol

 1) OSPF(Open Shortest Path First)

encapsulation

Mac주소

  S / D

  (물리)

 IP 주소

  S / D

  (논리)

 TCP /

 UDP

 - 프로토콜 넘버

  과정 IP > OSPF ( Protocol Num )


  (1) OSPF의 특징

 : 다익스트라(Dijkstra) 알고리즘 참조

 : 30분을 간격으로 주기적인 라우팅 업데이트 정보를 교환

 : 프로토콜 넘버 89번


 - Convergence Time

  : 네트워크의 모든 라우터간에 정보를 주고 받는데 걸리는 시간

  : 라우팅 테이블이 완성되는데 걸리는 시간

  : OSPF는 변화가 생기면 바로 전달

  : 큰 네트워크에 적합

  : area라는 개념을 사용해서 전체 OSPF 네트워크를 작은 영역으로 나누어 관리


 - VLSM(Variable Length Subnet Mask)

  : classless

  : IP 주소와 서브넷 마스크의 and 연산을 통해 나온 결과인 네트워크 주소를 통해 효율적인 라우터를 관리 할 수 있다.

  : IP 주소를 효과적으로 사용

  : 라우팅 테이블을 줄이는 부수적인 효과가 있다.

  : OSPF는 Route summarization(Optimization : 최적화)을 지원하기 때문에 여러 개의 라우팅 경로를 하나로 묶어주는 기능이 탁월하다.


 - 네트워크 크기 지원

  : RIP의 경우 최대 15개의 홉 카운트를 가질 수 있으나 OSPF의 경우 이런 제한이 없다.


 - 네트워크 대역폭 활용

  : RIP는 30초마다 브로드캐스트 트래픽이 발생하므로 대역폭의 낭비가 많다.

  : OSPF는 네트워크의 변화가 있을 때만 정보가 멀티캐스트로 날아가므로 경제적이다.


 - 경로 결정

  : RIP는 홉 카운트만 고려하여 속도나 지연에 상관 없이 홉 카운트가 적으면 선호한다.

  : 링크의 비용(cost)를 매트릭으로 함

  : OSPF는 많은 관련요소를 합쳐서 경로를 선택하기 때문에 훨씬 정확한 경로를 선택이 가능하다.



5.1.2. OSPF가 적용되는 토폴로지

 1) Broadcast Multiaccess 토폴로지

  : 두 개 이상의 라우터가 연결되는 경우로 하나의 메시지를 보내면 이 네트워크 상의 모든 라우터에서 정보를 받는 구조

 2) Point-to-Point 토폴로지

  : 네트워크 상에 한 쌍의 라우터가 연결되어 있다.

 3) NBMA(Network Broadcast Multiaccess)

  : 두 개 이상의 라우터가 연결되어 있지만 Broadcast Multiaccess처럼 브로드캐스트 능력은 갖고 있지 않다.


5.2. OSPF의 Neighbor 찾기

 1) Down State

  - 멀티캐스트 주소 244.0.0.5를 사용하여 Hello 메시지를 내보낸다.

   : 이 때 라우터 ID가 함께 나가게 된다. 

   : ( 라우터 ID는 OSPF에서 서로를 구분하는 이름으로 사용, 라우터의 IP 주소 중 제일 높은 주소를 사용한다. )

   : 브로드캐스트가 아니므로 OSPF 라우터가 아닌 장비는 이 메시지를 받지 않는다.


 2) Init State

  - Hello 메시지를 받은 라우터는 Neighbor list 추가


 3) Two - Way State

  - Hello 메시지를 OSPF 라우터 들이 자신들의 정보를 유니캐스트로 보낸다.

  - 라우터 A는 이 정보를 자신의 Neighbor list에 넣어 관리한다.


 4) 이웃확인 명령어

  - show ip ospf neighbor


5.3. OSPF의 OSPF의 라우터 ID, DR, BDR


 - ID

  : 라우터 ID는 OSPF를 통해 경로 정보를 주고 받는 라우터들 중에서 해당하는 라우터를 나타내는 고유의 값으로 사용된다.

  1) 물리적 인터페이스 보다 논리적 인터페이스인 루프백 인터페이스라우터 ID로 선언

  2) 루프백 주소가 여러 개 있으면 높은 주소라우터 ID로 사용된다.

  3) 만약 루프백 주소가 없다면 활성화된 인터페이스의 주소 중에서 가장 높은 값을 가지는 주소라우터 ID로 사용

  4) 이는 Show ip protocols 명령어를 사용하여 확인

  5) 동작확인은 #debug ip ospf events


 - DR(Designated Router)

 - BDR(Backup Designated Router)

  1) OSPF에서는 네트워크의 책임을 지는 DRBDR를 선출한다.

  2) OSPF에 참여하는 라우터들은 DR과 BDR에 자신의 link state를 알린다.

   - 모든 라우터와 link state를 교환할 경우 발생하는 트래픽을 줄이고 link state의 sync를 올바로 관리

   - DR은 이 정보를 관리하고 link state를 항상 일치시키는 역할을 수행한다.

   - 반면, BDR은 DR이 업무를 제대로 수행하는 지를 관찰하다가 DR에게 문제가 발생하면 바로 DR의 역할을 수행한다.

   - DR과 BDR의 선출우선순위가 높아야 한다.


  3) DR과 BDR의 선출과정

   - 라우터의 우선순위는 기본으로 1이다.

   - 어떤 라우터가 이보다 높은 우선순위(priority)를 갖는다면 그 라우터가 DR이 되고 그 다음이 BDR이 된다.

   - 만약 우선순위가 두 라우터가 같다면 라우터 ID(Router ID)가 높은 라우터가 DR이 된다.

   - 선출 이후 우선순위가 높은 라우터가 네트워크에 추가되면 이미 선거가 끝난 경우이므로 다음 번 선출 때에 참여할 수 있다.

   - 특정 장비가 DR이나 BDR에 참여하지 않게 하려면 우선순위를 0으로 설정하면 된다.


  4) Loopback 인터페이스 설정

   - 라우터 인터페이스의 주소가 잦은 변경이 일어난다면 라우터 ID가 자주 변경되게 되므로 주변의 OSPF 라우터들이 정보를 수정해야 하는 일이 발생한다. 이를 막기 위한 인터페이스

   - Loopback 설정 시 인터페이스는 절대 다운되지 않는다.

   - 주소의 높고 낮음에 관계 없이 무조건 이 주소가 라우터 ID가 된다.

   - 이미 라우터 ID가 배포된 후라면 즉시 loopback 주소가 라우터 ID로 변경되지 않는다.


   * Router ID의 선출 방법

    - IP 주소 (가장 높은 ID)

    - Loopback 인터페이스 설정 유무)


5.4. OSPF의 링크 변화 업데이트

 1) 라우터가 처음 켜지거나 OSPF 라우팅이 새로 구성되면 멀티캐스트 주소인 224.0.0.6을 통해 Hello 패킷을 받고 이때 DR과 BDR의 주소를 알게 된다.

 2) 새로 들어온 라우터는 자신이 갖고 있는 링크 정보를 LSA(Link-State Advertisement)에 담아 모든 DR과 BDR에 전송한다.

  - 이 때 사용하는 멀티캐스트 주소는 224.0.0.6이며 이 과정을 LSU(Link State Update)라고 한다.

  - DR에 LSA가 도착하면 BDR은 자신의 타이머를 가동하고 DR이 이 정보를 다른 OSPF 라우터에게 전달을 기다린다.

 3) DR은 이 LSA 정보를 멀티캐스트 주소 224.0.0.5를 이용해서 다른 모든 OSPF 라우터에게 전송한 후 DR이 이 정보를 다른 OSPF 라우터들로부터 Ack을 받아 응답확인 한다.

 4) 이 때 타이머가 끝날 때까지 DR이 LSA 정보를 다른 라우터에게 전달하지 않는다면 BDR이 DR이 되고 Hello 패킷을 이용해서 BDR을 새로 선출하게 된다.

 5) 만약 OSPF 라우터에서 자신이 갖고 있는 링크가 끊기면 즉시 그 정보를 DR에게 알리고 DR은 그 LSA 정보를 모든 OSPF 라우터에게 전송한다. 새로운 정보를 받은 라우터들은 그 LSA 정보를 다시 가까운 네트워크 flood해서 네트워크에 대한 정보를 업데이트하게 된다.


 * 224.0.0.5 (OSPF를 지원하는 모든 라우터)

 * 224.0.0.6 (DR과 BDR에게)


5.5. OSPF의 네트워크 구성

OSPF설정.pkt




5.5.1 OSPF 라우팅 (실습)

 1) 라우터에 OSPF를 enable 한다.

  - router ospf process-id

   : 한 라우터에서 OSPF를 여러 개 돌릴 때 그 프로세스를 구별하기 위해 사용된다.


 2) OSPF에서 사용 할 네트워크를 정의한다.

  - network address wildcard-mask area area-id

   : Address :: 네트워크 주소

   : Wildcard-mask :: 네트워크 주소에 맞는 wildcard mask

   : Area-id 

    :: ospf가 동작하는 area의 id

    :: OSPF는 전체 OSPF영역을 작은 AREA 단위로 나누고 그 영역안에 있는 라우터 끼리만 우선 링크 정보를 업데이트하고 다른 area와의 통신은 영역 사이에 있는 라우터 (area Border Router)가 정보를 전달하도록 하는 방식

    :: 기본 백본 영역은 area 0이다.


5.5.2 Show 메시지 구성

 1) Ping 확인


 2) sh ip protocols

  : OSPF의 Administrative distance값이 110임을 알 수 있다.

  : Router ID [IP_Address]

  : Routing for Networks:

  :     [connected network-address] [wildcard-mask] [area] [area-id]

  : Routing Information Sources:

  :     Gateway            Distance                        Last Update

  :     [Router-id]         [administrative distance]    [duration time]

  : Distance: (default is 110)


 3) sh ip ospf database

  : Link ID         ADV Router        Age                    Seq#            Checksum Link count

  : [Router-id]    [            ]       [duration time]        [            ]     [          ]


5.6 OSPF 계층형 설계

 - 효율적 관리

 - LSA(Link-State Advertisement) 패킷 관리


 용어

 해설

 Backbone Area (핵심) 

 - 모든 Area가 경유하는 Area

 - area 0

 ABR (Area Border Router)

 - Backbone Area와 다른 Area 사이에서 LSA 광고를 중계

 - Area 단위 에서의 경계에 있는 라우터

 ASBR (AS Border Router)

 - AS(Autonomous System: 자치 시스템)

 - 외부 도메인 정보를 OSPF 도메인으로 LSA 광고 실시

 Internal Router 

 - Area 내부에서 동작하는 일반 OSPF 라우터


 종류

 역할

Router0

 Area 0지역은 Backbone Area로서 수행하여 서로 다른 Area를 중계하며 LSA 광고를 실시

 Router1 

 ABR 라우터, Backbone area와 Area 10에 대한 LSA 광고를 중계 

 Router2 

 ABR 라우터, Backbone area와 Area 20에 대한 LSA 광고를 중계 

 Router3 

 내부 라우터, 같은 Area에게만 LSA 광고를 실시 

 Router4 

 ASBR 라우터, 외부 도메인정보(RIPv2)를 OSPF 도메인으로 LSA 광고를 실시 


5.7 OSPF Multiple Area 실습

OSPF AREA.pkt



5.7.1 sh ip protocols

 - 라우터 ID확인



5.7.2. sh ip ospf neighbor

 - 이웃하는 Neighbor ID 확인

 - 해당 Neighbor 라우터의 Pri(우선순위) 확인

 - DR/BDR 확인 가능



5.7.3 sh ip ospf interface

 - 해당 인터페이스 구간의 영역 번호

 - Process-ID

 - 라우터 ID

 - 네트워크 유형

 - 링크 비용



5.7.4 sh ip route



5.7.5 sh ip ospf database



Part 01 데이터베이스 개요

 제 1장 관계형 데이터베이스의 주요 개념

  1.1 데이터베이스의 역사

  1.2 관계형 데이터베이스 용어

  1.3 기본키와 외래키

  1.4 뷰

  1.5 SQL 언어


 제 2장 정보시스템 구축 절차와 데이터베이스 설계

  2.1 추상화 모델링

  2.2 데이터베이스 설계의 개념

  2.3 정보시스템 구축과 데이터베이스 설계

  2.4 데이터베이스 설계의 상세 과정


Part 02 논리적 데이터베이스 설계

 제 3장 데이터 모델링의 주요 개념

  3.1 개요

  3.2 엔티티

  3.3 속성

  3.4 관계

  3.5 주식별자와 외래식별자

  3.6 ERD 표기법


 제 4장 모델링 도구

  4.1 모델링 도구 개요

  4.2 모델링 도구 따라하기

  4.3 관계의 설정

  4.4 ERD를 레벨별로 보기

  4.5 주석문의 삽입


 제 5장 업무 분석

  5.1 개요

  5.2 문서 및 자료 수집

  5.3 담당자 인터뷰

  5.4 분석 내용의 정리

  5.5 업무분석 사례 : 도서관 관리


 제 6장 엔티티의 정의

  6.1 개요

  6.2 엔티티 다시 보기

  6.3 엔티티 도출 과정

  6.4 업무 기술서에서 엔티티 도출의 예

  6.5 장부/전표에서 엔티티 도출의 예

  6.6 엔티티 도출의 예 : 도서관 관리


데이터베이스 chapter 1.hwp

데이터베이스 chapter 2.hwp

데이터베이스 chapter 3.hwp

데이터베이스 개요.hwp

데이터베이스 내용.hwp

동아리 관리 DB 설계.hwp

데이터베이스 동아리 테이블.hwp




< Routing Protocol >

9. 라우팅

9.1. 라우팅의 기능

 : 라우터에서 수신한 패킷을 목적지 네트워크로 전송하기 위한 최적의 경로를 설정

 : 목적지로 전송하기 위해 라우터가 수행하는 절차


 - 정적 라우팅(Static Routing)

  : 네트워크 관리자가 경로를 미리 정해 놓는 방법

 - 동적 라우팅(Dynamic Routing)

  : Routing Protocol을 이용하여 네트워크 토폴로지나 트래픽의 변화에 따라 동적으로 경로를 계산


 - 라우팅의 과정

  : 라우터의 인터페이스에 패킷 도착

  : 라우터의 메모리 버퍼에 수신 패킷의 저장

  : 라우팅 테이블에서 3계층 프레임의 목적지 주소 찾기

  : 일치하는 엔트리가 있다면 수신 패킷을 엔트리가 알려주는 exit 인터페이스로 보냄


9.2 Static 라우팅

 : 네트워크 관리자는 전체 네트워크에 대한 정보를 정확하게 알고 있어야 한다.

 : 네트워크 토폴로지가 변경되면 기존의 라우팅 정보를 모두 변경하여야 한다.

 : 라우팅 테이블 유지하는데 상당 시간을 소모 해야 한다.


 

Static 라우팅 장점

Static 라우팅 단점

프로세서 오버헤드가 낮다

라우터가 최적의 경로를 계산할 필요 없다

유지 보수가 어렵다

관리자가 네트워크의 모든 라우터의 라우팅 테이블을 직접 구성해야 한다

대역폭의 이용률이 낮다

라우터는 고정된 경로만을 사용함으로 라우팅 테이블을 수정하기 하여 업데이트 메시지 교환을 하지 않는다.

안전하다

라우터가 자신의 정보를 믿을 없는 라우터에게 전달하지 않음으로 공격에 노출될 염려가 낮다

적응력이 낮다

링크의 상태가 변경되어도 경로를 변경하기가 쉽지 않다.

예측 가능하다

관리자가 패킷이 어느 경로를 이용하여 전달될지를 있다.


9.2.1 Static 라우팅 구성 (실습)

 - ip route [Destination_Network_Address] [Subnet_Mask] [Next_hop_Address | Exit I/F] [Administrative Distance]

  : 라우터에 정적 경로를 추가하기 위한 명령어



 - 첫 번째와 두 번째 파라미터는 목적지 네트워크 주소와 그에 따른 서브넷 마스크이다.

 - 세 번째 파라미터는 Next_Hop_Address 방식으로 정적 경로 추가하기

  * Next_hop

  : 목적지까지 가기 위한 바로 다음의 라우터 또는 경로

  : RouterA(config)# ip route 168.90.20.0 255.255.255.0 168.90.40.2

  : RouterA(config)# ip route 168.90.30.0 255.255.255.0 168.90.40.2

  : RouterA(config)# ip route 168.90.50.0 255.255.255.0 168.90.40.2


  : RouterB(config)# ip route 168.90.10.0 255.255.255.0 168.90.40.1

  : RouterB(config)# ip route 168.90.50.0 255.255.255.0 168.90.50.2


  : RouterC(config)# ip route 168.90.10.0 255.255.255.0 168.90.50.1

  : RouterC(config)# ip route 168.90.20.0 255.255.255.0 168.90.50.1

  : RouterC(config)# ip route 168.90.40.0 255.255.255.0 168.90.50.1


 - 세 번쨰 파라미터로 Exit 인터페이스를 입력하는 또 다른 방법

  * Exit Interface 

  : RouterA(config)# ip route 168.90.20.0 255.255.255.0 s0/0

  : RouterA(config)# ip route 168.90.30.0 255.255.255.0 s0/0

  : RouterA(config)# ip route 168.90.50.0 255.255.255.0 s0/0


  : RouterB(config)# ip route 168.90.10.0 255.255.255.0 s0/1

  : RouterB(config)# ip route 168.90.50.0 255.255.255.0 s0/0


  : RouterC(config)# ip route 168.90.10.0 255.255.255.0 s0/0

  : RouterC(config)# ip route 168.90.20.0 255.255.255.0 s0/0

  : RouterC(config)# ip route 168.90.40.0 255.255.255.0 s0/0


 - 네 번째 파라미터 Administrative Distance 적용하기

  : 이 값을 입력하지 않을 경우 기본값을 사용

  : Next_Hop_Address를 사용할 경우의 기본 값은 1

  : Exit 인터페이스를 사용할 경우의 기본 값은 0

  : 이 값 보다 큰 값을 사용하기 위해서 0 ~ 255 사이의 값을 입력하면 된다.


9.2.2. Static 라우팅의 검증

 - show running-config / show ip route

  : Static 라우팅 정보가 올바로 입력되었는지를 알기 위함


9.2.3. Default 라우팅 구성

 - Router(config)# ip route 0.0.0.0 0.0.0.0 [Next-hop-Address | Exit I/F]

  : 라우팅은 라우팅 테이블에 있는 어떤경로라도 일치하는 것이 없을 때 사용


 - Next_hop_Address 방식을 이용한 Default 라우팅

  : RouterC(config)# ip route 0.0.0.0 0.0.0.0 168.90.50.1


 - Exit Interface 방식을 이용한 Default 라우팅

  : RouterC(config)# ip route 0.0.0.0 0.0.0.0 s0/1


 - Default 라우팅

  : RouterC(config)# ip default-network 168.90.50.0


9.3. Dynamic Routing

 : 라우팅 프로토콜을 이용하여 동적으로 라우팅 테이블을 만든다.

 : 라우팅 테이블은 원격 네트워크에 대한 정보를 갖고 있는 이웃 라우터들과 통신하여 라우팅 테이블을 완성한다.


Dynamic 라우팅의 장점

Dynamic 라우팅의 단점

적응력이 높다

라우터는 링크가 다운되었거나 새로 발견한 경로가 있는 경우 다른 라우터에게 알려줄 있다.

프로세서 오버헤드가 높다

Dynamic 라우팅 절차를 수행하기 위해 CPU 메모리의 사용이 필요하다.

유지 보수가 쉽다

라우팅 프로토콜의 파라미터만 정확하게 설정하였다면 이후의 네트워크 관리자의 개입은 필요 없다.

대역폭의 이용률이 높다

라우터는 라우팅 테이블을 수정하기 위해 업데이트 메시지를 교환하기 위해 대역폭을 사용한다.


 - 라우팅 프로토콜의 종류

  : RIP(Routing Information Protocol)

  : IGRP(Interior Gateway Routing Protocol)

  : EIGRP(Enganced Interior Gateway Routing Protocol)

  : OSPF(Open Shortest Path First)

  : BGP(Border Gateway Protocol)


 - 라우터의 기능

  : 라우팅 프로토콜을 이용하여 라우팅 테이블을 구축(경로 설정)

  : IP 또는 IPX(Internet Packet Exchange)와 같은 프로토콜(Routed Protocol)을 사용하여 패킷을 목적지 네트워크로 전송(스위칭 기능) 


9.3.1. Dynamic 라우팅 기본 용어

 - Autonomous System

  : 동일한 라우팅 전략을 사용하여 단일한 관리 체계하에 속하는 네트워크의 집합을 말한다.

  : 전세계를 연결하는 인터넷을 Autonomous System이라는 단위로 나누어 관리하는 것

  : 각 Autonomous System을 구분하기 위하여 16비트의 유일한 번호를 Autonomous System에게 부여한다.

  : 라우팅 프로토콜을 설정할 때 IGRP나 OSPF 같은 이 번호를 필요로 하는 프로토콜이 있다.


IGP(Interior Gateway Protocol)

EGP(Exterior Gateway Protocol)

RIP, IGRP, OSPF, EIGRP

BGP


 - Administrative Distance

  : 경로에 대한 신뢰 정도

  : 라우팅 프로토콜은 서로 다른 Administrative Distance 값을 가지고 있다.

  : 목적지로의 여러 경로 중에 가장 낮은 Administrative Distance를 갖고 있다면 이 경로가 라우팅 테이블에 존재하게 된다.

  : 만약에 더 낮은 Administrative Distance를 갖는 경로가 나타나면 라우팅 테이블에서 사라지게 된다.


프로토콜

Default Administrative Distance

Connected 또는 Static 경로 설정 outgoing 인터페이스로 설정한 경우

0

Static

1

EIGRP summary route

5

External BGP

20

EIGRP(internal)

90

IGRP

100

OSPF

110

IS

115

RIP

120

EIGRP

170

Internal BGP

200


 - Metric

  : 라우팅 프로토콜은 목적지로의 최적의 경로를 찾기 위해 Metric을 사용한다.

  : Metric은 어떤 경로가 좋은지 나쁜지를 결정하는 값을 말한다.

  : 라우팅 프로토콜은 같은 목적지로 가는 경로 중에서 Metric 값이 가장 작은 경로를 최적의 경로로 선택하게 된다.

  : Metric으로 사용하는 요인이 많으면 네트워크의 상황에 동적으로 대처하여 항상 최적의 경로를 제공하는 장점이 있다.


Metric

설명

Hop Count

목적지까지 도달하는 거쳐가는 라우터의 ,

작을수록 최적의 경로

대역폭

링크의 속도, 빠를수록 최적의 경로

Delay

패킷이 링크를 지나는데 걸리는 시간, 짧을수록 최적의 경로 

Load

링크상에 지나가는 패킷의 , Cisco 라우터에서는 1부터 255사이의 값으로 표현하며 1 load 가장 작음을 의미하며 255 load 가장 높음을 의미

Reliability

링크상의 에러율, Cisco 라우터에서는 1부터 255사이의 값으로 표현하며 1 가장 낮은 reliability 의미하고 255 값이 가장 높은 reliability 의미

Ticks Delay

IPX RIP에서 사용되며 링크를 통해 패킷을 전송할 1/18 기간의 수로서 표현, 낮을수록 최적 경로

MTU(Maximum Transfer Unit)

링크상에서 허용하는 가장 패킷의 크기, 높을수록 최적의 경로

Cost

관리자에 의해 부과되는 Metric, 낮을수록 최적의 경로


 - IP Classless 명령어

  : Classful과 Classless는 IP 클래스와 마스크의 범위에 관한 용어이다.

  : Classful 이란 네트워크의 경계를 나타내는 마스크가 해당 클래스를 벗어나지 않는 다는 것을 의미한다.

  : 클래스 A, B, C의 마스크는 /8, /16, /24의 고정적인 크기를 갖는다는 것을 의미한다.

  : 따라서, 따로 마스크를 부여할 필요가 없다.

  

  : 반면, Classless는 마스크를 자유로운 크기로 사용할 수 있어서 서브넷이나 슈퍼넷이 자유롭다.

  : Router(config)# ip classless

  

  : IP classless를 지원하는 프로토콜

  : RIPv2, OSPF, EIGRP


  : IP classless를 지원하지 않는 프로토콜

  : RIPv1, IGRP 프로토콜은 이웃 라우터에게 라우팅 정보를 줄 때 마스크 정보를 전달하지 못한다.


 - Convergence Time

  : 네트워크의 변경 정보를 라우팅 테이블에 반영하며 라우팅 테이블을 안정시키는데 걸리는 시간


9.3.2. 라우팅 프로토콜의 클래스

 - Distance Vector 라우팅 프로토콜

  : 라우팅 테이블을 이웃 라우터와 주기적으로 교환하여 원격 네트워크까지의 Distance(거리)를 기준으로 최적의 경로를 찾아낸다.

  : 여기서 Distance는 라우터를 통과하는 횟수, 즉 Hop Count를 주로 사용하며 제일 작은 Distance를 갖는 경로가 최적이 된다.

  : vector는 원격 네트워크로의 방향을 말한다.


 - Link State 라우팅 프로토콜

  : 네트워크 전체 토폴로지에 대한 데이터베이스를 모든 라우터가 갖고 있으며 변경된 네트워크 상황에 대해서만 이웃 라우터에 알린다.

  : 링크의 상태에 대한 정보를 기준으로 최소의 비용을 갖는 경로를 최적의 경로로 설정한다.


 - Hybrid 라우팅 프로토콜

  : Distance Vector 라우팅 프로토콜과 Link State 라우팅 프로토콜의 단점을 극복하고 장점을 모아 만든 라우팅 프로토콜이다.


Distance Vector 라우팅 프로토콜

Link State 라우팅 프로토콜

RIP, IGRP

OSPF

Hybrid 라우팅 프로토콜

EIGRP


9.4. Distance Vector 라우팅 프로토콜



9.4.1. 라우팅 루프

 1) 네트워크 X가 down되면 라우터 E는 이 사실을 라우터 D에게 알린다.

    라우터 D는 네트워크 X로 가는 패킷 전송을 중단한다.

    그러나 라우터 A, B, C는 아직 상황을 모른다.

 2) 라우터 D가 다음 업데이트를 보낼 때 라우터 B, C는 이 사실을 알고 네트워크 X로 패킷 전송을 중단한다.

     그러나 라우터 A는 아직 이 사실을 모르고 라우터 B를 통해 네트워크 X로 패킷을 전송한다.

 3) 라우터 A가 다음 업데이트를 라우터 C에게 전송

    라우터 C는 라우터 A가 네트워크 X로 가는 경로를 알고있음을 알고 

    네트워크 X로의 Distance 4로 라우팅 테이블을 수정한다.

 4) 라우터 C가 다음 업데이트 때 이 사실을 라우터 D에게 전송

    라우터 D 역시 라우팅 테이블을 수정

    이러한 업데이트는 라우터 D에서 라우터 B와 E에게 전송된다.

    이렇게 되면 라우터 A에서 네트워크 X로 가는 패킷을 전송 시

    이 패킷은 라우터 B, D, C를 거쳐 다시 라우터 A로 다시 오게 된다.


9.4.2. 라우팅 루프 방지

 : 라우팅 루프를 막기 위해 Distance Vector 라우팅 프로토콜이 지원하는 기능이 있다.

 - 최대 Hop Count

  : 최대 Hop count를 15까지로 허용하여 Hop count가 16이 되면 infinity로 간주하도록 한다.

  : 16이 되는 패킷을 받은 라우터는 도달 불능으로 판단하고 이 패킷을 버린다.

  : 최대 Hop count를 정함으로 인하여 패킷이 네트워크에서 무한히 도는 것을 막을 수 있다.

  : 하지만 루프 발생 자체를 막을 수 없다.


 - Split Horizon

  : 자신에게 정보를 준 라우터로 자신이 받은 정보를 또 다시 전달하지 않는 것이다.

  : 라우터 D가 라우터 B, C에게 네트워크 X가 down되었음을 알렸을 때 

  : 라우터 A가 라우터 C에게 라우터 B를 통하면 네트워크 X로 갈 수 있다고 알린 후 

  : 라우터 C가 이 사실을 라우터 D에게 알림으로 인하여 발생한다.

  : 따라서 Split Horizon은 라우터 B, C가 라우터 D로부터 네트워크 X가 down됨을 알았더라면 

  : 라우터 A로부터 받은 네트워크 X와 관련된 업데이트는 라우터 D로 전송하지 않도록 한다.


 - Route Poisoning과 Poison Reverse

  : 라우터의 인터페이스에 직접 연결된 네트워크가 down되면 라우터는 자신의 라우팅 테이블에 해당 네트워크로의 Distance를 infinity 즉, 16으로 표기한다. 이를 Route Poisoning 이라 한다.

  : Route Poisoning이 표시된 네트워크를 포함하는 라우팅 테이블을 받은 라우터는 해당 네트워크가 down되었음을 자신의 라우팅 테이블에 표시하고 이를 이웃 라우터에게 전달한다. 또한 infinity 네트워크에 대한 정보를 준 라우터에게 확인 메시지를 보내는데 이를 Poison reverse라고 한다.



 - Holddown Timer

  : 네트워크가 down되었다는 정보가 전체 네트워크에 전파되는 동안 잘못된 업데이트를 일정시간 동안 무시하고 대기하는 시간을 말한다.

  : 라우팅 테이블 내에 있는 네트워크가 down되었을 때, 앞서 설명한 방법들과 함께 라우팅 루프를 방지하는데 사용된다.

  : 라우터가 이웃 라투어로부터 특정 네트워크가 down되었다는 업데이트를 받으면 라우터는 이 네트워크를 Route Poisoning하고 hold-down timer를 시작한다.

  : [새로운 Metric == 원래 알고 있던 Metric] 이 타이머가 만료되기 전에 같은 라우터로부터 다시 네트워크가 도달가능하다는 메시지를 받으면 이를 적용하고 타이머를 해제한다.

  : [새로운 Metric < 원래 알고 있던 Metric] 타이머 만료전에 라우터가 다른 이웃 라우터로부터 원래 알고 있던 Metric보다 더 좋은 Metric의 경로를 알려주면 이를 라우팅 테이블에 적용하고 있던 타이머를 해제한다.

  : [새로운 Metric > 원래 알고 있던 Metric] 타이머가 만료되기 전에 라우터가 다른 이웃 라우터로부터 원래 알고 있던 Metric보다 나쁜 Metric의 경로를 알려주면 이는 무시한다.

  : Holddown Timer동안에는 알고 있던 Metric보다 높은 Metric을 갖는 경로는 무시된다.


 - Triggered Update

  : Link State 라우팅 프로토콜에서 사용하는 방식

  : 네트워크 내의 변경이 발생하면 즉시 업데이트를 이웃 라우터에게 전송하는 방식

  : Distance Vector 라우팅 프로토콜은 주기적으로 자신의 라우팅 테이블을 이웃 라우터에게 전송한다.

  : RIP의 경우 주기가 30이다.

  : 즉, 라우팅 업데이트가 일어나자 마자 발생한 네트워크의 down은 다음 업데이트까지 기다려야 한다는 의미이다.

  : 이로 인해 네트워크 down에 대한 정보의 전파가 늦어지고 루프가 발생할 가능성이 높아진다.


9.5. RIP(Routing Information Protocol)

 : Distance Vector 라우팅 프로토콜에서 가장 널리 알려진 라우팅 프로토콜이다.

 : Classful라우팅을 지원하는 RIPv1에서 Classless로 지원하는 RIPv2로 발전

 : 적용범위가 작은 네트워크라는 단점을 갖고 있다.

 : 라우팅 루프를 방지하기 위해 Metric으로 사용하는 Hop count를 최대 15로 정하여 사용한다.

 : Split horizon, Reverse poison, Holddown timer, Triggered update를 지원한다.


9.5.1. RIP 환경 설정

 - Router Mode 진입

  : Router(config)# router [routing protocol]

  : Router(config)# router rip

  : Router(config)# network [직접 연결된 네트워크 주소]

  : 직접 연결된 네트워크를 RIP에게 알려주어 RIP 업데이트를 전달할 라우터를 명시적으로 알게 한다.

 

  : RIP의 네트워크 명령은 네트워크 주소를 Classful로 선언하게 되어 있어서 서브넷 주소로 입력하였더라도 저장되는 값은 class 단위로 이루어진다.



9.5.2. RIP 라우팅 테이블

 - sh ip route

  : 라우팅 테이블의 확인



9.5.3. RIP 타이머

 - sh ip protocols 

  : 각 타이머의 종류와 expire 될 때까지의 시간이 표시된다.

 - Route Update Timer

  : RIP는 30초의 간격으로 라우팅 테이블을 모든 인접 라우터에게 전달한다.

  : 모든 이웃 라우터에게 업데이트를 전달 하면 Route Update Timer를 시작한다.

 - Route Invalid Timer

  : 라우팅 테이블에 경로가 처음 추가될 때와 같은 경로에 대한 업데이트가 도착할 때마다 전의 타이머를 종료하고 새로 시작한다.

  : Invalid Timer의 주기는 업데이트를 막기 위해 보통은 Update Timer 보다 길게 설정한다.

  : 이 기간 동안 라우팅 테이블에 있는 경로에 대한 Update Timer가 도착하지 않는다면 이 경로를 'Invalid'라고 판단하고 이를 주변 라우터에 알린다.

 - Router Flush Timer

  : 주기는 240초

  : Invalid Timer가 180초에 도달하여 완료되면 60초 후에 라우팅 테이블에서 업데이트에 도달하지 않는 경로를 삭제한다.

  : 따라서 Timer의 기본값을 변경하고자 할 때는 반드시 Invalid Timer보다 길게 설정해야 한다.

 - Holddown Timer

  : 주기는 240초

  : down과 up을 반복하는 경로가 있을 때, 즉시 이를 반응하면 네트워크에 혼란은 가중하게 되므로 Timer 기간 동안 라우팅 테이블의 Metric보다 더 높은 Metric을 갖는 경로에 대한 업데이트가 도착하면 Holddwon Timer는 이로 인한 라우팅 테이블의 변화를 막도록 한다.


9.5.4. RIP의 전파 방지

 - passive-interface

  : RIP 업데이트의 전파를 막기 위해 사용된다.

  : Router(config)# router rip

  : Router(config-router)# passive-interface s0/0

  : serial 0/0 인터페이스로는 업데이트 정보가 나가지 않지만 다른 라우터가 보내는 업데이트 정보는 받을 수 있다.


 - Unnumbered IP links

  : 

 - RIP의 문제 해결

  : show ip protocols

  : RIP의 타이머에 대한 정보

  : show ip rip database

  : show ip route 

  : 라우팅 테이블을 보여준다.

  : Debug ip rip

  : 라우터의 각 인터페이스를 통해 들어고고 나오는 RIP 업데이트에 대한 정보를 업데이트가 일어날 때마다 화면에 보여준다.

  : Debug ip rip events

  : RIP 업데이트를 이벤트 별로 묶어서 화면에 보여준다.

 7. 라우터의 Basic Configuration

  - Router>

   : 기본 프롬프트


 7.1. 호스트 이름 변경

  : 공장에서 출하할 적에 라우터의 기본 이름은 Router로 설정되어 있다.

  - hostname [변경할 호스트 이름]

   : Global Configuration Mode에서 실행


 7.2. Enable 패스워드 설정

  : Privileged EXEC Mode로 진입 시 보안을 위해 설정하는 패스워드

  - enable password [New password]

   : enable 패스워드는 암호화가 되지 않는다.

  - enable secret [New password]

   : enable secret 패스워드는 암호화가 되어 무슨 값을 입력하였는지 알 수 없다.

  - shwo running-config

   : 패스워드의 현재 환경 설정을 보여준다.


 7.3. 콘솔 패스워드 (line Mode)

  - line console 0 ( line con 0 )

   : 라우터에 콘솔 포트를 이용하여 연결하였을 때 사용자의 접근을 허용하기 위하여 입력하는 패스워드

   : Line Console Mode로 진입

   : Line Mode에서 패스워드를 설정하는 경우 login 명령을 우선적으로 해주어야 한다.

  - password [New Password] 설정

  : Router(config)# line

  : Router(config-line)# login

  : Router(config-line)#password cisco


  : Router# logout

  : Router con() is now available

  : Press RETURN to get started.

  : User Access Verification

  : Password:

  : Router>


  : Router(config)# line con 0

  : Router(config-line)# no login

  : Router(config-line)#exit

  : Router# logout

  : Router con() is now available

  : Press RETURN to get started.

  : Router>


 7.4. 보조 패스워드

  : 라우터의 AUX 포트를 이용하여 라우터에 접근하였을 때 허용된 사람만이 라우터에 접근할 수 있도록 사용하는 패스워드

  : Router(config)#line aux 0

  : Router(config-line)# login

  : Router(config-line)# password cisco

  : Router(config-line)# exit


 7.5. 텔넷 패스워드

  : 사용자의 접근을 허용하기 위해 사용하는 패스워드

  - vty

   : 텔넷 패스워드 설정을 위한 가상터미널


  : Router(config)# line vty 0

  : Router(config)# line vty 0 15

  : Router(config-line)# login

  : Router(config-line)# password cisco

  : Router(config-line)# exit


  : 텔넷 접속을 허용할 시 반드시 텔넷 패스워드를 설정하도록 요구한다.

  : Router(config)# line vty 0 15

  : Router(config-line)# no password

  : Router(config-line)# exit

  

 7.6. 패스워드 암호화

  - 암호화 패스워드

   : Enable secret 패스워드

  - 비암호화 패스워드

   : enable, 콘솔, 보조, 텔넷 패스워드


  - show running-config

   : 설정된 패스워드가 무엇인지 알 수 있다.

  - Service password-encryption

   : 패스워드 암호화


  : Router(config)#service password-encryption

  : Router(config)#^Z


 7.7. 접속시간 타임 아웃

  - exec-timeout [minutes] [seconds]

   : 콘솔 접속, AUX 접속, 텔넷 접속에 모두 적용이 가능하다.

   : 원하는 모드로 진입하여 exec-timeout 명령을 설정하면 된다.


  - 콘솔 포트로 접속하는 경우 타임아웃이 발생하지 않도록 하여 타임아웃으로 인한 방해를 받지 않기 위한 예

   : Router(config)# line con 0

   : Router(config-line)# exec-timeout 0 0

   : Router(config-line)# exit


 7.8. 배너 설정하기

  - 배너란 사용자가 라우터로 로그인할 때나 텔넷 접속을 할 때 표시되며 사용자에게 전달하려는 정보를 담고 있다.

  - banner motd [입력의 끝을 알려주는 문자]

   

   : Router(config)# banner motd #

   : Enter TEXT message. End with the character 'b'.

   : Welcom! This router is in CCC.com.

   : Router(config)# exit

   : Router#logout


   : Welcom! This router is in CCC.com.

   : Router>


 7.9. 라우터 인터페이스 설정

  - 인터페이스 번호 부여

   : interface_type slot_number/port_number

   : ex) fastethernet 0/0


  - 인터페이스 연결 

   : straight UTP 케이블을 이용하여 허브나 스위치를 이용하여 호스트와 연결

   : cross over UTP 케이블을 이용하여 호스트와 연결

 

   : 외부 네트워크(WAN)는 주로 Serial 포트를 이용하여 연결하며 clocking을 제공하는 CSU/DSU디바이스에 접속되어 있다. 그러나 실습하는 과정에서는 실제의 WAN 망이 없으므로 이를 대신하는 V.35 케이블을 이용하여 Back-to-Back 연결을 한다.


   : DCE(Data circuit-terminating Equipment)

    : V.35 케이블을 이용하여 연결 할 때 서비스를 제공하는 역할

    : Back-to-Back연결을 이용하여 연결 시 클럭 속도 설정해주어야 통신이 된다.

    : 대역폭 설정은 RIP에서는 필요 없지만 필요한 경우에는 반드시 설정해주어야 한다.


   : DTE(Data Terminal Equipment)

   : 서비스를 받는 역할


  - Ethernet 인터페이스의 IP 설정

   : ip address [IP_Address] [Subnet_Mask]


   : Router(config)# int fa0/0

   : Router(config-if)# ip address [IP_Address] [Subnet_Mask]

   : Router(config-if)# no shutdown


  - Serial 인터페이스의 IP 설정

   : ip address [IP_Address] [Subnet_Mask]


   : Router(config-if)# int s0/0

   : Router(config-if)# ip address [IP_Address] [Subnet_Mask]

   : Router(config-if)# no shutdown

   : Router(config-if)# clock rate 64000

    (DEC 시리얼 인터페이스 쪽에서 clock rate 명령을 이용하여 clocking을 제공하어야 통신이 가능하다.)


   : Router(config-if)# bandwidth 64

    (필요할 경우 대역폭도 설정해 준다.)


 7.10. Description 명령

  - description [내용]

   : 인터페이스에 대한 설명을 설정

   : Router(config)# int s0/1

   : Router(config-if)# description WAN to RouterB


  - show running-config / show interface

   : Router# sh in s0/1

   : Serial0/1 is up, line protocol is up

   :  Hardware is PowerQUICC Serial

   :  Description: WAN to RouterB

   :  Internet address is [IP_Address/Subnet_Mask]


 7.11 Config 파일의 저장

  - copy run start / write memory

   : 라우터 설정이 끝난 경우 바로 라우터에 적용되어 실행되고 이 내용은 running-config에 저장된다.

   : 하지만 이 내용은 전원이 꺼지면 사라지게 되기 때문에 설정을 계속 라우터에 반영하고자 한다면 NVRAM에 저장해야 한다.


  - show startup-config

   : config 파일의 저장 과정을 진행 하였을 경우, show running-config와 내용이 같은지 확인 한다.


 7.12 Config 파일의 삭제

  : 관리자가 설정한 내용 NVRAM에 저장 했을 경우 startup-config의 내용을 삭제하고 깨끗한 상태에서 다시 설정작업을 

  - erase start

   : startup-config의 내용을 삭제

  - sh start

   : startup-config 내용보기

  - reload

   : 지운 내용을 반영하기 위해 라우터 재부팅


 8. 라우터의 동작 상태 보기

 8.1. Show version 명령어

  : 시스템 관련 중요 정보를 보여준다.

  : Cisco 라우터의 운영체제인 IOS의 버전과 이름

  : 라우터의 하드웨어 사양(메모리 크기, CPU 종류, 네트워크 인터페이스 모듈의 종류)


 8.2. 인터페이스 동작상태

  - show ip interface brief

   : 라우터 인터페이스의 설정 상태를 파악하기 위함 


  - 상태 정보

Link Status

Line Protocol

 

Administratively down

Down

물리 계층의 문제

(케이블이 연결되지 않은 처음 상태이거나 케이블 이상)

Up

Down

데이터 링크 계층의 문제

(동등한 encapsulations 사용이나 clock rate 명령어 사용으로 해결)

Up

Up

통신이 가능한 상태


  - show ip interface fa0/0

   : 특정 인터페이스에 대한 상세 정보를 알기 위함


  - show controllers serial 0/0

   : 인터페이스의 하드웨어 정보를 보기 위함

   : Serial 인터페이스 환경 설정 시 DCE, DTE인지 구분 하기 위함

+ Recent posts