MAC 주소 기반의 포트 보안(Port-Security)

2계층에서 동작하는 스위치에서 주로 사용되는 기법으로,
스위치가 가지고 있는 MAC Table을 참조하여 프레임을 통제하는 기술을 말한다.

예시로 여러 개의 포트를 가지고 있는 스위치가 있을 때,
각각의 포트마다 인가된 MAC주소의 장치들만 스위치에 연결되어 통신이 가능하게끔 설정하거나

MAC 주소 학습한도(Maiximum)를 지정하고, 지정된 개수보다 학습된 MAC 주소가 많아지면
해당 설정이 적용된 포트가 차단 되도록 하는 설정이 가능하다.

MAC 테이블을 위조된 MAC 주소로 가득 채워, 제 기능을 못 하게 만드는
Swtich Jamming 으로 인한 Sniffing 등의 공격을 방지해줄 수 있는 중요한 보안 기능이다.

 

* Port-Security는 Access, Trunk, Tunnel 포트에서만 설정이 가능하다.

** 실습 시 STP가 적용된 경우 스위치의 기본 동작이 "Blocking -> Listening -> Learning -> Forwarding" 인 점을 감안하여 실습을 진행
*** 수렴시간(Default=300Sec)으로 인해 연결 후 일정시간이 지나게되면 상태 확인이 가능해진다

 

● Port Security의 MAC 주소 학습 방식

Command help(?) 입력 시 출력되는 보기

Port Security에서 MAC 주소를 학습하는 방식으로는 총 세 가지가 있다.

- Static(정적-저장) : 위의 실습처럼 장치의 MAC 주소를 수동으로 직접 지정하여 NVRAM에 저장(재부팅 시에도 정보가 저장되어 있음)

- Dynamic(동적-임시) : MAC Table에 첫 번째로 학습되는 MAC 주소를 자동으로 지정(RAM에 저장되어, 재부팅 시 정보가 소멸)

- Sticky(동적-저장) : 동적으로 MAC 주소를 학습하여, Sticky로 학습된 MAC 주소를 NVRAM에 자동으로 저장

 

● 조건 위반 시 대응 정책(Violaiton)

Command help(?)로 세 가지 정책을 확인

인가되지 않은 MAC 주소 혹은 초과되는 MAC 주소가 감지됐을 때,
수행하는 행위에 대한 세 가지 설정이 존재한다.

- Protect : 위반한 장비에 대해서만 통신이 차단되며, 나머지 설정들은 유지

- Restrict : Protect의 기능에서 log message를 출력해주는 기능을 의미

- Shutdown : 포트 자체를 비활성화 시키는 기능

 

 

● MAC 주소 학습한도 기반

Node 1, Node 2에서 Ser 1으로 통신하기 위해 무조건 거쳐야만 하는

실습을 진행할 가상의 LAN


SW 2의 Fa0/1 포트에 Port Security를 적용하여 1개를 초과하는
MAC 주소 학습 시 포트를 다운 시키는 정책을 설정한 후,
각각의 노드에서 Ser 1을 향해 ping을 보내본다.

 

SW1(config)#int fa0/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport port-security
SW1(config-if)#switchport port-security maximum 1
SW1(config-if)#switchport port-security violation shutdown
SW1(config-if)#end

SW 2의 설정내용

Violation을 "shutdown" 으로 설정

SW 2의 Fa0/1 인터페이스에 Port Security 적용 후
Node 1과 Node 2에서 Ser 1에 대한 ping을 보내게 되면,
첫 번째 ping에 대해서는 문제 없이 송수신이 가능하지만
두 번째 ping 프레임은 SW 2의 Fa0/1 인터페이스에 이르기 전에
회선이 shutdown 상태로 전환되는 것을 확인해 볼 수 있다.

 

● 인가된 MAC 주소 기반

실습을 진행할 가상의 LAN

SW 1의 Fa0/1 포트에 현재 연결되어 있는 Node 1이 아닌
다른 장치의 MAC 주소가 인식되는 경우에 해당 포트를 Shutdown 시키는 정책을 설정

 

SW1(config)#int fa0/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport port port-security
SW1(config-if)#switchport port-security mac-address 0060.3ED2.4861
SW1(config-if)#switchport port-security violation shutdown
SW1(config-if)#end

▲ SW 1의 설정내용

Fa0/1 포트에 인가되지 않은 MAC을 가진 "Hacker" 노드를 연결

새로운 노드를 추가하여 다른 노드들과의 통신 요청 시,
즉시 회선이 Shutdown 상태로 전환되는 것을 확인해볼 수 있다.

 

 

인가된 MAC 주소의 머신 재연결

Rule Violation으로 인해서 차단 되었던 이력이 있는 경우

재연결 시에 Shutdown 상태인 포트를 재시작(no shutdown) 해줘야 정상적으로 가동된다.

'Network' 카테고리의 다른 글

[Network]Static_Route  (0) 2023.02.20
[Network]Router_02  (0) 2022.11.22
[Network]Router_01  (0) 2022.11.21
[Network]VLAN  (0) 2022.11.16
[Network]STP_Algorithm  (0) 2022.11.11

라우터(Router)

저번 포스트에서는 라우터의 부팅 및 기본정보에 관한 부분을 다뤄보았다.

이번에는 기본적인 환경설정과 라우팅 작업 시 주로 사용되는 명령어 등을 알아보자

 

 

● 장치명 설정

초기 부팅 시 라우터는 "Router", 스위치는 "Swtich"라는 동일한 이름을 가지고 있기 때문에,

라우터 및 스위치를 관리함에 있어 모든 장치의 이름이 동일하다면

장치를 구별하는데 어려움이 발생할 수 있다.

 

이를 위해서 장치의 이름을 임의적으로 설정할 수 있도록 해주는

명령어 "hostname" 존재한다, 장치명 변경은 전역 설정모드에서 가능하다.

 

기존 "Router"에서 "Cisco_RT"로 장치명을 변경

** 영문(대/소문자), 숫자, 기호가 사용 가능하며 공백은 사용이 불가(63자 까지 설정가능)

 

 

● DNS Lookup

라우터의 CLI 콘솔 창에서 명령어를 잘못 입력(오타)했을 때,

라우터 자체적으로 해결할 수 없는 명령어인 경우 IOS가 DNS 서버를 찾아 해결(Solve)을 시도한다.

이 때 소요되는 시간이 1분 정도로 꽤 오랫동안 소요될 수 있는데,

"no ip domain lookup" 명령어를 이용하여, "오타는 오타로 여길뿐 검색은 해결은 필요없다"에 해당하는 설정을 해줄 수 있다.

 

DNS Lookup을 해제
DNS Lookup 실행화면

만일 위의 그림과 같이 오타 해결을 진행중이라면,

"Ctrl + Shift + 6"을 순서대로 입력하여 강제종료가 가능하다.

 

 

● 암호 설정

스위치/라우터 인증되지 않은 사용자의 접근을 차단하기 위해서 사용되며

라우터 접속부터 모드별 설정, 원격접속에 관한 암호를 설정해줄 수 있다.

 

- Console Password : 사용자 모드에 관한 암호 설정(라우터 접속과 동시에 이뤄짐)

 

- Enable Password : 사용자 모드에서 관리자 모드로 전환 시 요구되는 암호를 설정(평문)

 

- Enable Secret : 사용자 모드에서 관리자 모드로 전환 시 요구되는 암호로, "Enable Password"보다 우선적으로 적용(암호화)

ex) Enable Password = hello / Enable Secret = Korea 일 때, "Korea"를 입력해야 모드 전환이 가능하다.

 

- VTY(Virtual Teletype) Password : 텔넷/SSH 접속 시 사용되는 암호 설정(텔넷은 보안상의 이유로 거의 사용X)

 

 

"Console Password"설정

 

"Console Password" 설정하고 라우터 종료 후, 재접속 시도 시 암호를 요구하는 것을 확인

 

"Enable Password와 Secret"을 동시에 설정

 

암호화 처리되어 보이지는 않지만, "korea"를 입력하여 모드를 전환했음을 확인

 

 

● 설정내용 관련

작업자가 스위치/라우터에서 작업(라우팅 설정, 정책 설정 .. 등)을 하게되면

해당 작업내용은 RAM에 저장되는데, 해당 기억장치는 휘발성(Volatile) 기억장치로

전원이 내려가게 되면 작업내용도 전부 소실된다.

다음 부팅 시 사용하지 않을 설정내용이라면 저장하지 않아도 상관 없지만,

추후에도 사용할 예정이라면 NVRAM(Non-Volatile)에 작업정보를 저장해야한다.

 

작업 내용을 NVRAM에 저장해주는 명령어로는,

"copy running-config startup-config""write memory" 두 가지가 존재한다.

(각각 "copy run start"와 "wr"로 축약하여 사용이 가능)

 

RAM에 있는 작업 내용을 NVRAM에 저장시키는 과정 Enter를 입력하여 넘어갈 수 있다.

 

NVRAM에 저장된 설정내용을 확인

"show startup-config" 명령어를 통해서 NVRAM에 저장된 설정내용을 확인할 수 있고,

"erase startup-config" 명령어를 이용하여 기존에 저장되어 있는 설정내용을 삭제할 수도 있다.

(관리자 모드 이상에서는 명령어 앞쪽에 'do'를 붙여서 명령어 수행이 가능) 

 

RMA에서 작업한 설정내용을 확인

위에서 보았던 "show startup-config"와 전체적인 내용을 보면 

크게 다른점은 느낄 수 없지만, 실제 작업을 한 후에 본다면 차이점을 확연히 알 수 있다.

해당 명령어는 NVRAM에 저장되어 있는 내용을 출력해주는 것으로,

 

"show running-config"의 경우 현재 작업된(혹은 진행) RAM 상에 존재하는 

설정 내용들을 출력해주는 역할을 한다.

("sh run"으로 축약하여 사용이 가능)

'Network' 카테고리의 다른 글

[Network]Static_Route  (0) 2023.02.20
[Network]Port_Security  (0) 2022.11.25
[Network]Router_01  (0) 2022.11.21
[Network]VLAN  (0) 2022.11.16
[Network]STP_Algorithm  (0) 2022.11.11

라우터(Router)

라우터의 대표적인 역할과 특징으로는 상대방에 이르는 경로를 찾아주며
다른 네트워크(VLAN, Subnet 등)를 묶어주는 역할을 한다.

2계층 장비인 스위치와는 달리 브로드캐스트를 통과시키지 않음으로써
브로드캐스트 도메인을 나누어준다는 것이 있고, 상대 노드로 통신하기 위한 경로를
계산하여 데이터를 이동시킨다는 것에 있어서 속도가 빠르지는 않다는 점이 존재한다.

● 라우터의 구조와 부팅순서

라우터에 전원을 올리고 실행하게 되면 POST(Power On Self Test)를 실행하여 장치의 이상 유무를 확인하고
ROM(Read-Only Memory)에 있는 부트스트랩 코드(Bootstrap Code)를 실행시켜 Flash Memory에 있는
IOS(Internetwork Operating System)NVRAM(Non-Volatile RAM)에 있는 설정파일
RAM(Random Access Memory)에 복사하여 라우터를 실행시키게 된다.

NVRAM과 Flash Memory는 비휘발성 기억장치로, 전원이 공급되지 않아도 데이터를 잃지 않는다.

▼ 정리
- ROM : Bootstarp Code(Bootloader), Restore Tools(시스템 복구 : 안전모드)
- Flash Memory : IOS(Internetwork Operating System)
- NVRAM : 설정파일(startup-config)

► 전원 On → POST 실행(장치 이상유무 확인) → 부트 스트랩 코드 실행 → IOS, 설정 파일을 RAM에 올려 라우터를 실행

● IOS의 세 가지 버전

- Base 버전 : 라우터 실행에 필요한 기본기능만 갖춘 것
- Plus 버전 : IBM 메인프레임과 연결하는 기능 등 추가기능을 가지고 있는 것
- Encryption 버전 : 40비트 혹은 56비트 암호화 기능을 가지고 있는 것(56비트 암호화는 미국 외에서 구매불가)

● 라우터와 PC를 연결

라우터에 직접 연결 시, 콘솔 케이블로 라우터와 컴퓨터를 연결하고
PC에서 시작 → 보조 프로그램 → 통신 → 하이퍼터미널 or 터미널 프로그램 순으로
수작업으로 설정을 진행하여 연결이 가능하며, 


Windows7 부터는 putty, XShell 등으로 Serial(COM) 연결을 진행할 수도 있다.

COM Port는 COMumunication Port를 의미하며 COM1-COM3 / COM2-COM4로, 네 개의 가상포트를 가지고 있다.

** 장치 관리자에 진입하여 Port Number를 확인할 수 있다.

 

  

● 라우터 실행

IOS가 없거나 손상되었거나 비밀번호 분실 등으로 진입하는 rommon모드

** 본 그림은 예시를 위해 부팅화면에서 Ctrl+C(Break)를 사용하여 임의로 진입

IOS를 정상적으로 읽어들여 부팅되었을 때 볼 수 있는 화면

제조사, OS의 정보 및 소프트웨어 정보, 리소스의 정보들을 간략하게 출력해준다.

라우터를 처음 설정할 때 대화 모드로 설정할지를 묻는 문구

대부분 사용하지 않는다고 한다.(필요하지 않은 부분이 많기 때문)
"no"를 입력하면 RETURN 키를 눌러 라우터 설정을 시작라는 문구가 나온다.

 

 

● IOS CLI Mode

IOS CLI 모드를 나열

기본적으로 라우터에 처음 접속하게 되면 사용자 모드(User Mode)로 접속되는데,
해당 모드에서는 제한적인 명령어만 사용이 가능하므로 관리자 모드로
전환 해주어야 한다. 사용자 모드의 콘솔 창에 "enable"을 입력하면 전환이 가능하고,
("en"만 입력해도 명령어 인식이 가능하다 혹은 TAB키 사용)

관리자 모드(Privilege Mode)에서는 간단한 설정과 라우터 동작에 관한 설정 내용을 확인할 수 있다.
라우터의 직접적인 동작에 대한 설정은 전역 설정모드(Global Configure Mode)
진입하여 가능하므로  관리자 모드에서 "configure terminal"을 입력하여 해당모드로 전환이 가능하다.
("conf t"만으로도 명령어 인식 가능)


지역(Local)모드 "config-if"의 경우에는 FastEthernet 0/0에 대한 설정을 진행할 수 있는
인터페이스 설정 모드(Interface Configure Mode)로 가장 많이 사용되며
이 외에도 더 다양한 로컬 모드가 존재한다.

마지막으로 RXBoot 모드 "rommon 1>"는 ROM에 들어있으며 IOS를 업그레이드 하거나

관리자 암호를 재설정 및 복구 등을 수행할 때 사용되는 모드로써, 일종의 안전모드에서 IOS를 시작시킬 수 있는 모드이다. 

'Network' 카테고리의 다른 글

[Network]Port_Security  (0) 2022.11.25
[Network]Router_02  (0) 2022.11.22
[Network]VLAN  (0) 2022.11.16
[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11

VLAN(Virtual LAN)

라우터가 생성하는 LAN과 유사하게 스위치가 생성하는 LAN을 VLAN이라고 한다. 

스위치는 브리지와 마찬가지로 충돌 도메인을 각 포트별로 한정시켜서 포트별로 분리시킬 수는 있지만

브로드캐스트와 멀티캐스트는 여전히 통과시키게 된다. 따라서 스위치에 붙어있는 모든 노드들은

기본적으로 VLAN 1(Default)에 소속되어 있으므로 브로드캐스트를 수신하게 되는데,

 

별도의 가상 네트워크 VLAN 2를 생상하게 되면 그들만의 브로드캐스트가 생성되므로

기존 브로드캐스트(VLAN 1)에서 분리되어 브로드캐스트의 영역이 나뉘어져

네트워크의 효율을 증진시킬 수 있다.

 

하지만 VLAN을 나누게 되면 하나의 스위치 장비에 서로 다른 네트워크로

논리적 분할이 된 상태이므로 ex) VLAN 1과 VLAN 2는 유니 / 브로드캐스트 통신이 불가하게 된다.

그러므로 3계층 장비(라우터)가 필요하다.

 

 

● VLAN의 두 가지 종류

- 포트 기반(Port Based VLAN) : 스위치를 논리적으로 분할하여 스위치의 특정 포트에 VLAN을 할당하는 방식

 

- MAC 기반(MAC Based VLAN) : 스위치에 연결되는 단말의 MAC 주소를 기반으로 해당 포트를 VLAN으로 변경하는 방식

** 동적 VLAN(Dynamic VLAN)이라고 부르기도 한다.

 

 

● VLAN 1과 VLAN 2의 원활한 통신을 위한 작업

1. VLAN들을 묶어주는 VTP(VLAN Trunking Protocol) 설정

2. VLAN 1과 VLAN 2가 혼재하는 회선에 두 VLAN이 통과할 수 있게끔 구별하여 Trunk(or Tag Port) 설정

3. VLAN 1과 VLAN2가 구별될 수 있게 프레임에 캡슐화(802.1Q, ISL .. 등) 설정

4. 관리목적의 IPVLAN 1에 할당

5. 라우터 연결게이트웨이를 지정

 

 

● 트렁크 구간(Trunk)

예를 들어 5개의 VLAN이 설정된 2대의 스위치가 있을 때 

이 2대의 스위치가 상호 통신이 가능해야 한다고 가정하면 

회선이 총 5개가 있어야 할 것이다(논리적으로 브로드캐스트 도메인을 나누었기 때문)

이렇게 되면 스위치의 포트도 낭비가 될 것이고 비용또한 낭비가 될 것이다.

 

이런 문제를 해결하기 위해 사용되는 회선을 트렁크라고 하며,

트렁크 모드를 적용한 회선은 VLAN ID를 구분하지 않고 VLAN Frame을 전송할 수 있다.

* 굳이 VLAN 하나 당 하나의 통신회선을 마련하지 않아도 된다는 것

 

 

● VTP(VLAN Trunking Protocol)

VLAN Trunking Protocol에는 대표적으로

802.1q, Native VLAN, ISL(CISCO 전용 프로토콜), Native(Untagged) 등이 사용되며,

스위치가 여러 개 있을 때 어느 하나가 Server가 되고 나머지는 Client나 Transparent Mode가 되어

스위치끼리 VLAN의 생성과 삭제 및 수정 등을 동기화하여 편리하게 관리하는 프로토콜이다.

* VTP 설정 시, 반드시 Server Mode인 스위치가 존재해야 한다.

 

▼ VTP에서 작동되는 세 가지 작동방식(Mode)

- Server Mode : 다른 스위치에서 받은 VLAN 정보 등을 일치시켜 전파해주는 역할을 하며,

VLAN을 생성하거나 삭제가 가능

 

- Client Mode :  서버로부터 VLAN의 정보를 얻어와 동기화를 진행하며, VLAN의 생성과 삭제 권한이 없음

 

- Transparent Mode : 서버로부터 VLAN의 정보를 얻어오기는 하지만, 자신에게 속한 노드들의 변경 등은 외부에 알리지 않으며,

VLAN 생성과 삭제가 가능

 

 

 

● 실습

간단한 설정을 통해 VLAN의 작동방식을 확인

시나리오는 Node끼리 VLAN 1 소속, Server 끼리 VLAN 2 소속이며,

내부 세그먼트를  VLAN으로 분할 하였고 상호간의 각각의 VLAN을 위한 게이트웨이는 

서브 인터페이스(Sub-Interface)를 사용하여 할당하였고

 

필자가 사용한 패킷 트레이서는 태깅 프로토콜이 기본적으로

802.1Q로 고정되어 있으며 해당 프로토콜로 인캡슐레이션된

프레임을 수신하기 위해서 라우터 각각의 서브 인터페이스에

인캡슐레이션 설정을 진행함

 

결과를 확인해보면 Node 2(.40)에서 같은 VLAN에 소속되어 있는 Node 1(.10)에게

icmp 통신을 요청하면 스위치를 통해서 직접 통신이 가능하지만,

같은 스위치에만 물려있고 VLAN은 다른 소속인 Ser 2(.30)과 통신하려면

라우터를 거쳐야만 통신이 가능한 것을 확인할 수 있음

 

 

● 설정 내용

- SW 1

SW1(config)#vtp domain TEST                      
SW1(config)#vtp password 1234                   

SW1(config)#vlan 2                                        
SW1(config-vlan)#name Server
SW1(config)#int fa1/1
SW1(config-if)#switchport mode access
SW1(config-if)#switchport access vlan 2
SW1(config)#int fa2/1
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan all
SW1(config)#int fa3/1
SW1(config-if)#switchport mode trunk
SW1(config-if)#switchport trunk allowed vlan all
SW1(config)#int vlan 1
SW1(config-if)#ip address 192.168.100.2 255.255.255.0

 

- SW 2

SW2(config)#vtp domain TEST
SW2(config)#vtp password 1234
SW2(config)#do sh vlan


VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa1/1, Fa3/1, Fa4/1Fa5/1
2 Server active

SW2(config)#int fa0/1
SW2(config-if)#switchport mode access
SW2(config-if)#switchport access vlan 2

 

- RT

RT(config)#int fa0/0
RT(config-if)#no sh
RT(config)#int fa0/0.1
RT(config-subif)#encapsulation dot1Q 1 native
RT(config-subif)#ip address 192.168.100.1 255.255.255.0
RT(config-subif)#int fa0/0.2
RT(config-subif)#encapsulation dot1Q 2
RT(config-subif)#ip address 192.168.200.1 255.255.255.0

 

'Network' 카테고리의 다른 글

[Network]Router_02  (0) 2022.11.22
[Network]Router_01  (0) 2022.11.21
[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09

FDDI(Fiber Distributed Data Interface)

 

내용출처 : https://commons.wikimedia.org/ (FDDI 구조)

 

FDDI는 100Mbps LAN을 위한 사양으로 토큰링과 유사한 토큰패스 형식을 사용하지만,

기존 토큰링에서 발생했던 치명적인 단점을 보완하기 위해 개발된 방식으로

광케이블로 구성되어 매우 빠르고 신뢰도가 높아서 백본(Backbone) 네트워크에서 주로 사용된다.

 

FDDI 링은 서로 반대방향으로 도는 이중 링으로 구성되어져 있어, 1차 링(Primary Ring)에 문제가 발생해도

2차 링(Secondary Ring)을 통해서 즉시 프레임이 반대 방향으로 계속 흐를 수 있게 하는 래핑(Wrapping) 기법이 사용된다.

 

따라서 DAS(Dual Attached Station)장치의 NIC(Network Interface Card)는 4개의 인터페이스가 있어야 한다.

**  IN x 2, OUT x 2 = 4개

 

 

● 참고적으로 알아두면 좋을 광섬유의 데이터 전송 방식 두 가지

- 단일 모드 광섬유(Singlemode Light Propagation) : 광원으로 레이저(Laser)를 사용, 장거리에 적합

- 다중 모드 광섬유(Multimode Light Propagation) : 광원으로 LED(Light Emitting Diode)를 사용, 단거리에 적합

 

 

● FDDI 구성 방식

내용출처 : https://commons.wikimedia.org/

 

FDDI는 SAS(Single Attached Station), DAS(Dual Attached Station), 집중화기(Concentrator) 세 가지 방식으로 연결된다.

SAS는 위의 그림에서 보듯이 집중화기를 통해 네트워크에 연결되므로 SAS를 끄거나 제거해도 문제가 발생되지 않지만,

DAS의 경우 1차 링과 2차 링에 모두 직접 연결 되어있기 때문에 DAS에 문제가 발생 시 네트워크 전체에 영향이 미친다.

'Network' 카테고리의 다른 글

[Network]VLAN  (0) 2022.11.16
[Network]STP_Algorithm  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09
[Network]MAC_Address  (0) 2022.11.09
[Network]OSI_7_Layer  (0) 2022.10.29

Ethernet(IEEE 802.3)

이더넷은 현재 전 세계에서 가장 많이 사용되는 네트워크 구조(Architecture)이다

Xerox가 1970년대 초기 Ethernet Ⅰ 를 구현했고, 1980년에 Digital Equipement와 Intel이

Xerox에 가담해서 합잡회사인 DIX를 만들고, 이후 1984년에 Ethernet Ⅰ을 업그레이드 한 

Ethernet Ⅱ 를 개발한다. 뒤 이어 IEEE가 이더넷 표준을 정의하기 위한 연구그룹 802를 만들어서

IEEE 802.2 프로젝트를 표준화 하여 발표 했다고 한다. 

 

이더넷은 MAC주소를 이용상호간에 데이터를 주고 받을 수 있도록 만들어졌다.

전송 매체로는 UTP(Unshielded Twisted Pair), STP(Shielded Twisted Pair), Hub, L2 Switch 등이 존재한다.

 

 

● CSMA/CD(Carrier Sence Multiple Access / Collision Detection)

직역하면 "반송파 감지 다중 접속 및 충돌탐지"이며,

이더넷은 네트워크 초기에 데이터를 전달하기 위해서 허브(Hub)에 노드들을 물려놓고

이들 간의 통신에 CSMA/CD 기술을 사용했다고 한다. 이 기법은 전형적인 이더넷에는 모든 노드들이

물리적 매체에 직접 부착되어 있으므로 다중접근(Multiple Access)을 가능하게 한 기법이다.

 

예시로 어느 한 노드가 다른 노드에게 데이터를 보낼 때 다른 노드들도 그 데이터를 볼 수 있다는 것

어느 한 순간에는 한 노드만 데이터를 전송할 수 있기 때문에 다른 노드들과 경쟁해야 하는 것이다.

이를 경쟁기반(Contend Based) 상황이라고 한다.

 

이런 상황에서 충돌없이 통신을 하기 위해서 반송파를 감지하는 기법을 사용하며,

간단한 예시로 송신자 A가 수신자 C에게 데이터를 송신하려고 할 때, 수신자 C는 이미 B라는 송신자와

통신 중임을 감지하고 송신을 중단하고 재밍 신호(Jamming Signal)를 보내고 난 뒤, 일정 시간동안 재전송을 대기한다. 

 

이 재밍 신호는 네트워크에 소속되어 있는 모든 노드들에게 전달되어 불필요한 전송을 차단하는 역할을 한다.

 

 

● 충돌 영역(Collision Domain) / 동보 허용 영역(Broadcast Domain)

위의 설명처럼 충돌의 영향을 받는 네트워크를 '충돌 영역' 이라고 하는데,

허브(Hub)장비로 연결된 네트워크에서는 노드 간의 충돌을 피할 수 없지만,스위치(Switch)장비는

각 포트별로 충돌 영역을 갖기 때문에 CSMA/CD 적용없이B와 C사이의 통신이 진행중이여도, 송신자 A는 데이터를 전송할 수 있게된다.

 

동보 허용 영역은 어느 한 노드가 송신한 Broadcast Frame이 수신되는 영역을 의미하며,

영역 내의 단말끼리는 직접 통신이 가능하다.

** 이 영역은 라우터(Router)를 기준으로 나뉘어진다.

 

(좌)Hub 장비를 이용한 네트워크 / (우)Switch 장비를 이용한 네트워크

** 원형 선이 Collision Domain을 의미하고, 사각형 선이 Broadcast Domain을 의미한다.

 

 

 

 

 

'Network' 카테고리의 다른 글

[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]MAC_Address  (0) 2022.11.09
[Network]OSI_7_Layer  (0) 2022.10.29
[Network]Network  (0) 2022.10.28

MAC 주소(Media Access Control Address)

MAC 주소란 48bit로 이루어진 네트워크 카드(NIC)의 고유 물리적 주소이다.

24bit:24bit로 나누어 봤을 때, 앞 부분 24bit에는 IEEE(미 전기전자학회)에 의해 할당된

제조사별 벤더 번호(Vendor  / Organizational Unique Identifier)이고 나머지 24bit는 제조사가

일련번호를 매긴 시리얼 번호이다. MAC 주소의 표기 방식으로는 

0A-0B-0C-0D-0E-0F 혹은  0A:0B:0C:0D:0E:0F 형식의 16진법(Hexadecimal)로 표기된다.

 

** 0A => 0(4bit) + A(4bit) = 8bit = 1Byte = 1 Octet

** MAC 주소도 임의로 변경이 가능하다.

 

현재 필자가 사용중인 무선 네트워크 카드의 상위 24bit

뒷 부분은 고유 정보이기 때문에 블러처리를 해두었지만, 위에서 언급 하였듯이 상위 24bit(A0-80-69)로

제조업체가 Intel Corperate 인것을 확인할 수 있다.

 

 

● MAC 주소의 쓰임새

MAC주소는 대표적으로 'OSI 7 Layer' 중 '2계층'에 해당하는 데이터링크(DataLink) 계층에서 사용되며,

외부 네트워크(WAN)가 아닌 내부 네트워크(LAN/Segment)에서 호스트 간 통신에 사용된다. 

 

하지만 각 호스트는 IP 주소를 가지고 있기 때문에, 내부에서는 서로의 MAC 주소를 알기 위해서 

브로드캐스트로 ARP(Address Resolution Protocol)를 뿌리고

서로의 정보를 알아낸 후 이웃한 호스트의 MAC 주소를 ARP Cache 메모리에 저장하여

이후 통신 시에는 별도의 브로드캐스트 없이 바로 연결할 수 있도록 만든다. 

 

ARP(Address Resolution Protocol): IP 주소 → MAC 주소로 변환

RARP(Reverse Address Resolution Protocol): MAC 주소 → IP 주소로 변환

 

Packet Tracer로 192.168.100.0/24 대역의 Network를 구성

Node 1 에서 Ser 1 으로 ping을 요청한다.

 

(좌)Node 1에서 전체 노드에게 뿌린 ARP / (우)Ser 1에서 Node1에게 보내는 ARP

그림 상에서는 표현되지 않았지만 Node 1에서 Ser 1에 ping을 요청했을 때,

연결이 수립되기 전 최초의 연결시에는 ARP Table에 해당 노드의 MAC 주소가 없기 때문

전체 노드에 ARP를 브로드캐스트로 뿌려 Ser1이 아닌 다른 노드들은 해당 프레임(Frame)을 

폐기(Ignore)하고 Ser1은 위의 그림처럼 자신에게 온 메시지임을 확인하고,

자신의 MAC 주소를 ARP 헤더(ARP Header)에 실어서 유니캐스트(Unicast)로 Node1에게 전달한다.

 

 

Node1의 콘솔에서 'arp -a' 명령을 사용해 ARP Table을 확인

ARP를 주고 받은 Node1 과 Ser1의 ARP Table에는 서로의 MAC 주소가 저장 되어있음을 확인할 수 있다.

이후 두 노드간의 통신에서는 ARP 브로드캐스트 없이 바로 통신할 수 있다.

'Network' 카테고리의 다른 글

[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09
[Network]OSI_7_Layer  (0) 2022.10.29
[Network]Network  (0) 2022.10.28

top(Table Of Process)

저번 포스팅에서는 개별 프로세스 조회 중점의 명령어인 ps에 관해서 알아 봤다.

이번에는 좀 더 구체적으로 어느 프로세스가 리소스의 어느 정도를 점유하며,

전체 프로세스를 실시간으로 확인할 수 있는 명령어인 top에 대해 알아보자

 

● 명령어 'top'의 활용방식

아무런 옵션 없이 'top' 명령어를 실행했을 때의 출력화면

빨간색 실선 안의 정보들은 시스템의 가동시간, 평균 부하값(Load Average), 메모리의 상태 등의

자원에 관한 간략한 정보가 표기되어 있으며, 하단의 노란색  실선 안의 정보들은 프로세스들의 정보

담고있는 것을 확인할 수 있다. 그림의 왼쪽부터 필드의 정보를 서술하면 

 

- PID : 프로세스 ID

- USER : 프로세스의 소유자

- PR : 프로세스의 우선순위

- NI : 작업의 nice값

- VIRT : 프로세스가 사용중인 가상메모리 양

- RES : 물리적인(실제의) 메모리의 양

- SHR : 공유 메모리의 양

- S : 해당 프로세스의 상태 (Status)

- %CPU : CPU 사용량

- %MEM : 현재 사용중인 실제 메모리의 양

- TIME+ : 프로세스가 CPU를 사용한 시간

- COMMAND : 프로세스가 시작되는 데에 사용된 명령어

 

각각 의미하며, 

콘솔창에 'top' 실행 시 사용되는 옵션으로는 'top -d [초(Sec)]'와 'top -b(배치모드)'가 있는데,

'-d' 옵션의 경우 top의 정보 갱신주기를 설정하는 옵션이고

배치모드로 프로세스의 흐름을 확인 하기에는 시인성이 좋지 않아 거의 사용되지 않는다고 한다.

굳이 옵션을 입력하지 않고도 'top' 화면에 진입하여 Space Bar, Enter 키를 입력하면 

그때 그때 갱신되도록 설정되어 있다.

 

 

● 목록별 정렬

'top' 실행화면 중 Shift+p를 입력해 CPU 사용률 기준으로 정렬

- Shift+p : CPU 사용량 기준 정렬

- Shift+t : CPU 사용 시간별 정렬

- Shift+m : 메모리 사용량 기준 정렬

  - Shift+n : PID 기준 정렬

 

등의 명령어로 시인성 좋게 실행중인 프로세스를 확인할 수 있다.

 

 

● 사용자별 정렬

'top' 실행화면 중 Shift+u를 사용하여 'centos' 사용자의 프로세스를 검색

'Shift+u' 입력 후 'Which User (blank for all)' 입력창에 사용자의 ID를 입력하면

해당 사용자가 실행중인 프로세스를 확인할 수 있다.

 

 

● 프로세스 제어

'top' 실행화면 중 'k(시그널)' 키를 입력하여 프로세스를 제어

가장 간단한 예시로 현재 실행중인 임의의 프로세스

'vim /etc/passwd' 종료를 시도, 해당 명령행에 PID(4622)를 입력하면

 

원하는 SIGNAL값을 입력하라는 명령행이 나온다. 여기서 

SIGKILL 의 값인 숫자 9 입력 후 엔터를 치면 해당 프로세스가 

강제로 종료되는 것을 확인할 수 있다.

 

 

 

'Linux_System' 카테고리의 다른 글

[Linux]ZFS  (0) 2023.01.16
[Linux]PAM  (0) 2023.01.12
[Linux]Process(1)_ps  (0) 2022.11.05
[Linux]Software_Compile  (0) 2022.10.31
[Linux]YUM_LocalRepository  (0) 2022.10.26

OSI Model (Open Systems Interconnection Reference Model)

사진출처 : https://commons.wikimedia.org/wiki/File:Osi-model-7-layers.png

OSI 참조 모델이란 국제표준화기구(ISO)에서 개발한 계층적 모델로 네트워크를 통해 

데이터를 송수신하는데 필요한 과정등을 단계별로 분류 해두었다.

OSI 모델은 각 계층에서 '무엇을 해야 하는지' 만을 정의하고 그것을 

'어떻게 구현해야 하는지'에 대해서는 정의하지 않고 있는데, 개발자나 제조사가 자신의 판단에 따라

가장 좋은 방법으로 그것을 수행하게 자유를 준 것이라고 볼 수 있다고 한다.

 

네트워크를 학습함에 있어서 전반적인 데이터의 흐름을 파악하기 위해 이 7개의 계층에서

각각 어떤 역할을 어떻게 수행 하는지에 대한 이해가 중요하다. 각 계층은 다른 계층과 분리되어서

자신만의 기능을 캡슐화(Encapsulation)해서 데이터의 헤더부분에 추가(Over Head)한 다음, 이웃한 층으로 전송한다.

 

간단한 예시로 우리가 응용계층에서 어플리케이션을 실행해 문서 작업을 마친 뒤

수신자에게 문서를 전송한다고 가정 한다면, 송신자의 데이터7(응용) ~ 1(물리)계층을 거치며 캡슐화가 진행되고

수신자는 송신자의 역순으로 1(물리) ~ 7(응용)계층을 거쳐 캡슐을 하나하나 벗겨낸 후 최종적으로 

순수한 데이터를 확인해 볼 수 있는 것이다.

 

또 하나의 예시로는 우리가 OSI 7계층의 역할을 인지한 상태에서 통신간의 문제가 발생한다면

각 계층을 대입해서 생각해볼 수 있는 것이다.

 

ex) 로컬(LAN)로 묶인 PC끼리 통신은 가능하나, 외부(WAN)의 인터넷 접속은 불가하다.

1, 2계층에서 문제가 없지만, 3계층 장비 라우터(Router)의 문제일 가능성이 높다.. 

---> 식의 문제의 원인을 유추해 볼 수 있다.

 

** 각 층은 바로 이웃한 층과의 통신만 가능하다.

 

 

● 각 계층에 대해서

1. 물리계층 (Physical Layer) : 데이터를 전기적 신호(0, 1)로 전송해주는 역할을 하며 별도로 오류를 체크하지는 않는다,

fiber-optic, re-232 등의 통신 케이블과 리피터, 허브 등이 대표적인 장치이다.

데이터의 단위는 'bit' 로 표현한다.

 

2. 데이터 링크 계층 (Data Link) : 통신 노드 간 데이터 전송, 오류체크를 담당하며, 

LLC(Logical Link Control) / MAC(Media Access Control) 으로 장치를 구분한다. 

대표적으로 스위치, 브릿지 등의 장치가 있고, Ethernet, FDDI, ATM, HDLC .. 등의 프로토콜이 존재,

데이터의 단위는  'Frame' 으로 표현한다.

** 오류체크 시에는 : CRC, Parity를 이용한다. 

 

3. 네트워크 계층 (Network Layer) : 데이터 전송을 위해 최적의 '경로'를 찾아주는 역할을 하며, 

데이터의 흐름과 에러를 제어한다. 대표적인 장치로는 라우터와 L3-Switch가 있으며,

IP, IPX, IPSEC, ICMP .. 등의 프로콜이 존재,

데이터의 단위는 'Packet' 으로 표현한다.

 

4. 전송 계층 (Transport Layer) : 가상회로를 설정하거나 패킷의 분할, 재조립 등을 담당하고

에러를 수정하는 역할을 한다. 대표적으로 TCP(연결지향적) / UDP(비연결지향적) 프로토콜이 있고,

그 외로도 SPX, RIP, BGP, SSL .. 등 다양한 프로토콜이 존재,

데이터의 단위는 'Segment' 로 표현한다.

 

5. 세션 계층 (Session Layer) : 통신수립 및 통신 제어(Full / Half - Duplex), 연결을 설정/해제 해주는 역할을 하며

NetBIOS, SAP, TLS, SSH .. 등의 프로토콜이 존재, 

데이터의 단위는 'Data / Message' 로 표현한다.

 

6. 표현 계층 (Presentation Layer) : 그림, 음악 등 데이터의 변환을 담당해주고 데이터의 압축과 암호화를 담당한다.

EBCDIC, MP3, MPEG, MIDI .. 등의 프로토콜이 존재,

데이터의 단위는 'Data / Message' 로 표현한다.

 

7. 응용 계층 (Application Layer) : 응용 프로그램을 사용하거나 서비스를 제공, 대역폭 확인, 통신 동기화 등의

역할을 하고 대표적으로 HTTP, FTP, SMTP, Telnet .. 등의 프로토콜이 존재 실제 사용자(User)들이

접하는 환경이다. 데이터의 단위는 'Data / Message' 로 표현된다.

'Network' 카테고리의 다른 글

[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09
[Network]MAC_Address  (0) 2022.11.09
[Network]Network  (0) 2022.10.28

Network

네트워크의 어원으로는 Net(망, 그물) + Work(일하다)의 합성어로,

"망 안에 얽혀서 일을한다" 정도의 행위로 볼 수 있다.

우리가 생각하는 정보통신 분야에서의 Network는 특정 통신망을 형성하여 

송 / 수신자 간의 데이터를 주고받는 등의 행위를 뜻한다.

 

컴퓨터(Machine)의 초창기에는 IBM Mainframe(서버)가 존재했는데, 이 시기에는 

서버가 모든 작업을 처리했었다고 한다. 이 때의 클라이언트는

마우스가 없는 Dummy Terminal(모니터와 키보드만 존재) 이라고 칭했는데,

모든 작업들을 서버가 혼자 도맡아 처리하다 보니 병목현상(Bottle Neck) 현상이 자주 발생되었다고 한다. 

 

** Server : 서비스를 제공하는 머신, 호스트를 의미

** Client : 서비스를 요청하는 호스트 머신을 의미

---> IT분야 뿐만 아니라 서버(주인) 클라이언트(고객)는 어디에나 존재한다.

 

이런 문제를 해결하기 위해서 연구를 진행했는데,  "Xerox"라는 회사에서 "마우스"를 개발하고, 

발생되는 모든 트래픽이 서버에만 치우치면 문제가 많아지기 때문에 각 머신들을 묶어서 데이터를 처리하는 기법인

"Ethernet"을 개발 해냈다. Dummy Terminal에 각자의 리소스(HDD, RAM, CPU ...)를 부여한다.

 이 시기 이후부터 PC(Personal Computer)의 본격적인 발전이 시작되었다고 한다.

 

** 여기서 말하는 문제는 모든 데이터가 서버에만 저장되어 서버를 통해서만 작업을 

처리해야 한다고 가정했을 때, 서버에 문제가 발생되면 다른 모든 Terminal에서 작업이 불가해지는 등의 문제이다.

 

 

● 간단한 용어정리

- Host : 일반적인 네트워크 상 서버 등의 컴퓨터를 일컫는다, NIC(Network Interface Card)의 수에 따라서 호스트가 달라짐

- Workstation : 일반 PC에 비해서 고성능의 PC를 일컫는 말이기도 하지만, 도메인에 가입된 클라이언트를 뜻한다.

- Machine, Can : 일반 컴퓨터를 뜻하며, 성능이 탁월하지 않은 저사양의 컴퓨터를 뜻 하는 슬랭 정도를 의미 

- Node : 네트워크에 묶여 있는 모든 장치들(Device, Concentrator(집중화기), Distributor(분배기), Equipment(대형장비) ...) 등을 일컫는다.

 

** Multi-Homed : 하나의 호스트에 여러 개의 NIC가 있을 때를 뜻함

 

 

● 네트워크의 대표적인 운영 방식

- Peer to Peer(P2P) : 모두가 동등하게 연결된 상태로 어느 한 쪽이 서비스를 제공하면 그 쪽은 서버,

나머지는 클라이언트가 되는 구조이다.

(보안적인 측면에서 매우 취약)

 

- Server-Client : 서버가 단독으로 서비스를 제공하고, 클라이언트는 서비스를 요청하는 형태

(XSS와 같이 서버가 오염되면 서버에 연결된 모든 클라이언트가 전부 오염)

 등의 특징과 취약점이 존재한다.

 

** Server Contamination 이라고도 표현한다.

 

 

● 통신망의 종류

- LAN (Local Area Network) : 라우터(도메인 안) 이내의 공간을 의미 (LAN을 나누면 세그먼트(Segment)가 된다)

- MAN (Metropolitan Area Netowrk)현재는 사용하지 않지만 영단어가 의미하는 바와 동일한 도시 단위의 통신망을 의미

- WAN (Wide Area Network) : 라우터(도메인 밖) 이후의 네트워크를 의미한다.

 

 - Internet(work) : 무수한 서버들의 집합체

- Intranet(work) : 브라우저로 도메인 내의 리소스를 검색

- Extranet(work) : 브라우저로 도메인 내 / 외의 리소스를 검색

'Network' 카테고리의 다른 글

[Network]STP_Algorithm  (0) 2022.11.11
[Network]FDDI  (0) 2022.11.11
[Network]Ethernet  (0) 2022.11.09
[Network]MAC_Address  (0) 2022.11.09
[Network]OSI_7_Layer  (0) 2022.10.29

+ Recent posts