453. 관계 데이터 모델의 구성
- 속성 (attributes)
- 개체의 성질, 분류, 식별, 수량, 상태 등을 나타내는 세부 정보의 관리 요소로서 개체를 구성하는 항목
- 튜플 (tuple)
- 릴레이션의 행을 구성하는 속성 값들의 집합
- 행(row), 레코드(record)와 같은 개념
- 차수 (degree)
- 속성(attribute)들의 수
- 카디널리티 (cardinality)
- 튜플(tuple)들의 수
- 도메인 (domain)
- 하나의 속성이 취할 수 있는 같은 타입의 원자(atomic) 값들의 집합
- 표현되는 속성 값의 범위를 나타냄
- 릴레이션 인스턴스 (Relation Instance)
- 릴레이션의 어느 시점에 들어 있는 튜플들의 집합 : 동적인 성질
- 튜플들의 집합으로 현재 들어가 있는 실제 데이터를 지칭
454. 속성
- 속성의 개념
- 하나의 개체는 연관된 속성들의 집합으로 설명되며 독립적인 의미를 갖지 않음
- 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 기본키의 개넘
- 속성 중에서 개체를 고유하게 식별할 수 있는 속성 또는 속성들의 집합을 주식별자 또는 기본키라고 함
- E-R 다이어그램에서 기본키에 속하는 속성은 밑줄을 그어서 표시
- 속성의 종류
- 단순 속성 (simple attribute)
- 더 이상 다른 속성으로 나눌 수 없는 속성
- E-R 다이어그램에서 실선 타원으로 표햔
- 복합 속성 (composite attribute)
- 두 개 이상의 속성으로 이루어진 속성
- 동일한 개체 타입이나 관계 타입에 속하는 속성 중에서 밀접하게 연관된 것을 모아 놓은 것
- 단일 값 속성 (single-valued attribute)
- 각 개체마다 정확하게 하나의 값을 갖는 속성
- E-R 다이어그램에서 단순 속성과 동일하게 표현됨
- 다중 값 속성 (multi-valued attribute)
- 각 개체마다 여러 개의 값을 가질 수 있는 속성
- E-R 다이어그램에서 이중선 타원으로 표현
- 저장된 속성 (stored attribute)
- 다른 속성과 독립적으로 존재하는 속성
- E-R 다이어그램에서 단순 속성과 동일하게 표현
- 유도된 속성 (derived attribute)
- 다른 속성 값으로부터 획득한 속성
- 관계 데이터베이스에서 릴레이션의 속성으로 포함시키지 않는 것을 권장
- E-R 다이어그램에서 점선 타원으로 표현
- 단순 속성 (simple attribute)
461. CSMA/CA, 매체 접근 제어 방식
- CSMA/CA
- 무선 랜에서 데이터 전송 시, 매체가 비어 있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방법
- 매체 접근 제어 (MAC) : 데이터 충돌을 방지하려고 LAN에 연결된 모든 장치는 정의된 규칙에 따라 전송 매체에 접근하는 기법
- CSMA/CD
- 주로 유선 네트워크에서 사용
- 데이터를 송신하기 전에 반송파 여부를 감지하여, 다른 컴퓨터나 스테이션에서 데이터 송신 중임을 판단하여 데이터를 전송하지 않는 방식
- 각 호스트가 전송 매체에 경쟁적으로 데이터를 전송하는 방식
- 전송된 데이터는 전송되는 동안에 다른 호스트의 데이터와 충돌할 수 있음
- 충돌이 발생하면 지속해서 재전송 시도
- 재시도할 때마다 Back-off하는 시간은 매번 2배씩 증가
- 16번 충돌이 계속 발생 시, 전송을 중지하고 에러 발생을 보고
- 토큰 제어 방식에 비해 구현이 비교적 간단
- 토큰 제어 방식
- 주로 유선 네트워크에서 사용
- 접속된 노드 사이를 패킷이 순차적으로 순환하는 동안 전송 주도권을 토큰을 얻은 노드가 전송하고 전송이 완료되면 토큰을 반납하는 방식
- 충돌 현상은 발생하지 않지만, 자신에게 토큰이 올 때까지 기다려야한다는 단점이 있음
- 대표적인 토큰 제어 방식 : 토큰 링, 토큰 버스 방식
- CSMA/CD
462. 결합도
- 결합도의 개념
- 모듈과 모듈 사이의 관련성이 어느 정도인가를 나타냄
- 관련성이 적을수록 모듈의 독립성이 높아 모듈 간 영향이 작아짐
- 좋은 코드는 결합도가 낮아야 함
- 결합도의 종류 : 가장 높은 품질 - 자료 결합, 가장 낮은 품질 - 내용 결합
- 자료 결합도 (Data Coupling) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 상호 작용이 일어남
- 스탬프 결합도 (Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭쳐 등이 전달되는 경우
- 제어 결합도 (Control Coupling) : 단순 처리할 대상인 값만 전달하는 것이 아니라 어떻게 처리해야 한다는 제어요소가 전달되는 경우
- 외부 결합도 (External Coupling) : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우
- 공통 결합도 (Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역변수를 갱신하는 식으로 상호 작용하는 경우
- 내용 결합도 (Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우
463. 비트연산자
- 비트 연산자의 종류
- & : 연산하는 비트가 모두 1이면 1을 반환 - 비트 AND 연산
- | : 연산되는 비트 중에서 하나라도 1이면 1을 반환 - 비트 OR 연산
- ^ : 연산되는 비트가 서로 다르면 1을 반환 - 비트 XOR 연산
- ~ : 비트 반전, 비트가 1이면 0으로 0이면 1로 반전시킴 - 비트 NOT 연산
- << : 지정한 수만큼 비트들을 전부 왼쪽으로 이동시킴 - left shift 연산
- >> : 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴 - right shift 연산
- 보기 소스코드 해설
#include <stdio.h> int main(int argc, char *argv[]) { int a = 4; int b = 7; int c = a | b; printf("$d", c); return 0; }
- int a = 4; : a 변수에 4를 할당 - 4를 비트로 나타내면 00000100
- int b = 7; : b 변수에 7을 할당 - 7을 비트로 나타내면 00000111
- .int c = a | b; : a, b의 값 4와 7를 비트로 변환하여 OR 연산을 수행 후 c에 할당
- printf("%d", c); : c에 할당된 변수의 정수값인 7을 출력
465. 교착상태 해결 방안
- 예방 (Prevention)
- 상호 배제 조건, 점유와 대기조건, 비선점 조건 및 환형 대기 조건의 부정
- 회피 (Avoidance)
- Banker's Algorithm(은행가 알고리즘), Wait-die, wound-wait 알고리즘
- 발견 (Detection)
- 시스템의 상태를 감시 알고리즘을 통해 교착 상태 검사
- 자원 할당 그래프, Wait for Graph
- 회복 (Recovery)
- Deadlock이 없어질 때까지 프로세스를 순차적으로 Kill하여 제거
- 프로세스 종료비용 최소화 : 우선순위, 진행비용, 복귀비용 등
- 자원의 우선순위 할당 : 희생자 선택, 복귀, 기아 상태
466. CIDR 표기 및 FLSM 사례
- CIDR 표기의 개념
- 도메인간의 라우팅에 사용되는 인터넷 주소를 원래의 IP 주소 클래스 체계를 쓰는 것보다 더욱 융통성 있도록 할당하고 지정하는 방식 (Supernetting, Subnetting)
- FLSM
- 동일한 크기로 현재의 네트워크를 나눈다는 의미
- 서브넷 대역에서 호스트들이 사용 가능한 IP 주소 중 제일 첫 IP 주소는 네트워크 주소
- 제일 마지막 IP 주소는 브로드 캐스트 주소로 할당
- 나머지 IP들은 호스트에 할당
- 192.168.1.0/24의 의미
- 서브넷 마스크 : 2555.255.255.0
- 8비트 크기의 앞쪽 3개 필드를 합치면 24개 비트가 되고 이를 CIDR로 표시하면 /24를 붙임
- /24의 의미는 현재의 IP에서 앞의 24비트는 Net ID로 사용하고 뒤의 8비트는 Host ID로 사용중임을 의미하므로 서브넷 마스크는 255.255.255.0이 됨
- FLSM 방식으로 192.168.1.1.0/24를 이용하여 8개의 subnet으로 나눔
- /24의 네트워크를 8개로 나누려면 뒤에 있는 8개 비트인 Host ID에서 3개의 비트를 빌려 와서 2^3인 8개 대역으로 나눌 수 있음
- 만일 3개의 비트만 빌려 오면 2^3인 8개가 서브네팅 가능한 최대 개수
- 3개의 비트를 Net ID로 가져온 경우 이를 CIDR로 표시하면 192.168.1.1.0/27이 됨 : Net ID 개수가 총 27개 (24+3)라는 의미
- 서브넷 마스크 : 255.255.255.224
- 224 : 마지막 8개 비트에서 Net ID로 할당한 3개를 1로 세팅한 후 10진수로 표현하면 11100000이 224가 됨
468. 가상 기억 장치
- 가상 기억 장치의 문제점
- Demand Paging
- 요구될 때에만 프로세스의 Page들을 적재하는 방식
- 해결방안 : 구역성(지역성)
- Page Fault Trap
- 기억장치에 적재되지 않은 Page를 사용하려는 경우 발생
- 해결방안 : 프로세스 검사하여 판단, 빈공간(Free Frame) 검색, 디스크로부터 요구, 중단된 명령의 재수행
- Thrashing
- Page 부재가 너무 빈번하게 발생하여 CPU가 프로세스 수행보다 Page 교체에 더 많은 시간을 소요하는 비정상적인 현상
- 해결방안 : 구역성, 워킹세트, 페이지 프레임 조정
- Demand Paging
- 기억장치 문제점 해결 방안
- 구역성 관리 (Locality)
- 프로그램의 어느 한 특성 부분만 한동안 집중적으로 참조하기 때문에 페이징의 성능이 좋아지는 현상
- 시간 구역성, 공간 구역성, 순차 구역성
- 프리 페이징 (Prepaging)
- 과도한 페이지 부재를 줄이기 위해 모든 페이지를 한 번에 페이지 프레임에 적재하는 기법
- 페이지 적재 과다
- 위킹 세트 (Working Set)
- 하나의 프로세스에 자주 참조되는 페이지를 모아놓은 기법으로 그 집합에 속하지 않은 페이지를 교체
- 스래싱(Thrashing) 방지
- 페이지 프레임 조정 (Page Fault Frequency)
- 현재 페이지 부재와 바로 전 페이지의 페이지 부재 사이를 관찰하여 지금까지보다 페이지 부재 갯수가 많으면 호출되지 않았던 페이지들을 제거하여 페이지 프레임의 빈 공간을 늘이는 기법
- 특징 : PFF가 높으면 Residence Set 크기 증가, 낮으면 줄임
- 구역성 관리 (Locality)
469. 프레임 워크
- 프레임워크의 개념
- 효율적인 정보 시스템 개발을 위한 구조나 틀을 의미
- 공통 라이브러리, 온라인, 배모바일 개발 및 실행 환경, 어플리케이션 인터페이스와 개발에 유용한 각도구나 설정 정보 등을 제공
- 소프트웨어 개발에 필요한 부가 기능, 도구, 가 등을 제공하여 개발 및 운영 효율성과 생산성을 향상시킬 수 있음
- 프레임워크의 특징
- 모듈화 (modularity) : 인터페이스에 의한 캡슐화를 통해 모듈성을 강화하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상시킴
- 재사용성 (reusability) : 반복적으로 사용할 수 있는 컴포넌트를 정의하여 재사용성을 높여줌
- 확장성 (extensibility) : 어플리케이션이 프레임워크의 다양한 기능과 인터페이스를 이용할 수 있음
- 제어의 역전 (IoC) : 프레임워크가 전체 어플리케이션 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 특정 함수나 메소드를 처리 흐름에 삽입할 수 있음
- 주요 프레임워크의 종류
- JAVA 기반 : 스프링 프레임워크
- 스프링 프레임 기반 : 전자정부 표준 프레임워크, 파이썬의 장고(django)
- Javascript를 지원하는 프레임워크 : 리액트(React), 뷰(Vue), 앵귤러(Angular) 등
- 프레임워크 선정 시 고려할 사항 : 목표 대상의 요구사항, 하드웨어 및 소프트웨어 환경을 분석하여 적절한 개발 프레임워크를 선정
471. 환경 변수
- 환경변수 확인
- 환경변수 : 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
- Unix나 Linux Shell에서는 보통 $ (달러) 사인을 사용하여 환경 변수의 값을 출력 : $echo $PATH
- printenv 명령어
- 변수 없이 사용하면 모든 환경변수와 그에 따른 모든 값을 보여줌
- 변수 이름을 명령어에 단일 변수로 주면 하나의 단일 변수를 인쇄하는데 쓰일 수도 있음
- env와 set은 또한 환경변수를 설정하는데 쓰일 수도 있으며 자주 쉘 명령어에 직접 통합되기도 함
- Linux/Unix 운영 체제의 주요 환경변수
- $PATH
- 콜론으로 구분된 디렉터리 목록을 포함하며 쉘은 이름에 슬래시가 포함되지 않는 명령을 검색
- 도스, OS.2, WINDOWS의 %PATH% 변수와 동일
- $HOME
- 사용자의 홈 디렉터리의 위치를 포함
- getpwuid, getuid와 같은 C 함수를 통해 현재 사용자의 홈 디렉터리를 찾아낼 수 있으나 다양한 쉘 스크립트(및 다른 컨텍스트)에서 편의를 위해 $HOME이 자주 사용됨
- $PWD
- 현재 디렉터리의 변수 지점, pwd 명령어를 변수 없이 호출할 때의 출력과 동일
- $DISPLAY
- X1 프로그램이 기본적으로 사용할 디스플레이 식별자를 포함
- $PATH
472. C언어의 ascii code
- ascii code
- 대문자 "A"를 10진법으로 나타낼 경우 : 65
- 소문자 "a"를 10진법으로 나타낼 경우 : 97
- 보기 소스코드 해설
#include <stdo.h> int main(int argc, char *argv[ ]) { char a; a = 'A' + 1; printf("%d", a); return 0; }
- a = 'A' + 1; : ascii code에 의해 A는 65이므로 65 + 1인 66을 변수 a에 입력
- printf("%d", a); : 변수 a에 할당된 66를 정수형으로 출력
473. C언어의 포인터
- 포인터
- * : 포인터를 의미
- 포인터 : 주소값을 나타냄
- 보기 소스코드 해설
#include <stdio.h> int main(int argc, char *argv[] { int a[2][2] {(11, 22}, (44, 55)}; int i, sum = 0; int * p; p = a[0]; for (i = 1; i < 4; i++) sum += *(p + i); printf("%d", sum); return 0; }
- int a[2][2] {(11, 22), (44, 55)}; : 이차원 배열의 a[2][2]의 값을 도식화하면 아래와 같음
- int *p; / p = a[0]; : *p 포인터 p 변수에 a 배열의 [0] 주소 값을 입력
- for(i = 1; i < 4; i++) / sum += *(p + i); / printf("%d", sum);
- (p+i)에서는 p는 a 배열의 [0] 주소값을 가지고 있으나 i = 1로 설정했기 때문에 a[1] 주소값을 뜻함
- *p는 첫 for문에서 a[1] 주소값이고, 이후 반복문을 통해 덧셈 연산을 수행
- 22 + 44 + 55 = 121
474. 가상 메모리 관리 기법
- 페이징 (Paging)
- 같은 크기의 페이지로 편성 운영하는 기법
- Page Fault, 내부 단편화와 같은 문제점 발생
- 세그먼트 (Segmentation)
- 크기가 다른 논리적 단위의 세그먼트로 분할 및 할당
- 블록 크기가 가변적으로 외부 단편화 발생 가능
475. 응집도
- 응집도의 개념
- 모듈 내부의 구성 요소들 간 관계의 밀접 정도로 평가
- 응집도가 높을수록 필요한 요소들로 구성되어 지고 낮을수록 요소들 간의 관련성이 적은 요소들로 구성
- 좋은 코드는 응집도가 높은 코드
- 응집도의 종류 : 가장 높은 품질 - 기능적 응집도, 가장 낮은 품질 - 우연적 응집도
- 기능적 응집도 (Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행
- 순차적 응집도 (Sequential Cohesion) : 모듈 내에서 한 할동으로부터 나온 출력값을 다른 활동이 사용하는 경우
- 통신적 응집도 (Communication Cohesion) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
- 절차적 응집도 (Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행하는 경우
- 시간적 응집도 (Temporal Cohesion) : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우
- 논리적 응집도 (Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
- 우연적 응집도 (Coincidential Cohesion) : 모듈 내부의 각 구성 요소들이 연관이 없는 경우
476. TCP 프로토콜
- TCP 프로토콜의 개념
- TCP/IP 프로토콜 중 하나로 OSI 계층모델의 관점에서 트랜스포트 계층에 해당
- 양 중단 호스트 내 프로세스 상호 간에 신뢰성을 높인 연결지향성 서비스를 제공
- 신뢰적인 전송을 보장 : 어플리케이션 구현이 한층 용이
- TCP의 주요 특징
- 신뢰성
- 패킷 손실, 중복, 순서 바뀜 등 오류가 없도록 보장
- TCP 하위 계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성 제공
- 연결지향적
- 같은 전송 계층의 UDP가 비연결성인 것과는 달리 TCP는 연결 지향적
- 연결 관리를 위한 연결 설정 및 연결 해제 단계 필요
- 전이중 전송방식 / 양방향성
- 종단 간 양 프로세스가 서로 동시에 세그먼트를 전달
- 양방향 각각에 대해 '송수신 버퍼' 및 '순서번호' 유지
- 멀티캐스트 불가능
- 단대단 전송 방식 (1 : 1) : 유니캐스트
- 단일 송신자와 단일 수신자 간에 단일 경로 연결이 설정
- 상위 응용과는 바이트 스트림으로 송수신
- 바이트 스트림을 연속적인 흐름으로 이들을 묶어 전송
- 상위 응용 개발자들이 흐름제어, 회선 관리, 전송 단위 등을 신경 쓰지 않게 지원
- 세그먼트화 처리
- 데이터를 패키징으로 처리
- TCP 세그먼트
- 바이트의 앞에서 TCP 헤더를 붙이고, 이를 순서제어
- TCP에서 IP로 전달되는 정보 단위 (통상 수 백 바이트 정도)로 양끝단의 TCP 모듈 간에 서로 교환되는 데이터 단위
- 신뢰성
478. 문자열 변환 함수
- atoi (Ascii To Integer)
- 문자를 int로 변환하는 함수
- C언어 사례 : int atoi(const char* str
- atol (Ascii To Long)
- 문자를 long으로 변환하는 함수
- C언어 사례 : long int atol(const char* str
- atoll (Ascii To LongLong)
- 문자를 long long int로 변환하는 함수
- C언어 사례 : long long int atoll(const char* str
- atof (Ascii To Float)
- 문자를 부동 소수점 값으로 변환하는 함수
- C언어 사례 : double atof(const char* str
479. 스크립트 언어
- 스크립트 언어 (Scripting language)
- 응용소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 말함
- 응용 프로그램과 독립하여 사용되고 일반적으로 응용 프로그램의 언어와 다른 언어로 사용되어 최종 사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행
- 자바스크립트 (JavaScript)
- 웹 브라우저 내에서 주로 사용
- 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있음
- 객체지향 프로그래밍 언어
- 클래스 기반으로 객체 상속 기능을 지원
- 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용
- 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있음
- 대표적인 객체 지향 프로그래밍 언어
- C# : 마이크로스프트 사에서 개발한 객체 지향 프로그래밍 언어, 닷넷 프레임워크 환경에서 동작
- JAVA : 썬 마이크로시스템즈에서 개발한 객체지향 프로그랭 언어
- Delphi (델파이) :기본적인 문법은 파스칼 문법과 같지만 파스칼에 여러 기능이 추가되어 현재는 델파이라는 언어로 발전
- Swift (스위프트) : 애플의 iOS와 MacOS를 위한 프로그래밍 언어, 오브젝티브-C와 함께 공존할 목적
484. 접근 제어 모델 : Bell-LaPadula 모델
- Bell-LaPadula 모델의 개념
- 미국방부에서 개발한 정책
- 군사 보안 요구사항에 만족시키기 위한 방안
- 정보의 불법적인 유출을 막기 위해 개발된 최초의 수학적 모델
- 특정 객체에 대한 접근은 특정 직무가 접근을 요구하는 경우에만 분류된 수준에 대하여 허가되는 정책
- Bell-LaPadula 모델 주요 특징
- 사용자는 주어진 보안 등급보다 높은 등급의 데이터는 읽을 수 없음 : No read up
- 사용자는 주어진 보안 등급보다 낮은 등급의 데이터에 기록할 수 없음 : No write down
486. OSPF 라우팅 프로토콜
- OSPF 라우팅 프로토콜의 개념
- 자치시스템 내부의 라우터들 간의 라우팅 정보를 교환하는 링크 상태 라우팅 프로토콜
- 경로 설정 시 hop Count만 고려한 RIP애 비해서 대역폭 및 이용도를 계산해서 최적 경로를 계산
- OSPF 라우팅 프로토콜의 장점
- 컨버전스 타임
- 라우터 간에 서로 변경된 정보를 주고 받는데 걸리는 시간
- RIP의 경우 30초마다 업데이트가 발생하므로 컨버전스에 많은 시간이 걸리지만 OSPF는 변화가 생길 때 바로 전달하기 때문에 훨씬 빠름
- Area (영역) 사용
- 전체 네트워크를 작은 영역으로 나누어 관리
- 작은 영역으로 나누어진 부분에서 변화가 일어나더라도 ABR 라우터를 통해 다른 영역과 연결이 가능하다면 다른 영역이 그 변화를 알 필요가 없음
- VLSM 지원
- VLSM을 지원해 IP 주소를 효과적으로 사용할 수 있음
- VLSM (Variable Length Subnet Mask)
- 네트워크 주소와 서브넷 마스크를 통한 네트워크 표현방식
- 서브넷 마스크를 이용하여 IP 분할 가능
- 만일, Class C 주소를 할당 시 256개 호스트 주소가 가능하나, 이보다 작은 수의 주소만이 필요할 때, 적은 수의 주소를 할당 가능하여 주소의 낭비를 막을 수 있음
- 네트워크 크기
- RIP는 홉 카운트가 15로 제한되어 있기 때문에 네트워크 크기가 제한적
- OSPF는 제한이 없음
- 경로 설정
- RIP의 경우 홉카운트만 따지기 때문에 속도나 딜레이 지연 등의 요소와 상관없이 홉 카운트가 적은 것을 선호
- OSPF는 속도나 딜레이를 감안해 경로를 선택하기 때문에 정확한 경로 선택이 가능
- 컨버전스 타임
- OSPF 라우팅 프로토콜의 구성요소
- Backbone Area
- 각 Area에서 라우팅 정보를 전달 받아 다른 Area로 전달
- Leaf Area
- Backbone Area를 제외한 나머지 Area
- 반드시 Backbone Area에 연결되어야 함
- internal Router(IR)
- Area 내부에 있는 라우터
- Area Border Router(ABR)
- 두 개 이상의 Area에 속한 경계 라우터
- AS Boundary Router(ASBR)
- 다른 라우팅 프로토콜이 구동되는 네트워크가 연결되는 라우터
- Designate Router / Backup DR (DR/BDR)
- Ethernet 등 Multi-access Broadcast Network 환경에서 Segment 내의 라우팅 정보를 중계하는 라우터
- Link State Advertisements (LSA)
- Link State에 변화가 있을 경우 이것을 모든 라우터에게 즉시 전달하는데 이러한 Link State를 전달하는 Message
- Backbone Area
487. 소프트웨어 비용 추정 모형
- 하향식 산정 기법
- 과거의 유사 경험을 바탕으로 회의를 통해 산정하는 비과학적인 기법
- 조직 내 경험이 있는 2명 이상의 전문가에게 비용 산정을 의뢰하는 전문가 판단 기법과 한 명의 조정자와 다수 전문가의 의견을 종합하여 비용을 산정하는 델파이 기법
- 상향식 산정 기법
- 프로젝트의 세부 작업 단위별로 비용을 산정한 후 전체 비용을 합산하여 산정하는 방법
- 대표적 기법 : 원시코드 라인 수 (LOC), 개발 단계별 노력 방법
- 수학적 산정 기법
- 상향식 비용 산정 기법
- 경험적 추정 기법, 실험적 추정 기법
- 대표적 기법 : COCOMO, putnam, 기능 점수법(FP)
488. 코드 오류의 종류
- 사본 오류 (Transcription Error) : 코드 기입 시 임의의 한 자리를 잘못 표기한 경우
- 전위 오류 (Transposition Error) : 코드 기입 시 임의의 연속된 자리가 바뀌어서 표기된 경우
- 이중 오류 (Double Transposition Error) : 코드 기입 시 전위 에러가 중복해서 발생한 경우
- 랜덤 오류 (Random Error) : 위의 오류가 일정한 규칙 없이 발생한 경우
- 샹략 오류 (Omission Error) : 코드 기입 시 한 글자를 빼먹고 기술한 경우
- 첨가 오류 (Addtion Error) : 코드 기입 시 한 글자가 추가되어 기술된 경우
489. ISO/IEC 12207 표준
- ISO/IEC 12207 표준의 개념
- 체계적인 소프트웨어 획득, 공급, 개발, 운영/유지보수를 위해서 소프트웨어 생명주기 공정 표준을 제공함으로써 소프트웨어 실무자들이 개발 및 관리에 동일한 언어로 의사소통 할 수 있는 기본틀을 제공하기 위한 국제 표준
- ISO/IEC 12207 표준 주요 프로세스
- 기본 생명 주기
- 획득 프로세스 : 시스템, 소프트웨어 제품 또는 소프트웨어 서비스를 획득하는 획득자 또는 획득 조직이 수행할 활동을 정의
- 공급 프로세스 : 시스템, 소프트웨어 제품 또는 소프트웨어 서비스를 공급하는 공급자 또는 공급 조직이 수행할 활동을 정의
- 개발 프로세스 : 소프트웨어 제품을 정의하고 개발하는 개발자 또는 개발 조직이 수행할 활동을 정의
- 운영 프로세스 : 사용자를 위하여 실제 환경에서 컴퓨터 시스템의 운영 서비스를 제공하는 운영자 또는 운영 조직이 수행할 활동을 정의
- 유지 보수 프로세스 : 소프트웨어 제품의 유지보수 서비스를 제공하는 유지 보수자 또는 유지 보수 조직이 수행할 활동을 정의
- 지원 생명 주기
- 문서화 : 생명 주기 프로세스에 의하여 산출되는 정보의 기록을 위한 활동 정의
- 품질 보증 : 소프트웨어 제품 및 프로세스가 명시된 요구사항에 적합하며 이미 수립된 계획에 따르고 있음을 객관적으로 보증하기 위한 활동을 정의
- 형상 관리 : 구성 관리 활동을 정의
- 검증 : 소프트웨어 프로젝트에 따라 다양한 깊이로 소프트웨어 제품을 검증하기 위한 획득자, 공급자 또는 독립 조직을 위한 활동 정의
- 확인 : 소프트웨어 프로젝트의 소프트웨어 제품을 확인하기 위한 획득자, 공급자 또는 독립 조직을 위한 활동 정의
- 문제 해결 : 개발, 운영, 유지보수 또는 다른 프로세스 활동 수행 중 발견된 부적합 사항을 포함한 문제점을 분석, 제거하기 위한 프로세스 정의
- 합동 검토 : 활동의 상태 및 제품을 평가하기 위한 활동을 정의
- 감사 : 요구사항, 계획 및 계약에 대하여 적합성을 결정하기 위한 활동 정의
- 조직 생명 주기
- 기반 구조 프로세스 : 생명주기 프로세스 기본 구조를 확립하기 위한 기본 활동 정의
- 관리 프로세스 : 생명주기 프로세스 동안 프로젝트 관리를 포함한 기본적인 관리 활동을 정의
- 개선 프로세스 : 조직 생명 주기 프로세스의 확립, 측정, 통제, 개선을 위하여 수행하는 기본 활동을 정의
- 훈련 프로세스 : 적절하게 훈련된 요원을 제공하기 위한 활동을 정의
- 기본 생명 주기
493. 해시 함수의 유형
- SHA-1
- 160비트 암호화 해시 함수
- 1993년 미국 NIST에서 개발
- 보안강도가 약해 SHA-256, SHA-512로 대체되고 있음
- 활용 : 전자서명
- MD5
- 128비트 기반 암호화 해시 함수
- 결과 값이 16개 문자열
- 설계상 결함으로 사용히 줄어드는 추세
- 활용 : 메시지 무결성 검사
- HAVAL
- MD5를 변형하여 만든 해시함수
- 128비트에서 256비트까지 다양한 크기가 가능
- 활용 : MD5 단점 보완
- Tiger
- 64비트 CPU에 최적화
- 32비트 CPU에서도 빠르게 동작 가능
- 활용 : 64비트 CPU의 해시
495. 메모리 버퍼 오버플로우
- 메모리 버퍼 오버플로우의 개념
- 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고 할 때 발생
- 프로그램의 오동작을 유발시키거나, 악의적인 코드를 실행시킴으로써 공격자 프로그램을 통제할 수 있는 권한을 획득하게 됨
- 메모리 버퍼 오버플로우의 보안 대책
- 스택가드 (Stackguard)
- 카나리라고 불리는 무결성 체크용 값을 복귀주소와 변수 사이에 삽입해둠
- 버퍼 오버플로 시 카나리값이 변하게 되는데, 이 경우 복귀주소를 호출하지 않음
- gcc 등 각종 컴파일러에 이 기법에 반영되어 업데이트 됨
- 스택쉴드 (Stack Shield)
- 함수 시작 시 : 복귀주소를 Global RET라는 특수 스택에 저장
- 함수 종료 시 : 저장된 값과 스택의 RET값을 비교해 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단
- ASLR (Address Space Layout Randomization)
- 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화
- 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정주소 호출을 차단
- 안전한 함수 사용
- 프로그램 개발 시 입력값에 대한 크기 검증을 적절히 수행하거나 취약하지 않은 함수만을 사용한다면 어느 정도 방지할 수 있음
- strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()
- 스택가드 (Stackguard)
497. Secure OS 개념
- 컴퓨터 사용자에 대한 식별 및 인증, 강제적 접근 통제, 임의적 접근 통제, 재사용 방지, 침입 탐지 등의 보안 기능 요소를 갖추어진 운영체제
- 해킹의 주요 대상인 서버 내의 자산에 대한 접근을 통제하는 커널 수준의 시스템 보안 소프트웨어를 의미
498. nmap
- 네트워크 보안을 위한 유틸리티
- 대규모 네트워크를 고속으로 스캔하는 도구
- 네트워크에 어떤 호스트가 살아 있는지 어떤 포트를 사용하는지 운영체제가 뭔지 등의 네트워크의 수 많은 특징을 점검할 수 있는 도구
500. 대칭 키 암호화
- 대칭 키 암호화 (Symmetric Key)의 개념
- 암호화를 할 때 사용하는 암호화 키와 복호화를 할 때 사용하는 복호화 키가 동일한 암호화 기법
- 암호문을 송신하거나 수신하는 사용자는 사전에 암호화키를 교환해야 함
- 대칭키 암호화 기법은 키 교환을 어떻게 할 것인가에 대한 문제가 발생
- 장점 : 작은 비트의 암호화키를 사용하여 빠르게 암호화하거나 복호화할 수 있다
- 종류 : Session Key, Shared Key, Secret Key, Symmetric Key
- 대칭 키 알고리즘 유형
- AES
- 1998년 미국의 표준기술 연구소(NIST)에 의해서 수행된 암호화 알고리즘 공모전에 선정된 암호화 기술
- 대칭키 암호
- 세 종류의 키 사용 : 128비트, 192비트, 256비트
- 활용 : WPA2 무선 인증 등
- ARIA
- 학계 (Academy) + Research Institute + 정부 기관 (Agency) 합작
- 경량 환경 및 하드웨어 구현을 위해 최적화된, Involutional SPN 구조를 갖는 범용 블록 암호화 알고리즘
- 활용 : 국내 공공기관
- IDEA
- 128비트의 키를 사용해 64비트의 평문을 8라운드에 거쳐 64비트의 암호문으로만 구성
- 모든 연산이 16비트 단위로 이루어지도록 하여 16비트 프로세서에서 구현이 용이하며 주로 키 교환에 사용
- 활용 : PGP 메일 암호 등
- RC5
- 1994년 미국 RSA 연구소의 리베스트가 개발
- 비교적 간단한 연산 : 빠른 암호화와 복호화 기능을 제공하여 모든 하드웨어에 적합
- 입출력, Key, 라운드 수가 가변인 블록 알고리즘
- 32, 64, 128 비트의 키를 사용
- 활용 : RC4 개선
- AES
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 551 ~ 600 오답정리 (0) | 2025.04.14 |
---|---|
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 501 ~ 550 오답정리 (0) | 2025.04.13 |
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 401 ~ 450 오답정리 (0) | 2025.04.12 |
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 351 ~ 400 오답정리 (0) | 2025.04.10 |
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 301 ~ 350 오답정리 (0) | 2025.04.09 |