정보처리기사 실기
1. OSI 7 Layer Model
- 물리 계층(Physical Layer)
- 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
- 단위:
비트
- 주요 장비:
허브
,리피터
등
- 데이터 링크 계층(Data Link Layer)
인접 노드 간
프레임 전송, 신뢰성 있는 정보 전달- 단위:
프레임
- 주요 장비:
스위치
,브릿지
등
- 네트워크 계층(Network Layer)
- 단말기 간 데이터 전송을 위한
최적화된 경로
제공 - 단위:
패킷
- 주요 장비:
라우터
등 - 프로토콜
- IP: 데이터 전달
ICMP
: IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜ARP
: 논리 주소인 IP 주소 ▶ 실제적인 물리 주소인 MAC 주소로 변환RARP
: 실제적인 물리 주소인 MAC 주소 ▶ 논리 주소인 IP 주소로 변환
- 단말기 간 데이터 전송을 위한
- 전송 계층(Transport Layer)
단말기(종단)
간의 연결, 신뢰성 있는 정보 전달- 단위:
세그먼트(TCP)
/데이터그램(UDP)
- 프로토콜
- TCP
- FTP(20-데이터, 21-제어): 파일 전송
- telnet(23): 원격지의 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜
- HTTP(80): 웹 서비스
- SMTP(25): 메일 송신
- POP3(110): 메일 수신
- UDP
- DHCP: IP 자동 할당
- SNMP: 네트워크 관리
- DNS(53): 도메인 ▶ IP 주소로 변환
- TCP
- 세션 계층(Session Layer)
- 송수신 간의 논리적 연결
- 단위: 데이터
- 표현 계층(Presentation Layer)
- 데이터 형식 설정, 암/복호화
- 단위: 데이터
- 응용 계층(Application Layer)
- 일반적인 응용 서비스를 수행
- 단위: 데이터
Routing Protocol
- 정적: 관리자가 직접 라우터에 경로 설정
- 동적: 라우터가 직접 경로 설정
- EGP: 외부 게이트웨이 프로토콜
BGP
: Board Gateway Protocol
- IGP: 내부 게이트웨이 프로토콜
- Distance Vector
RIP
: Routing Information Protocol- 인접한 라우터간 일정 시간마다 상태 공유
- 최대 홉수 15로 제한
- Link State
OSPF
: Open Shortest Path First (Protocol)- 변경된 데이터가 있을 때마다 상태 공유
- 가장 많이 사용되는 내부 라우팅 프로토콜
- 홉 수 제한 X
- Distance Vector
2. 데이터 베이스 설계 순서
요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계
→ 구현
데이터 모델링 3단계
개념적
설계- 사람이 이해할 수 있는 형태의 정보구조를 만들어가는 과정
ERD 생성
논리적
설계- 개념적 설계에서 만들어진 구조를 컴퓨터가 이해하고 처리할 수 있도록 변환하는 과정
정규화
- Transaction Interface 설계
물리적
설계- 실제 저장정치에 어떻게 저장할지 설계하는 단계
성능 향상
(인덱스, 파티션, 반정규화 등)
Index Hint
- 쿼리 실행 시 특정 인덱스를 사용하도록 강제하는 주석
- SELECT /*+ [힌트절] */ ... FROM ...;
3. 용어
- 튜플(Tuple):
- 개체 인스턴스, 릴레이션 인스턴스
- 릴레이션을 구성하는 각각의
행
- 하나의 릴레이션에 포함된 튜플은 모두 상이
- 속성의 모임
- 튜플의 수:
Cardinality
또는기수
- 속성(Attribute):
- 개체 스키마, 릴레이션 스키마
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체의 특성을 기술
- 속성의 수를
Degree
또는차수
- 도메인(Domain)
- 하나의 속성(attribute)이 취할 수 있는 같은 타입의 원자값들의 집합
- 릴레이션(Relation)
- 테이블
스키마(Schema)
데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것
4. EAI(Enterprise Application Integration) 유형
: 기업에서 운영하는 서로 다른 플래폼, App간의 정보 전달, 연계, 통합을 위한 솔루션
Point To Point
중간에 미들웨어를 두지 않고
, 각 애플리케이션 간 연결- 상대적으로 저렴하게 통합 가능
- 변경, 재사용이 어려움
Hub & Spoke
- 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
- 확장, 유지보수 용이
- 허브 장애 시, 전체에 영향
Message Bus(ESB)
- 애플리케이션 사이 미들웨어(버스)를 두어 처리
- 시스템과 버스를 두어 연결하여 확장성이 뛰어나고, 대용량 처리가 가능
Hybrid
- 그룹 내: Hub & Spoke, 그룹 외: Message Bus
- 데이터 병목 최소화
SOAP
- HTTP, HTTPS 등을 통해 XML 기반의 메세지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
- XML을 이용하여 분산처리환경에서 정보 교환을 쉽게 할 수 있도록 도와줌
WSDL: SOAP 사용 설명서, XML 형식 ▶ UDDI에 등록 ▶ SOAP을 이용해 실제 통신
- WSDL: 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등 웹 서비스의 구체적 내용이 기술되어 있는 언어
REST
- 자원을 표현, 즉 이름으로 자원의 상태, 정보를 주고받는 것
- URI로 자원을 표현하고, HTTP Method(GET, POST 등)를 통해 자원의 행위를 표현
5. 데이터 모델 구성요소
구조
- 논리적으로 표현된 개체 타입들 간의
관계
로서 데이터구조
및 정적 성질 표현
- 논리적으로 표현된 개체 타입들 간의
연산
- 데이터베이스에 저장된
실제 데이터를 처리하는 작업에 대한 명세
로 데이터베이스를 조작하는 도구
- 데이터베이스에 저장된
제약조건
- 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인
제약조건
- 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인
6. 화이트/블랙박스 테스트
- 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트
- 종류
- 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
- 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
- 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
- 루프 테스트
- 종류
- 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing)
- 입력값의 범위를 유사한 특징을 갖는 동등그룹으로 나누고 각 그룹마다 대표값을 선정하는 테스트
- 유효값과 그렇지 않은 범위의 값을 나누어야 할 경우 사용하는 테스트
경계값 분석 테스트(Boundary Value Analysis Testing)
: 경계값을 테스트 케이스로 선정하여 검사원인-결과 그래프 테스트(Cause-Effect Graphing Testing)
오류 예측 테스트
의사 결정 테이블 테스트
상태 전이 테스트
7. 공격 기법
Dos(Denial of Service)
Ping Of Death
: 정상 크기보다 큰 ICMP 패킷을 작은 조각(Fragment)으로 쪼개어 공격 대상이 조각화된 패킷을 처리하게 만드는 공격Smurf
: IP를 위조하여ICMP 받을 대상에 과부하
Land Attack
: Packet의보내는 사람과 받는 사람을 동일
하게 설정Teardrop Attack
: Fragment를 재조립 시 정확한 조립을 위해 오프셋이라는 값을 더하게 되는데 이오프셋
값을 고의적으로 수정하여 시스템의 기능을 마비시켜 버리는 방법- SYN Flooding: 접속을 요청하는 SYN Packet을 대량으로 전송해 네트워크를 마비 시킴
- UDP Flooding: 많은 수의 UDP packet을 전송하여 정상적인 서비스가 불가능하도록 하는 공격
- Ping Flooding: 많은 ICMP Echo를 보내 이에 대한 응답을 하기 위해 자원을 모두 사용해버려 시스템이 정상적으로 동작하지 못하도록 하는 공격
DDoS (Distributed Denial of Service)
Phishing
: 공격자가 사람들을 속이기 위해 악성 이메일을 보내는 것Pharming
: 피싱 기법 중 하나로, 정확한 웹 페이지 주소를 입력해도 가짜 웹 페이지에 접속하게 하여 개인정보를 훔치는 것Sniffing
: 네트워크 중간에서 남의 패킷 정보를도청
하는 것- Smishing: SMS와 Phishing의 결합어로 문자메시지를 이용한 피싱
- Qshing: QR코드와 피싱(Phishing)의 합성어로 QR코드를 이용한 피싱
Ransomware
: 컴퓨터 시스템을 감염시켜 접근을 제한하고 일종의 몸값을 요구하는 악성 소프트웨어Key Logger
: 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 등 개인의 중요한 정보를 몰래 빼가는 해킹 공격- SQL Injection: 임의로 작성한 SQL 구문을 애플리케이션에 삽입하는 공격 방식
XSS
(Cross Site Scripting): 악의적인 스크립트를 포함하여 정보 유출 등의 공격을 하는 것
기타
Rainbow Table Attack
- 해시함수에 입력한 값과 해시값을 저장한 일종의 정답지를 갖고 일치하는 해시값을 통해 Key 값을 찾는 방식
- Salt: 해커들의 레인보우 테이블이 키 값에 대한 해시값을 갖고 있으므로, 해당 값에 다른 값을 덧붙여서 다른 암호 값으로 저장되도록 추가하는 값
Session HiJacking
- 다른 사람의 세션 상태를 훔치거나 가로채는 해킹 기법
- 로그인된 상태를 가로채는 것
8. IP 주소 체계
- IPv4
- 주소 길이:
32bit (8bit*4)
- 주소 개수: 2^32개
- 주소 할당: A, B, C 클래스 등 비순차적 할당
- 주소 체계:
유니캐스트(1:1), 멀티캐스트(1:다), 브로드캐스트(방송)
- 보안: IPSec, SSL(HTTPS), S-HTTP Protocol 별도 설치
- 주소 길이:
- IPv6
- 주소 길이:
128bit (16bit*8)
- 주소 개수: 2^128
- 주소 할당: 순차적 할당
- 주소 체계:
유니캐스트(1:1), 멀티캐스트(1:다), 애니캐스트(가장 자까운 수신자에게 전달)
- 보안: 자체 보안기능 제공
- 주소 길이:
IPv4 → IPv6 전환 기술
듀얼 스택(Dual Stack)
- IPv4 / IPv6 동시 지원
터널링(Tunneling)
- 두 IPv6 네트워크 간 터널을 이용하는 기술
캡슐화
주소 변환(Addressing Translation)
- IPv4와 IPv6 간 주소를 변환하여 두 버전을 이용
9. 모듈의 독립성
모듈의 독립성을 판단하는 두 가지 지표로, 결합도(Coupling)
는 모듈과 모듈간의 상호 의존 정도, 응집도(Cohesion)
는 모듈 내부의 기능적인 집중 정도이다.
결합도(Coupling)
: 모듈과 모듈간의 상호 의존 정도
- 자료(
Data
): 파라미터로값
만을 전달하는 경우 - 스탬프(
Stamp
): 파라미터로 배열이나 오브젝트, 스트럭쳐 등의객체
가 전달되는 경우 - 제어(
Control
): 파라미터로 값뿐만 아니라제어 요소
도 전달되는 경우 - 외부(External): 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조하는 경우
- 공통(
Common
): 공유되는공통
데이터 영역(전역변수
)을 여러 모듈이 사용하는 경우 - 내용(
Content
): 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정하는 경우- 내용 결합도가 높을 경우, 스파게티 코드가 될 수 있음
- Spaghetti Code: 소스 코드가 복잡하게 얽힌 경우
- Alien Code: 아주 오래되거나 참고문서가 없어 유지보수가 어려운 경우
- Legacy Code: 더 이상 쓰기 힘들고 난해한 경우
응집도(Cohesion)
: 모듈 내부의 기능적인 집중 정도
- 우연적(
Coincidental
): 모듈 내부의 각 구성요소들이 연관이 없을 경우 - 논리적(
Logical
): 유사한 성격을 갖는 요소들이 한 모듈에서 처리 - 시간적(
Temporal
): 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리 - 절차적(
Procedural
): 모듈 안의 구성요소들이 그 기능을순차적
으로 수행 - 통신적(
Communicational
):동일한 입력과 출력
을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우 - 순차적(
Sequential
): 모듈 내에서한 활동에서 나온 출력값을 다른 활동이 사용
할 경우 - 기능적(
Functional
): 모듈 내부의 모든 기능이단일한 목적
을 위해 수행되는 경우
10. 요구사항 분석
- 기능적 분석: 기능 관련
- 비기능적 분석: 기능의 성능, 보안, 품질 관련
접근 제어
- 강제적 접근제어(
MAC
, Mandatory Access Control)
: 높은 보안 수준을 요구하는 정보가 낮은 보안 수준의 주체에게 노출되지 않도록 하는 접근 제어 방법 - 임의적 접근제어(
DAC
, Discretionary Access Control)
:객체의 소유주가 접근 여부를 결정
- 역할기반 접근제어(
RBAC
, Role Based Access Control)
: 조직내에서 맡은역할
에 기초하여 자원에 대한 접근허용 여부를 결정하는 방법
MAC 보안 모델
Bell-LaPadula
Confidentiality Model; BLP기밀성
강조- No Read Up: 낮은 등급의 주체는 높은 등급의 객체를 읽을 수 없음
- No Write Down: 높은 등급의 주체는 낮음 등급의 객체를 수정할 수 없음
Biba Integrity
Model무결성
강조- No Read Down: 높은 등급의 주체는 낮은 등급의 객체를 읽을 수 없음
- No Write Up: 낮은 등급의 주체는 상위 등급의 객체를 수정할 수 없음
- Clark-Wilson Integrity Model
- 무결성 강조
- 상업용
- Brewer Nash, Chinese Wall Model
- 이익 충돌 방지를 위한 모델
- Lattice
- 정보의 흐름을 안전하게 제어
13. V모델
단위(Unit) 테스트
: 개발자가 명세서의 내용대로 정확히 구현되었는지단위 중심으로 테스트
- 정적
- 소스코드의 실행없이 내부 확인
- 도구
- PMD, SonarQube, FindBugs, CheckStyle, CppCheck, Cobertura
- 동적: 입력값에 대한 출력값 확인
- 정적
s
: 단위 테스트를 통과한 컴포넌트 간의인터페이스를 테스트
- 빅뱅 테스트: 모든 모듈이 결합된 프로그램 전체가 대상
- 상향식 테스트: 드라이버(
Driver
) 사용 - 하향식 테스트: 깊이 우선 통합법, 넓이 우선 통합법 사용, 스텁(
Stub
) 사용 - 혼합식 통합 테스트: : 하위 수준-상향식 통합, 상위 수준-하향식 통합 사용, 샌드위치(Sandwich)식 통합 테스트 방법
- 회귀 테스팅(Regression Testing): 통합 테스트가 완료 된 후 변경된 모듈이나 컴포넌트가 있을 경우, 다른 부분에 영향을 미치는지 테스트하여 새로운 오류 여부를 확인
시스템(System) 테스트
: 전체 시스템 또는 제품의 동작에 대해 테스트- 기능 요구사항 테스트
- 비기능 요구사항 테스트
인수(Acceptance) 테스트
: 계약상의 요구사항이 만족되었는지 확인- 알파 테스트: 개발자 + 사용자
- 베타 테스트: 사용자
- 형상 테스트: 구조 확인
소프프웨어 개발 방법론
애자일 방법론
: 일정한 주기를 갖고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발하는 프로세스 모델 방식
소프트웨어 생명 주기
- 폭포수 모형 (Waterfall Model)
- 계획 → 분석 → 설계 → 구현 → 테스트 → 유지보수
- 이전 단계로 돌아갈 수 없다는 전제
- 각 단계가 끝난 후에는 다음 단계를 수행하기 위한
결과물
이 명확하게 산출되어야 함
- 나선형 모델
계획 및 정의 → 위험 분석 → 공학적 개발 → 고객 평가
- 프로토타입 모형(Prototype Model, 원형 모델)
- 실제 개발될 소프트웨어에 대한
견본품
을 만들어 최종 결과물을 예측하는 모형
- 실제 개발될 소프트웨어에 대한
- RAD 기법 모델
짧은 개발 기간
동안 개발하기위한 순차적 프로세스 모델
- V 모델
- 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
- 작업 결과의
검증(테스트)
에 초점
- 4세대 기법
자동화 도구
들을 이용하여 요구사항 명세서로부터 실행코드를 자동으로 생성할 수 있게 해주는 방법
15. IPC(Inter Process Communication)
프로세스 간 통신
을 가능하게 하는 기술로, 파이프, 메시지 큐, 공유메모리, 세마포어, 소켓 등이 있다.
16. SQL
SELECT COUNT(*)
FROM TABLE01
WHERE EMPNO > 100
AND SAL >= 3000
OR EMPNO = 200;
-- 1
-- DML
INSERT INTO TABLE_NAME(COLUMN1, COLUMN2, ...) VALUES(VAL1, VAL2, ...);
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...;
UPDATE TABLE_NAME SET COL1=VAL1, COL2=VAL2 WHERE ...;
DELETE FROM TABLE_NAME WHERE ...;
17. Python
class arr:
a = ["Seoul", "Kyeonggi", "Incheon", "Daejeon", "Daegu", "Pusan"];
str = '';
for i in arr.a:
str = str + i[0];
print(str);
# SKIDDP
18. Java
int i, sum;
for(i = 0; i <= 5; i++){
sum += i;
System.out.print(i);
if(i==5){
System.out.print("=");
System.out.print(sum);
}
else {
System.out.print("+");
}
}
// 0 + 1 + 2 + 3 + 4 + 5 = 15
19. Java
int val[][] = {{45, 50, 75}, {89}};
System.out.println(val[0].length); // 3
System.out.println(val[1].length); // 1
System.out.println(val[0][0]); // 45
System.out.println(val[0][1]); // 50
System.out.println(val[1][0]); // 89
20. C
개행, 띄어쓰기 유의
int main(){
struct insa {
char name[10];
int age;
} a[] = {"Kim", 28, "Lee", 38, "Park", 41, "Choi", 30};
struct insa *p;
p = a;
p++;
print("%s ", p → name);
print("%d", p → age);
}
/* Lee 38 */
🔗 마크다운 파일
📚 참고 자료
'Certificate > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 2021년 3회차 실기 (0) | 2023.09.08 |
---|---|
[정보처리기사] 2021년 2회차 실기 (0) | 2023.09.07 |
[정보처리기사] 2020년 4회차 실기 (0) | 2023.09.05 |
[정보처리기사] 2020년 3회차 실기 (0) | 2023.09.04 |
[정보처리기사] 2020년 2회차 실기 (0) | 2023.08.27 |