본문 바로가기

자격증 공부/정보처리기사 실기

[흥달쌤] 기출해설특강) IPSec, 리눅스 파일 보안, 시멘틱 웹, REST

[2020년 2회 영상]

 

11. SQL 제어어(DCL) 중 ROLLBACK 명령에 대해 간략히 서술하시오.

 

→ 데이터베이스 내의 연산이 비정상적으로 종료되거나 정상수행이 되었다 하더라도

    수행되기 이전의 상태로 되돌리기 위한 명령이다.

 


 

12. 네트워크 계층(Network Layer, 3계층)인 IP 계층에서 IP 패킷 단위의 데이터 변조 방지 및

      암호화 기능을 제공하는 통신규약을 쓰시오.

 

→ IPSec

 

 

※ IPSec의 헤더 프로토콜

  • AH(Authentication Header)
    • 무결성을 보장하기 위한 프로토콜이며, IP 패킷이 전송중에 변조되지 않았음을 보장하는 서비스를 제공함
  • ESP(Encapsulation Security Payload)
    • IP 페이로드를 암호화하여 데이터 기밀성을 제공함으로써 제 3자에게 데이터가 노출되는 것을 차단함

 


 

 

13. 리눅스 커널을 기반으로 동작하며 자바와 코틀린 언어로 개발된 핸드폰이나 소형기기에

      사용되는 오픈소스 플랫폼인 모바일 운영체제는 무엇인지 쓰시오.

 

→ 안드로이드

 


 

 

14. 리눅스 또는 유닉스에서 a.txt 파일에 대해 다음 조건을 만족하는 권한을 부여하고자 한다.

      다음 <조건>을 준수하여 적합한 명령어를 작성하시오.

<조건>
 • 사용자에게는 읽기, 쓰기, 실행의 세 개의 권한을 모두 부여한다.
 • 그룹에게는 읽기, 실행 두 개의 권한을 부여한다.
 • 그룹 외 사용자에게는 실행 권한을 부여한다.
 • 한 줄로 명령문이 작성되어야 하며, 8진수로 권한을 부여한다.

 

→ chmod 751 a.txt

 

 

※ 문제 풀이

 

1. 리눅스 구조

   • 사용자(User) : 파일 소유자

   • 그룹(Group) : 같은 그룹 사용자

   • 기타(Other) : 나머지 사용자

 

2. 권한 숫자 규칙

   • 읽기(r) : 4

   • 쓰기(w) : 2

   • 실행(x) : 1

→ 숫자를 더해서 만듦

 

3. 문제 조건 해석

   ① 사용자 (User) → 읽기 + 쓰기 + 실행 → 4 + 2 + 1 = 7
   ② 그룹 (Group) → 읽기 + 실행 → 4 + 1 = 5
   ③ 기타 사용자 (Other) → 실행만 → 1

→ 최종 조합 : 751 최종 명령어 : chmod 751 a.txt

 

 


 

 

15. 다음은 IP 인프라 서비스 관리 실무와 관련된 <실무 사례>에 대한 설명이다.

      가장 적합한 용어를 한글 또는 영문으로 쓰시오.

<실무 사례>
A는 (주)한국아이티 보안관제실에서 정보시스템의 정보관리를 위해 모니터링을 담당하며 근무하고 있다. 시스템 운영 중 자연재해나 시스템 장애 등의 이유로 대고객 서비스가 불가능한 경우가 종종 발생한다. A는 이런 장애 발생시 서비스를 정상적으로 수행하기 위해 구축 시스템을 관리하는 역할을 한다. 이 용어는 이런 비상 상황이 발생했을 때, '서비스 중단 시전과 서비스 복원 시점 간에 허용되는 최대 지연 시간'을 가리킨다.

 

→ RTO(Recovery Time Objective)/목표 복구 시간

 

 

+) RPO(Recovery Point Objective)/복구 시점 목표

    - 장애 발생 시 복구 가능한 데이터 시점을 의미하며, 허용 가능한 데이터 손실 범위(시간)를 나타냄


 

 

16. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고, 자동으로 내용이 갱신되는

      방식으로 일대다(one-to-many) 의존성을 정의하는 디자인 패턴명을 영문으로 쓰시오.

 

→ Observer Pattern

 


 

 

17. 다음에서 설명하는 용어를 쓰시오.

• 자유롭게 사용이 가능하며, 저작권 표시 및 변경 허락 조건하에 재배포 가능한 링크 기반 개방형 데이터
연계 데이터(Linked data)와 오픈 데이터(Open data)가 결합된 단어로, 웹에 게시되는 데이터에 식별자(URI)를 부여하고 관련 정보를 구조적으로 제공하는 연계 데이터를 저작권 없이 무료로 제공하여 사용자가 정보를 다양하고 효율적으로 활용할 수 있도록 한다.
• 하이퍼텍스트 전송 규약(HTTP), 자원 기술 프레임워크(RDF)와 인터넷 식별자(URI) 등의 웹 표준 기술을 이용하여 시맨틱 웹을 구축하고, 출처가 서로 다르지만 인터넷 식별자(URI)를 통해 데이터를 서로 연결한다.
• 데이터를 재사용할 수 있고, 데이터 중복을 줄일 수 있는 장점이 있다.

 

→ Linked Open Data

 

 

※ 시멘틱 웹 ★★★

• 의미론적인 웹, 즉 문서의 의미에 맞게 어플리케이션의 의미에 맞게 구성된 웹
• 컴퓨터가 사람을 대신하여 정보를 읽고, 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹

비시맨틱 구조 시맨틱 구조
<div>
  <div>
    <h1>제목1</h1>
    <p>내용1</p>
  </div>
  <div>
    <h1>제목2</h1>
    <p>내용2</p>
  </div>
</div>
<div>
  <span>주소</span>
</div>
<section>
  <article>
    <h1>제목1</h1>
    <p>내용1</p>
  </article>
  <article>
    <h1>제목2</h1>
    <p>내용2</p>
  </article>
</section>

<footer>
  <address>주소</address>
</footer>
div로만 구조 구성 → 의미 없음
컴퓨터 입장에서는 '이게 글인지', '섹션인지', '주소인지' 구분 불가능
태그 자체가 의미를 가짐
  - section → 영역
  - article → 하나의 글
  - footer → 하단 정보
  - address → 주소
• 시맨틱 웹이 왜 중요한가?
  - 컴퓨터가 이해 가능하도록 데이터를 '의미 단위로 구조화'
  - 장점 : 검색 엔진 최적화(SEO) 향상/접근성 개선(스크린 리더)/유지보수 쉬움

 

 

※ REST

자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것
• HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

 

 

※ RESTful

• REST라는 아키텍처를 구현하는 웹 서비스

 


 

 

18. 다음은 Python언어로 작성된 프로그램이다. 이를 실행한 결과를 쓰시오.

>>> asia = {'한국', '중국', '일본'}
>>> asia.add('베트남')
>>> asia.add('중국')
>>> asia.remove('일본')
>>> asia.update(['홍콩', '한국', '태국'])
>>> print(asia)​

 

→ {'한국', '중국', '베트남', '홍콩', '태국'}

 

 

※ 문제 풀이

>>> asia = {'한국', '중국', '일본'}  // 집합(set) 생성, 중복 없는 데이터 구조
>>> asia.add('베트남')               // '베트남' 추가
>>> asia.add('중국')                 // '중국' 추가 시도 → 이미 있어서 변화 없음
>>> asia.remove('일본')              // '일본' 제거 (없으면 에러 발생)
>>> asia.update(['홍콩', '한국', '태국'])  // 여러 값 추가 (리스트 → 집합에 합쳐짐, 중복 제거)
>>> print(asia)                      // 최종 집합 출력 (순서는 보장되지 않음)

 

 


 

 

19. 다음에 제시된 JAVA 프로그램은 <처리결과>와 같이 결과가 출력된다.
      JAVA 프로그램의 <?>에 들어갈 JAVA 표현을 대소문자를 구별하여 쓰시오.

class Parent {
    void show() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    void show() {
        System.out.println("Child");
    }
}

public class Exam {
    public static void main(String[] args) {
        Parent pa = new Child();
        pa.show();
    }
}

 

→ new

 


 

 

20. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

class A {
    int a;
    public A(int n) {
        a = n;
    }
    public void print() {
        System.out.println("a=" + a);
    }
}

class B extends A {
    public B(int n) {
        super(n);
        super.print();
    }
}

public class Exam {
    public static void main(String[] args) {
        B obj = new B(10);
    }
}

 

→ a = 10

 

class A {
    int a;
    public A(int n) {
        a = n; // 생성자 호출 시 a에 n 저장
    }
    public void print() {
        System.out.println("a=" + a); // a 값 출력
    }
}

class B extends A {
    public B(int n) {
        super(n); 
        // 부모 생성자 A(int n) 호출 → a = 10 설정

        super.print(); 
        // 부모 메서드 호출 → a=10 출력
    }
}

public class Exam {
    public static void main(String[] args) {
        B obj = new B(10);
        // B 객체 생성 시 생성자 실행 → 위 과정 수행
    }
}

/*
실행 흐름:
new B(10)
→ B 생성자 호출
→ super(10) → A 생성자 실행 → a=10
→ super.print() → "a=10" 출력

최종 출력:
a=10
*/