Study/정보처리기사 실기

[정보처리기사 실기 기출]2021년 1회 해설

지니어스팍 2023. 10. 6. 19:30
728x90
728x90

네트워크 계층(3계층) 프로토콜

 

IP 패킷 단위로 데이터를 주고 받음

ARP ip -> mac 

RARP mac -> ip

ICMP 패킷을 처리할때 생기는 문제 알려줌

IGMP 그룹 멤버쉽을 처리하는데 사용

IGP 라우팅프로토콜 데이터 전송 목적지 까지 가는데 최적의 경로

▶내부라우팅 프로토콜

RIP 거리백터 알고리즘

OSPF 링크 상태 알고리즘

EGP 외부 라우팅 프로토콜

BGP

 

 


데이터 베이스 설계

개념설계 현실세계를 그대로 이해가능한 형태의 정보구조로 

ERD 다이어그램

 

논리설계 구조적 정의

▶이상현상(삽삭삽 갱단이다) 을 해결하기 위해 정규화 ( 도부이거다조 )

 

이상현상 

삽입이상

갱신이상

삭제이상

 

정규화

비정규화 릴레이션

1 도메인이 원자값

2 부분 함수 종속 제거

3 이행 함수 종속 제거

BCNF 결정자이면서 후보키가 아닌것 제거   

4 다치 종속 제거

5  조인 종속 제거

 

 

물리설계 실제 저장장치에 어떻게 

▶성능 index(🐸hint 명시적으로 잘 찾아갈 수 있는 힌트를 준다. ) 파티션 view

반정규화 수행

 

 


EAI ( Enterprise Application Integration) ( 🐸 에이아이 돼지이)

기업에서 운영되는 서로다른 플랫폼 및 애플리케이션 간의 정보를 전달,연계,통합이 가능하도록 해주는 솔루션이다.

 

포인트투포인트 : 일대일 단순 통합

허브앤스포크 : 중앙 집중적 방식

메시지버스 : 미들웨어(버스)를 두어 연계

하이브리드 : 허브앤스포크 + 메시지버스

 

인터페이스에서 나올만한 문제들

SOAP 실제로 통신하는 것🐸

WSDL xml로 만들어진 설명서🐸

UDDI  wsdl올려둘수 있는곳🐸

REST

 

데이터 형태

xml

json

csv

txt

 


데이터 모델 구성 3 요소

연산 - 조작하는 도구

구조  - 타입간의 관계

제약조건 - 실제 데이터의 논리적인 조건


블랙박스 테스트

경계값 분석

동등분할 테스트 : 유효값과 그렇지 않은 범위를 나눠야하는 경우 

원인 - 효과 그래프 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 분석

비교값 검사 - 여러버전 프로그램에 동일한 자료 제공

오류예측 검사 - 과거 경험의 감각으로 테스트 하는 기법

 

화이트 박스 테스트 - 소스코드 내부 구조를 본다.

블랙박스 테스트 - 동작을 본다.

 


 

 공격 기법

연결이 활성화된 상태를 가로챈다. : 세션 하이재킹

출발지와 목적지를 동일하게 : 랜드어택

ICMP Eco 패킷을 브로드캐스팅해서 대량의 트래픽 발생시켜 마비 : 스머핑

취약점에 대한 패치가 나오지 않은 상태에서의 공격 : 제로데이 공격

복호화 프로그램 정보 제공 대가로 돈을 요구함 : 랜섬웨어

지속적 지능적 맞춤 공격 : APT 지능형 지속 공격

공격자가 의도한 행동을 하게함 : CSRF 사이트 간 요청 위조

여러대의 분산 공격 원격 공격 : DDOS 분산 서비스 거부

요청헤더의 content length를 비정상적으로 크게 설정 : RUDY

공격자가 자신의 인터넷 주소 ip 변조해서 공격: IP 스푸핑

타켓을 직접 브로드캐스팅하여 공격 : 스머핑 

침입자를 속인다. 공격당하는것처럼 보여지게한다.: 허니팟

수동적 공격 기법 : 스니핑

문자조합 계속한다. : Brute force attack (무차별 대입 공격)

매우 많은 ICMP Eco발생시켜 자원을 모두 써버리게 : ping flood

무선 wifi 피싱 : 이블 트윈

발송 메일 클릭 유도 : 스피어 피싱

키보드 인지 : 키로거 공격 

레인보우테이블 : 일치하는 해시를 찾는 공격 

정보 수집후 사용안함 : 다크데이터


IPv4 vs IPv6

 

ipv6 128비트 - 유니 멀티 브로드

ipv4 32비트 8비트씩 4분할 -유니 멀티 애니

 

변환

듀얼스택

터널링

주소 변환


결합도 응집도

 

결합도

자료 (good) - 파라미

스탬프 - 배열 객체 , 자료구조 조회

제어 - 어떻게 처리

외부 - 두개의 모듈이 외부에서 도입된 걸 공유

공통 - 전역변수

내용(bad) - 내부를 다른 모듈에서 사용

 

응집도

우연적(bad) - 연관없음

논리적 - 유사 성격

시간적 - 특정시간

절차적 - 순차적으로

통신적 - 모여있음

순차적 - 출력값을 다른 활동이 사용

기능적(good) - 단일한 목적

 

 


소프트웨어가 가져야할 속성 기능 -  기능적

소프트웨어가 가져야할 특성 품질 - 비기능적


서버 (춘천)접근 통제 유형 (갈비국수카스)

 

접근 제어 방식

MAC 강제적 접근 통제  - (관리자만 )시스템 정보의 허용등급을 기준으로 사용자가 갖는 접근 허가 권한에 근거하여 시스템에 대한 접근을 제한

DAC 임의적 접근 통제 -(사용자)  시스템 객체의 접근을 개인 또는 그룹의 식별자에 기반한 방법

RBAC 역할 기반 접근 통제 - 사용자에게 할당된 역할에 기반


보안접근 모델

벨라파둘라(BLP) 기밀성

비바(Biba) 무결성

 


WSDL

웹 서비스의 구체적 내용이 기술되어 있어 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜등이 기술되어있는 언어는?

 

SOAP 웹서비스를 이용할때 사용하는 프로토콜

xml로 만들어지는것이고

UDDL에 저장하게된다.


소프트웨어 생명 주기 

분석 - 설계 -  구현 테스트 -  유지보수

V 모델

폭포수 모델로 개발을 하게되면 테스트 단계에 힘을 실어주는게 v모델이된다.

 

단위 테스트 / 통합 테스트 / 시스템 테스트 /  인수 테스트

 

개발자가 원시코드 대상으로 각 단위에만 집중

인터페이스 간 시스템 정상 실행

 

단위 테스트 - 정적(소스코드 내부를 봄) 동적 테스트 (값을 넣고 출력값)

통합테스트 - 상향(드라이버) 하향(스텁) 빅뱅(작은시스템 한꺼번에) 백본(드라이버 스텁 같)

시스템테스트 -  기능(사용자 요구사항을 정확하게 만족 시켰는지) 비기능(성능,보안) 테스트

인수테스트 -  알파 (개발자 사용자) 베타 (사용자 )

 

폭포수 모델

나선형 : 모델 (순서🐸) 계획 - 위험 분석 - 개발 - 평가

프로토타입 모델 : 시제품 만드는것

RAD : 빠르게빠르게 개발하는 것

4세대 기법 : UML 만든다.

 


반정규화

시스템의 성능향상을 위해 정규화에 위배되는 행위

 


IPC ( Inter-Process Communication ) 메공세소 ( ipc방 메일 공세소)

실행되는 프로세스간에 통신 

종류 : 파이프, 메시지 큐, 공유메모리, 세마포어,소켓

 

메시지 큐 - 메시지 단위로 동작하여 프로세스 간 통신함

공유메모리 - 한 프로세스의 일부분을 다른 프로세스와 공유

소켓 - 클라이언트와 서버 프로세스 둘 사이에 통신을 가능하게함

세마포어 - 프로세스 사이의 동기를 맞추는 기능 제공함

 

 


디자인 패턴

소프트웨어 공학의 소트프웨어 설꼐에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
디자인 패턴을 참고해서 개발할 경우 개발의 효율성과 유지보수성, 운용성이 높아지고 프로그램의 최적화에 도움이 됨

디자인 패턴의 3가지 : 생성, 구조, 행위

생성패턴(추해빌런팩프하냐싱처)

객체의 인스턴스 생성에 관여하고 클래스 정의와 객체 생성 방식을 구조화, 캡슐화하는 패턴

  • Abstract Factory(추상 팩토리)
    • 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공
    • 동일한 주제의 다른 팩토리를 묶음
  • Builder(빌더)
    • 복잡한 인스턴스를 조립해서 만드는 구조
    • 복합 객체를 생성할 때 객체를 생성하는 방법과 객체를 구현하는 방법을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있음
    • 생성과 표기를 분리해서 복잡한 객체를 생성
  • Factory Method(팩토리 메소드)
    • 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
    • 상위 클래스에서 인스턴스를 만드는 방법만 결정하고 하위 클래스에서는 그 데이터의 생성을 책임지고 조작하는 함수들을 오버로딩하여 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 패턴
    • 생성할 객체의 클래스를 국한하지 않고 객체를 생성
    • 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화 하는 패턴
  • Prototype(프로토타입)
    • 처음부터 일반적인 원형을 만들어 놓고 그것을 복사한 후 필요한 부분만 수정해서 사용하는 패턴
    • 생성할 객체의 원형을 제공하는 인스턴스에서 생성할 객체들의 타입이 결정되도록 설정하고 객체를 생성할 때 갖추어야할 기본 형태가 있을 때 사용되는 패턴
    • 기존 객체를 복제함으로써 객체를 생성
  • Singleton(싱글톤)
    • 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디서든지 참조할 수 있도록 함
    • 한 클래스에 한 객체만 존재하도록 제한

구조 패턴

  • Adapter(어댑터)
    • 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
    • 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태가 있음
    • 인터페이스가 호환 되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌움
  • Bridge(브릿지)
    • 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴
    • 구현 뿐만 아니라, 추상화된 부분까지 변경해야하는 경우 활용
    • 추상화와 구현을 분리해 둘을 각각 따로 발전 시킬 수 있음
  • Composite(컴포지트)
    • 객체들의 관계를 트리 구조롤 구성하여 부분-전체 계층을 표현하는 패턴
    • 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 함
    • 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있음
    • 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴
  • Decorator(데코레이터)
    • 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
    • 기능 확장이 필요할 때 객체 간의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주기 때문에 상속의 대안으로 사용됨
    • 기존 객체의 메서드에 새로운 행동을 추가하거나 오버라이드 할 수 있음
  • Facade(퍼싸드)
    • 복잡한 시스템에 대해 단순한 인터페이스를 제공함으로써 사용자의 시스템 간 또는 다른 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악이 쉬움
    • 오류에 대해서 단위 별로 확인 할 수 있게 하고 사용자 측면에서 단순한 인터페이스를 제공해 접근성을 높일 수 있음(많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공)
    • 통합된 인터페이스 제공
  • Flyweight(플라이웨이트)
    • 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리를 절약하고 클래스의 경량화를 목적으로 하는 디자인 패턴
    • 여러 개의 가상 인스턴스를 제공해서 메모리 절감
  • Proxy(프록시)
    • '실제 객체에 대한 대리 객체'로 실제 객체에 대한 접근 이전에 필요한 행동을 취할수 있게 만들고 이 점을 이용해 미리 할당하지 않아도 상관 없는 것들을 실제로 이용할 대 할당하게 하여 메모리 용량을 아낄 수 있음
    • 실제 객체가 드러나지 않게 하여 정보 은닉의 영할을 수행
    • 접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공함

행위 패턴

  • Command(커맨드)
    • 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택 되어 실행됨
    • 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행 할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
    • 요구사항을 객체로 캡슐화
  • Observer(옵저버)
    • 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것
    • 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 패턴
    • 일대다의 의존성을 가지고 상호작용하는 객체 사이에서는 가능한 느슨하게 결합하는 디자인 패턴
  • Templete Method(템플릿 메소드)
    • 상위 클래스에서는 추상적으로 표현하고, 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
    • 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴(상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행)
  • Mediator(중재자)
    • 객체지향 설계에서 객체의 수가 너무 많아져 통신이 복잡해지면 느슨한 결합(객체지향에서 중요한 특성)을 해칠 수 있기 때문에 중간에서 이를 통제하고 지시할 수 있는 역할을 하는 중재자 역할을 하는 패턴(중재자에게 요구하여 통신의 빈도를 줄임)
    • 상호작용의 유연한 변경을 지원
  • Interpreter(통역사)
    • 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성해 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
    • 문법 자체를 캡슐화해서 사용
  • Iterator
    • 컬렉션 구현 방법으 노출 시키지 않으면서 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 패턴
    • 내부 구조를 노출하지 않고 복합 객체의 원소를 순차적으로 접근 가능하게 하는 행위 패턴
  • State(상태)
    • 객체 상태를 캡슐화 해서 클래스화함으로써 그것을 참조하게 하는 방 식
    • 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하고, 변경시 원시 코드의 수정을 최소화 할 수 있고 유지보수의 편의성도 가짐
    • 객체의 상태에 따라 행위 내용을 변경
  • Visitor(방문자)
    • 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
    • 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴
    • 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원
  • Strategy(전략)
    • 알고리즘 군을 정의하고(추상클래스) 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 후, 필요할 때 서로 교환해서 사용 할 수 있게 하는 패턴
    • 행위 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
  • Memento
    • 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴
    • Undo 기능을 개발할 때 사용
    • 객체를 이전 상태로 복구 시켜야 하는 경우 Undo(작업 취소) 요청 기능
  • Chain of Responsibility
    • 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능 한데, 이를 동적으로 연결한 경우에는 다르게 처리할 수 있도록 하는 디자인 패턴
    • 한 요청을 2개 이상의 객체에서 처리

요약 정리

🚩 생성
1) Builder : 생성 단계를 캡슐화 해서 구축 공정을 동일하게 이용하도록 하는 패턴
2) Prototype : 기존 객체를 복제해서 새 객체를 생성할 수 있도록 하는 패턴
3) Factory Method : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고 하위 클래스에서 인스턴스를 생성하는 패턴
4) Abstract Factory : 생성군들을 하나에 모아놓고 팩토리 중에서 선택하게 하는 패턴
5) Singgleton : 유일한 하나의 인스턴스를 보장하도록 하는 패턴

🚩 구조
1) Bridge : 추상과 구현을 분리해서 결합도를 낮춘 패턴
2) Decorator : 소스를 변경하지 않고 기능을 확장하는 패턴
3) Facade : 하나의 인터페이스를 통해 느슨한 결합을 제공하는 패턴
4) Flyweight : 대량의 작은 객체들을 공유하는 패턴
5) Proxy : 대리인이 대신 그 일을 처리하는 패턴
6) Composite : 개별 객체와 복합 객체를 클라이언트에서 동일하게 사용하도록 하는 패턴
7) Adapter : 인터페이스로 인해 함께 사용하지 못하는 클래스를 함께 사용하도록 하는 패턴

🚩 행위
1) Interpreter : 언어 규칙 클래스를 이용하는 패턴
2) Templete Method : 알고리즘 골격의 구조를 정의한 패턴
3) Chain of Responsibility : 객체끼리 연결 고리를 만들어 내부적으로 전달하는 패턴
4) Command : 요청 자체를 캡슐화해 파라미터로 넘기는 패턴
5) Iterator : 내부 표현은 보여주지 않고 순회하는 패턴
6) Mediator : 객체 간 상호작용을 캡슐화한 패턴
7) Memento : 상태 값을 미리 저장해두었다가 복구하는 패턴
8) Observer : 상태가 변할 때 의존자들에게 알리고 자동으로 업데이트하는 패턴
9) State : 객체 내부 상태에 따라서 행위를 변경하는 패턴
10) Strategy : 다양한 알고리즘을 캡슐화해 알고리즘 대체가 가능하도록 하는 패턴
11) Visitor : 오퍼레이션을 별도의 클래스에 새롭게 정의한 패턴

 


구조체는 덩어리채로 들어간다.

P++를 했으니 두번째 번지를 보면 된다.

그냥 P는 처음값부터 마지막 값까지

P+3은 P가 10이면 13부터 마지막까지

*P는 그 자리만

*(P+3) 은 13 자리만

*P+2 는 P자리에서 다다음 알파벳

728x90
728x90