cs note

7 분 소요

세타조인: WHERE 절에오는 조건을 모든 경우를 조인한다느 의미 자연조인:

운영체제


SRT == 짧은걸 먼저 실행 (CPU 스케쥴링)

CPU 선점 알고리즘

  • 선점형 뺏김
    • SRT (Shortest Remaining Time First): 실행중인 프로세스보다 도착프로세스의 실행시간이 더 짧은경우, 현재프로세스를 중단하고, 새로 도착한 프로세스가 우선 실행됨
    • RR: 각 프로세스에 동일한 짧은시간 할당량 부여, 시간만료시 다음프로세스에게 우선권 전달(공평성)
    • Priority
    • MLQ(Multilevel)
    • MLFQ
  • 비선점형 안뺏김 중간에 다른프로세스에게 CPU를 뺏기지 않음
    • FCFS: AKA FIFO
    • SJF: 도착한 프로세스들 중에 실행시간이 가장짧은 프로세스에게 우선권 부여(평균 대기시간 초소화하는데 효율적)
    • HRRN (대기 + 실행) / 실행

페이지교환 알고리즘

  • LRU(Least Recently Used): 가장 최근의것을 사용 == 오래된것을 삭제하는 알고리즘
  • LFU(Least Frequently Used): 빈도가 높은것을 사용 == 사용빈도가 낮은것을 삭제

권한

rwxr-xr-x owner group other 755: onwer 읽쓰실, group 읽기실행, other 읽기실행

데이터베이스


데이터 무결성

  • 도메인: 허용된 값의 집합만을 포함
  • 개체: 기본키가 Null값을 혹은 중복된 값을 가질 수 없음 레코드 고유식별 보장

  • 참조: 외래키값이 참조하는 테이블의 키값과 일치

튜플 == 레코드 카드널리티

데이터베이스설계

요구 조건 분석 개념 설계(정보모델링|개념화): 분석단계에서 도출된 요구 조건 명세를 ERD를 작성 논리 설계(데이터모델링): 테이블을 설계하는 단계 물리 설계: 물리적 구조의 데이터로 변환하는 단계 구현:

ERD

| 기호 | 의미| |————— | ————— | | 사각형 | 개체(Entity) | | 마름모 | 관계(Relationship) | | 타원 | 속성 | | 이중 타원 | 다중(복합)속성 | | 밑줄 타원 | 기본키 속성 | | 복수 타원 | 복합속성 | | 선 | 개체타입과속성연결 |

데이터베이스 스키마

  • 외부(External)스키마: 사용자와 관련된 부분만 정의
  • 개념(Conceptual)스키마: 전체뷰(전체적 구조를 볼 수 있음)
  • 내부(Internal)스키마: 물리적 적재

정규화

공장통운 도부이결다조

  • 1NF: 도메인 종속 제거
  • 2NF: 부분 함수 종속 제거
  • 3NF: 이행 종속 제거
  • BCNF: 결정 후행자
  • 4NF: 다치
  • 5NF: 조인

네트워크


데이터 교환 방식

가상회선: 연결형 데이터그램: 비연결형

애드혹 네트워크

L2TP (Layer 2 Tunneling Protocol)

데이터링크 계층 터널링기술 VPN 터널링 프로토콜. PPP 프레임을 캡슐화하여 IP 네트워크를 통해 전송하며, 주로 원격 접속 VPN이나 사이트 간 VPN에서 사용됩니다. 독립적으로 암호화 기능을 제공하지 않아 IPSec과 함께 사용되는 경우가 많습니다.

계층별 네트워크 프로토콜

  • 응용:
    • HTTP, FTP, SMTP, DNS, SNMP
  • 표현:
  • 세션:
  • 전송:
    • TCP, UDP
  • 네트워크:
    • IP, IMCP, IGMP, ARP, RARP
    • 정적라우팅
    • 동적라우팅
      • IGP(내부)
        • RIP 거리벡터
        • OSFP(Open Shortest First Path)
      • EGP(외부)
        • BGP
  • 데이터링크:
  • 물리:

OSI 7

응표세전데네물

  • 응용:
  • 표현:
  • 세션:
  • 전송:
  • 네트워크:
  • 데이터링크:
  • 물리:

소프트웨어 개발


소프트웨어 생명주기

  1. 계획:
  2. 분석: 요구사항 명세서
  3. 설계:
  4. 구현:
  5. 테스트(단통시인)
    • 단위테스트
    • 통합테스트
    • 시스템테스트
    • 인수테스트
      • 베타
      • 알파

테스트 목적(회안성 구회병)

  • 회복
  • 안전
  • 성능
  • 구조
  • 회귀
  • 병행

유지보수

  • 수정보수
  • 향상보수
  • 적응보수
  • 예뱡보수

소프트웨어 공학

  • 역공학

    유지보수

[!TODO]

소프트웨어 설계


UML

  • 구성요소
    • 사물
    • 관계
    • 다이어그램

사물

  • 구조:
  • 행동:
  • 그룹:

다이어그램

  • 구조
  • 행위:

설계

객체지향

  • 캡슐화
  • 상속
  • 다형성
    • 오버로딩:
    • 오버라이딩:
  • 캡슐화

테스트 커버리지

소프트웨어 테스트는 프로그램의 품질을 보장하고 오류를 찾아내는 중요한 과정입니다. 크게 두 가지 주요 기법으로 나눌 수 있습니다.

1. 블랙박스 테스트 (Black-box Testing)

소프트웨어의 내부 구조나 구현을 알지 못하는 상태에서, 즉 사용자 관점에서 시스템의 외부 기능 명세만을 기반으로 동작을 검증하는 테스트 기법입니다. 주로 요구사항 명세서에 따라 시스템이 올바르게 작동하는지 확인하는 데 중점을 둡니다.

  • 동등분할 (Equivalence Partitioning): 유효하거나 유효하지 않은 입력 데이터를 동등한 특성을 가진 그룹으로 나누고, 각 그룹에서 대표 값 하나를 선택하여 테스트하는 기법입니다. 이를 통해 테스트 케이스의 수를 줄이면서도 효과적인 테스트를 수행할 수 있습니다.
  • 경계값 분석 (Boundary Value Analysis): 입력 값의 경계에서 오류가 자주 발생한다는 점에 착안하여, 입력 도메인의 경계 값(최소값, 최대값, 그 주변 값)을 테스트 케이스로 사용하는 기법입니다. 동등분할과 함께 사용될 때 효과적입니다.
  • 원인-결과 그래프 테스트 (Cause-Effect Graphing Testing): 시스템의 입력(원인)과 그에 따른 출력(결과) 간의 논리적 관계를 그래프로 표현하고, 이를 기반으로 테스트 케이스를 생성하는 기법입니다. 복잡한 조건과 액션이 있는 경우 유용합니다.
  • 오류 예측 (Error Guessing): 테스터의 경험과 직관을 바탕으로 오류가 발생하기 쉬운 부분을 예측하고, 그 부분을 집중적으로 테스트하는 기법입니다. 과거의 오류 발생 이력이나 취약점 등을 기반으로 테스트 케이스를 설계합니다.

2. 화이트박스 테스트 (White-box Testing)

소프트웨어의 내부 구조, 코드, 설계 등을 알고 있는 상태에서 테스트하는 방법입니다. 주로 개발자의 관점에서 코드의 논리적인 흐름과 구조를 검증합니다. 화이트박스 테스트는 다양한 커버리지(Coverage) 측정 기준을 사용하여 테스트의 충분성을 평가합니다.

  • 구문 커버리지 (Statement Coverage): 모든 명령문 한번 이상 실행되었는지 확인
  • 결정 커버리지 (Decision Coverage) / 분기 커버리지 (Branch Coverage): 모든 조건이 한번 이상 실행되었는가
  • 조건 커버리지 (Condition Coverage): 각 개별조건 참거짓 모두 (한번 이상)
  • 변경 조건/결정 커버리지 (Modified Condition/Decision Coverage, MC/DC): 각 조건이 전체 결정문의 결과에 독립적으로 영향을 미치는 것을 확인하며, 결정 커버리지와 조건 커버리지를 결합한 보다 엄격한 기준입니다. 주로 안전에 민감한 시스템에서 사용됩니다.
  • 다중 조건 커버리지 (Multiple Condition Coverage): 모든 결정 지점 내의 모든 조건식 조합이 한 번 이상 실행되었는지 확인합니다. 가장 강력하지만 테스트 케이스 수가 폭발적으로 증가할 수 있습니다.
  • 경로 커버리지 (Path Coverage): 프로그램 내의 모든 가능한 독립적인 실행 경로를 한 번 이상 실행하는 것을 목표로 합니다. 가장 완벽한 커버리지이지만, 경로의 수가 매우 많아 실질적으로 모든 경로를 테스트하기는 어렵습니다.
  • 결정 조건 커버리지 (Decision-Condition Coverage): 결정 커버리지와 조건 커버리지를 모두 만족하는 커버리지입니다.

암호화

  • 단방향

  • 양방향

    • 대칭
      • 블록
        • DES: IBM개발, 연방표준 대칭블록 알고리즘, 키길이 짧음
        • AES: DES 한계극복 대체제
        • SEED: KISA 대칭키 블록 알고리즘
        • ARIA: 대한민국 국가보안기술연구소(NSRI) 대칭키 블록 알고리즘
        • IDEA: 스위스 연방 공과대학 대칭기 블록 알고리즘
      • 스트림 LFSR
    • 비대칭

응집도

  • 기능: 기능끼리 모여있음
  • 순차: 이전요소의 출력이 다음 요소의 입력으로 사용되는 형태
  • 통신: 동일한 입력데이터 사용 or 동일한 출력 데이터 사용
  • 절차: 특정 순서에 따라 실행되어야하는 기능들이 모여있는 케이스 실행순서 중요
  • 시간: 특정 시간에 함께 실행되어야하는 기능들이 모여있는 케이스 기능들간 연관성은 부족하지만, ..
  • 논리: 유사 범주의 여러 기능들이 모듈에 모여있지만, 어떤것을 수행할것인지는 외부에서 전달되는 플래그에 결정
  • 우연: 모듈내 요소들이 아무런 연관이 없는 케이스

결합도

  • 자료: 기본데이터만 주고받음 (정수, 문자열, …) 가장 약한 결합도
  • 스탬프: 인터페이스시 배열이나, 오브젝트 자료구조등 전달
  • 제어: 한 모듈이 다른모듈에게 어덯게 동작해야할지 제어정보를 매개변수로 전달(특정 Flag변수에 따라 내부로직이 변경)
  • 외부: 다른 모듈에서 선언된 데이터를 참조할 때 발생 (예: 전역 변수를 외부에서 참조)
  • 공유: 전역변수 참조하거나 갱신하는식으로 상호작용시
  • 내용: 다른모듈에있는 변수, 기능을 다른모듈에서 사용

소프트웨어 설계에서 반복적으로 발생하는 문제에 대한 일반적이고 재사용 가능한 해결책입니다.

디자인패턴

생성 (Creational Patterns)

객체 생성 메커니즘을 추상화하여 객체가 생성되거나 초기화되는 방식을 제어합니다.

  • Singleton: 클래스의 인스턴스를 하나만 생성하고, 그 인스턴스에 대한 전역 접근을 제공합니다.
  • Factory Method: 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 만들지는 서브클래스가 결정하도록 합니다.
  • Abstract Factory: 구체적인 클래스를 지정하지 않고 관련 객체들의 팩토리를 생성하는 인터페이스를 제공합니다.

구조 (Structural Patterns)

객체와 클래스를 더 큰 구조로 조합하여 새로운 기능과 유연성을 제공합니다.

  • Adapter: 호환되지 않는 인터페이스를 가진 클래스들이 함께 작동하도록 변환합니다.
  • 어댑터 패턴: 기존 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환하여, 호환되지 않는 인터페이스를 가진 클래스들이 함께 작동할 수 있도록 돕는 구조 패턴입니다.
  • Bridge: 구현부 추상층을 분리해 독립적 변형
  • Composite: 객체 트리구조 계층형성

행위 (Behavioral Patterns)

객체 간의 상호작용과 책임 분배 방식을 다룹니다.

  • Iterator: 컬렉션의 내부 표현을 노출하지 않고 요소들에 순차적으로 접근할 수 있는 방법을 제공합니다.
  • Visitor: 객체 구조의 요소에 대해 수행할 연산을 나타내며, 연산을 수행할 객체의 클래스를 변경하지 않고 새로운 연산을 정의할 수 있게 합니다. 내부구조 변경없이 연산 추가 가능
  • Observer: 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에게 변경을 알리고 자동으로 업데이트되도록 하는 일대다 의존성을 정의합니다.

  • Proxy: 실제 객체에 대한 접근을 제어하기 위한 대리자(프록시) 객체를 제공합니다. 이 대리자는 실제 객체의 작업을 수행하기 전이나 후에 추가적인 로직(예: 접근 제어, 로깅, 캐싱)을 수행할 수 있습니다.

GOF (Gang of Four): 에릭 감마, 리처드 헬름, 랄프 존슨, 존 블리시디스 네 명이 쓴 “Design Patterns: Elements of Reusable Object-Oriented Software” 책의 저자들을 일컫는 말입니다. 이 책에서 23가지 주요 디자인 패턴을 소개했습니다. GOF 디자인패턴 책의 저자: 에릭감마, 헬름, 존슨, 블리시디스… GOF: 디자앤패턴 도서의 저자

보안


공격

  • 스머프: 엄청난 양의 데이터를 한사이트에 보냄 서비스 불능 상태, DOS, …

  • 트로이목마: 대상 컴퓨터에 상주하며, 공격자의 컴퓨터로 정보를 빼돌림
  • 웜: 감염된 컴퓨터 시스템에서 스스로복제해 확산하는 악성 프로그램
  • 랜섬웨어: 시스템을 변경하거나 사용할 수 없도록 만드는 악성코드

문제풀이


자바 멤버 변수, 메소드 접근 다름 접근메소드 호출시 오버라이드된 메소드가있다면 자식의 메소드호출 멤버변수 접근시 선언된 클래스의 멤버에 접근

세션하이재킹

CRC (Cyclic Redundancy Check)

CRC == 오류 검출 코드

CRC는 데이터 전송 중 발생할 수 있는 오류를 감지하기 위한 오류 검출 코드입니다. 주로 네트워크 통신이나 저장 장치에서 데이터 무결성을 확인하는 데 사용됩니다. 데이터를 다항식으로 간주하고, 미리 정해진 생성 다항식으로 나눈 후 나머지를 계산하여 이 나머지를 데이터에 추가하여 전송합니다. 수신 측에서는 동일한 생성 다항식으로 데이터를 나누어 나머지가 0인지 확인하여 오류 여부를 판단합니다.

  • ICMP (Internet Control Message Protocol)프로토콜 패킷처리시 발생되는 문제를 알려주는 프로토콜

    ICMP는 IP(Internet Protocol)와 함께 작동하여 네트워크 장치 간에 오류 메시지와 운영 정보를 교환하는 데 사용되는 네트워크 계층 프로토콜입니다. 주로 데이터가 목적지에 도달할 수 없는 경우(예: 호스트 또는 네트워크를 찾을 수 없을 때)나 데이터 전송 중에 발생하는 문제에 대한 피드백을 제공하는 데 사용됩니다. ping이나 traceroute와 같은 네트워크 진단 도구에서 널리 활용됩니다.

  • hamming: 오류정정부호
  • FEC:
  • BEC: 데이터 전송과정에 오류발생시 송신측에 재전송을 요구하는방식
  • parity: 데이터전송시 데이터유실 or 손상 확인 기술
  • CRC: 데이터 오류확인을위해 체크값을 결정하는 방식

SIEM

알림 발생 솔루션

trust zone

typo squatting

접근 통제 기술

  • MAC(Mandantory): Rule, “등급” (계급)에 따라

  • RBAC(Roll Based): 역할 기반 접근 통제 개발자, 인사팀 …
  • DAC(Discrectionary): 신원, 신분에 따라 리눅스 chomd, chown

정리

  1. 다음은 HDLC 프로토콜에 대한 설명이다. 보기 안에 알맞는 답을 골라 작성하시오.

( 1 ) 프레임은 Seq, Next, P/F의 필드를 가진다. 또한 맨 처음 비트를 0으로 가진다. Seq는 송신용 순서번호를 가지고 있다. Next는 응답용 순서번호를 가진다. P/F는 P가 1로 설정된 경우 주국에서 종국에 데이터 전송을 허용하는 것을 의미하고 F가 1로 설정된 경우 종국에서 주국으로 데이터 전송을 하는 것을 의미한다.

( 2 ) 프레임은 맨 앞의 필드가 1로 되어 있어 정보 프레임이 아니라는 것을 나타내고 다음 비트가 0이 나와있다. Type의 경우에는 2비트를 가지고 있어 4가지의 종류로 나누어진다. 데이터를 보내는 역할이 아니라 응답의 기능을 수행하므로 Seq에 대한 값은 필요가 없고 다음 프레임을 요구하는 Next만 존재한다.

( 3 ) 프레임은 순서 번호가 없는 프레임을 의미한다. 첫 번째 비트와 두 번째 비트가 모두 1로 설정되어 있다. 여러 종류를 가지고 있는데 Type의 2비트와 Modifier의 3비트를 합쳐 5비트를 통해 종류를 나눈다.

( 4 ) 은/는 두 호스트 모두 혼합국으로 동작한다. 양쪽에서 명령과 응답을 전송할 수 있다.

( 5 ) 은/는 불균형 모드로 주국의 허락 없이 종국에서 데이터를 전송할 수 있다.

보기 ㄱ. 연결제어 ㄴ. 감독 ㄷ. 정보 ㄹ. 양방향 응답 ㅁ. 익명 ㅂ. 비번호 ㅅ. 릴레이 ㅇ. 동기균형 ㅈ. 동기응답 ㅊ. 비동기균형 ㅋ. 비동기응답

카테고리:

업데이트: