포스트

2020 4회

Q. 현재 IPv4의 확장형으로 IPv4가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128비트 주소체계를 갖는 차세대 인터넷 프로토콜은 무엇인가?

IPv6

  • IPv4
    • IPv4의 주소체계는 10진수로 총 12자리이며, 네 부분으로 나뉜다.
    • 각 부분은 0~255까지 3자리의 수로 표현한다.
    • IPv4 주소는 32bit로 구성되어 있으며, 인터넷 사용자의 증가로 인해 주소 공간의 고갈로 128bit 주소체계를 갖는 IPv6가 등장, 점차 확산되고 있다.
  • IPv6
    • IPv4의 기존 32bit 주소 공간에서 벗어나 IPv6는 128bit 주소 공간을 제공하고, IPv6는 네트워크의 물리적 위치에 제한받지 않고 같은 주소를 유지한다.
    • 주소 고갈, 보안성, 자료 전송 속도 빠름
    • 인증성, 기밀성, 데이터 무결성 지원으로 보안문제 해결
    • 확장성, 융통성, 연동성이 뛰어나며 실시간 흐름 제어로 향상된 멀티미디어 기능 지원
    • 16비트 씩 8부분 총 128비트로 구성
    • 유니캐스트(Unicast), 멀티캐스트(Multicast), 애니캐스트(Anycast) 세 가지 주소 체계

Q. 목적에 따른 디자인 패턴의 유형에는 생성, 구조, (  ) 이/가 있다. 괄호 (   ) 안에 알맞는 유형을 쓰시오.

행위

  • 디자인 패턴의 유형은 다음과 같다.
    • 목적
      • 생성: 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
      • 구조: 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
      • 행위: 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴
    • 범위
      • 클래스: 클래스 간 관련성(상속 관계를 다루는 패턴)
      • 컴파일 타임에 정적으로 결정
    • 객체
      • 객체 간 관련성을 다루는 패턴
      • 런타임에 동적으로 결정

Q. 다음은 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.

패키지 다이어그램

이미지

  • UML(Unified Modeling Laguage)다이어그램
    • UML 다이어그램은 통합 모델링 언어를 사용하여 시스템 상호작용, 업무흐름, 시스템 구조, 컴포넌트 관계 등을 그린 도면
    • 프로그래밍을 단순화 시켜 표현하여 의사소통하기 좋고, 대규모 프로젝트 구조의 로드맵을 만들거나 개발을 위한 시스템 구축에 기본을 마련
  • 패키지 다이어그램
    • 폴더 모양의 패키지와 점섬으로 표시된 의존관계, «import»라는 스테레오 타입 표기를 통해 패키지 다이어그램 파악할 수 있다.
    • 패키지 다이어그램은 시스템의 서로 다른 패키지들 사이의 의존관계를 표현하기 위한 다이어그램으로 패키지와 의존관계로 표현한다.
      • 패키지
        • 요소들을 그룹으로 조직하기 위한 요소
      • 의존관계
        • 하나의 패키지가 다른 패키지를 사용하는 관계
        • 의존성의 성질을 나타내기 위해 스테레오 타입을 붙일 수 있음
        • 스테레오 타입에는 «import», «access»가 있음

Q. 데이터베이스의 회복(Recovery) 기법 중 Rollback 시 Redo, Undo가 모두 실행되는 트랜잭션 처리법으로 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법은 무엇인가?

즉각 갱신 회복 기법

  • 트랜잭션 수행 도중 데이터를 변경하면 변경 정보를 로그 파일에 저장하고, 트랜잭션이 부분 완료되기 전이라도 모든 변경 내용을 즉시 데이터베이스에 반영하는 기법. 회복 시 로그 파일을 참조하여 Redo와 Undo 연산을 모두 실행

  • 회복 기법 종류

    • 로그 기반 회복 기법
      • 지연 갱신 회복 기법 (Deferred Update)
        • 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법
        • Redo 작업만 가능함
      • 즉각 갱신 회복 기법 (Immediate Update)
        • 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
        • **Rollback 시 Redo, Undo가 모두 실행
    • 체크 포인트 회복 기법, 검사점 기법 (Check Point Recovery)
      • 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 회복 작업 수행
    • 그림자 페이징 회복 기법 (Shadow Paging Recovery)
      • 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법
      • 트랜잭션이 실행되는 메모리상의 current page table과 하드디스크의 shadow - page table 이용
    • 미디어 회복 기법
      • 디스크와 같은 비휘발성 저장 장치가 손상되는 장애 발생을 대비한 회복 기법

Q. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. ①, ②에 알맞는 값을 적으시오.

n > 0 또는 n >=1 또는 i < 8 또는 i <= 7

n%2 또는 n&1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Soojebi {
	public static void main(String[] args) {
		int[]a = new int[8];
		int i=0; int n=10;
		while (  ) {
			a[i++] = (  );
			n /= 2;
		}
		for(i=7; i>=0; i--){
			System.out.print(a[i]);
		}
	}
}
  
[출력결과]
00001010
  • for 문을 보면 a[7]번지부터 a[0]번지 순으로 출력하기 때문에 a[0]번지가 1의 자리가 된다.
  • while 문 안에서 a[i++]이라는 코드를 보면 while 문이 a의 개수인 8번 이내로 반복해야 한다. 그러기 위해서는 i < 8 또는 i <= 7로 동작시키면 된다.
  • while 안에서 a[i]에는 0과 1의 값을 넣어야 한다.(a는 2진수 값을 저장하기 때문에 0과 1만 값이 있어야 함)
  • n을 2로 나눴을 때 나머지가 이진수 변환하는 데 필요로 하는 값이므로 ②에는 n%2를 넣거나 비트 연산자를 사용한 n&1을 넣으면 된다.

Q. 다음은 자바 소스 코드이다. 출력 결과를 보고 , ①, ②에 알맞는 값을 적으시오.

3, 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Soojebi {
	public static void main(String[] args) {
		int[][]a = new int[][];
		for(int i=0; i<3; i++){
			for(int j=0; j<5; j++){
				a[i][j] = j*3+(i+1);
				System.out.print(a[i][j]+"");
			}
			System.out.println();
		}
	}
}

[출력결과]
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
  • for 문에서 바깥쪽 i는 0부터 2까지 총 3개, 안쪽 j는 0부터 4까지 총 5개이므로 int[3개][5개]가 되어야 하므로 int [][]a = new int [3][5];가 되어야 한다.

Q. 스니핑(Sniffing)에 대하여 서술하시오.

스니핑은 공격 대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법이다.(도청)

  • 네트워크 공격 기법은 다음과 같다.
    • 스니핑(Sniffing)
      • 공격 대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법
      • 암호화되지 않은 패킷들을 수집하여 순서대로 재조합 후 ID, 패스워드와 같은 중요한 정보를 유출하기 위한 수동적인 형태의 공격
    • 네트워크 스캐너(Scanner, Sniffer)
      • 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격도구
    • 패스워드 크래킹(Password Cracking)
      • 사전(Dictionary) 크래킹
        • 시스템 또는 서비스의 ID와 패스워드를 크랙하기 위해서 ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어 놓고 이 파일의 단어를 대입하여 크랙하는 공격 기법
      • 무차별(Brute force) 크래킹
        • 패스워드로 사용될 수 있는 영문자(대소문자), 숫자, 특수문자 등을 무작위로 패스워드 자리에 대입하여 패스워드를 알아내는 공격 기법
      • 패스워드 하이브리드 공격(Password Hybrid Attack)
        • 사전공격과 무차별 대입 공격을 결합하여 공격하는 기법
      • 레인보우 테이블 공격(Rainbow Table Attack)
        • 패스워드별로 해시값을 미리 생성해서 테이블에 모아 놓고, 크래킹하고자 하는 해시값을 테이블에서 검색해서 역으로 패스워드를 찾는 공격 기법
    • IP 스푸핑(IP Spoofing)
      • 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 타깃 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트 IP 어드레스로 위조하여 타깃에 전송하는 공격 기법
    • ARP 스푸핑(ARP Spoofing)
      • 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격 기법
    • ICMP Redirect 공격
      • ICMP 리다이렉트는 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격 기법
      • ICMP Redirect 메시지를 공격자가 원하는 형태로 만들어서 특정 목적지로 가는 패킷을 공격자가 스니핑하는 공격 기법
    • 트로이 목마(Trojan Horse)
      • 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램
      • 자기 복제 능력은 없음(웜과의 차이)
      • 사용자가 원하는 무언가로 변장해 시스템 방어망을 뚫고 들어가는 공격 기법

Q. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?

NAT(Network Address Translation)

  • NAT(Network Address Translation, 네트워크 주소 변환)
    • NAT은 1개의 정식 IP 주소에 대량의 가상 사설 IP 주소를 할당 및 연결하는 기능(사설 IP 주소 → 공인 IP 주소로 변경)
    • 1개의 IP 주소를 사용해서 외부에 접속할 수 있는 노드는 어느 시점에서 1개로 제한되는 문제가 있지만 IP 마스커레이드(Masquerade)를 이용하여 해결할 수 있음
    • 컴퓨터 네트워킹에서 쓰이는 용어로서, IP 패킷의 소스 및 목적지의 IP 주소와 TCP/UDP 포트 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술로써 네트워크 주소 변환이라고 함
    • NAT는 보통 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위하여 사용한다.
    • NAT를 통해 외부의 공인 IP 주소와 포트 주소에 해당하는 내부 IP 주소를 변환시켜서 통신을 수행한다.
    유형설명
    Static NAT사설 IP주소와 공인 IP주소가 1:1로 연결되는 구성
    Dynamic NAT사설 IP와 공인 IP주소가 N:1 또는 N:M으로 연결되는 구성

Q. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.

[1,2,3]

7

1 2 3

4 5

6 7 8 9

1
2
3
4
5
6
7
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol:
	for item in sub:
		print(item, end = '')
	print()
  • lol에서 행의 개수만큼 반복한다.
  • sub 안에 있는 요소만큼 반복한다.
  • sub 안의 요소들이 item이고, 안쪽 반복문이 반복될 때마다 하나씩 출력한다.
  • 행에 있는 값들을 모두 출력하고 한 줄 개행한다.

Q. 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술로 P2P방식을 기반으로 하여 소규모 데이터들이 연결되어 형성된 ‘블록’이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있게끔 만드는 기술은 무엇인가?

블록체인(Blockchain)

  • 블록체인(Blockchain) ← 분산 원장 기술로 만들어짐
    • P2P 네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자(Peer)의 디지털 장비에 분산 저장하는 기술
    • 온라인 금융 거래 정보를 블록으로 연결하여 피투피(P2P) 네트워크 분산 환경에서 중앙 관리 서버가 아닌 참여자(피어, peer)들의 개인 디지털 장비에 분산·저장시켜 공동으로 관리하는 방식
    • 블록체인 기술을 화폐(비트코인) 영역만 국한할 것이 아니라 각종 금융, 상품, 공증, 스토리지, 소셜 서비스 등 다양한 서비스로 확장하고자 하는 사상이다.
    • 블록체인 합의 알고리즘은 다음과 같다.

      합의 알고리즘설명
      PoW(Proof of Work)확률적으로 해답이 어려운 문제를 가장 빨리 해결한 사람에게 블록을 만들 수 있도록 허가하는 합의 알고리즘
      PoS(Proof of Stake)이더리움이 채택한 알고리즘으로 화폐량을 더 많이 소유하고 있는 승인 자가 우선하여 블록을 생성할 수 있는 알고리즘
  • 분산 원장 기술(DLT, Distributed Ledger Technology)
    • 중앙 관리자나 중앙 데이터 저장소가 존재하지 않고 P2P망 내의 참여자들에게 모든 거래 목록이 분산 저장되어 거래가 발생할 때마다 지속적으로 갱신되는 디지털 원장을 의미함
    • 데이터 관리의 신뢰성을 높이기 위해 분산 네트워크 내의 모든 참여자가 거래 정보를 합의 알고리즘에 따라 서로 복제하여 공유 → 거래 정보를 분산 관리(다수가 같은 정보를 가짐) 위변조를 쉽게 검출, 방지할 수 있는 기술

Q. 오픈 소스 기반으로 한 분산 컴퓨팅 플랫폼으로, 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크로 구글, 야후 등에 적용한 기술은 무엇인가?

하둡(Hadoop)

  • 하둡은 빅데이터 기술로 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼이다.
  • 분산 환경에서 빅데이터를 저장하고, 처리할 수 있는 자바 기반의 오픈 소스 프레임워크이며, 더그 커팅과 마이크 캐퍼렐라가 개발했다. 구글의 맵 리듀스 엔진을 사용
  • 하둡은 HDFS와 MapReduce로 구성된다.
    • 하둡 분산 파일 시스템(HDFS)
      • Hadoop Distributed File System의 약자
      • 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 하둡 분산 파일 시스템
    • 맵리듀스(Map Reduce)
      • 대용량 데이터 세트를 분산 병렬 컴퓨팅에서 처리하거나 생성하기 위한 목적으로 만들어진 소프트웨어 프레임워크
      • 모든 데이터를 키-값(Key-Value) 쌍으로 구성, 데이터를 분류
  • 타조(Tajo): 하둡(Hadoop) 기반 데이터웨어하우스 시스템

Q. 이상 현상의 종류 3가지를 쓰시오.

삽입이상, 삭제이상, 갱신이상

  • Anomaly(이상)
    • 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상
    • 데이터베이스 이상현상은 다음과 같다.
      • 삽입 이상
        • 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
        • 삽입할 때 의도와 달리 원하지 않은 값들도 함께 삽입되는 현상
      • 삭제 이상
        • 삭제할 때 의도와 달리 원하지 않은 값들도 함께 삭제되는 현상
      • 갱신 이상
        • 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

Q. 다음은 프로세스 상태 전이도이다. ①, ②, ③에 알맞은 상태를 쓰시오.

준비, 실행, 대기

이미지

  • 프로세스 상태 전이는 다음과 같다.[생준실대완]
    • 생성(Create) 상태
      • 사용자에 의해 프로세스가 생성된 상태
    • 준비(Ready) 상태
      • CPU를 할당받을 수 있는 상태
      • 준비 리스트(Ready List): 각각 우선순위를 부여하여 가장 높은 우선순위를 갖는 프로세스가 다음 순서에 CPU를 할당받아 동작 중인 상태
    • 실행(Running) 상태
      • 프로세스가 CPU를 할당받아 동작 중인 상태
    • 대기(Waiting) 상태
      • 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리 완료까지 대기 리스트에서 기다리는 상태
      • 대기 리스트(Waiting List): 우선순위가 존재하지 않음
    • 완료(Complete) 상태
      • 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태

Q. 테스트 오라클 중 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클은 무엇인가?

샘플링(Sampling) 오라클

  • 테스트 오라클은 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법이다.
  • 테스트 오라클 유형은 다음과 같다.
    • 참(True) 오라클
      • 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
    • 샘플링(Sampling) 오라클
      • 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클, 전수 테스트가 불가능한 경우 사용
    • 휴리스틱(Heuristic) 오라클
      • 샘플링 오라클을 개선한 오라클로, 특정 입력값에 올바른 결과를 제공하고 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클
    • 일관성 검사(Consistent) 오라클
      • 애플리케이션 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클
  • 테스트 시나리오
    • 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합
  • 테스트 케이스
    • 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 테스트 조건, 입력 데이터, 예상 결과 등으로 구성된 테스트 항목에 대한 명세서

Q. 점수에 따른 성적 부여가 잘 되었는지 테스트하고자 한다. 아래에 알맞는 테스트 기법은 무엇인가?

동치분할 테스트(검사) 또는 동등분할 테스트(검사)

이미지

[테스트 값] : -10점 / 30점 / 65점 / 75점 / 85점 / 95점 / 110점

  • 동등분할 테스트는 입력 데이터의 영역을 유사한 도메인 별로 유효 값/무효 값을 그룹핑하여 대푯값 테스트 케이스를 도출하는 테스트 기법이다.
  • 데이터 영역에 대해 경계에 가까운 값이 아닌 영역 내에 있는 일반 값들로 테스트하고 있으므로 동등분할 테스트이다.

Q. 다음 조건을 만족하면서 학과별로 튜플 수가 얼마인지 구하는 SQL문을 작성하시오.

1
2
3
SELECT 학과, COUNT(학과) AS 학과별튜플수 FROM 학생 GROUP BY 학과;

SELECT 학과, COUNT(*) AS 학과별튜플수 FROM 학생 GROUP BY 학과;
  • 대소문자를 구분하지 않는다.
  • WHERE 구문을 사용하지 않는다.
  • GROUP BY 를 사용한다.
  • 세미콜론(;)은 생략 가능하다.
  • 별칭(AS)을 사용해야 한다.
  • 집계 함수를 사용해야 한다.

이미지

  • 학과별 튜플의 개수를 구하기 위해서는 COUNT 함수를 사용하며, COUNT 함수에는 행의 개수를 판단할 수 있는 속성을 파라미터로 넣는다.
  • COUNT(학과), COUNT(*) 모두 행의 개수를 판단할 수 있으므로 둘 중 아무거나 사용해도 무방하다.

Q. 1960년대 말에 데니스 리치와 켄톰슨 등이 함께 벨 연구소를 통해 만든 운영체제이며, 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능하며 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이한 운영체제는 무엇인가?

유닉스(Unix)

  • 유닉스는 교육 및 연구기관에서 사용되는 범용 다중 사용자 방식의 시분할 운영체제이다.
  • 유닉스는 처음부터 다양한 시스템에 서로 이식할 수 있고, 멀티태스킹과 다중 사용자를 지원하도록 설계되었다.
  • 유닉스 계열 운영체제의 특징은 다음과 같다.
    • 대화식 운영체제 기능 제공
      • 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공
    • 다중 작업 기능 제공
      • 다수의 작업(프로세스)이 중앙처리장치(CPU)와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공
    • 다중 사용자 기능 제공
      • 여러 대의 단말(키보드와 모니터)이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공
    • 이식성 제공
      • 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
    • 계층적 트리 구조 파일 시스템 제공
      • 유닉스는 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이
  • Unix 명령어
    • fork - 새로운 프로세스를 생성하는 명령어
    • ls - 디렉토리나 파일목록 출력
    • cat - 파일 내용 출력
    • chmod - 파일이나 디렉토리에 대한 접근권한 변경

Q. 다음은 C언어 소스 코드이다. 출력값을 쓰시오.

KOREA

EA

K

E

M

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

void main() {
	char *p = "KOREA"
  printf("%s\n", p);
  printf("%s\n", p+3);
  printf("%c\n", *p);
  printf("%c\n", *(p+3));
  printf("%c\n", *p+2);
}
  • 'K' + 2를 계산하여 문자 ‘M’을 출력한다.
  • ‘K’의 ASCII 코드 값은 75이므로 2를 더하면 77이 되어 ‘M’이 됩니다.

  • char *p = “KOREA”;라고 선언하게 되면 p라는 포인터에 KOREA라는 저장 공간이 할당된 곳을 가리키게 된다.(문자열은 마지막에 NULL이라는 값이 자동으로 생성됨)
  • printf 안에 포맷 스트링이 %s로 되어 있으면 문자열을 출력하고, p라고 지정하면 p 주소부터 NULL을 만날 때까지 값을 읽게 되므로 KOREA가 출력된다.
  • print 안에 포맷 스트링이 %c로 되어 있으면 문자를 출력하고, (p+3)이 가리키는 (*(p+3)) 값은 E이므로 E가 출력된다.
  • p가 가리키는 (*p) 값은 K인데, 여기에 +2를 했으므로 K다다음 스펠링인 M이 출력된다.

Q, 다음은 자바 소스 코드이다. 출력 결과를 쓰시오.

1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Parent{
	public int compute(int num){
		if(num <=1) return num;
		return compute(num-1) + compute(num-2);
	}
}

class Child extends Parent {
	public int compute(int num){
		if(num<=1) return num;
		return compute(num-1) + compute(num-3); // 오버라이딩 
	}
}

class Soojebi{
	public static void main(String[] args){
		Parent obj = new Child();
		System.out.print(obj.compute(4));
	}
}

Q. 정보보안에서 가용성(Availability)에 대하여 서술하시오.

정보 자산에 대해 적절한 시간에 접근 가능한 것을 의미한다.

가용성이란 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성이다.

3대 요소설명
기밀성시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용되는 것
무결성시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있는 것
가용성시스템 내의 정보와 자원을 언제라도 사용할 수 있는 것
  • SW 개발 보안 3대 요소는 다음과 같다.
    • 기밀성(Confidentiality)
      • 인가된 사용자에 대해서만 해당 정보에 접근할 수 있다.
      • 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
    • 무결성(Integrity)
      • 적절한 권한을 가진 사용자(인가된 사용자)에 의해 인가된 방법으로만 정보를 변경할 수 있다.
      • 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
    • 가용성(Availability)
      • 인가받은 사용자는 적절한 시간에 정보자산에 접근 가능하다.
      • 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장하는 특성
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.