Switch HUB

◾ Switch는 segment 연결 장치인 Bridge가 확장된 장비이다.
• Switch와 Bridge의 작동 방식, 알고리즘은 동일하다
 - Multiport bridge = switch HUB.
• 실제 사용된 bridge는 switch와 H/W 구성이 많이 다르다.
• Switch의 기본 기능

 - Learning : Bridge가 소스주소(송신주소)를 보고 Bridge table에 MAC address를 채우는 과정

 - Flooding : 브리지에서 다른 브리지로 패킷을 보내는 과정
 - Filtering : 어느 목적지로 가야할지 패킷을 필터링하는 과정
 - Forwarding : 목적지를 확인해 현재 포트에서 해당 포트로 패킷을 보내는 과정
 - Aging : 사용하지 않는 MAC address를 table에서 없애는 것

◾ Switch 설정
• STP : Spanning Tree Protocol
• VLAN

 

◾ Switch - show명령

• Swhitch# show [옵션] (프리빌리지 모드)
 - ip interface brief : 인터페이스별 설정 정보
 - interface [if명] : 인터페이스의 통계 정보
 - spanning‐tree : STP 관련 정보
 - cdp neighbor : 주변 장비 확인
 - cdp neighbor detail : 인접 장비 정보 확인
 - running‐config : 설정 정보 확인

 

◾ 스위치 상태 확인
• 관리자 모드에서 실행한다.
• show interface [status | if_명 | vlan #]
 - show interface status

Switch>
Switch>enable
Switch#show interface status
Port      Name               Status       Vlan       Duplex  Speed Type
Fa0/1                        connected    1          auto    auto  10/100BaseTX
Fa0/2                        connected    1          auto    auto  10/100BaseTX
Fa0/3                        notconnect   1          auto    auto  10/100BaseTX
Fa0/4                        notconnect   1          auto    auto  10/100BaseTX
Fa0/5                        notconnect   1          auto    auto  10/100BaseTX
...

 

 - show interface vlan 1

Switch#show interface vlan1
Vlan1 is up, line protocol is up
  Hardware is CPU Interface, address is 00e0.b056.6dae (bia 00e0.b056.6dae)
  Internet address is 192.168.10.201/24
  MTU 1500 bytes, BW 100000 Kbit, DLY 1000000 usec,
     reliability 255/255, txload 1/255, rxload 1/255
...

 

- show running-config : 현재 사용되는 config 보여줌

Switch#show running-config 
Building configuration...

Current configuration : 1135 bytes
!
version 15.0
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
...

이렇게 네트워크가 구성되면 네트워크 전체가 죽어버릴 수 있다.

네트워크에 흐르는 패킷 양이 늘어난다.

(PC0에서 PC1로 패킷을 보내려고하면 Switch0에서 패킷을 Switch1, Switch2로 패킷을 보내 네트워크에 흐르는 패킷 양이 늘어난다.)

스위치 구성 방법

보통 위와 같은 방식으로 네트워크를 구성한다.

'네트워크 공부 기록' 카테고리의 다른 글

VLAN  (0) 2022.01.13
STP  (0) 2022.01.11
IOS(Internetwork Operating System) 및 IP 설정  (0) 2022.01.05
네트워크 12 - 네트워크 관련 프로토콜 (ICMP, ARP)  (0) 2021.10.18
네트워크 11 - NAT  (0) 2021.10.18

if 문

if 문

if (조건) {
        문장1;
        문장2;
        ....
}

 

if~else 문

if (조건) {
        문장1;
        문장2;
        ....
}
else {
        문장1;
        문장2;
        ....
}

if~else if 문

if (조건) {
        문장1;
        문장2;
        ....
}
else if (조건2) {
        문장1;
        문장2;
        ....
}
else if (조건3) {
        문장1;
        문장2;
        ....
}
else {
        문장1;
        문장2;
        ....
}

 

$a = "";
if (!isset($a)) echo(" \$a의 값이 없습니다.2<br>"); // FALSE
if (is_null($a)) echo(" \$a의 값이 없습니다.1<br>"); // FALSE
if (empty($a)) echo(" \$a의 값이 없습니다.3<br>"); // TRUE

빈 값("")

empty() : TRUE

is_null() ,  !isset() : FALSE

(PHP가 빈 값과 널 값을 서로 다르게 봄)

 

switch문

switch (변수 또는 수식) {
   case 값1 :
             문장1;
             문장2;
             ...
             break;
   case 값2 :
             문장1;
             문장2;
             ...
             break;
...
   default :
             문장1;
             문장2;
             ...
}

 

 

 

 

 

if문 예제

예제 2-1. 입력된 값 중에 큰 값을 출력한다.

2-1.html

<html>
<head>
<title>2-1.html 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
  <form method="post" action="2-1.php">
	A : <input type="text" name="a"><br>
	B : <input type="text" name="b"><br>
		<input type="submit" name="확인" value="확인">
		<input type="reset" name="취소" value="취소"><br>
  </form>
</html>

2-1.php

<?
   $a = $_POST["a"];
   $b = $_POST["b"];
   if ($a>$b) {
       echo(" 입력 값중 큰 값은 \$a($a)입니다. ");
   }
   if ($b>$a) { 
       echo(" 입력 값중 큰 값은 \$b($b)입니다. ");
   }
   if ($a==$b) {
   echo(" 두 입력 값이 동일합니다.. ");
   }
?>

실행결과

 

예제 2-2. 다음 표를 보고 입력된 급여에 따라 각 사원의 내년도 지급 받을 급여를 출력한다.
* 입력은 만원 단위로 입력한다.
ex) 1,230,000원 → 123만원

2-2.html

<html>
<head>
<title>2-2.html 급여 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
  <form method="post" action="2-1.php">
	현재 급여 입력: <input type="text" name="sal">만원<br>
		<input type="submit" name="확인" value="확인">
		<input type="reset" name="취소" value="취소"><br>
  </form>
</html>

2-2.php

<?
   $sal = $_POST["sal"];
   if ($sal <= 100) { // sal이 100만원 이하인 경우
      $sal = round($sal*1.15);
      echo(" 당신의 내년 급여는 15% 인상된 {$sal}만원입니다.");
   }
   else if ($sal <= 200) { // 101만원≦sal≦200만원
      $sal = round($sal*1.1);
      echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
   }
   else if ($sal <= 300) { // 201만원≦sal≦300만원
   $sal = round($sal*1.05);
   echo(" 당신의 내년 급여는 5% 인상된 {$sal}만원입니다.");
   }
   else if ($sal <= 400) { // 301만원≦sal≦400만원
   $sal = round($sal*1.02);
   echo(" 당신의 내년 급여는 2% 인상된 {$sal}만원입니다.");
   }
   else { // sal이 400만원을 초과하는 경우
   echo(" 당신의 내년 급여는 올해와 같은 {$sal}만원입니다.");
   }
?>

실행결과

 

switch 실습

예제 2-3. 다음 [표]를 보고 입력된 급여에 따라 각 사원의 내년도 지급 받을 급여를 출력한다.
* 프로그램은 switch 문을 이용한다.
* 입력은 만원 단위로 입력한다.
ex) 1,230,000원 → 123만원

2-3.html

<html>
<head>
<title>2-3.html 급여 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
  <form method="post" action="2-2.php">
	현재 급여 입력: <input type="text" name="sal">만원<br>
		<input type="submit" name="확인" value="확인">
		<input type="reset" name="취소" value="취소"><br>
  </form>
</html>

2-3.php

<?
   $sal = $_POST["sal"];
   $con = ceil($sal/100);
   switch ($con) {
     case 1: // sal이 100만원 이하인 경우
            $sal = round($sal*1.15);
            echo(" 당신의 내년 급여는 15% 인상된 {$sal}만원입니다.");
            break;
     case 2: // 101만원≦sal≦200만원
            $sal = round($sal*1.1);
            echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
            break;
     case 3: // 201만원≦sal≦300만원
            $sal = round($sal*1.05);
            echo(" 당신의 내년 급여는 5% 인상된 {$sal}만원입니다.");
            break;
     case 4: // 301만원≦sal≦400만원
            $sal = round($sal*1.02);
            echo(" 당신의 내년 급여는 2% 인상된 {$sal}만원입니다.");
            break;
     default : // sal이 400만원을 초과하는 경우
            echo("당신의 내년 급여는 올해와 같은 {$sal}입니다.");
   }
?>

실행결과

 

예제 2-4. 다음에 제시하는 문제점과 해결책을 이용, 이전 [프로그램]를 수정한 프로그램을 완성하세요

- 문제점
인상폭이 각 등급별로 정의되면 급여가 역전되는 현상이 나타난다. 예를 들어 급여가 99만원이었던 5등급 사
원은 15% 인상으로 114만원이 되지만 101만원인 4등급 사원은 10% 인상으로 111만원이 되어 인상 후, 자
신의 급여 등급보다 낮은 사원보다 적은 급여를 받게 된다.
- 해결책
역전 현상이 나타나는 경우 한 단계 낮은 등급의 최대 급여와 동일하게 급여를 조정해주기로 결정했다. 예를
들어 5등급의 최대 급여는 100만원으로 인상된 급여는 115만원인데 만일 4등급 사원 중에 인상 급여가 115
만원에 미치지 못하는 사원이 있다면 해당 사원의 인상된 급여는 115만원으로 조정해 주는 것이다.

2-4.html

<html>
<head>
<title>2-4.html 급여 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
  <form method="post" action="2-4.php">
	현재 급여 입력: <input type="text" name="sal">만원<br>
		<input type="submit" name="확인" value="확인">
		<input type="reset" name="취소" value="취소"><br>
  </form>
</html>

2-4.php

<?
   $sal = $_POST["sal"];
   $con = ceil($sal/100);
   switch ($con) {
   case 1: // sal이 100만원 이하인 경우(5 등급)
          $sal = round($sal*1.15);
          echo(" 당신의 내년 급여는 15% 인상된 {$sal}만원입니다.");
          break;
   case 2: // 101만원≦sal≦200만원(4 등급)
          $sal = round($sal*1.1);
          if ($sal >= 115) // 5 등급 인상 후 최대 급여 115만원
            echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
          else
            echo(" 당신의 내년 급여는 115만원입니다.");
          break;
   case 3: // 201만원≦sal≦300만원(3 등급)
          $sal = round($sal*1.05);
          if ($sal >= 220) // 4 등급 인상 후 최대 급여 220만원
            echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
          else
            echo(" 당신의 내년 급여는 220만원입니다.");
          break;
    case 4: // 301만원≦sal≦400만원(2 등급)
          $sal = round($sal*1.02);
          if ($sal >= 315) // 3 등급 인상 후 최대 급여 315만원
             echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
          else
            echo(" 당신의 내년 급여는 315만원입니다.");
          break;
   default : // sal이 400만원을 초과하는 경우(1 등급)
          if ($sal >= 408) // 2 등급 인상 후 최대 급여 408만원
            echo(" 당신의 내년 급여는 동결된 {$sal}만원입니다.");
          else echo(" 당신의 내년 급여는 408만원입니다.");
}
?>

 

실행결과

+ Recent posts