목차
1. 스위치
2. STP
3. DNF
4. CRON
5. PHP 조건문 (if, switch)
스위치
스위치는 세그먼트 연결 장치인 브릿지가 확장된 장비로, 스위치의 기본 기능은 브릿지와 같은 Learning, Filtering, Forwarding, Flooding, Aging 이다.
● 스위치 설정
- STP : Spanning Tree Protocol의 약자로, 네트워크가 원형으로 구성되었을 때 알아서 네트워크를 선형으로 만들어준다. 이 기능이 지원되는 스위치도, 되지 않는 스위치도 있다.
- VLAN : 가격이 비싸 지원되지 않는 스위치가 많다.
● 스위치의 show 명령
Swhitch# show [옵션]
spanning‐tree : STP 관련 정보를 출력한다.
interface [if명] : 인터페이스의 통계 정보를 출력한다.
ip interface brief : 인터페이스 별 설정 정보를 출력한다.
running‐config : 설정 정보를 확인한다.
....
등의 명령이 있다.
- 스위치 상태 확인
: show interface [ status | if_명 | vlan# ]
(관리자 모드에서 실행한다.)

STP
● BID (Bridge ID)
스위치 식별 번호로, 스위치는 브릿지에서 파생된 시스템이므로 브릿지 ID를 그대로 사용한다.
8byte ( Bridge Priority(2byte) + Mac Address(6byte) )로 구성된다.
Bridge Priority default : 32768 (0~65535), 필요 시 4096의 배수로 수정 가능하다.
숫자가 작을 수록 우선 순위가 높다.
● BPDU (Bridge Protocol Data Unit)
BPDU는 STP에 의해 스위치간 서로의 정보를 주고받는 패킷으로, 이를 통해 스위치를 연결하고 아무것도 안해도 연결된 기기들끼리 통신할 수 있다. 라우터도 그렇다.
일정시간 BPDU가 날아오지 않으면 그 경로에 문제가 있다고 인식하고 새 경로를 설정한다.
● Path cost
Path cost는 데이터 전송 비용으로, 1000Mbps를 링크 대역폭으로 나눈 값이다.
이론상 빠를 수록 적은 값을 가진다.
| 대역폭(pbs) | 10M | 16M | 45M | 100M | 155M | 622M | 1G | 10G |
| cost | 100 | 62 | 39 | 19 | 14 | 6 | 4 | 2 |
코스트는 정수를 써야하며 1밑으로 내려갈 수 없다.
대역폭이 45M 일 때가 1G 일 때보다 실제로 전송 속도는 빠를 수 있다. 즉, 코스트가 성능을 꼭 대변하지는 않는다.
● STP
STP는 자동화된 기능으로, 다중 경로를 하나의 경로로 자동 구성하고 네트워크 상황에 따라 동적으로 경로를 수정한다.
- STP 구현

1. 네트워크에 Root 브릿지(스위치)를 선정한다. 나머지 모든 스위치는 non root bridge가 된다.
- 각 스위치는 BID(Bridge ID)를 갖는다.
- 스위치는 부팅 이후 매 2초마다 BPDU(Bridge Protocol Data Unit)를 송수신한다.
- BID = priority + MAC ( priority 를 바꿔서 root 브릿지로 지정할 수 있다. )
- BID가 가장 작은 SW가 root 브릿지가 된다.
2. 모든 non root bridge는 하나의 Root Port를 갖는다.
- Non root switch에서 root switch까지 가장 빠른 경로에 연결된 포트를 찾는다
- 경로의 cost가 동일한 경우 BID가 낮은 스위치를 통과하는 경로의 포트가 root port가 된다.
3. 연결마다 하나씩 Designated Port를 선정한다.
- 각 세그먼트에서 root 브릿지까지 가는 가장 cost가 낮은 포트를 designated port라고 한다.
4. Non Designated Port를 선정한다.
- 연결된 링크 중에 root port나 designated port가 아닌 포트는 막는다.
● STP 구성과 확인

위의 사진에서 Root ID의 주소는 현재 루트 스위치의 MAC 주소, Bridge ID의 주소는 이 기기의 MAC 주소이다.
● STP ‐ Priority 수정
spanning‐tree vlan 1 [ priority #### | root primary ]
priority #### : 4096의 배수로 priority를 지정한다.
root primary : 대상 스위치를 루트 스위치로 강제한다.
- do show spanning‐tree
( do 명령을 사용하면 글로벌 모드에서 프리빌리지 모드 명령을 사용할 수 있도록 해준다. )
다음과 같이 가상 네트워크를 구현해 볼 수 있다.

DNF
삭제
# dnf remove [패키지명]
지정한 패키지를 삭제한다. 그러나 실제로 운영하면서 삭제할 일은 거의 없다.
전체 패키지 업데이트
# dnf update
초기화
# dnf clean all
dnf로 생긴 패키지를 초기화한다.
등록한 레포지토리까지 모두 삭제된다.
● Group package 확인과 설치
# dnfgroup [ list | install "그룹" | remove "그룹" | info "그룹" ]
list : 그룹 목록을 출력한다.
install "그룹" : 그룹을 설치한다.
remove "그룹" : 그룹을 제거한다.
info "그룹" : 그룹의 정보를 검색한다.
# dnf group install ‐y "Server with GUI"
서버 운영에 필요한 기본적인 패키지 + GUI 관련 패키지를 모두 설치한다.
CRON
주기적으로 작업되는 작업 일정을 저장해서 자동으로 실행하는 데몬 프로세스 중 하나이다.
데몬은 부팅 시 저장된 작업이 자동으로 실행되도록 하는 프로세스이다.
● 관련 파일
/usr/lib/systemd/system/crond.service
- 데몬 실행 스크립트 (systemctl을 이용한다.)
systemctl 이용 예)
# systemctl [start | stop | restart | enable | disable] crond.service
- start, stop, restart : cron 서비스의 시작, 정지, 재시작을 제어한다.
- enable, disable : 부팅 시 자동실행을 할지 안할지를 제어한다.
/etc/crontab
-기본 스케줄 일정이 있다.
/usr/bin/crontab
-스케줄 설정 프로그램 파일이 있다.
/etc/cron.allow, /etc/cron.deny
- /usr/bin/crontab 이용을 제한한다.
- 등록된 계정에 대해서만 허용하거나 거부한다.
● 사용 형식
# crontab ‐u [유저] [옵션]
-e : 스케줄을 등록한다. vi 환경으로 스케줄을 등록한다.
-l : 스케줄을 확인한다.
-r : 스케줄을 리셋한다.
명령어 형식
: [분] [시] [일] [월] [요일] [작업내용]
분: 0 ~ 59
시: 0 ~ 23
일: 1 ~ 31
월: 1 ~ 12
요일: 0(일) ~ 6(토)
오류 발생 시 설정 시간을 살짝 바꿔서 해결 가능하다.
PHP 조건문 if
● if 문
if 문은 프로그래밍의 기본 기능 중 하나인 조건문으로, 조건에 따라 실행을 달리하도록 하는 문법이다.
if ($i > 100) // 변수 $i의 값이 100보다 큰 경우
{ // 중괄호 안의 코드를 수행한다.
echo("\$i의 값은 100보다 큰 값입니다.<br>");
}
if 옆에 적어둔 수식은 조건으로, 조건이 참이면 중괄호 안의 코드가 실행되고, 거짓이라면 실행되지 않는다.
참고로 PHP에서는 $i에 대한 정의가 되어있지 않거나 '$i = NULL' 이라고 정의된 경우 둘 다 $i 에 값이 저장되지 않았다고 취급한다.
● else 문
조건이 거짓일 때 별도로 실행하고픈 수행이 있다면 else 문을 이용해 수행할 수 있다.
if ($a == '남')
{
echo("당신은 남자입니다.<br>");
}
else
{
echo("당신은 여자입니다.<br>");
}
위와 같이 작성하여 변수 $a의 값이 '남' 이라면 if 문 안의 코드가, '남' 이 아닌 다른 값이라면 else 문 안의 코드가 실행되도록 할 수 있다.
● else if 문
else if 문을 여러번 사용하여 여러 조건을 붙일 수도 있다.
if ($a == '남')
{
echo("당신은 남자입니다.<br>");
}
else if ($a == '여')
{
echo("당신은 여자입니다.<br>");
}
else if ($a == '중성')
{
echo("당신은 중성입니다.<br>");
}
else
{
echo("당신은 외계인입니다.<br>");
}
위와 같이 필요한 만큼 else if 문을 쓰고, 마지막에 else 문으로 마무리한다.
PHP 조건문 switch
if 문은 조건의 참/거짓을 판별했다면, switch 문은 변수 혹은 수식의 값을 판별해서 일치하는 case 절을 실행한다.
switch ($a)
{
case "남":
echo("당신은 남자입니다.<br>");
break;
case "여":
echo("당신은 여자입니다.<br>");
break;
case "중성":
echo("당신은 중성입니다.<br>");
break;
default :
echo("당신은 외계인입니다.");
}
위와 같이 변수의 값에 대해 각각의 경우를 나누어 실행문을 작성할 수 있다.
이때 break; 를 쓰지 않으면 코드 실행이 끝나지 않고 이하의 모든 실행문이 실행되므로 break; 를 사용해 switch 문에서 탈출한다.
case 에서 일치하는 값이 없는 경우 default 에 정의된 코드를 실행하고 switch 문을 종료한다.
● PHP에서의 함수
round(x) 함수 : x의 값이 소수라면 반올림하여 정수로 만든다.
ceil(x) 함수 : x의 값이 소수라면 올림하여 정수로 만든다.
'일일 정리' 카테고리의 다른 글
| Trunk Routing, Aliases, ssh key, PHP 반복문 While (2) | 2025.01.31 |
|---|---|
| 접근통제와 보안모델, VLAN, RSYNC (11) | 2025.01.28 |
| IOS, IOS - 라우터/스위치 접속, IOS - 설정 저장, IOS - IP 설정, RPM, DNF (7) | 2025.01.23 |
| 혼잡제어의 원리, TCP 혼잡제어, Cisco 설치, 리눅스 - 네트워크 설정, 다양한 네트워크 명령어(ping, netstat, arp, traceroute(tracert), route) (3) | 2025.01.22 |
| TCP의 신뢰적인 데이터 전송, 리눅스 - 자동 마운트 (2) | 2025.01.21 |