[Network] 네트워크 계층 (3계층 / Network Layer)

 

네트워크 보안


(1) 네트워크 계층에 대한 이해

  • 데이터 링크 계층은 하드웨어의 주소만으로 통신, 통신하고자 하는 하드웨어(랜 카드)의 주소(MAC)를 알아야 하는데, 이를 위해서 통신하려는 개체가 물리 계층으로 직접 연결되어 있어야 함

  • 하지만 넓은 네트워크를 모두 직접 연결 불가능하고, 이는 데이터 링크 계층만으로 랜 간 통신이 불가능함을 의미

  • 그래서 랜을 벗어난 통신을 하기 위해 네트워크 계층에서 IP 주소를 사용

  • IP 주소는 인터넷을 하기 위해 컴퓨터마다 설정하는 주소를 의미 (각 랜의 주소)


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

  • IP 주소를 이용해 통신을 하기 위한 프로토콜 제공

  • 대표적으로 IP, ARP, RARP, ICMP, IGMP가 있음

 

네트워크 통신을 할 때 흔히 IP 주소를 사용하며, IP 주소를 설정하고 통신을 위해 IP 주소를 확인하는 경우는 있지만, 통신을 위해 MAC 주소를 알려주는 경우는 거의 없다.

 

그러나 LAN과 같은 물리적 매체에 연결된 두 장비가 네트워크 계층에서 적절한 통신을 위해서는 먼저 하위 계층인 데이터 링크 계층 간의 통신 경로 확보가 필요하다.

 

통신하려는 장비의 물리적 주소(MAC)를 확보하지 않고서는 통신을 할 수 없다.

 

 

2-1. ARP

  • 데이터를 전달하려는 IP 주소와 통신에 필요한 물리적 주소(MAC)를 알아내는 프로토콜

  • MAC 주소를 사용해 통신하지만, 정보로 담는 값은 IP이기 때문에 데이터 링크 계층과 네트워크 계층 중간에 위치

  • 선택 매체에 브로드캐스트를 통해 특정 IP 주소를 사용하는 호스트가 응답을 하도록 요구하는 방식 사용

  • 목적지 호스트가 응답 > 송신 호스트는 목적지 호스트와 연결을 맺고 데이터 전송 시작

  • ARP 패킷에 대한 목적지 호스트가 응답하면 송신지 호스트는 ARP 테이블을 설정

  • 호스트는 통신 시 ARP 테이블의 정보를 이용 > 데이터 링크 계층 통신 수행

 

[그림 1] ARP 패킷 구조

 

[표 1] ARP 패킷 내용

필드 이름 길이 내용
HRD 2Bytes

ARP 패킷이 사용되는 물리 계층의 네트워크 유형 정의

1 : 이더넷 (10Mb)

6 : IEEE802 네트워크

15 : 프레임 릴레이

16 : ATM

17 : HDLC

18 : 광 채널

19 : ATM (Asynchronous Transfer Mode)

20 : 직렬 연결

PRO 2Bytes

ARP를 위해 사용할 상위 계층 프로토콜 종류 지정

일반적으로 IPv4를 사용, 그에 대한 값은 2048 (0800 hex)

HLN 1Byte 하드웨어 주소 값의 길이, MAC 주소 값은 6
PLN 1Byte

상위 계층 프로토콜의 주소 값의 길이

IPv4 주소 값 길이를 의미 (4)

OP 2Bytes

ARP 패킷 동작의 종류 의미

1 : ARP Request

2 : ARP Reply

3 : RARP Request

4 : RARP Reply

SHA =HLN 패킷 송신자의 MAC 주소
SPA =PLN 패킷 송신자의 IP 주소
THA =HLN 패킷 수신자의 MAC 주소
TPA =PLN 패킷 수신자의 IP 주소

 

2-1. RARP

  • 데이터 링크 계층의 주소인 MAC 주소를 가진 네트워크 계층의 주소 (IP 주소를 확인하는 프로토콜)

  • 디스크가 없는 호스트가 자신의 IP 주소를 서버로부터 얻어내려면 RARP라는 TCP/IP 인터넷 프로토콜 사용 필요

  • 자체의 디스크 기억 장치가 없는 워크스테이션이나 지능형 단말기에서 사용

 

2-2. IP

  • 가장 대표적인 네트워크 계층 프로토콜

  • 하위 계층 서비스를 이용 > 두 노드 간의 데이터 전송 경로를 확립해주는 역할

  • 하위 계층으로 분류되는 데이터 링크 계층은 같은 회선에 있는 두 노드 사이 데이터를 전송하고, 네트워크 계층은 회선이 서로 다른 두 노드 사이의 데이터 전송

 

[그림 2] IP 패킷 구조

 

[표 2] IP 패킷 내용

필드 이름 길이 내용
Version 4bits IP의 버전 정보, 값이 0x4일 경우 IPv4를 의미
IHL 4bits IP 헤더 길이, 이 필드 값에 4를 곱한 값이 실제 헤더의 바이트 값
TOS 1Byte

라우터에서 IP 데이터그램을 처리할 때 우선 순위를 정의

우선 순위로는 최소 지연, 최대 처리율, 최대 신뢰성, 최소 비용을 설정 가능 (기본 값은 0)

TL 2Bytes 헤더를 포함한 데이터그램의 전체 길이 의미
Identification 2Bytes 데이터그램이 단편화될 때 모든 단편에 이 값이 복사되고, 단편화 된 데이터그램이 생성될 때마다 1씩 증가
Flag 3bits

단편화 여부와 단편화 된 조각이 첫 번째 조각인지, 중간 혹은 마지막 조각인지를 알려줌

RF (Reserved Fragment) : 아직 사용하지 않으므로 항상 0

DF (Don't Fragment) : 1이면 단편화되지 않았음, 0이면 단편화되었음을 의미

MF (More Fragment) : 0이면 마지막 단편이거나 유일한 단편이고, 1이면 마지막 단편이 아님을 의미

Fragment Offset 13bits 기존 데이터그램 안에서 단편의 상대적 위치 의미
TTL 1Byte

라우팅 과정에서 라우터를 몇 개 이상 통과하면 해당 패킷을 버릴지를 입력

라우터 하나를 지날 때마다 값이 1씩 줄어들고, 0이 되면 해당 패킷은 버려짐

Protocol 1Byte

IP 계층 서비스를 사용하는 상위 계층 프로토콜 정의

1 : ICMP

2 : IGMP

6 : TCP

17 : UDP 

Header Checksum 2Bytes

패킷 전달 중 발생할 수 있는 오류 검사를 위해 사용하는 것

송신측에서 체크섬을 계산하여 전송 

Source Address 4Bytes 송신측의 IP 주소
Destination Address 4Bytes 수신측의 IP 주소
Options 가변 해당 패킷에 대한 옵션 사항을 입력할 수 있음
Padding 가변 옵션 내용이 입력 될 경우 그 값이 32배수로 데이터가 마무리되도록 0으로 채움
Data 가변 IP 패킷을 통해 전송되는 데이터 부분

 

IP는 32자리 2진수로, 8자리마다 점을 찍어 구분하고 개수가 제한되어 있기 때문에 체계적으로 사용할 수 있도록 별도 규칙을 두었다.

 

IP 주소는 A, B, C, D, E 클래스로 구분하는데 각 클래스는 네트워크 부분과 호스트 부분으로 구성되어 있다.

 

A 클래스는 첫 번째 8자리가 네트워크 주소, 나머지 값은 호스트 주소이다.

 

B 클래스는 두 번째 8자리까지 네트워크 주소, 나머지가 호스트 주소이다.

 

C 클래스는 세 번째 8자리까지가 네트워크 주소, 마찬가지로 나머지가 호스트 주소이다.

 

[그림 3] IP 주소 클래스

 

A, B, C 클래스는 맨 앞부분에 시작하는 2진수 숫자에 따라 구분한다.

 

A 클래스의 네트워크가 가장 크고, C 클래스의 네트워크가 가장 작다.

 

 

[표 3] 네트워크 클래스 구분

시작 주소 구분 내용
0 A 클래스

0번 ~ 127번 네트워크

2**7(128)개 가능, 하나의 A 클래스에 256**3개 호스트 존재 가능

10 B 클래스

128번 ~ 191번 네트워크

2**6 x 256(16,384)개 가능, 하나의 B 클래스에 256**2개 호스트 존재 가능

110 C 클래스

192번 ~ 223번 네트워크

2**5 x 256**2(2,097,152)개 가능, 하나의 C 클래스에 256개 호스트 존재 가능

1110 D 클래스

224번 ~ 239번 네트워크

멀티미디어 방송할 때 자동 부여

E 클래스

240번 ~ 255번 네트워크

테스팅을 위한 주소 대역으로, 사용하지 않음

 

각 클래스마다 다음과 같이 사설 네트워크 대역을 지정해놓았다.

 

[표 4] 클래스별 사설 네트워크 범위

구분 지정된 사설 네트워크
A 클래스 10.0.0.0 ~ 10.255.255.255
B 클래스 172.16.0.0 ~ 172.31.255.255
C 클래스 192.168.0.0 ~ 192.168.255.255

 

사설 네트워크는 공인 네트워크의 주소 부족 현상 해결을 위해 많이 사용된다.

 

 

2.3 ICMP

  • 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜

  • IP 데이터그램을 사용하지만 메시지는 TCP/IP 소프트웨어에 의해 처리되며, 응용 프로그램 사용자에게 직접, 분명하게 보이지 않음

  • ICMP를 사용하는 대표적 툴은 ping

 

IP는 비연결 지향형 프로토콜로, 패킷이 확실히 전송된다는 보장이 없기 때문에 라우터나 노드(호스트) 등에서 오류가 생겨 목적지까지 도달하지 못하기도 한다.

 

이런 경우 네트워크 연결 상태를 확인할 필요가 있는데, 이때 필요한 것이 ICMP이다.

 

ICMP는 IP 계층 위에서 동작하지만 TCP, UDP의 전송 계층 프로토콜과 별개다.

 

[그림 4] ICMP 패킷 구조

 

 

[표 5] ICMP 패킷 내용

필드 이름 길이 내용
Type 1Byte

ICMP 메시지 타입을 가리키며, 다음과 같은 값이 존재

0 : Echo Reply

4 : Source Quench

5 : Redirect

8 : Echo Request

11 : Time Exceeded

Code 1Byte 각 타입별로 세부적인 값을 적음
Checksum 2Bytes 패킷의 무결성을 위한 오류 보정 값
Data 가변 ICMP를 통해 보내는 데이터 / 보통 의미 없는 문자열로 채워짐

 

 

ICMP는 크게 오류 통지를 위한 오류 메시지와 진단용 문답 메시지의 두 종류로 구분 된다.

 

2-3-1. ICMP Echo Request 메시지

  • 송신 측의 전송 패킷이 목적지 노드나 라우터에 도착했는지를 확인하는 데 사용

  • 송신 측 노드는 목적지 노드에 대해 'ICMP Echo Request 메시지'를 송신, 목적지 노드로부터 'ICMP Echo Reply' 메시지가 회신되면 패킷이 무사히 전송된 것으로 인식

[그림 5] ICMP Echo Request

 

2-3-2. ICMP Destination Unreachable 메시지

  • 라우터가 특정 노드의 패킷을 목적지에 보내지 못할 경우, 송신 노드에 'ICMP Destination Unreachable 메시지'를 보냄

  • 메시지 안에는 목적지까지 전송되지 못한 이유를 나타내는 정보가 포함

  • 목적지 노드 IP 주소 경로를 찾아내지 못한 라우터는 이 메시지를 다시 송신측 라우터로 되돌려 보냄

  • 이 메시지를 해석한 송신측 노드는 패킷이 목적지에 도착하지 못했음을 알 수 있음

 

2-3-3. ICMP Redirect 메시지

  • 라우터가 송신측 노드에 적합하지 않은 경로로 설정되어 있을 경우 해당 노드에 대한 최적화 된 경로를 다시 지정해주는 'ICMP Redirect 메시지'를 보냄

 

2-3-4. ICMP Time Exceeded 메시지

  • 패킷이 네트워크 사이에서 무한정 돌아가지 않도록 각 라우터가 패킷을 처리할 때마다 TTL(활성화 지속 시간)을 감소시켜 그 값이 '0'이 되면 송신측 라우터에 해당 메시지를 되돌려 보내 패킷이 폐기된 사실을 알림

[그림 6] ICMP Time Exceeded

 

위 그림에서 보듯이 노드 A에서 TTL 값을 3으로 전송한다면, 라우터 A에서 2가 되고, B에서 1, C에서 0이 되므로 패킷이 폐기되고 노드 B에는 전달되지 못할 것이다.

 

2-3-5. ICMP Source Quench 메시지

  • 저속 광역 회선 등을 사용할 경우, IP 라우터의 WAN 쪽에서 집중이 발생할 수 있음

  • 집중 완화를 위해, 송신측 큐 값이 '0'으로 남아 송신 불능 상태가 되면 해당 메시지를 송신측 노드에 보냄

  • 송신측은 이 메시지의 정보를 해석하여 회선의 어딘가가 혼잡하다는 사실을 인식하고 송신 패킷의 양 제어

[그림 7] ICMP Source Quench

 

 

2.4 IGMP

  • 컴퓨터에서 다른 컴퓨터로 IP 데이터를 전달하는 방식으로 유니캐스트, 브로드캐스트, 멀티 캐스트 세 가지 존재

  • IGMP는 세 가지 전달 방식 중 멀티캐스트에 관여하는 프로토콜

  • 멀티캐스트 그룹을 관리하는 역할

 

2-4-1. 유니캐스트

  • 한 호스트에서 다른 호스트로 전송하면 이를 유니캐스트라 함

  • 송/수신단이 1:1로 대비되며, 일반적인 IP 데이터 전송은 모두 유니캐스트 사용

 

2-4-2. 브로드캐스트

  • 호스트에서 IP 네트워크에 있는 전체 호스트로 데이터를 전송하는 것을 브로드캐스트라 함

  • TCP/IP에서 브로드캐스트용 주소는 IP 호스트 대역 주소가 모두 '1'인 경우

  • 일반 브로드캐스트는 255.255.255.255

  • 예로 다이렉트 브로드캐스팅은 C 클래스에 속한 211.32.34.0 네트워크에 대해 브로드캐스팅을 하고자 하는 경우에 목적지 주소를 211.32.34.255로 지정해서 보내는 것

 

2-4-3. 멀티캐스트

  • 유니캐스트와 브로드캐스트의 중간 형태로, 송신하는 하나의 호스트에 특정한 호스트를 묶어서 전송하는 것

  • 지정한 주소로 패킷을 한 번만 전달하면 멀티캐스트 그룹에 속한 모든 호스트에 전달되기 때문에 효율이 높음

  • IP 멀티캐스트 주소는 D 클래스 주소 대역 (244.0.0.1 ~ 239.255.255.255)으로 규정


(3) 네트워크 계층 관련 장비

  • 라우터는 네트워크 계층 대표적 장비로, 게이트웨이라고도 부름

  • 게이트웨이는 원래 서로 다른 프로토콜을 사용하는 네트워크를 연결해주는 장비

  • 라우터의 특성으로는 논리적으로 분리된 둘 이상의 네트워크를 연결하는 역할을 하며, 반대로 로컬 네트워크에서 브로드캐스트를 차단해 네트워크를 분리하는 역할도 수행

  • 라우터의 중요 기능은 패킷 교환망에서 패킷 최적 경로를 찾기 위한 라우팅 테이블을 구성, 라우팅 테이블에 따라 패킷을 목적지까지 가장 빠르게 보내는 길잡이 역할

[그림 8] 라우터


(4) 라우팅

  • 라우팅 테이블은 라우터만 있는 것이 아닌, 네트워크 계층 통신을 하는 모든 장치는 라우팅 테이블을 가짐

  • 일반 PC도 네트워크 인터페이스가 둘 이상이면 라우터로 구성 가능

[그림 9] PC의 라우팅 테이블

 

위의 시스템의 IP 주소는 192.168.0.100이고, 게이트웨이 IP 주소는 192.168.0.1로 설정되어 있다.

 

Destination(목적지)인 0.0.0.0은 라우팅 테이블에 목적지로 따로 명시되지 않은 모든 목적지 주소를 의미한다.

 

즉 라우팅 테이블에서 직접 구체적으로 지정한 주소 외 모든 목적지 주소는 192.168.0.100 인터페이스를 통해 게이트웨이 192.168.0.1로 보내라는 의미이다.

 

[그림 10] IP 주소 200.200.200.200에 대한 네트워크 경로 확인

 

tracert 명령으로 200.200.200.200으로 시작하는 경로로 ICMP 패킷이 전송되었다.

 

200.200.200.200으로 목적지 IP가 설정된 패킷을 192.168.0.1로 보냄을 확인할 수 있다.

 

로컬 네트워크에 있는 호스트이므로 192.168.0.1로 보내지 않고, 로컬 네트워크에서 상대방을 찾으라는 의미이다.

 

[그림 11] LAN의 서브넷 마스크 설정

 

위 넷마스크 값은 제어판의 네트워크 카드에서 설정하는 서브넷 마스크 값이다.

 

즉, 서브넷 마스크와 넷마스크는 같은 것을 의미한다.

 

위 값을 255.255.255.224로 설정하면, 라우팅 테이블의 내용도 255.255.255.224로 바뀌게 될 것이다.

 

이러한 라우팅은 다시 정적 라우팅과 동적 라우팅으로 나뉘게 된다.

 

 

4-1. 정적 라우팅

  • 관리자 권한으로 특정 경로를 통해서만 패킷이 지날 수 있도록 설정한 것

  • 네트워크에 변경사항이 발생하면 라우팅 테이블을 수동으로 직접 고쳐줘야 함

[그림 12] 정적 라우팅

 

4-1-1. 정적 라우팅 특징

  • 경로 설정이 실시간으로 이루어지지 않아 초기에 관리자가 다양한 라우팅 정보를 분석한 최적 경로 설정이 가능

  • 라우팅 알고리즘을 통한 경로 설정이 이루어지지 않아 라우터의 직접적인 처리 부하 감소

  • 네트워크 환경 변화에 대한 능동적 대처 어려움

  • 네트워크 환경 변화 시 관리자가 새로운 라우팅 정보를 통해 경로 재산출하여 각 라우터에 제공해야 함

  • 비교적 환경 변화가 적은 형태의 네트워크에 적합

 

4-2. 동적 라우팅

  • 라우터가 네트워크 연결 상태를 스스로 파악하여 최족 경로를 선택해 전송하는 방식

  • 네트워크 연결 형태가 변경되어도 자동으로 문제를 해결할 수 있다는 큰 장점을 가짐

[그림 13] 동적 라우팅

 

예로, 위 그림처럼 라우터 A에서 라우터 F로 가는 패킷이 있다면 경로 1과 경로 2 중 부하가 걸리지 않는 경로로 데이터를 전송한다.

 

만약 문제가 있어 라우터 C가 제대로 작동하지 않는다면 자동으로 경로 1로만 패킷을 전달한다.

 

 

4-2-1. 동적 라우팅 특징

  • 경로 설정이 실시간으로 이루어져 네트워크 환경 변화에 능동적으로 대처 가능

  • 라우팅 알고리즘을 통해 자동으로 경로 설정이 이루어져 관리하기 쉬움

  • 주기적인 라우팅 정보 송수신으로 인한 대역폭 낭비 초래

  • 네트워크 환경 변화 시 라우터에 의한 경로 재설정으로 라우터 처리 부하가 증가하며 지연이 발생함

  • 수시로 환경이 변하는 형태의 네트워크에 적합

 

[표 6] 정적 / 동적 라우팅 비교

구분 정적 라우팅 동적 라우팅
라우팅 테이블 관리

수동

네트워크 변화 (라우터 추가 / 변경 / 회선 장애 등)에 대한 자동 인지 불가

자동

네트워크 변화를 자동 인지하여 정보 전송 경로 재구성

처리 부하

라우팅 테이블 갱신을 위한 별도 부하 없음

CPU와 메모리에 부하 적음

네트워크 장애 실시간 관리 위한 NMS와 각 라우터 간 정보 전송 많음 (CPU에 부하 다소 발생)

라우팅 테이블 갱신을 위해 라우터 간 정보 교환

CPU와 메모리에 부하 많음

네트워크 장애를 실시간으로 관리할 필요 없음

백업 구성

백업 구성 곤란

별도 네트워크 장비 이용하여 회선 백업 기능

백업 구성이 쉬움 (회선 장비)
복구 기능

백업 회선 있는 경우, 회선 장애 시 수 초 내로 복구 기능

기타 장애 시 최소 10분 이상 복구 시간 필요 (백본 라우터 장애 시 30분)

백업 회선 있는 경우 수 초 내로 복구 가능
인터페이스 변경이 적을 때 유리 변경이 많을 때 유리
노드 추가 / 변경 / 확대 운영 요원이 라우팅 작업 대처 용이
중간 경로 단일 경로 적합 다중 경로 적합

# Reference

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B2228799661

'Network' 카테고리의 다른 글

[Network] 응용 계층  (1) 2020.03.19
[Network] 전송 계층  (0) 2020.03.19
[Network] 데이터 링크 계층 (DataLink Layer)  (0) 2020.03.18
[Network] 물리 계층 (Physical Layer)  (0) 2020.03.18
[Network] 네트워크 보안 기초  (0) 2020.03.11

[DataBase] DBMS(Database Management System)

 

데이터베이스


(1) DBMS(Database Management System)

1-1. DBMS란 무엇인가?

  • 데이터베이스를 생성하고 관리해주는 소프트웨어

  • 사용자는 데이터베이스의 데이터 저장 방식, 저장 장소를 몰라도 DBMS를 통해 데이터베이스에 접근하여 데이터 생성, 갱신 ,삭제 가능

  • 즉, DBMS 또는 다른 소프트웨어가 데이터베이스 안의 데이터를 저장 및 조작할 수 있도록 도와주는 인터페이스

  • 사용자나 애플리케이션으로부터 데이터 요청 받을 시, DBMS는 운영체제가 해당 데이터를 제공하도록 지시

 

[그림 1] DBMS 역할

 

DBMS는 또한 데이터 시각화를 위해 데이터베이스 스키마를 생성한다.

 

데이터베이스 스키마는 전체 데이터베이스에 대해 논리적 뷰를 제공하는 뼈대라고 생각하면 된다.

 

어떤 식으로 데이터가 조직화되어야 하는지 그리고 그들 간의 관계가 어떻게 형성이 되는지를 정의한다.

 

데이터베이스 스키마는 3층 구조로 되어 있으며, 크게 2가지 카테고리로 분류 가능하다.

 

 

가) 데이터베이스 스키마 카테고리

  • 물리적 데이터베이스 스키마 : 데이터의 실제 저장 장소와 데이터 형식 등 데이터가 실질적으로 어떻게 저장되는지를 정의

  • 논리적 데이터베이스 스키마 : 데이터가 저장될 때의 논리적인 제약 조건을 정의하며, 예로 테이블이나 뷰 그리고 무결성 제약 조건 등이 여기에 해당

 

[그림 2] 데이터베이스 스키마 구조 1

 

 

나) 데이터베이스 스키마 3층 구조

 

1) 외부 스키마 (서브 스키마, 사용자 뷰)

  • 응용 프로그래머나 사용자의 관점에서 필요한 데이터베이스의 논리적 구조를 정의한 것

  • 즉, 데이터를 어떤 형식, 구조, 배치로 사용자에게 보여줄 것인가를 정의

  • 하나의 데이터베이스 안에 여러 개가 존재할 수 있고 하나의 외부 스키마를 여러 사용자나 프로그램이 공용 가능

 

2) 개념 스키마 (전체적인 뷰)

  • 개체 간의 관계와 제약 조건을 명시

  • 데이터베이스의 접근 권한, 보안, 무결성 규칙에 대한 정의를 한 것

  • 외부 스키마와 달리 DB 전체를 기술한 것이기에 데이터베이스 안에 하나만 존재할 수 있음

 

3) 내부 스키마

  • 데이터베이스에 데이터가 물리적으로 저장되는 방식을 기술한 것

  • 일반적으로 "스키마"라고 하면 내부 스키마를 가리킴

 

[그림 3] 데이터베이스 스키마 구조 2

 

현재 가장 많이 쓰고 있는 DBMS는 앞서 알아본 객체형 데이터베이스 관리 시스템(RDBMS)이다.

 

데이터베이스 시장에는 객체형 데이터베이스를 기반으로 한 다양한 DBMS가 존재한다.


1-2 RDBMS의 ACID 속성

  • ACID는 데이터베이스의 트랜잭션의 안전성 보장을 위한 속성

  • Atomicity(원자성), Consistency(연속성), Isolation(독립성), Durability(지속성)으로 구성

 

가) 원자성 (Atomicity)

  • 트랜잭션은 하나의 구문으로만 이루어지는 것이 아닌 그 안에 여러 개의 구문이 존재할 수 있음

  • 원자성은 트랜잭션을 하나의 유닛으로 보아 여러 개의 구문 중 하나라도 실패하면 트랜잭션 전체 실패로 간주하여 해당 트랜잭션에 대한 데이터베이스 작업을 하지 않음

 

나) 연속성 (Consistency)

  • 데이터베이스에 정의된 제약 조건과 규칙을 만족하는 유효한 데이터만이 저장됨을 보장

  • 트랜잭션 수행의 결과로 유효하지 않은 데이터가 들어간다면, 데이터베이스 자체에서 이전의 상태로 돌림

 

다) 독립성 (Isolation)

  • 트랜잭션은 동시다발적으로 수행되기도 함

  • 독립성은 이러한 동시다발적 수행이 서로의 간섭을 받지 않고 독립적으로 수행될 수 있도록 함

  • 예로 두 명이 동시에 트랜잭션을 수행하면, 둘 중 하나는 하나의 트랜잭션이 완료될 동안 남은 한 명을 기다려야 함

 

라) 지속성 (Durability)

  • 성공적으로 수행된 트랜잭션은 시스템 문제, 데이터베이스 업데이트 등이 있다 하더라도 영원히 유지되어야 한다는 것

  • 또한, 데이터베이스의 로그에 기록되기 전에 오류로 인해 트랜잭션이 제대로 수행되지 않았다면 이전 상태로 되돌릴 수 있어야 함

  • 통장을 예로 들어 설명하자면, 돈을 성공적으로 인출하였다면 남은 잔고에 대한 데이터가 데이터베이스에 유지되어야 하며, 데이터베이스 로그에 찍히기 전에 오류가 발생하면 인출되지 않은 금액이 그대로 남아있어야 함


1-3 대표적인 DBMS 소프트웨어

 

[그림 4] 오라클 데이터베이스

 

가) Oracle

  • Oracle Corporation에서 개발한 RDBMS이며, 현재까지 가장 많이 쓰이고 있음

  • 이전 버전과의 호환이 좋고, 새로운 버전이 출시되면 업데이트 된 기능들을 상세히 설명하여 사용자들이 새 버전을 배우는 데에 거부감이 적음

  • 비즈니스 애플리케이션과의 활용도가 뛰어나고 안전성이 좋아 은행이나 대규모 회사에서 많이 채택하는 데이터베이스

  • DBA가 데이터베이스를 구성 및 관리하는 데에 편리한 기능들을 제공

  • 이외에도 수행 능력과 속도 면에서 뛰어나고, 데이터베이스 복구가 빠름

 

오라클 데이터베이스의 특징

  • 양립성 : IBM SQL/DS, DB2, INTEGERS, IDBMS/R 등과 겸용 가능

  • 이식성 : 다양한 하드웨어와 운영체제 플랫폼 (VMS, DOS, UNIX, Windows 등)에서 운행 가능

  • 연결성 : 여러 종류의 네트워크와 통신 가능

  • 고생산성 : 다양한 개발 도구를 제공하여 개발자에게 편의 제공

  • 개방성

 

오라클 데이터베이스는 머신 러닝 시스템으로 셀프 패치 / 드라이빙 / 튜닝이 가능하다.

 

자동화 기능은 보안에서 흔히 발생하는 관리자 실수를 줄여 보안을 강화하고 관리자의 작업량을 줄인다는 장점이 있다.

 

다음 쿼리로 데이터베이스 버전 정보를 간단하게 확인 가능하다.

 

[그림 5] 오라클 버전 확인

 

지원하는 운영체제와 플랫폼

  • Windows, UNIX, Linux, Mac OS와 같이 대표적인 운영체제 모두 지원

 

로그 파일 형태

  • alert_SID.log

  • $ORACLE_BASE/diag/rdbms/database_name/SID/trace 안에 존재

  • 파일명의 SID는 데이터베이스의 SID

 

오라클 데이터베이스는 데이터 변경 사항을 Redo 로그 파일에 저장한다.

 

데이터베이스 내부의 데이터 변경 시에 오라클은 바로 데이터 파일에 기록하지 않고 Redo Log 버퍼에 넣는다.

 

이러한 작업을 하는 이유는 Redo Log 버퍼에서 디스크로의 기록 속도가 훨씬 빠르기 때문이다.

 

Redo Log 파일은 데이터베이스 장애 발생하여 복구 작업을 할 때 유용하게 사용된다.


[그림 6] Mysql

 

나) MySQL

  • 오라클의 지원을 받아 개발된 오픈 소스 기반의 DBMS

  • 오픈 소스라 무료로 사용할 수 있긴 하지만, 오라클에서 상업용 라이센스를 구매하여 프리미엄 서비스 버전을 받을 수 있음

  • 다양한 애플리케이션에서 사용되는데 그 중에서 주로 웹 애플리케이션이나 온라인상에서 많이 사용

  • LAMP 스택의 필수적인 구성 요소로 웹 사이트나 웹 애플리케이션 개발자들이 많이 채택하는 데이터베이스

  • 대표적으로 WordPress, Joomla, Magento, Drupal 등이 PHP와 MySQL이 베이스가 되어 짜인 스크립트들

  • 클라이언트 서버 환경 또는 임베디드 시스템에서 운용 가능

  • 멀티스레드 SQL 서버로 구성된 클라이언트 서버 시스템에서는 각종 백엔드, 클라이언트 프로그램과 라이브러리, 관리자 도구, 다양한 API 제공

  • 임베디드 멀티스레드 라이브러리로 스탠드얼론 제품에 연결해 애플리케이션을 가볍고, 빠르게 그리고 관리하기 쉽게 할 수 있음

 

MySQL은 Inno DB, CSV, NDB 등 다양한 저장 엔진을 활용하여 데이터의 저장 및 접근이 가능하다.

 

각각 테이블에 대해서 여러 개의 저장 엔진을 사용할 수 있으므로 사용자에게 있어 가장 효율적인 것을 선택하면 된다.

 

또한, 데이터와 분할 테이블 복제가 가능하여 지속성 면에서도 좋다.

 

그리고 MySQL은 새로운 커맨드를 배울 필요가 없기 때문에 Oracle 데이터베이스나 MSSQL보다 배우기 쉽다.

(표준 SQL 커맨드로 데이터에 접근)

 

다른 시스템과 호환되도록 설계되었기 때문에 Amazon RDS for MySQL, Amazon RDS for MariaDB, Amazon Aurora for MySQL 등 가상화 환경에서 운용도 가능하다.

 

MySQL과 MSSQL의 데이터베이스 구조는 매우 비슷하여 AWS Schema Conversion Tool이나 AWS Database Migration Service와 같은 도구를 이용해 데이터베이스 이동 시키기가 가능하다.

 

반대로 MSSQL에서 MySQL로 데이터베이스를 옮길 때는 구조적 차이점을 신경써야 한다.

 

MySQL의 버전 확인 방법은 다음과 같다.

 

[그림 7] MySQL 버전 확인

 

지원하는 운영체제와 플랫폼

  • Linux, Unix, Windows, Mac과 같은 주요 운영체제를 포함한 20여가지의 다양한 플랫폼 지원

 

로그 파일 형태

  • MySQL은 데이터베이스의 자원 활용률 극대화를 위해 기본적으로 에러 로그가 비활성화 상태

  • 에러 로그를 남기기 위해 환경 변수 general_log를 off에서 on으로 값 변경 필요

  • 파일명은 mysqld.err

  • Windows의 기본 경로는 C:\Program Files\MySQL\MySQL Server <version>\data에 존재

  • Linux 또는 Unix 계열의 경로는 /var\log 안에 존재

 

또한, MySQL은 오라클을 기반으로 개발되어 Redo Log가 존재하며, 파일명은 일반적으로 id_logfile* (*은 숫자)


[그림 6] MSSQL

 

다) Microsoft SQL Server (MSSQL)

  • Oracle, DB2와 함께 데이터베이스 시장에서 주류에 속하는 데이터베이스로, 마이크로소프트에서 개발

  • 사용자는 용도에 맞는 Edition 선택 가능

  • Oracle 그리고 MySQL과 경쟁하기 위해 MS사에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)

  • 주요 RDBMS처럼 ANSI SQL과 표준 SQL 언어를 제공하며, Sybase와 MS사 만의 T-SQL이라는 프로그래밍 확장 기능 제공

  • MSSQL 데이터베이스를 관리하는 대표적인 도구에는 SSMS(SQL Server Management Studio)가 있음

  • 실시간 작업 분석과 모바일 기기에서도 데이터 시각화, 리포팅이 가능

  • 하이브리드 클라우드 지원으로 DBA로 온프레미스 시스템과 공공 클라우드 서비스를 결합해 데이터베이스 실행

온프레미스 : 소프트웨어를 클라우드나 서버와 같이 원격 환경이 아닌 개인이나 기업이 자체적으로 보유한 컴퓨터에 직접 설치하여 운용하는 방식

 

버전 정보 확인은 다음과 같다.

 

[그림 8] MSSQL 버전 확인

 

지원하는 운영체제와 플랫폼

  • SQL Server 2016 이후로 x64 프로세서만 지원

  • SQL Server 2017부터는 Linux에서 운용이 가능

 

로그 파일 형태

  • MSSQL은 데이터가 실질적으로 저장된 데이터베이스 파일(.mdf)과 해당 데이터베이스의 로그 파일(.ldf)로 데이터 관리

  • 경우에 따라서는 보조 데이터 파일인 .ndf가 함께 존재할 수 있으며, 위 파일들은 데이터베이스 복구 시에 사용


[그림 9] SQLite

 

라) SQLite

  • C언어로 쓰인 RDBMS로, 다른 DBMS와 다르게 클라이언트-서버 형태의 엔진이 아니라 프로그램에 넣어 사용

  • 서버나 데이터베이스 환경 설정이 필요하지 않은 가벼운 RDBMS

  • 간단 응용 프로그램부터 스마트폰, 임베디드 기기의 소프트웨어에까지 사용

 

SQLite는 다음과 같은 특징을 가진다.

  • 보다 압축된 형식의 데이터베이스 파일

  • BLOB (Binary Large Object) 지원

  • UTF-8과 UTF-16 텍스트 지원

  • 64bit ROWIDs

  • 개선된 병행성 (Concurrency)

  • 사용자 기반 텍스트 콜레이션 (Collation)

 

BLOB : DBMS 안에 단일 개체로 저장되는 바이너리 데이터 집합

 

병행성 : 데이터베이스에서 다수 사용자가 동시에 다수 트랜잭션에 영향을 끼치는 것

 

콜레이션 : 데이터베이스에 저장된 문자들을 서로 비교, 검색, 정렬 등의 작업을 하는 규칙의 집합

 

 

다음 명령어로 버전 정보 확인이 가능하다.

 

[그림 10] SQLite 버전 확인

 

지원하는 운영체제와 플랫폼

  • 크로스 플랫폼으로 SQLite가 기본적으로 들어 있는 운영체제는 다음과 같다.

1. BlackBerry 사의 BlackBerry 10 OS

2. Symbian OS

3. Nokia 사의 Maemo

4. Google 사의 Android

5. Linux Foundation의 MeeGo

6. LG 사의 webOS

7. FreeBSD

8. illumos

9. Tizen

10. Windows 10

 

로그 파일 형태

  • SQLite는 Rollback Journal 방식으로 트랜잭션을 구현하여 시스템 상 오류 발생 시에 이전 상태로 복구

  • 일반적으로 보이지 않으며 데이터베이스를 조작할 경우 .db파일과 같은 경로에 생성

  • commit 명령을 수행하거나 SQLite Browser로 변경 사항을 저장하면 사라짐


[그림 11] DB2

 

마) DB2

  • IBM에서 개발한 DBMS

  • IBM의 AS/400 시스템에 임베디드가 되고, 모든 주요 운영체제 플랫폼 지원

  • 스크립트 및 자동화 작업이 좀 더 편리한 CLI 환경과 초심자들이 사용하기 쉬운 GUI 환경 모두 제공

  • 속도가 빠르고 신뢰성이 좋아 대부분 대규모 기업에서 데이터베이스 서버로 채택하고 있음

 

DB2의 특징

  • 포괄적인 기업 보안 기능

  • 개선된 사용 환경

  • 간소화된 업그레이드 과정

  • 대용량 데이터베이스 개선

  • BLU Acceleration 개선 (대용량 데이터 중 원하는 정보에 빠르게 접근할 수 있음)

 

버전 정보는 다음 명령어로 확인 가능하다.

 

[그림 12] DB2 버전 확인

 

지원하는 운영체제와 플랫폼

운영체제

Linux & Unix 계열 / Windows

플랫폼

x86(-64) / Sparc / IBM POWER microprocessors / IA-32

 

 

로그 파일 형태

  • 데이터베이스 자체 문제 해결이나 관리자 알림 메시지는 db2diag.log에 기록

  • diasize라는 데이터베이스 환경 변수가 0으로 설정되어 있다면, 하나의 로그 파일에 기록에 계속해서 쌓이고, 그렇지 않다면 해당 크기에 도달했을 경우 새로운 로그 파일들(db2diag.N.log)이 생성되어 기록

  • 로그 파일 경로는 환경 변수 diagpath에 저장됨


 

# Reference

 

http://www.yes24.com/Product/Goods/87579830

 

www.sqlshack.com

'DB' 카테고리의 다른 글

[DataBase]DCL (데이터 제어어)  (0) 2020.03.20
[DataBase] DML (데이터 조작어)  (0) 2020.03.20
[DataBase] DDL (데이터 정의어)  (0) 2020.03.20
[DataBase] 데이터베이스 모델  (0) 2020.03.16
[DataBase] 데이터베이스 기초  (0) 2020.03.06

[Digital Forensic] Live Response (실시간 대응) (4)

 

실시간 대응


(8) 라우터(Router) 포렌식

  • 라우터는 서로 다른 네트워크망을 연결하는 중요한 네트워크 장비들 중 하나

  • 그러므로 일반 사용자와 공격자는 라우터를 거쳐 목적지에 도달하게끔 되어 있음

  • 따라서 라우터는 조사관에게 많은 정보 제공과 복잡한 사건을 해결하는 실마리 제공 가능

 

8-1. 휘발성 정보

  • 라우터 장비 역시 메모리가 존재하고 메모리에 존재하는 정보들은 휘발성 정보

  • 메모리 용량이 제한적이라 새로운 정보들이 이전 정보들을 삭제할 우려가 있음

  • 라우터 메모리에 존재하는 중요 정보로는 라우팅 테이블, 서비스 등이 있음

 

1) 시스템 시간

  • 시간은 휘발성 정보 수집에서 빠지지 않는 정보

  • 라우터의 사용자 모드 또는 관리자 모드에서 show clock 명령어로 시스템 시간 확인 가능

 

2) 가동 시간

  • 라우터가 마지막 재부팅으로부터 현재까지 얼마만큼 가동되고 있었는지 확인할 필요 있음

  • 재가동 된지 얼마 되지 않은 메모리에 남아 있는 정보는 악의적인 사용자로부터 수정되었을 확률이 오래 가동된 경우보다 적음 (그만큼 메모리에 남아 있는 여러 정보들 또한 양이 적을 것)

  • 가동 시간은 show version 명령어를 통해 확인 가능하며, 라우터의 하드웨어 정보와 소프트웨어 정보도 함께 출력

 

3) 로그인 한 사용자

  • 현재 로그인 한 사용자 목록을 수집하는 것 또한 매우 중요 (악의적인 사용자가 접속해 있을 수도 있기 때문)

  • 확인 명령어는 show user

 

4) ACL 목록 수집

  • 해당 라우터 접근이 어떻게 이루어지는지 파악을 위해 ACL 확인도 중요

  • ACL 목록 수집 명령어로는 show access-lists

 

5) 라우팅 테이블 수집

  • 공격자를 추적하거나 공격자가 어떠한 경로를 통해 접속하였는지 결정하기 위해 필수적으로 확인 필요

  • 공격자가 라우팅 테이블을 수정하여 패킷 흐름을 바꿀 수도 있어 필수적으로 수집해야 하는 정보들 중 하나

  • 라우팅 테이블은 show ip route 명령어

 

6) ARP 테이블 수집

  • 해당 정보는 MAC 주소 스푸핑 흔적이 있는지 파악할 수 있게끔 도와줌

  • ARP 테이블 수집 명령어는 show arp

 

7) 스택 모니터링 정보

  • 어떤 이유로 인해 system crash가 발생하면 프로세서가 상황에 따라 라우터를 재부팅시킴

  • 이 때 재부팅이나 Crash 원인을 스택 모니터링 기능의 장애 정보를 통해 확인 가능

 

8) 여러가지 정보 한꺼번에 얻기

  • CISCO 소프트웨어 11.2 버전 이후부터 show tech-support 명령어 지원

  • 해당 명령어는 여러 명령어들의 출력 결과를 한꺼번에 보여주는 명령어

  • 위 명령어들의 결과도 이 명령어 결과에 포함

 

 

show tech-support 명령어에서 보여주는 결과물들은 다음 명령어들의 출력 결과와 동일하다.

  • show version

  • show running-config

  • show stacks

  • show interface

  • show controller

  • show process cpu

  • show process memory

  • show buffers

 

여러 휘발성 정보 수집 명령어들은 위 내용과 같다.

 

하지만 이 정보들만 가지고는 라우터 분석이 끝난 것이 아니므로, 휘발성 정보에서 얻을 수 없는 정보는 라우터 메모리에서 얻을 수 있다.

 

라우터의 메모리는 일반 컴퓨터를 대상으로 한 메모리 덤프 도구로는 이미징하지 못한다.

 

라우터에서 자체적으로 제공하는 코어 덤프 기능을 이용하여 메모리 덤프를 수행해야 한다.


8-2. 메모리 구조

  • Cisco 라우터 메모리는 DRAM, EPROM, NVRAM, Flash memory 총 4개로 구분 된다.

 

1) DRAM

  • 전원 Off 시 데이터가 날라가는 휘발성 메모리이며, 두 가지의 타입을 가짐

  • primary memory (main memory, process memory) : CPU가 IOS를 실행할 때와 running config, routing table 운용할 때 사용하는 타입

  • shared memory (I/O memory 또는 packet memory) : 라우터 인터페이스를 통해 오고 가는 데이터들의 버퍼를 제공할 때 사용되는 타입

 

2) EPROM

  • ROM이라고도 하며, IOS 이미지가 손상되었거나 문제가 생겼을 시에 사용되는 소프트웨어가 저장된 메모리

  • 당연 비휘발성 메모리로, 이미지가 손상 / 삭제되면 사용될 대체 소프트웨어인 ROM Monitor가 들어 있음

  • 플래시 메모리에서 올바른 IOS 이미지를 찾을 수 없을 때 라우터 부팅을 위해 부트 이미지가 저장되어 있음

 

3) NVRAM

  • EPROM과 마찬가지로 비휘발성 메모리이며 Startup-configuration file이 저장되어 있음

 

4) Flash Memory

  • 라우터의 IOS 이미지를 저장하고 있으며, 일부 라우터에서는 설정 파일과 부트 이미지도 저장하고 있음


8-3. 메모리 덤프 방법

 

1) TFTP

  • TFTP를 이용한 방법은 한 가지 제약 조건이 있음

  • 메모리 덤프 파일 크기 16MB 초과 시, 해당 방법을 사용하는 것은 효율적이지 못한 방법 > 메모리 덤프 파일이 전송되는 도중 손상을 입을 수 있기 때문

  • 다음과 같은 명령어를 수행하면 TFTP 서버에 hostname <라우터 hostname> -core 파일이 생성됨

    • router# exception dump <TFTP IP>

 

2) FTP

  • FTP는 제약 조건이 없음

  • 다음과 같은 명령어를 수행하면 FTP 서버에 메모리 덤프 파일이 생성됨

  • 만약 사용자 ID와 사용자 Password를 입력하지 않으면 익명으로 접속하게 됨

    • router# ip ftp username <사용자 ID>

    • router# ip ftp password <사용자 Password>

    • router# exception protocol ftp

    • router# exception dump <FTP IP>

 

3) RCP

  • 해당 방법을 사용하기 위해서는 먼저 router configuration에서 해당 기능이 활성화 되어야 함

  • 해당 기능은 보안 문제로 default로 비활성화이기 때문

    • router# exception protocol rcp

    • router# exception dump <RCP IP>

 

4) Flash Disk

  • 해당 방법을 사용하기 위해서는 라우터에서 PCMCIA를 지원해야 함

  • partition number 경우 show flash all 명령어 수행 시에 알 수 있음

    • router# exception flash <procmem | iomem | all> <partition number> <erase | no_erase>


8-4. 메모리 분석

  • 라우터 메모리 분석의 경우 지원하는 도구로는 현재 Recurity Lab에서 개발한 'CIR' 도구만 존재

  • 이 도구는 오픈소스로 배포

  • 메모리에서 백도어를 분석해 내고 프로세스, 메모리 예외 처리 등을 분석하여 사용자에게 그 결과를 출력하여 줌


라우터 포렌식에서 메모리 분석 분야는 계속 연구되어야 하는 분야이다.

 

Flash Disk 방식을 사용하여 메모리 덤프를 하는데 옵션은 iomem으로 지정하여 덤프를 시도하고 분석을 수행하면 해당 라우터에 들어오고 나간 패킷 트래픽까지 추출이 가능하다.

 

이 정도로 라우터 메모리 분석은 매우 중요하다.


# Reference

 

http://www.yes24.com/Product/Goods/8511539

[System] 80x86 시스템 메모리 구조와 동작

 

시스템 해킹


(1) 80x86 시스템 메모리의 구조와 동작

1-1. 메모리의 기본 구조

[그림 1] 80x86 시스템 메모리 구조

 

1-1-1. 스택 (Stack)

  • 후입선출(LIFO) 방식에 의해 정보를 관리하는 데이터 구조

  • Top이라 불리는 스택 끝부분에서 데이터 삽입과 삭제가 발생 (스텍에 데이터 삽입 > Top에 정보 위치)

  • 스택에서 정보를 읽어 오려고 하면 스택의 Top 위치에 있는 정보가 반환

  • 스택에서는 가장 나중에 삽입된 정보가 가장 먼저 읽히는 특징이 있음

 

컴퓨터 사전에서 정의한 스택은 데이터 구조론을 기반으로 한 정의이며, 컴퓨터 메모리에서도 기본 작동 방식은 같다.

 

단지 차이는 스택에 저장되고 사용 목적이 프로그램 실행에 있다는 것이다.

 

컴퓨터 메모리 상의 스택은 프로그램 함수 내부에서 정의, 함수 종료와 동시에 사라지는 자동 변수가 저장되고 함수를 호출할 때 함수 내부의 로컬 변수 등이 저장되는 곳이다.

 

함수를 실행하는 동안만 존재하며, 함수 실행을 종료하면 해당 변수들도 사라진다.

 

ESP 레지스터는 항상 스택의 가장 위(끝)을 가리킨다.

 

 

1-1-2. 힙 (Heap)

  • 프로그램을 실행할 때까지 가변적 양의 데이터를 저장하는 데 사용하는 메모리 영역

  • 프로그램 실행 중에 데이터 저장을 위해 기억 장소 요청 시, OS는 힙에 존재하는 기억 장소를 프로그램에 할당

  • 프로그램에서는 기억 장치가 더 이상 필요 없으면 할당 받았던 기억 장소를 OS에 반납하며, 이때 OS는 반납된 기억 장소를 다시 힙에 돌려줌

  • 힙에 대한 기억 장소는 포인터를 통해 동적 할당되거나 반환되며 연결 리스트, 트리, 그래프처럼 동적인 데이터 구조에서 널리 사용

  • 스택 영역은 LIFO 방식으로 운영, 힙은 프로그램들이 요구하는 블록 크기나 요구/횟수 순서에 일정한 규칙이 없음

  • 프로그램 실행 중 해당 힙이 없어지면 메모리 부족으로 이상 종료함

 

프로그램에서는 new나 malloc() 함수로 메모리를 동적 할당하여 힙 영역을 사용할 수 있다.

 

예를 들어 다음 코드 실행 시에는 힙 영역에 메모리 1,000 바이트 할당한다.

char * p = new char[1000];

 

 

1-1-3. BSS 세그먼트

static int a;
  • 초기화 되지 않은 데이터 세그먼트라고도 함

  • 프로그램 실행할 때 0이나 Null 포인터로 초기화되는 영역

  • 위 코드는 외부 변수나 static 변수 중 초기화가 되지 않은 변수들을 저장하는 영역을 의미 

 

 

1-1-4. 데이터 세그먼트

static int a = 1;
  • 초기화 된 데이터 세그먼트라고도 하며, 위 코드처럼 외부 변수나 static 변수 등을 저장하는 영역

  • 보통 텍스트 세그먼트와 데이터 세그먼트 영역을 합쳐 프로그램이라 함

 

 

1-1-5. 텍스트 세그먼트

  • CPU로 실행되는 머신 코드가 있는 영역

  • EIP가 다음에 실행하는 명령을 가리킴


(2) 메모리 접근 모드와 동작

  • 초기 8086 CPU를 사용한 IBM-PC는 등장 당시 메모리가 1MB였으며, 상당히 큰 편이었음

  • IBM은 프로그램이 앞의 640KB(0~0x9fff)만 사용할 수 있게 하고, 나머지 384KB(0xa000~0xffff)는 BIOS와 ISA 장치용으로 사용하게 했음

  • 요즘은 메모리가 1MB인 PC는 볼 수 없으며, 최소 1GB 이상이며, 4GB도 흔함

  • 메모리가 1MB에서 4GB 이상으로 커지면서 메모리에 접근하여 데이터를 저장하고 읽는 방법도 달라짐

 

2-1. 실제 모드

  • x86 계열로 처음 등장한 8086 CPU에서 사용하던 동작 모드

  • 20비트 주소 버스로 총 1MB(2**20 = 1,048,567) 메모리를 사용하였음

  • 16비트 레지스터로 20비트 주소 버스를 사용

  • 20비트 주소 표현을 위해 세그먼트 레지스터를 도입

  • 16비트 세그먼트 레지스터와 16비트 오프셋을 중첩시킨 20비트 물리 주소를 생성

[그림 2] 20비트 메모리 주소 구성 방법

 

  • 예로 세그먼트 주소인 CS 레지스터가 0x2525h이고 오프셋인 IP가 0x95F3h
  • 0x2525h 뒤에 한 자리의 0x0h를 붙여 95F3h를 더한 2E843h가 실제 가리키는 물리 주소가 됨
  • 이를 2525h : 95F3h 또는 [CS] : 96F3h로 표현

 

모든 메모리 접근에는 세그먼트와 오프셋이 함께 필요하다.

 

세그먼트 하나를 사용하면 64KB(2**16 = 65,536) 메모리 사용 가능하다. 

 

 

[표 1] 세그먼트 레지스터별 기본 오프셋 레지스터

세그먼트 레지스터 오프셋 레지스터
CS IP
DS SI, DI, BX
SS SP, BP
ES SI, DI, BS

 

각 세그먼트 레지스터마다 사용하는 오프셋 레지스터는 위 표와 같다.

 

실제 모드는 16비트 CPU 8086, 80286뿐만 아닌 80386 이상의 CPU에서도 지원한다.

 

모든 프로그램은 처음 시작할 때는 실제 모드에서 동작한다.

 

[그림 3] 20비트 메모리 주소 구성 예

 

2-2. 보호 모드

  • 32비트 주소 버스 사용

  • 4GB 메모리 사용 가능

  • 메모리 보호 기능 & 페이징 등으로 가상 메모리 효율적 구현 가능

  • 인터럽트 & 예외 처리 등 모두 보호 모드에서 지원하는 기능을 활용

  • 세그먼테이션과 페이징을 이용 > 메모리 관리

  • 세그먼테이션은 4GB 메모리를 세그먼트 단위로 쪼갠 것으로, 16비트 셀렉터와 32비트 오프셋을 이용해 4GB 범위 32비트 선형 주소를 생성하는 일을 함

 

[그림 3] 보호 모드에서 메모리 변환 과정

 

만들어진 선형 주소는 위 그림과 같이 메모리를 4KB 단위로 쪼개서 관리하는 페이징을 이용 > 물리 주소로 변환한다.


# Reference

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B3283906872

[Network] 데이터 링크 계층 (DataLink Layer)

 

네트워크 보안


(1) 데이터링크 계층 (2계층 / DataLink Layer)

1-1. 데이터 링크 계층에 대한 이해

  • 랜 카드나 네트워크 장비의 하드웨어 주소만으로 통신하는 계층

  • 여기서 랜 카드나 네트워크 장비의 하드웨어 주소를 MAC (Media Access Control)주소라고 함

  • MAC 주소는 사람 이름처럼 네트워크 카드마다 붙는 고유 이름

  • 윈도우 명령 창에서 'ipconfig /all' 명령을 실행 > 'Physical Address'에서 확인 가능

[그림 1] MAC 주소 확인

 

MAC 주소는 총 12개의 16진수로 구성되며, 앞쪽 6개는 네트워크 카드를 만든 회사를 나타내는 것으로 OUI라 하고, 뒤쪽 6개는 호스트 식별자로 각 회사에서 임의로 붙이는 일종 시리얼이다.

 

따라서 MAC 주소 앞부분을 보면 어느 회사에서 만든 제품인지 확인 가능하며 OUI가 같은 회사도 없고, 한 회사에서 시리얼이 같은 네트워크 카드를 만들지도 않기 때문에 같은 MAC 주소는 존재하지 않는다.

OUI Host Identifier
00-0C-29 97-13-8C

 

1-2. 데이터 링크 계층 중요 네트워크

 

1) X.25

  • ITU-T에 의해 1980년경부터 규격화 된 통신 규약

  • 단말 장치(DTE)와 회선 종단 장치(DCE)간의 상호 접속에 대해서만 규정 (DCE 간 네트워크 내부 접속 사항 규정 X)

  • 즉, 단말 장치와 회선 종단 장치 간의 통신 절차를 규정한 계층화 프로토콜 

[그림 2] X.25의 통신 구성 요소

 

위에서 말한 회선 종단 장치는 네트워크를 통해 데이터를 아날로그나 디지털 신호 형태로 송수신하는 장치이며, 데이터를 단말 장치가 사용할 수 있는 형태로 변환시킨다.

 

가장 일반적인 회선 종단 장치는 모뎀이고 단말 장치는 컴퓨터이다.

 

X.25의 운용 속도는 T1/E1급 정도이다.

 

2) 프레임 릴레이

  • 디지털 전송 통로의 품질 향상에 따라 불필요한 전송 오류 제어나 흐름 제어 등 복잡한 기능 최소화

  • 망 종단 장치에서 처리하도록 하여 고속 전송을 실현하는 고속 데이터 전송 기술

  • X.25 패킷 교환망의 10배까지 고속 데이터 전송 가능

 

3) ATM

  • 고속 데이터를 53Byte 셀로 처리하는 VLSI 기술

  • 실시간 영상 전송과 같은 고속 통신에 사용


(2) 데이터 링크 계층 프로토콜

  • 대표적인 프로토콜 : 이더넷 프로토콜

 

2-1. 이더넷 프로토콜

  • 데이터 링크 계층의 프로토콜

  • 이더넷 패킷의 최소 길이는 64Bytes, 최대 길이는 1,518Bytes

 

[그림 3] 이더넷 패킷 구조

 

[표 1] 이더넷 패킷 내용

필드 이름 길이 내용
Preamble 7Byte

패킷이 입력되고 있음을 네트워크 인터페이스에 알리기 위한 부분으로 1과 0이 번갈아 입력

실제 데이터가 들어오니 '이제 정신차려!'라고 알려주는 것과 같음

SFD 1Byte

Start Frame Delimiter

통신을 위한 최초의 패킷에 10101011을 입력하여 해당 패킷이 최초 패킷임을 알려줌

Destination MAC Address 6Bytes

패킷을 받을 네트워크 인터페이스에 대한 MAC 주소를 가리킴

해당 주소가 모두 1 (FF:FF:FF:FF:FF:FF)이면 브로드캐스팅 패킷이 됨

Source MAC Address 6Bytes 패킷을 보내는 네트워크 인터페이스에 대한 MAC 주소를 가리킴
Length or Type 2Bytes IEEE 802.3은 길이가 기록되는데 이더넷 버전 2 등의 프로토콜은 타입이 기록
Data 0~1,500Bytes

전송 데이터가 저장되는 것으로, 최대 크기는 1,500Bytes

Pad 가변 전송하려는 데이터 길이가 46Bytes보다 작으면 전체 패킷 최소 길이 46Bytes를 맞추기 위해 여기에 임의 데이터를 씀
FCS 4Bytes

Frame Check Sequence

전송되는 패킷의 오류 확인을 위해 4Bytes의 CRC를 계산하여 입력


(3) 데이터 링크 계층 관련 장비

 

3-1. 브리지

  • 랜과 랜을 연결하는 초기의 네트워크 장치

  • 데이터 링크 계층에서 통신 선로를 따라서 한 네트워크에서 그 다음 네트워크로 데이터 프레임을 복사

  • 프레임이 들어오면 MAC 주소를 확인해 목적지 MAC 주소가 프레임이 들어온 인터페이스에 있으면 해당 패킷을 막고, 다른 인터페이스 쪽에 있으면 전달하는 역할

[그림 4] 브리지

 

3-2. 스위치

  • 기본적으로 L2(Layer 2), 즉 데이터 링크 계층에서 작동하는 스위치

  • L3, L4 스위치는 L2 스위치에 상위 계층의 네트워킹 기능을 추가한 것

  • L2 스위치는 연결된 시스템이 늘어날수록 패킷 간 충돌 때문에 매우 낮은 속도로 동작하는 더미 허브의 문제점 해결

[그림 5] L2 스위치


(4) 스위칭

  • 스위치는 데이터 링크 계층의 통신 담당인 대표적 장비로, 스위치가 동작하는 방식을 스위칭이라 함

  • 스위칭은 가장 기본 네트워크 단위인 LAN의 통신 방법

 

4-1. 스위칭 방식

  • 패킷 전송 방식에 따라 컷스루 방식, 저장 후 전송 방식, 인텔리전트 스위칭 방식으로 나뉨

  • 제공하는 경로의 대역폭에 따라 반이중 방식과 전이중 방식으로 구분 가능

 

4-1-1. 컷스루 방식

  • 수신한 프래임의 목적지 주소를 확인하고 목적지 주소의 포트로 프레임을 즉시 전송하여 지연 시간 최소화

  • 수신한 패킷에 오류가 발생할 때, 목적지 장치에서 해당 패킷을 폐기

 

4-1-2. 저장 후  방식

  • 완전한 프레임을 수신하여 버퍼에 보관했다가 전체 프레임을 수신하면 CRC 등 오류 확인하여 정상 프레임을 목적지 포트로 전송

  • 패킷 길이에 비례해 전송 지연이 발생하지만 소프트웨어 중심인 브리지나 라우터보다 훨씬 신속

  • 속도가 서로 다른 포트를 연결한 경우에는 반드시 사용해야 함

  • 최근에는 컷스루 방식과 저장 후 방식을 동시에 지원하는 것이 일반적

 

4-1-3. 인텔리전트 스위칭 방식

  • 보통 컷스루 모드로 작동하다가 오류 발생 시 저장 후 전송 모드로 자동 전환하여 오류 프레임 전송을 중지

  • 오류율이 0이 되면 자동으로 다시 컷스루 방식 전환

 

4-1-4. 반이중 방식

  • 양방향 통신 기능을 제공하지만 한 번에 하나의 동작(수신 or 송신)만을 할 수 있어, 양방향으로 동시에 데이터를 전송할 수 없음

  • 해당 방식은 한 사람이 말하고 난 다음에 다른 사람이 말하기를 기다렸다가 다시 자신이 말을 하는 워키토키 통신 방식을 생각하면 쉽게 이해할 수 있음

 

4-1-5. 전이중 방식

  • 송신 포트와 수신 포트를 분리해 반이중 방식보다 성능이 두 배로 뛰어나며, 충돌이 없어 전송 거리의 제한을 연장할 수 있음

  • 공유 방식의 이더넷은 반이중 방식만을 지원하는 반면, 기술적으로는 스위치에서만 전이중 방식을 지원할 수 있음

  • 전이중 방식 흐름 제어에 대한 표준은 아직 없으며, 업체마다 옵션으로 제공하거나 아예 지원하지 않는 장비도 있음

  • 흐름 제어가 제공되지 않으면 과부화된 네트워크에서 패킷 손실을 유발할 수 있음

 

 

4-2. 스위치 테이블

  • 데이터 링크 계층에서 스위치는 시스템 간 원활한 통신을 위해 주소 테이블 생성과 관리하는 역할을 함

 

만일 스위치에 서버가 연결되어 있다면, 스위치 메모리에는 다음과 같은 정보가 기록되어 있을 것이다.

1번 포트  
2번 포트 서버의 MAC 주소
3번 포트  
4번 포트  

여기에 클라이언트의 랜 케이블을 스위치의 3번 포트에 꽂으면, 스위치의 메모리 정보가 다음과 같이 바뀐다.

1번 포트  
2번 포트 서버의 MAC 주소
3번 포트 클라이언트의 MAC 주소
4번 포트  

스위치의 메모리에 포트별로 MAC 주소가 매칭된 테이블이 존재하고 이것이 갱신된다는 사실은 아주 중요하다.



많은 사람이 스위치의 메모리 테이블에 3계층 정보인 IP 주소와 MAC 주소가 다음과 같이 매칭되어 있다고 착각한다.

1번 포트  
192.168.0.100 서버의 MAC 주소
192.168.0.2 클라이언트의 MAC 주소
4번 포트  

2계층 장비인 스위치는 위와 같이 IP 주소를 기억하지 않는다.


# Reference

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B2228799661

'Network' 카테고리의 다른 글

[Network] 응용 계층  (1) 2020.03.19
[Network] 전송 계층  (0) 2020.03.19
[Network] 네트워크 계층  (0) 2020.03.19
[Network] 물리 계층 (Physical Layer)  (0) 2020.03.18
[Network] 네트워크 보안 기초  (0) 2020.03.11

[Network] 물리 계층 (Physical Layer)

 

네트워크 보안


(1) 물리 계층 (1계층 / Physical Layer)

 

1-1. 물리 계층에 대한 이해

  • 시스템 간의 연결선

  • 흔히 랜 케이블을 말하지만, 꼭 랜 케이블만 의미하지는 않음

  • 집에서 인터넷 할 때 쓰는 랜 케이블이 될 수도 있고, 전화선이나 동축 케이블 ,광 케이블이 될 수도 있음

  • 무선 랜을 물리 계층이라고 하기에 모호하지만, 무선 랜에서 전자 파장을 전달할 수 있는 공간 자체는 될 수 있음

 

1-2. CAT 별 특성

카테고리 최대 속도 용도
CAT 1 1Mbps 미만

아날로그 음성, 일반 전화 서비스

ISDN 기본율 접속 (Basic Rate Interface) / Doorbell wiring

CAT 2 4Mbps IBM의 토큰 링 네트워크에 주로 사용
CAT 3 16Mbps 10BASE-T 이더넷의 데이터 및 음성
CAT 4 20Mbps 16Mbps 토큰 링에서 사용 (많이 사용되지는 않음)
CAT 5  100Mbps

옥내 수평 및 간선 배선망 (100MHz)

4/16 Mbps 토큰 링 (IEEE 802.5)

10/100 BASE-T (IEEE 802.3)

155Mbps ATM

CAT 6 250Mbps

옥내 수평 및 간선 배선망 (250MHz)

4/16 Mbps 토큰 링 (IEEE 802.5)

10/100/1000 BASE-T (IEEE 802.3)

155/622 Mbps ATM

기가비트 이더넷

흔히 랜 케이블은 CAT 5의 10/100 BASE-T (IEEE 802.3) 또는 CAT 6의 10/100/1000 BASE-T (IEEE-802.3) 선을 사용하고 전화선은 CAT-1을 사용

 

위 표에서 CAT 1부터 6까지 속도를 기준으로 나열한 것으로 보이지만, 실제는 CAT 1에서 6으로 갈수록 케이블이 굵고, 구리선의 가닥 수도 많음

 

 

1-3. 케이블 구분

구분 내용
UTP (Unshield Twisted Pair)

두 선 간의 전자기 유도를 줄이기 위해 절연 구리선이 서로 꼬여 있는 것

제품 전선과 피복만으로 구성

FTP (Foil Screened Twisted Pair)

알루미늄 은박이 4가닥 선을 감싸고 있는 것

UTP보다 절연 기능이 탁월해 공장 배선용으로 많이 사용

STP (Shield Twisted Pair)

연선으로 된 케이블 겉에 외부 피복, 또는 차폐재가 추가(쉴드 처리)된 것

차패재가 접지 역할을 하여 외부 노이즈 차단, 전기적 신호 간섭 줄이는 데 탁월

 

커넥터에도 여러 표준이 있으며, 전화선 연결 커넥터는 RJ(Registered Jack)-11이라 부르고, 랜 케이블 연결 커넥터는 RJ-45라고 부름

 

우리가 보통 사용하는 랜 케이블은 UTP 케이블 중 CAT 5 또는 CAT 6에 해당하는 10/100/1000 BASE-T (IEEE 802.3) 선과 RJ-45 커넥터

 

[그림 1] 전화선 연결 커넥터 (RJ-11)

 

[그림 2] RJ-45


(2) 물리 계층 관련 장비

  • 물리 계층과 관련된 네트워크 장비는 아직도 WAN에서 다양한 형태로 쓰이는 리피터와 지금은 찾아보기 힘든 허브가 있음

 

2-1. 리피터

[그림 3] 리피터

  • 네트워크를 연장하기 위한 장비

  • 다른 장비는 거리가 일정 이상이 되면 신호 세기가 약해져 0과 1의 디지털 신호 분석이 어려움

  • 위 문제점 해결을 위해 리피터를 사용하여 불분명해진 신호 세기를 다시 증가시키는 역할을 함

 

2-2. 허브

[그림 4] 더미 허브의 구조

 

  • 요즘 쓰이는 스위치의 예전 형태로, 최근의 스위치를 스위칭 허브라고 부르고, 이전 허브를 더미 허브라 부름

  • 형태나 사용 방법이 스위치와 같음

  • 패킷 전송 시에 목적지에만 데이터를 전송하는 스위치와 달리, 허브는 한 곳에서 데이터를 보낼 때 모든 곳에 똑같이 복사해서 보냄


# Reference

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B2228799661

'Network' 카테고리의 다른 글

[Network] 응용 계층  (1) 2020.03.19
[Network] 전송 계층  (0) 2020.03.19
[Network] 네트워크 계층  (0) 2020.03.19
[Network] 데이터 링크 계층 (DataLink Layer)  (0) 2020.03.18
[Network] 네트워크 보안 기초  (0) 2020.03.11

+ Recent posts