Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

네트워크 보안 중간고사 힌트 정리 본문

2-2/네트워크 보안

네트워크 보안 중간고사 힌트 정리

김브래 2023. 10. 21. 00:03

방금 홈페이지에 중간고사에 대한 힌트가 나와서 그것을 토대로 정리해 볼까 한다.


자료, 정보, 지식, 지능 등에 대한 이해 필요
정보전송 시스템을 구성하는 항목들에 대한 이해 필요
전송기술 중점 학습
망구성(토폴로지) 이해 필요
데이터전송 방식에 대한 이해
베이스밴드 전송을 위한 주어진 값들에 대하여 특히 NRZ, RZ, 맨체스터 중 하나의 방식으로 변환하는 것을 물어봄
CRC 연산 능력 확인
프로토콜 기본
OSI 계층모델
엔디언 관련 이해 필요
(세부 2문제: 변환 함수, 주어진 데이터에 대한 특정 엔디언에서의 표현 값 질의)
오류제어 방식 이해 필요
DSDV 라우팅 테이블 작성
Link State 라우팅 테이블 작성
IP 패킷 구조에서 특정 항목 질의
상동
TCP 세그먼트 구조에서 특정 항목 질의
상동
시간처리 함수
상동
BSD 함수 관련
보너스(난이도 최상)


정보 처리 기술 용어

데이터(Data)
• 현실세계를 단순히 관찰, 측정하여 수집하거나 생산한 사실이나 측정치

 

정보(Information)
• 데이터를 가공하거나 변환하여 얻은 결과물

 

지식(Knowledge) 또는 지능(Intelligence)
• 교육과 학습 등을 통해 사람이 재활용할 수 있는 정보와 기술 등


정보전송 시스템

단말장치 (DTE) - Data Terminal Equipment *

- 사용자와 인터페이스를 이루는 종단 장치(End Device / Terminal)
- 일반적으로 디지털 신호를 처리하는 시스템(예: 컴퓨터, 라우터, 스마트폰 등)
- 원격의 종단장치와 통신을 위해서는 별도의 DCE(Data Circuit-terminal Equipment) * 장치가 필요

신호변환장치(DCE) - Data Circuit-terminal Equipment *

- 네트워크를 연결하는 물리적인 수단을 관리 및 처리
- 데이터에 대한 부호 또는 변조  전송회선(전송로)용 신호 생성
- 전송로를 통해 수신된 신호에 대한 복호 또는 복조를 수행(예: 모뎀(MODEM))

통신제어장치(CCU) - Communication Control Unit *

- 데이터 전송 제어 기능을 수행
- 데이터 전송계와 처리계의 사이(단순한 1:1통신일 경우 생략이 가능)
- 접속, 통신 방식, 경로 설정, 다중 접속 제어를 수행


전송 기술

통신회선 개수에 따른 분류

- 물리 매체(전송회선)가 전송 장치(모뎀 등)에 연결된 통신회선의 개수에 따라 분류

 

2선식 또는 4선식


• 2선식(2W, 2Wires)
– 신호선과 공통 접지선의 2개로 구성
– 양방향 통신에서 위/아래로 전송할 때 동일한 전송로를 사용


• 4선식(4W, 4Wires)
– 신호선과 공통 접지선의 4개로 구성
– 양방향 통신에서 위/아래로 전송할 때 별도의 전송로를 사용

접속 방식에 따른 종류

점-대-점 회선 방식 (Point-to-Point Line)

- 컴퓨터 시스템과 단말기를 전용회선으로 연결

 

- 주로 고속 처리에 이용

 

- 장점: 빠른 응답
- 단점: 회선 구축에 많은 비용이 듦

다지점 회선 방식(Multipoint / Multidrop Line)

컴퓨터 시스템에 연결된 전송회선 1개에 단말기를 여러 대 연결

예: USB허브를 통한 주변 장치 연결

 

폴링/선택 vs 경쟁

 

폴링(Polling)
• 단말기에서 컴퓨터로 데이터를 전송할 때 사용
• 컴퓨터 감시 프로그램에서 신호를 보내 송신할 데이터가 있는지 주기적으로 검사

 

선택(Selection)
• 컴퓨터에서 특정 단말기를 지정하여 데이터를 전송할 때 주로 이용
• 일반적으로 특정 단말기를 지정하는 제어 문자를 데이터 앞에 포함시켜 전송
• 경제적, 짧은 시간 동안 회선을 운영하므로 주로 조회 처리할 때 사용

 

경쟁(Contention)
• 단말 장치가 서로 경쟁하면서 회선에 접근하는 방법
• 가장 간단하지만 효율적이지 않음

집선 회선 방식(Line Concentration)

- 일정한 지역 내에 있는 중심 부분에 집선장치를 설치한 후 단말기를 여러 대 연결하는 방식
- 집선장치는 단말기에서 저속으로 전송되는 데이터를 모아 컴퓨터에 고속으로 전송하는 역할을 함
- 통신회선을 효율적으로 사용 하며, 단말기의 회선 사용률이 낮을 때 적합

회선 다중 방식(Line Multiplexing)

- 일정한 지역에 있는 단말기 여러 대를 그 지역의 중심 부분에 설치된 다중화 장치에 연결

- 다중화 장치와 컴퓨터 사이는 대용량 회선으로 연결
- 회선 사용률이 비교적 높은 단말기에서 데이터를 송수신할 때도 적용 가능


통신회선망의 구성방식

Tree

• 노드(단말)를 계층화하여 망을 구성
• 각 노드들에 대하여 계층화된 주소체계를 갖고 있으면, 노드의 탐색이 쉬워 짐

Bus (Multidrop)

• 하나의 통신회선을 모든 노드들이 공유
• 끝 단에 신호 반사를 막기 위해 터미네이터(Terminator)를 사용

Star (성형)

• 하나의 중앙 분리기를 중심으로 다른 노드들이 연결
• 중앙 분리기가 고장이 나면 전체에 영향이 있음
• LAN(Local Area Network)에서 가장 많이 사용하는 구조
– 중앙 분리기의 대표적인 예로 허브(hub), 스위치, 라우터 등이 있음

Mesh

• 주로 정보통신 네트워크에서 사용
– 인터넷에서 흔히 사용하는 구조


• 하나의 통신회선이 고장이 나더라도 다른 회선을 통해 통신이 가능
• 원활한 데이터 통신과 불필요한 데이터의 소거를 위해서는 적절한 라우팅 기법과 주소 체계가 필요
• 회선의 교환은 라우터(router)에서 수행


데이터 전송 방식

직렬 전송

• 전송선로 1개를 이용하여 데이터를 순차적으로 전송하는 방식
• 대부분의 데이터 통신 시스템에서 사용 중
• 상대적으로 비용이 적게 듦
• 설치 방법이 간단해서 장거리 통신에 많이 사용
• 변환기와 버퍼(메모리)가 필요

병렬 전송

• 여러 개의 전송로(또는 채널)을 통해 한번에 기본 단위의 데이터를 전송하는 방식
• 빠른 데이터 전송이 가능
• 근거리 통신에 사용
• 시스템의 버스(FSB, BSB)에서 많이 사용
• 가격이 비쌈

비동기 전송

• 비정기적인 데이터 전송
• 송신할 데이터가 있을 때 전송
• 주로 이벤트 데이터 전송에 활용
• 예: 키보드 입력, 마우스 입력 등

동기 전송

• 정기적인 데이터 전송
• 시간을 분배하여 할당된 시간에 데이터를 전송
• 예: 모니터


베이스밴드(Baseband) 전송

NRZ(Non-Return to Zero) 방식
• 0과 1을 전압으로 표시한 후 다시 0V로 되돌아오지 않는 방식
- 극성 방식의 역관계( = −)
• 컴퓨터 주변 기기간 통신 방식으로 많이 사용

 

RZ(Return to Zero) 방식
• 하나의 비트를 전송할 때 비트 시간 길이의 약 1/2은 양이나 음의 전압을 유지하고, 

그 나머지 시간은 0 상태로 되돌아오는 방식
• NRZ 방식보다 변조율이 2배 더 높으나, 맨체스터대비 약하여 잘 사용하진 않음

 

맨체스터(Manchester) 방식 *
• 0은 전압이 낮은 곳에서 높은 곳으로 변환 = 0 : 상승
• 1은 전압이 높은 곳에서 낮은 곳으로 변환 = 1 : 하강
• RZ와 NRZ방식의 단점을 보완한 방식


CRC 연산

1. 원본프레임 뒤에 000을 붙인다 (총 9비트)

2. CRC발생 코드를 위와 같이 XOR연산을 수행한다.

3. 나머지가 000이면 성공, 아니면 그 나머지를 000대신 원본프레임 뒤에 붙임

4. 나머지가 000이 나오는지 확인


프로토콜의 기본요소 *

 

구문 : 데이터의 형식, 부호화(신호 방식 및 정의 포함) 등을 포함하여 노드(node) 간 데이터의 내용을 구분(parsing)하기 위한 문장의 구조를 정의

 

의미 : 구문에 의해 분석된 데이터(토큰, token)를 기반으로 행동(action)을 취하기 위한 방법(how)

 

타이밍 : 메시지의 송/수신을 위한 서로간의 시간적인 약속을 의미


OSI 7계층 모델 *


엔디언

종류:

• 리틀 엔디언(Little-Endian)*
– 낮은 주소 위치에 LSB부터 저장
– Intel CPU 계열 데이터 처리 방식

• 빅 엔디언(Big-Endian)*
– 낮은 주소 위치에 MSB부터 저장
– Motorola/Sun Sparc CPU 계열 데이터 처리 방식
– 네트워크용 표준 저장 방식

주요 용어:
 MSB(Most Significant Bit, 최대/최상위 유효 비트)* : 
– 2진법으로 표시된 수에 대하여 최상위의 숫자를 의미(가장 큰 단위)

 LSB(Least Significant Bit, 최소/최하위 유효 비트)* : 
– 2진법으로 표시된 수에 대하여 최하위의 숫자를 의미(가장 작은 단위)


오류제어 방식

오류 무시(Ignore)

- 오류 검출 및 수정 방식이 포함되지 않음
- 일부 데이터의 소실이나 왜곡이 발생되더라도 운영에 큰 문제가 없을 경우 무시
- 데이터의 안전성을 위해 일반적으로 동일 프레임을 여러 번 보냄

 

대표적 예:
• 루프/에코 방식(Loop/Echo)
– 송신측에서 전송한 메시지를 수신측에서 다시 전송측으로 보냄
– 송신측은 회신메시지와 전송 메시지를 비교하여 동일함을 판단

검출 후 재전송(ARQ: Automatic Repeat reQeust)

• 수신 측에서는 받은 데이터에 대한 오류(이상)를 검출하여 결과를 회신하는 형태로 동작
– 정상 : ACK(ACKnowledgement) 회신
– 오류 : NAK(Negative AcKnowledgement) 회신


• 송신 측은 전송한 프레임을 기억해야 함
– 버퍼 필요
– 버퍼의 크기는 프레임의 크기와 개수로 결정


• 오류를 검출하는 방식
– 패리티 검사(Parity Bit Check)
– 블록 합 검사(BSC: Block Sum Check)
– 순환 중복(CRC: Cycle Redundancy Check) 등

전진 오류 수정(FEC: Forward Error Correction)

• 전송 프레임의 정보에 오류 검출과 복구를 위한 잉여 비트를 추가
• 데이터에 오류가 발견되면, 수정하여 데이터를 복원
• 연속적인 데이터 전송이 가능하며 역채널을 사용하지 않는다는 장점
• 단, ARQ 방식에 비해 복구를 위한 더 많은 추가 정보들이 포함되어야 함
• 오류 복구를 위한 하드웨어와 소프트웨어가 복잡
• 특정 비율 이상의 오류는 복구가 불가


DSDV 알고리즘*

- Distance-Sequenced Distance Vector routing

- 목적지에 도달하는데 소요되는 홉(hop)의 개수가 가장 적은 방향

- 모든 노드는 주기적으로 이웃 노드들에게 자신의 테이블 정보를 알림

- 테이블 정보를 수신한 노드들은 목적지 주소와 홉의 개수들을 보고 자신의 테이블을 갱신


Link State 알고리즘*

- 노드 간 링크 상태(역량, 지연, 비용 등)의 관계를 고려한 경로 설정
- 홉의 개수보다 링크의 상태에 우선순위를 둠


프로토콜 데이터 유닛(PDU)

헤더(header, PCI)와 데이터(Payload, SDU) 부분으로 구성됨

 

헤더는 TCP/IP 모델의 네트워크 계층에서 처리를 위한 제어정보들이 저장되어 있음

 

전체 최대 64K bytes의 크기(216 - 1)를 가질 수 있음

IP 패킷 구조

VER(4비트)
• 4개의 비트로 구성(범위: 0~15)
• 전송되는 IP 패킷(데이터그램)의 버전을 정의
• IPv4의 경우 4(0100b)로 정의됨


HLEN(4비트)
• 헤더의 크기
• 32비트 단위
• 길이는 표시 값에 4를 곱한 값
• 최소값: 5(기본 값, 0101b)

 

SERVICE(8비트)
• TOS : Type Of Service라고도 불림
• 8개의 비트로 구성
• 서비스 클래스의 우선순위, 지연, 처리율 등 지정
• 보통 0의 값을 가짐(악용방지 차원)
• 현실성 X = 현재 미지원

 

TLENGTH(16비트)
• Total Length
• 데이터그램 전체 길이
• 헤더 포함
• MTU는 최대 216 - 1의 값(64K)을 가짐
• 단위 : 바이트 단위

 

ID(16비트)
• 16개의 비트로 구성
• IP 패킷의 식별을 위한 값
• 중복 방지
• 네트워크의 다양한 경로를 통한 전달과정에서 중복되는 패킷 수신 시, 이를 판별

 

FLAGS(3비트)
• 단편화 상태 표기
• 동일 ID의 IP 패킷에 대하여 단편화 여부를 판단 및 단편화(fragmentation) 시 재조립(re-assembly) 수행


OFFSET(13비트)
• 단편화의 위치(오프셋)을 표현
• 재조립을 위한 순서확인용

 

TTL(8비트)
• Time To Live
• 홉 카운터 값(노드 통과시 1씩 감소)
• 라우터의 수에 대한 상한을 설정하여 데이터그램의 생존 시간을 제한


TYPE(8비트)
• Protocol Identifier
• SDU가 전달될 상위 프로토콜의 유형을 정의
• 대표적 예: 1(ICMP), 2(IGMP), 6(TCP), 8(EGP), 17(UDP), 89(OSPF) 등

 

CHECKSUM(8비트)
• 헤더에 대한 16비트 오류 검사
• CRC 기법을 사용

 

SOURCE/DESTINATION IP ADDRESS(각 32비트)
• SOURCE : IP 데이터그램의 송신자 주소
• DESTINATION : IP 데이터그램의 수신자 주소

 

OPTIONs(32 X n 비트)
• 네트워크 점검 또는 디버깅의 목적
• HLEN의 값에 따라 이 범위가 달라짐


TCP 세그먼트 구조

 

헤더

- 최소 20바이트의 헤더 크기를 가짐

 

전송 포트(Source Port)
• 운영체제내 송신 프로세스의 주소
• 응용프로그램을 식별하기 위해 운영체제에 의해 동적인 번호로 할당됨

 

수신 포트(Destination Port)
• 수신 프로세스의 주소
• 수신 포트는 서버 구동 시 할당됨

 

순서 번호(Sequence Number)
• TCP 세그먼트의 일련번호
• 일련번호는 세그먼트(segment) 별 1씩 증가
• 세그먼트의 누락 해결, 순서 교정 및 중복 세그먼트 방지용

 

ACK 번호
• 다음 번에 수신될 것으로 예상되는 세그먼트의 번호

 

헤더 길이(HLEN, Header Length)
• 헤더의 크기(지정 크기 X 4, 기본값: 101b)
– 기본값: 0101b = 5 -> 20바이트(=5 X 4)

 

• 이 값을 통해, 세그먼트내 데이터(SDU)의 시작 위치를 알 수 있음

 

예약(Reserve)
• Not Used
• 미래를 위해 남겨놓은 영역
• 현재까지 사용되지 않고 있음

 

플래그 비트(Flag Bits)

• 회선, 데이터의 관리와 제어 기능 등을 수행하는 영역
• 6개의 비트 플래그를 포함

 

• URG 플래그(Urgent)
– 긴급 포인터임을 알림
– 순서에 상관없이 먼저 송신됨

 

• ACK 플래그
– ACK 번호 영역의 값이 유효
– 접속 요청에 사용되는 SYN 메시지 이후에는 항상 1로 설정됨

 

• PSH 플래그
– 버퍼의 내용을 채우지 않고 바로 전송을 수행

 

• RST 플래그
– TCP 연결을 해제하기 위해 사용
– 전송 중에서 강제 접속 해제에 사용

 

• SYN 플래그
– 연결 설정에 사용

 

• FIN 플래그
– 전송할 남은 데이터가 없음을 알림, 즉 연결을 종료

 

윈도우 크기(Window Size)
• 흐름제어를 위해 사용하는 16비트 영역
• 송신지에 수신지의 버퍼 여유 크기를 지속적으로 통보


채크섬(Checksum)
• TCP 세그먼트 전체에 대한 오류 검출


긴급 포인터(Urgent Pointer)
• URG 플래그가 설정된 경우 긴급 포인터 영역
• 응급 데이터의 위치

 

옵션
• 다양한 확장 기능과 관련된 영역
• 옵션에 따라 TCP 헤더의 크기가 변함
• 타임스탬프, 최대 세그먼트 크기 등의 기능이 포함
• 일부 옵션은 SYN 플래그가 설정되어 있을 때만 전송


시간처리 함수

초단위 현재 시간 추출

함수 : time()

표시 형식 변경

함수 : localtime()
• 주어진 초 단위 시각정보를 구조체 tm 타입 정보로 변환
• 정적 영역(static memory)을 사용하여 해당 공간의 주소를 반환
– re-entrance 문제 주의
• 매뉴얼에서는 localtime_r() 함수 사용을 권고

인자:
• *timep : 초단위 시각정보

 

함수 : localtime_r()
• localtime()함수와 동일한 동작
• 단, 두번째 인자에 변환 결과를 기록

인자:
• *timep : 초단위 시각정보
• *result : 변환 결과가 반영될 포인터 변수

밀리초 단위 현재 시간 추출

함수 : ftime()
• 현재 시각을 밀리초 단위의 값(2bytes)으로 추출
• 초단위의 값은 UNIX 타임기준

인자:
• *tp : 현재 시간이 저장될 변수

마이크로초 단위 현재 시간 추출

함수 : gettimeofday()
• 현재 시각을 마이크로초 단위의 값으로 추출
• 초 단위의 값은 UNIX 타임기준

인자:
• *tv : 현재 시간이 저장될 변수
• *tz : 저장될 타임존

초 단위 시간 변환

함수 : mktime()
• struct tm 형태의 시각정보를 변환
• 초 단위의 UNIX 시간 정보로 변환

인자:
• *tm : 입력할 struct tm 형태의 시각

시스템 시간 설정

함수 : stime()
• 시스템의 시간을 설정
• 시스템 관리자 계정으로 실행해야 함

인자:
• *t : 설정한 시간(UNIX 타임, 초단위)


BSD 함수

BSD 타입
• strings.h에 정의됨
• bzero*, bcopy*, bcmp* 등이 대표적

 

bzero 함수: 메모리 영역을 0으로 설정하는 함수.
bcopy 함수: 메모리에서 데이터를 다른 메모리로 복사하는 함수.
bcmp 함수: 두 메모리 영역을 비교하여 동일한지 여부를 확인하는 함수.


보너스 문제

소켓(Socket)

운영체제가 제공하는 응용 프로토콜 인터페이스

 

네트워크를 통해 프로세스간 통신이 가능토록 수단을 제공

 

네트워크 기반 프로그래밍을 위한 필수 요소*
• 프로토콜(Protocol)
• 소스 IP주소(Source IP Address)
• 소스 포트 번호(Source Port Address)
• 목적지 IP주소(Destination IP Address)
• 목적지 포트 번호(Destination Port Address)


POSIX 데이터 타입*

유닉스 계열의 운영체제를 위한 약속

 

표준화한 데이터 타입(확장성을 고려)