정처기-2025.03.03

이주원·2025년 3월 3일

컴퓨터언어

목록 보기
5/50

2023년도 3회 짝수문제

12.

문제를 일부로 복잡하게 써놨는데 요약하자면

공인 IP와 내부 IP주소를 라우팅하여 통신하는걸 묻는문제

정답 : NAT(Network Address Translation, 네트워크 주소 변환)

사용되는 핵심기술 : 사설 IP주소를 공인 IP로 변환



공인 IP주소란???

어떤 IP를 이용해야하는 기기에게 ISP가 할당해주는 주소 ,
그 공인 IP는 다른 외부 기기에서 접근하기위해 사용하는 주소


14

num1, num2 = input().split()
num1 = int(num1)
num2 = int(num2)

num1, num2사이에 공백이있어서 입력값을나눔

num1 = int(num1) 이런식을 사용하면 값을 입력


16

테스트 커버리지를 공부할때 도움되는그림

1️⃣ Equivalence Partitioning (동등 분할 기법)
✅ 개념:
입력값을 몇 개의 그룹(Partition)으로 나누고, 각 그룹에서 대표 값을 선택하여 테스트하는 기법
목적: 모든 입력값을 테스트하지 않고도 동일한 결과를 낼 수 있는 대표 값을 사용하여 테스트 효율성을 높임
✅ 예제:
예를 들어, 나이를 입력하는 시스템에서 유효 범위가 0~120이라고 가정할 때:
유효한 그룹: 0~120 → 대표값: 5, 50, 100
유효하지 않은 그룹: -10, 130 → 대표값: -10, 130

2️⃣ Statement Coverage (문장 커버리지)
✅ 개념:
소스 코드의 모든 문장(statement)이 최소 한 번 실행되었는지 확인하는 테스트 기법
목적: 코드의 모든 실행 경로를 테스트하여 테스트 누락을 방지
✅ 예제:

  if x > 10:
      print("x는 10보다 큼")  # (문장 1)
  print("테스트 종료")  # (문장 2)  

입력값으로 10보다 큰수 , 작은수 모두 삽입

3️⃣ Boundary Value Analysis (경계값 분석)
✅ 개념:
입력값의 경계값(최소값, 최대값 등)에서 오류가 발생하기 쉬우므로, 경계를 집중적으로 테스트하는 기법
Equivalence Partitioning (동등 분할 기법)과 함께 자주 사용됨
✅ 예제:
비밀번호 길이가 8~16자여야 한다고 가정할 때,
유효한 값: 8자, 16자
무효한 값: 7자, 17자

4️⃣ Branch Coverage (분기 커버리지)
✅ 개념:
모든 분기문(조건문, if-else 등)이 최소 한 번 실행되는지 확인하는 테스트 기법 Statement Coverage보다 더 정교한 테스트 기법
✅ 예제:

if x > 10:
    print("x는 10보다 큼")  # 분기 1
else:
    print("x는 10 이하")  # 분기 2

x = 5일 경우 else 블록이 실행됨 (✅)
x = 15일 경우 if 블록이 실행됨 (✅) ➡ 모든 분기문이 실행되었는지 확인해야 함.

5️⃣ Error Guessing (오류 추측 기법)
✅ 개념:
테스터의 경험과 직관을 활용하여 발생할 가능성이 높은 오류를 예상하고 테스트하는 기법
명확한 규칙 없이 테스터의 감각, 과거의 버그 경험, 테스트 직관에 의존

6️⃣ Condition Coverage (조건 커버리지)
✅ 개념:
프로그램의 개별 논리 조건(AND, OR 등)이 독립적으로 참/거짓을 가질 수 있도록 테스트하는 기법
Branch Coverage보다 더 정밀한 테스트 기법
✅ 예제

if (x > 5) and (y < 10):
    print("조건 충족")
x = 6, y = 5 → True and True (✅)
x = 4, y = 5 → False and True (✅)
x = 6, y = 15 → True and False (✅)
x = 4, y = 15 → False and False (✅)
➡ 각 논리 조건이 True와 False를 모두 가질 수 있도록 테스트해야 함!
                        
                        
                        

7️⃣ Cause Effect Graph (원인-결과 그래프)
✅ 개념:
입력(원인)과 출력(결과) 간의 관계를 그래프로 표현하여 테스트 케이스를 도출하는 기법
논리 회로 테스트, 비즈니스 규칙 기반 테스트 등에 유용
✅ 예제:
ATM에서 현금 인출 조건을 예로 들면,
잔액이 충분함 (원인) → 인출 성공 (결과)
비밀번호가 틀림 (원인) → 인출 실패 (결과)


18

🔹 1. 라우팅 프로토콜 (Routing Protocols)

라우팅 프로토콜은 네트워크에서 최적의 경로를 찾는 역할을 합니다.

1.1. RIP (Routing Information Protocol)

특징: Distance Vector(거리 벡터) 라우팅 프로토콜
라우팅 기준: Hop count (최소 홉 수)
최대 Hop 수: 15 (16 이상은 도달 불가능)
업데이트 방식: 30초마다 라우팅 테이블을 브로드캐스트로 전송
사용 범위: 소규모 네트워크 (LAN, 작은 기업 네트워크)
단점: 대규모 네트워크에서 비효율적, 경로 변경이 느림

1.2. OSPF (Open Shortest Path First)

특징: Link-State (링크 상태) 라우팅 프로토콜
라우팅 기준: 최단 경로 (Dijkstra 알고리즘 사용)
경로 업데이트: 변경이 있을 때만 갱신 → RIP보다 빠름
사용 범위: 대규모 네트워크, ISP, 기업 네트워크
장점: 다이내믹한 경로 설정, 경로 안정성 높음
단점: 설정이 복잡함

1.3. BGP (Border Gateway Protocol)

특징: 인터넷에서 사용되는 유일한 Exterior Gateway Protocol (EGP)
라우팅 기준: AS(Autonomous System) 간의 경로
사용 범위: 인터넷 백본(백본 라우팅)
장점: 인터넷 규모의 라우팅이 가능
단점: 설정이 어렵고, 경로 수렴 속도가 느림

as란 인터넷을 구성하는 하나의 독립된 네트워크 그룹

🔹 2. 전송 계층 프로토콜 (Transport Layer Protocols)

전송 계층에서 데이터 전송을 담당하는 프로토콜

✅ 2.1. TCP (Transmission Control Protocol)

특징: 신뢰성 있는 데이터 전송 프로토콜 (연결 지향, 신뢰성 보장)
핵심 기능: 3-way handshake, 흐름 제어, 오류 제어, 혼잡 제어
사용 예: 웹사이트 접속(HTTP), 이메일(POP3, IMAP), 파일 전송(FTP)
장점: 패킷 손실 시 재전송하여 데이터 무결성 보장
단점: 속도가 UDP보다 느림

✅ 2.2. UDP (User Datagram Protocol)

특징: 비연결형 전송 프로토콜 (신뢰성 없음, 속도가 빠름)
핵심 기능: 신뢰성을 보장하지 않으며, 데이터가 손실될 수 있음
사용 예: VoIP, 온라인 게임, 스트리밍 서비스(DNS, DHCP)
장점: 속도가 빠르며 실시간 서비스에 적합
단점: 패킷 손실이 발생할 수 있음

🔹 3. 응용 계층 프로토콜 (Application Layer Protocols)

응용 계층에서 데이터 전송을 위한 프로토콜

✅ 3.1. HTTP/HTTPS (Hypertext Transfer Protocol)

특징: 웹 브라우저와 웹 서버 간의 통신을 담당
HTTP: 보안 없음 (포트 80)
HTTPS: 보안 적용 (SSL/TLS 사용, 포트 443)
사용 예: 웹사이트 접속

✅ 3.2. FTP (File Transfer Protocol)

특징: 파일을 전송하는 프로토콜
포트: 21번 (제어), 20번 (데이터)
단점: 보안에 취약 → FTPS, SFTP 사용 권장

✅ 3.3. DNS (Domain Name System)

특징: 도메인 네임(URL) → IP 주소로 변환하는 프로토콜
포트: 53번
예제: www.google.com → 142.250.190.78 변환

✅ 3.4. DHCP (Dynamic Host Configuration Protocol)

특징: 자동으로 IP 주소를 할당하는 프로토콜
포트: 67(서버), 68(클라이언트)
장점: IP 주소 관리가 자동화됨

✅ 3.5. SMTP, POP3, IMAP (이메일 프로토콜)

SMTP (Simple Mail Transfer Protocol) → 이메일 전송 (포트 25)
POP3 (Post Office Protocol v3) → 이메일 다운로드 (포트 110)
IMAP (Internet Message Access Protocol) → 이메일 서버에서 동기화 (포트 143)


20

📌 참조 무결성(Referential Integrity)란?

데이터베이스에서 테이블 간의 관계를 유지하는 무결성 제약 조건
외래 키(FK, Foreign Key)가 반드시 부모 테이블의 기본 키(PK, Primary Key) 값 또는 후보키 값을 참조해야 함
잘못된 참조를 방지하여 데이터의 일관성을 유지함

기본 키는 여러 개의 후보 키 중에서 하나를 선택하는 것!


외래 키(Foreign Key)는 기본 키(PK)뿐만 아니라 후보 키(Candidate Key)도 참조할 수 있습니다!

개체 무결성 (Entity Integrity)

각 행(Row)이 고유하게 식별될 수 있도록 보장하는 무결성
기본 키(Primary Key, PK) 제약 조건을 적용하여 유지됨
기본 키(PK)로 설정된 컬럼은 중복될 수 없고(NULL을 허용하지 않음)

도메인 무결성 (Domain Integrity)

각 열(Column)이 허용된 데이터 타입과 범위를 벗어나지 않도록 하는 무결성
NOT NULL, CHECK, DEFAULT, ENUM 등의 제약 조건을 사용하여 적용

키 무결성 (Key Integrity)

테이블에서 각 행을 고유하게 식별할 수 있도록 보장하는 무결성
기본 키(Primary Key), 후보 키(Candidate Key), 대체 키(Alternate Key), 슈퍼 키(Super Key) 등이 포함됨

profile
뭐가될지 모름

0개의 댓글