LostCatBox

후니의 네트워크로 기본 잡기

Word count: 4.4kReading time: 27 min
2020/09/07 Share

왜?

nginx를 다루면서, 기초 네트워크 지식의 부족함을 느꼈다.

물론 모르는 개념과 부분을 그때그때 찾아가면서 학습을 하였지만, 학습한 내용들을 내 자신의 네트워크 기본지식에 붙여가는 것이 아니라, 단편적으로 기억될수밖에없었다.

그래서 기본 지식들을 학습하고 자신만의 네트워크 그림을 만든 후, 앞으로 배워갈 네트워크 지식들을 위에 그림에 넣는 방식으로 전환하고싶다.

+ 1년후에 있을 회사 면접의 질문에 있어서도 비전공자인 나의 답변에 퀄리티를 높일수있지 않을까? 라는 기대도 해본다.

네트워크 세상에 들어서며

  • 네트워킹이란 서로 연결하는 것이다.

    여러 장비를 한 호스트만 공유하지 않고 여러 호스트와 서로 공유하게 되었다. 따라서 지금의 네트워킹으로 발전하게 되었다.

    호스트란?

    네트워크를 구성하는 컴퓨터 시스템에서, 각각의 단말기로부터의 자료 처리 요구를 받아 처리하는 중심이 되는 컴퓨터.

  • 인터넷(internet)이란?

    ‘여러 개의 네트워크를 묶었다.’라는 의미이다

  • 인터넷의 특징?

    • 하나의 프로토콜만 사용한다.
    • 웹브라우저를 이용하여 인터넷을 돌아다닌다
  • 인트라넷(intranet)?

    내부망, 사내 업무도 인터넷처럼 웹 브라우저만을 이용하게 만든 것이다.(내부 네트워크)

  • 엑스트라넷(extranet)?

    기업의 인트라넷을 그 기업의 종업원 이외에도 협력 회사나 고객에게 사용할 수 있도록 한 것이다.

네트워크와 케이블 etc…

  • LAN(Local Area Network)

    한정된 공간에서 네트워크를 구성한다는 것이다(사무실에 30대의 컴퓨터 네트워크를 설계 = 사무실에 LAN구축한다.)

  • WAN(Wide Area Network)

    멀리 떨어진 지역을 서로 연결하는 경우

  • 이더넷(Ethernet)

    네트워킹의 한 방식인데 CSMA / CD라는 프로토콜을 사용해서 통신을 하는것이 가장 큰 특징이라고 볼 수 있다.

    (토큰링(TokenRing), FDDI방식, ATM방식도 있다.)

    CSMA/CD

    (‘Carrier Sense Multiple Access/Collision Detection’)

    네트워크 상에 나타나는 신호(캐리어)가 있는지를 감시하는데 이것 을 Carrier Sense라고 한다. 캐리어가 감지되면 데이터를 보내지 않고 기다리게된다.

    통신이 없어지면 눈치를 보고 자기 데이터를 네트워크상에 실어서 보내게된다.

    두 개 이상의 PC나 서버가 동시에 네트워크상에 데이터를 실어 보내는 경우가 있는데 이를 Multiple Access(다중 접근)이라고 한다.

    두 개의 장비들이 데이터를 동시에 보내려다 부딪치는 경우를 충돌(콜 리전, Collision)이라한다

    이더넷에서는 데이터를 네트워크에 실어서 보내고 나서 콜리전이 발생했는지 점검을 하는데 이를 Collision Detection(충돌 감지)라고 한다. 콜리전이 발생하게 되면 랜덤한 시간동안 기다린 다음 다시 데이터를 전송하게 된다.

    TokenRing

    그 네트워크에서 오직 한 PC, 즉 토큰을 가진 PC만이 네트워크에 데이터를 실어 보낼 수 있는 방식이다. IBM대형 컴퓨터들이 있는 곳에서 많이 사용중.
    (이더넷의 일반적인 속도는 10Mbps이고 토큰링은4Mbps/16Mbps이다.)

  • 케이블

    • UTP 케이블

      TP케이블이란 Twisted-pair, 즉 꼬인것을 말한다. 페어는 두가닥.

      Unshielled(언쉴드, 감싸지않은)TP를 말한다.

    • STP 케이블

      Shieled로 케이블의 주위를 어떤 절연체로 감싸서 만든것을 말한다.

    • 카테고리

      • 카테고리 1 : 주로 전화망에 사용

      • 카테고리 2 : 데이터를 최대 4Mbps의 속도로 전송

      • 카테고리 3 :10 Base T 네트워크에 사용되는 케이블

      • 카테고리 4 :토큰링 네트워크에서 사용. 최대 16Mbps의 속도로 전송

      • 카테고리 5 :최대 100Mbps를 지원하는 Fast Ethernet용으로 사용. 기가비트 표준이 완성되어 기가비트 속도전송이 가능.

    10 Base T에서 10이란 속도를 나타내는데 10Mbps의 속도를 지원하는 케이블을 의미한다. Base란 말은 Baseband용 케이블을 말하고 케이블종류로 베이스밴드와 브로드밴드가 있는데 베이스밴드는 디지털 방식이고, 브로드밴드는 아날로그 방식이다. 마지막 T는 TP케이블을 나타내는데 흔히 UTP케이블을 말한다.

    • 100 Base T : 1000Mbps로 UTP케이블을 통해 전송 최대거리는 100미터인 케이블 스펙. 카테고리 5 케이블을 사용. 구성하기 위해 4페어를 다 사용해야함.
    • 기가비트의 경우 1000 Base LX/LH같은 스펙은 광케이블을 사용해서 최대 10킬로미터까지 전송가능. 케이블의 경우 속도가 빨라지면 빨라질수록 전송 거리는 점점 짧아진다.
  • MAC (Media Access Control)

    물리 주소이다. (네트워크 상에서의 정확한 집주소)

    IP주소와 비교하자면 IP는 집주소가 대충어디있는지 알수있는 시, 구, 동까지나타냄

    즉, 모든 통신은 MAC주소가 필요하며 IP주소를 다시 MAC으로 바꾸는 절차(ARP:Address Resolution Protocol)가 필요하다.

    네트워크에 붙는 각 장비들은 48비트(6옥테트)의 주소를 갖는데 이 주소는 랜카드 또는 네트워크 장비에 이미 고정되어 있는 주소이고 전 세계에서 유일한 주소이다. 이것을 MAC 어드레스 or 하드웨어 주소라함. 모든 랜상의 디바이스들은 반드시 유일한 MAC 어드레스를 가져야 한다

    00-60-97-8F-4F-86

    00:60:97:8F:4F:86

    0060.978F.4F86

    16진수로 표시함. 앞쪽에 6개의 16진수가 벤더, 즉 생산자를 나타내는 코드로 이 코드를 OUI(Organizational Unique Identifier)라고한다. 회사마다 틀리기 때문에 어느 회사제품인지 알수있다.

    나머지 6자리는 회 사에서 각 장비에 분배하는 Host Identifier인데 시리얼 넘버라고 보면된다.

  • 통신 방식

    • 유니캐스트

      현재 네트워크상에서 가장 많이 사용되는 통신 방식으로 특정 목적지의 주소 하나만을 가지고 통신하는 방식이다. 그 목적지 주소가 아닌 다른 PC들은 CPU성능을 저하시키지 않는다. 그 이유는 자신의 맥어드레스가 아니라고 판단되면 랜카드가 이 프레임을 버리기 때문이다.

    • 브로드캐스트

      로컬 랜 상에 붙어있는 모든 네트워크 장비들에게 보내는 통신방식이다. 그래서 전체적인 트래픽도 증가하게 되고 이 패킷을 받은 모든 랜카드가 CPU로 전송하여 전체 PC의 성능도 떨어뜨리게 만드는 결과를 가져온다. (패킷을 뜯어봐야되는것때문에)

    • 멀티캐스트

      보내고자 하는 그룹 멤버들에게만 한 번에 보낼 수 있는 통신방식이다. 스위치나 라우터가 이 멀티캐스트 기능을 꼭 지원해야 한다는 제약이 있다.

    • OSI 7 Layer

      자세히

      통신에 관한 국제적인 규약

      7개의 단계별로 표준화하여 그 효율성을 높이기 위해서 사용

      • Application Layer(어플리케이션 계층)
      • Presentation Layer(프레젠테이션 계층)
      • Session Layer(세션 계층)
      • Transport Layer(트랜스포트 계층)
      • Network Layer(네트워크 계층)
      • Data Link Layer(데이터 링크 계층)
      • Physical Layer(물리계층)

    컴퓨터는 같은 프로토콜(규약, 협약)로 말한다

    (서로 같은 것끼리만 통신 가능)

    TCP/IP(Transmission Control Protocol/Internet Protocol)
    IPX(Internetwork Packet Exchange)
    AppleTalk - 매킨토시가 사용

TCP/IP와의 만남

TCP/IP가 인터넷 때문에 현재 가장 많이 사용되고 있다

각각의 네트워크에 접속되는 호스트들은 고유의 주소를 가지고 있 어서 자신이 속해 있는 네트워크뿐만 아니라 다른 네트워크에 연결되어 있는 호스트까지도 서로 데이터 를 주고받을 수 있도록 만들어져 있다.

이때 사용하는 호스트들의 고유주소는 Internet Network Information Center(InterNIC)에서 관리분배한다 똑같은 IP를 사용하게 되면 충돌했다고 표현을 한다.

이와 달리 같은 IP를 쓰는 경우도 있는데 내부 네트워크에서는 공인되지 않은 IP주소를 사용하고, 인터넷으로 나갈 때만 공인 주소(즉 유일한 IP)를 가지고 나가는 방식인 NAT(Network Address Translation) 나 동일한 IP 주소를 가지고 여러 명이 인터넷에 접속하면서 포트 넘버만을 바꾸는 PAT등이 있다. 공인주소를 나눠주고 관리해주는 기관은 NIC(Network Information Center)이다.

IP는 총 2의 32승개로 되어있고 IP주소방식인 버전4가 주소가 부족해서 버전6이 사용될 예정이다.

DHCP(Dynamic Host Configuration Protocol)서버

이 서버가 있는 네트워크에 연결만 하면 자동으로 부여받을 수 있도록 되어있다. PC마다 하나하나 IP주소를 미리 지정해 놓지 않아도 된다.

네트워크 장비들에 관한 이야기

  • 랜카드의 세팅

    접속하는 케이블의 종류에 따라 TP포트를 가진 랜카드, BNC나 AUI포트를 가진 랜카드, 광케이블과 접속하는 랜카드로 나눌수있다.

    데스크탑용은 PCI방식을 가장 많이 쓰고 이전에는 ISA방식을 많이 사용했음.
    서버급 PC에서는 EISA방식의 버스를 사용.

  • 허브

    직사각형의 상자에 구멍이 뚫려있는 모양으로 되어있고 개수에 따라 몇포트다라고한다 이더넷용이냐, 토큰링용이냐가 있고 또 이더넷 허브도 속도에 따라 그냥 허브(10Mbps)와 패스트 (100Mbps)허브가 있다.

    허브를 한마디로하면 멀티포트 리피터라고 할수있는데 포트가 여러개 달린 장비인데, 한 포트로 들어온 데이터를 나머지 모든 포트로 뿌려준다.

    허브를 고를때는 안정성을 가장중요하게보고 사후 AS 또한 중요하다. 한 번의 콜리전이 발생하면 연결 되어있는 모든 PC들이 영향을 받기 때문에 허브만으로 연결하는것은 한계가 있다.

    리피터?

    데이터 전송시 거리의 제약 때문에 중간에서 들어온 데이터를 다른 쪽으로 전달해 주는 역할을한다.

  • 허브의 종류

    • 인텔리전트(Intelligent)허브

      NMS(네트워크 관리시스템)을 통해서 모든 데이터를 분석할수 있고 앉 아서 멀리 있는 허브의 동작을 감시하고 조정까지도 가능하다. 문제의 PC가 연결된 포트를 찾아내어 자 동으로 Isolation(현 네트워크에서 분리시켜서 따로 고립시킴)시켜 버린다. 또 분리된 포트는 허브에서 램프로 표시되기 때문에 바로 알수 있고 이기능을 Auto Partition이라한다

    • 세미더미 허브

      더미 허브인데 인텔리전트허브와 연결하면 자기도 인텔리전트 허브가된다. 스태커블 허브라는것은 쌓을수 있는 허브를 말한다.

  • 허브의 한계

    • 허브의 끝과 스위치의 시작

      허브의 한계에서 아무리 빠른속도를 쓴다고 하더라도 어느 한순간에는 한 녀석만이 데이타를 보낼수 있 다는거..즉 허브에 연결된 한 피시에서 발생하는 콜류젼이 다른 피시들에도 영향을 주는 콜류젼 도메인 (영역)이 그 허브에 연결된 모든 피시들이다

      이러한 문제 즉 콜류젼 도메인을 작게 나누기 위해서 나온 장비가 바로 스위치

      스위치의 역할

      예를 들어 1 번 포트에 연결된 피시가 2번 포트에 연결된 피시와 데이타를 주고받는 동안에도 3번 포트에 연결된 피 시와 4번 포트에 연결된 피시가 서로 데이타를 주고받을 수 있게 한 장비 이다. 즉 1,2번 사이에서 통 신이 일어나면 나머지는 기다려야하는 허브와는 달리 다른녀석들도 동시에 통신이 가능한것이다. 이게 스위치와 허브의 가장 큰 차이다. 그래서 우린 스위치의 경우 각각에 연결된 피시가 독자적으로 10Mbps 또는 100Mbps의 속도를 갖는다고 이야기 한다. 허브보다는 스위치가 좋은데 콜류젼도메인을 작게 나누어주기 때문이다

  • 브리지/스위치의 기능

    • Learning : 브리지나 스위치는 자신의 포트에 연결된 A라는 PC가 통신을 위해 프레임을 보내면 이 PC의 맥 어드레스를 읽어서 자신의 맥 어드레스 테이블에 저장하고 나중에 참고하여 다리를 건너게할 지를 결정한다.
    • Flooding : 들어온 포트를 제외한 나머지를 모든 포트로 뿌리는 것을 의미한다. 브로드캐스트나 멀티 캐스트의 경우에도 발생함
    • Forwarding : 브리지가 목적지의 맥 어드레스를 자신의 브리지 테이블에 가지고 있고, 이 목적지가 출발지의 목적지와 다른 세그먼트에 존재하는 경우에 일어난다. 한마디로 목적지가 어디 있는지를 알고 있는데 그 목적지가 다리를 건너가야만 하는 경우에 발생한다. 해당 포트로만 프레임을 뿌린다.
    • Filtering : 브리지를 못 넘어가게 막는다는 뜻인데, 브리지가 목적지의 맥 어드레스를 알고 있고, 출 발지와 목적지가 같은 세그먼트 상에 있는 경우 브리지를 건가지 않아도 통신이 일어날 수 있기에 이때 필터링을 하게된다. 이 기능 때문에 허브와는 다르게 콜리전 도메인을 나누어 줄수 있다.
    • Aging : 나이를 먹는다는 말인데 새로운 맥 어드레스를 기억하는데 디폴트는 5분(300초 값조정가능) 이다. 에이징이랑 이것에 관련된 타이머이다. 어떤 맥 어드레스를 브리지 테이블에 저장하고 나면 그때 부터 Aging이 가동되어서 저장한 후 300초가 지나도록 더 이상 그 출발지 주소를 가진 프레임이 들어 오지 않으면 브리지 테이블에서 삭제시킨다.
  • 브리지/스위치 차이

    • 스위치는 처리 방식이 하드웨어로 이루어지기 때문에 소프트웨어적으로 프레임을 처리하는 브리지에 비해서 훨씬 빠르다.

    • 브리지는 포트들이 같은 속도를 지원하는 반면, 스위치는 서로 다른 속도를 연결기능을 제공한다

    • 스위치는 브리지에 비해 제공하는 포트 수가 훨씬 많다.

    • 스위치의 경우 cut-through or store-and-forward방식을 사용하는데 비해서 브리지는 오로지 store-and-forward방법만 사용한다.

      store-and-forward : 스위치나 브리지가 일단 들어오는 프레임을 전부 받아들인 다음 처리를 하는방식

      cut-through : 스위치가 들어오는 프레임의 목적지 주소만을 본 다음 바로 전송 처리를 시작하는 방식

      Fragment-Free : 두 방식의 장점을 결합한 방식으로 전체 프레임이 다 들어올 때까지 기다릴 필요가 없다는 측면에서 컷스루 방식을 닮았지만 처음 512비트를 보게되고 에러 감지 능력이 우수하다.

  • Looping

    프레임이 네트워크 상에서 무한정으로 뱅뱅 돌기 때문에 이더넷의 특성상 네트워크가 조 용해야 데이터를 전송할 수 있는 다른 녀석들이 계속 네트워크가 조용해지기를 기다리기만 할 뿐 데이 터 전송은 불가능해지는 상태를 말한다. 브리지나 스위치에 목적지까지의 경로가 두 개 이상 존재하면 반드시 루핑이 발생한다.

    자동으로 루핑을 막아주는 스패닝 트리 알고리즘(Spanning Tree Algorithm)이 필요하다.

  • 로드 밸런싱

    부하분산 또는 로드 밸런싱은 컴퓨터 네트워크 기술의 일종으로 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.

    서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술이다.

  • 스패닝 트리 알고리즘 (자세히)

    스위치나 브리지에서 발생할 수 있는 루핑을 미리 막기 위해 두 개 이상의 경로가 발생하면 하나를 제외하고 나머지 경로들을 자동으로 막아두었다가 만약 기존 경로에 문제가 생 기면 막아놓은 경로를 풀어서 데이터를 전송하는 알고리즘이다.

    • 브리지 ID

      브리지나 스위치들이 통신할 때 서로 확인하기 위해 하나씩 가지고 있는 번호라고 생각하면 된다.

      Bridge Priority (브리지 우선 순위)는 16비트로 0 ~ 65535까지 표현가능하고, 디폴트는 32768을 사용한다.

      <——————————————— 8 바이트 (64비트) ————————————->

      Bridge Priority 맥 어드레스 (MAC Address)

      <——– 2바이트(16비트) ———><———————— 6 바이트 (48비트) ———————–>

      Priority가 낮은 값이 더 높은 운선순위를 갖는다.

    • Path Cost

      길을 가는데 드는 비용 정도가 될것같다. 네트워크에서 길이란 장비와 장비가 열결되어 있는 링크를 말한다.

      Cost값을 계산할 때 1000Mbps를 두 장비 사이의 링크 대역폭으로 나눈값을 사용한다.

      따라서 Path Cost는 링크의 속도(대역폭)가 빠르면 더 작은 값이 된다.

      예) 두 스위치가 10Mbps로 연결되어있다면 1000/10 = 100 따라서 Path Cost가 100이 된다.

      그런데, 문제가 생겼다. 바로 기가비트(1000Mbps)와 ATM이 나온것이다. 이렇게 다양한 속도가 나오면서 그동안 사용해 오던

      계산법에 따라 계산을 하면 소수점이 나오게 된다. 다음과 같은 Path Cost값을 정의 하게 되었다.

      Bandwidth(대역폭) STP Cost(Path Cost)
      4Mbps 250
      10Mbps 100
      16Mbps 62
      45Mbps 39
      100Mbps 19
      155Mbps 4
      622Mbps 6
      1Gbps 4
      10Gbps 2
    • 첫째, 네트워크당 하나의 루트 브리지(Root Bridge)를 갖는다.

      하나의 브로드캐스트 도메인에 하나씩의 루트 브리지를 갖는다.

    • 둘째, 루트 브리지가 아닌 나머지 모든 브리지(Non Root Bridge)는 무조건 하나씩의 루트 포트(Root Port)를 갖는다.

      루트 포트란 루트 브리지에 가장 빨리 갈 수 있는 포트(가장 가까운)를 말함. Non Root Bridge는 루트 포트를 하나씩 지정해 주어야 한다.

    • 셋째, 세그먼트(Segment)당 하나씩의 데지그네이티드 포트(Designated Port)를 갖는다.

      세그먼트란 쉽게 브리지 또는 스위치 간에 서로 연결된 링크라고 보면된다. 즉 브리지나 스위치가 서로 연결되어 있을때 이 세그먼트에서 반드시

      한 포트는 Designated Port로 선출되어야 한다.

      스패닝 트리 프로토콜에서 루트포트나 데지그네이티드 포트가 아닌 나머지 모든 포트는 다 막아버린다. 즉, 루트 포트와 데지그네이티드

      포트를 뽑는 목적은 어떤 포트를 살릴지 결정하기 위한 것이다.

    • 설명하기

      첫번째 규칙은 네트워크당 하나의 루트 브리지를 지정한다. 그래서 여기서는 스위치 A라는 스위치가 루트 브리지로 선정된 것이다.

      두번째 규칙은 Non Root Bridge들은 루트 브리지쪽에 가장 가까운 루트 포트를 하나씩 선정한다.

      세번째 규칙, 그림에서 세그먼트 1은 스위치 A와 스위치 B간의 링크가 된다. 이때 각 세그먼트별로 하나씩의 데지그네이티드 포트를 지정해야 한다고 했는데 이것도 나중에 설명하도록 한다.

      스크린샷 2020-09-09 오전 10.13.43

      4가지 단계를 통해 누가 루트 포트나 데지그네이트드 포트가 될지 순서를 정하게 된다.

      1단계, 누가 더 작은 Root BID를 가졌는가 ?

      2단계, 루트 브리지까지의 Path Cost 값은 누가 더 작은가 ?

      3단계, 누구의 BID(Sender BID)가 더 낮은가 ?

      4단계, 누구의 포트 ID가 더 낮은가 ?

      BPDU(Bridge Protocol Data Unit)

      스패닝 트리 정보를 자기들끼리 주고 받기 위해 사용하는 특수한 프레임.

      BPDU에 담는 정보는

      Root BID : 루트 브리지의 BID,

      Root Path Cost : 루트 브리지까지 가는 경로값,

      Sender BID : 보내는 브리지의 BID,

      Port ID : 어떤 포트에서 보냈는지를 알게 해주는 Port ID 정보 등

      브리지나 스위치가 부팅을 하면 이들은 각각의 포트로 BPDU를 매 2초마다 내보내면서 서로의 스패닝 트리 정보를 교환한다. 즉, 브리지는 이 BPDU를 서로 주고받으면서 누가 루트 브리지이고 어떤 포트가 루트 포트가 될지, 그리고 어떤 포트가 데지그네이티드 포트가 될지를 결정하게된다. 이때 어떤 BPDU가 가장 좋은 BPDU인가를 결정하기 위해 위에서 배운 4단계의 순서정하기를 사용한다.

스위치에서 대장 브리지(루트 브리지) 뽑기

BID는 전체 64비트로 구성되고, 앞의 16비트에는 브리지 우선순위가, 뒤에 48비트에는 브리지 또는 스위치의 맥 어드레스가 위치한다.

이때 만약 디폴트 구성이라면 브리지 우선 순위는 32768이 된다.

자, 이제 대장 브리지를 뽑아 보겠다. 대장 브리지를 뽑는 조건은 낮은 BID를 갖는 녀석이 대장이 된다.

브리지가 맨 처음 부팅하고 나서 내보내는 BPDU에는 Sender BID정보는 물론 자기 자신의 BID를 넣게 된다. 루트 브리지의 BID역시 자기 자신의 BID를 넣게 된다. 왜냐하면 이 브리지는 이제 막 부팅을 끝나 다른 BPDU를 한 번도 받지 못했기 때문에 일단 이 네트워크에는 자기 혼자 있다고 생각한다.

스탭 1) 스위치 B와 스위치 C 두 대의 스위치가 부팅을 시작한다. 그럼 이제 스위치 B와 스위치 C는 서로 BPDU를 주고 받게 된다.

스위치 B (내가 대장 브리지야. 32768.2222.2222.2222) -> 스위치 C

스위치 B <- 스위치 C (내가 대장 브리지야. 32768.3333.3333.3333)

스위치 A는 쿨쿨

▶ 낮은 BID가 루트 브리지가 되므로 스위치 B는 C에서 받은 BPDU를 무시합니다. 스위치 C는 자신의 BPDU에 있는 루트 브리지 BID를 스위치 B의 BID로 바꾼다. 그래서 스위치 B가 Root Birdge가 된다.

스탭 2) 스위치 A가 부팅을 시작한다.

스위치 A (내가 대장 브리지야. 32768.1111.1111.1111) -> 스위치 B, 스위치 C

스위치 A <- 스위치 B, 스위치 C (B가 대장 브리지야. 32768.2222.2222.2222)

▶ 스위치 A가 루트 브리지가 된다.

졸병 브리지(Non Root Bridge)의 루트 포트 선출기

모든 Non Root Bridge는 반드시 한 개의 루트 포트(Root Port)를 갖는다.

루트 포트는 루트 브리지에서 가장 가까이(Path Cost가 가장 적게 드는) 있는 포트를 말한다.

스패닝 트리의 마지막 단계 데지그네이티드 포트(Designated Port)뽑기

세그먼트당 하나씩의 데지그네이티드 포트를 갖는다.

[선택규칙]

1) 세그먼트상에서 Root Path Cost를 서로 비교해서 더 작은 Root Path Cost를 가진 포트가 데지그네이티드 포트로 선출된다.

(루트 브리지의 모든 포트들은 언제나 데지그네이티드 포트로 선정된다)

2) Root Path Cost가 같을때

1단계 : 누가 더 작은 Root BID를 가졌는가 ?

2단계 : 루트 브리지까지의 Path Cost 값은 누가 더 작은가 ?

3단계 : 누구의 BID(Sender BID)가 더 낮은가 ?

4단계 : 누구의 포트 ID가 더 낮은가 ?

지금까지 스패닝 트리를 만드는 과정을 정리하면, 루트 브리지 하나 뽑아놓고, 루트 브리지를 제외한 나머지 모든 브리지에서 루트 포트를 뽑고,

데지그네이티드 포트를 뽑은 다음, 마지막으로 나머지 포트는 Non Designated 포트로 지정하면 된다.

스패닝 트리 프로토콜의 5가지 상태 변화

모든 스위치나 브리지의 포트들은 언제나 5가지로 상태가 변합니다.

Disabled : 이 상태는 포트가 고장나서 사용할 수 없거나 Shutdown 시켜논 상태

(전송 : X, 맥 어드레스 학습 : X, BPDU 송수신 : X)

Blocking : 스위치를 맨 처음 켜거나 Disabled되어 있는 포트를 관리자가 다시 살렸을때 블로킹 상태가 된다.

(전송 : X, 맥 어드레스 학습 : X, BPDU 송수신 : O)

Listening : 블로킹 상태에 있던 스위치 포트가 루트 포트나 데지그네이티드 포트로 선정되면 리스닝 상태가 된다.

(전송 : X, 맥 어드레스 학습 : X, BPDU 송수신 : O)

Learning : 리스닝 상태에 있던 포트가 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 계속 유지하면 러닝 상태가 된다.

(전송 : X, 맥 어드레스 학습 : O, BPDU 송수신 : O)

Forwarding : 러닝 상태에서 다른 상태로 넘어가지 않고 다시 포워딩 딜레이 디폴트 시간인 15초 동안 그 상태를 계속 유지하면 포워딩 상태가 된다.

(전송 : O, 맥 어드레스 학습 : O, BPDU 송수신 : O)

※ 블로킹 상태에 있던 포트가 리스닝과 러닝을 거쳐 포워딩 상태로 오려면 디폴트 포워딩 딜레이인 15초가 두번 지난 30초가 소요된다.

스패닝 트리에 변화가 생기던 날

스패닝 트리 용어

Hello Time : 루트 브리지가 얼마만에 한 번씩 헬로BPDU를 보내는지에 대한 시간. 디폴트 헬로타임은 2초.

Max Age : 브리지들이 루트 브리지로부터 헬로패킷을 받지 못하면 맥스 에이지 시간동안 기다린 다음 스패닝 트리 구조 변경을 시작한다.

Forwarding Delay : 브리지 포트가 블로킹 상태에서 포워딩 상태로 넘어갈때까지 걸리는 시간. 디폴트 15초

한 링크가 끊어졌을 때 스패닝 트리 프로토콜을 이용해서 다른 경로를 살리는데 걸리는 시간이 대략 50초(20+15+15) 정도 소요된다.

우리 생각처럼 하나의 링크가 끊어진다고 바로 다음 링크가 살아나는 것이 아니라는 50초라는 긴 시간이 걸린다.

  • 라우터 vs 스위치
    • 위치가 우세. 라우터는 내부에서 처리하는 일이 많아서 스위치보다 패킷처리속도가 느리다
    • 라우터없이 아주 빠른 스위치로만으로 네트워크를 구성하면 아주 근본적인 문제에 걸리게 되는데 바로 브로드캐스트이다. CPU의 성능을 저하시키기 때문이다.
    • 라우터는 로드분배의 기능을 제공해주고 프로토콜이나 데이터의 크기, 중요도 등 여러 상황에 따라 트 래픽의 전송 순서를 조정해주는 QoS(Quality of Service)기능도 제공한다.

IP주소로의 여행

  • 브로드캐스트 영역

    하나의 PC가 데이터를 뿌렸을 때 라우터를 거치지 않고 받을 수 있는 영역, 즉 같은 네트워크에 존재한다!

  • 네트워크 번호 호스트수
    A 1.0.0.0 ~ 126.0.0.0 16,777,214개
    B 128.1.0.0 ~ 191.254.0.0 65,534개
    C 192.0.1.0 ~ 223.255.254.0 254개
  • 네트워크가 서로 다른 두 장비 간의 통신은 라우터를 통해서만 가능
    - TCP/IP 통신 시에 라우터의 각 인터페이스 역시 IP주소를 부여해 주는 것이 좋음

  • 서브넷 마스크 - 주어진 IP주소를 네트워크 환경에 맞게 나누어 주기위해 씌워주는 이진수의 조합 - IP주소를 가지고 네트워크 부분과 호스트 부분인가를 나타내는 역할을 한다.

    • 클래스 A : 255.0.0.0 (기본 서브넷 마스크)
    • 클래스 B : 255.255.0.0
    • 클래스 C : 255.255.255.0

    1101 0010.0110 0100.0110 0100.0000 0001 = 210.100.100.1 -> IP주소

    1111 1111.1111 1111.1111 1111.0000 0000 = 255.255.255.0 -> 서브넷 마스크

    1101 0010.0110 0100.0110 0100.0000 0000 = 210.100.100.0 -> 서브넷 네트워크

    즉, 서브넷 마스크의 1부분과 IP 주소 를 and처리하면 세브넷 네트워크를 알수있다.

    서브네팅 - 하나의 주소를 서브넷 마스크를 씌워서 작은 네트워크로 만드는 것

    서브넷 마스킹 - 기존 IP주소의 호스트 부분의 일부를 네트워크 부분으로 바꾸는 작업

  • 서브넷 마스크로 만들어진 네트워크는 서로 나뉘어진 서브넷끼리는 라우터를 통해서 통신가능
  • 서브넷 마스크를 이용해서 나눈 다음에도 둘 사이에 라우터를 놓는 이유는 네트워크 주소의 효율적 인 이용과 브로드캐스트 도메인을 줄이기 위해서이다
  • 스크린샷 2020-09-09 오전 10.36.27

스위치를 켜라

  • 맥 어드레스
    스위치나 브리지가 출발지에서 들어오는 맥 어드레스를 보고 그것을 자신의 맥 어드레스 테이블에 저장한 다음, 그 주소 테이블에 있는 맥 어드레스를 찾으면 그쪽 포트로만 보내고 나머지 포트는 막아 줌으로써 스위치의 기본 기능중 하나인 콜리전 도메인을 막는 역할을 한다.

    • Dynamic(자동)방식 : 맥 어드레스를 자동으로 배움 하나를 배우고 사용한지 디폴트로 300초가 지 나도록 다시 사용되지 않으면 MAC 테이블에서 삭제됨(용량한계때문)
    • 수동(Permanent)방식 : 절대 지워지지 않도록 맥 어드레스를 저장하는 방식

    Mac Address Table

    Vlan Mac Address Type Ports

    1 000.f064.4b91 DYNAMIC Fa0/1

    이면 어느 쪽 포트에서든 이 맥 어드레스를 목적지로 갖는 녀석이 들어오면 그 패킷은 바로 패스트 이더넷 0/1쪽으로 보내준다는 의미

  • 가상 랜(Virtual LAN)

    한 대의 스위치를 마치 여러 대의 분리된 스위치처럼 사용하고, 또 여러 개 의 네트워크 정보를 하나의 포트를 통해 전송할수 있음. 하나의 스위이체 연결된 장비들도 브로드캐스트 도메인이 서로 다를 수 있다

    VLAN이 지원되는 라우터와 스위치를 사용하는 경우

    • 라우터 : 스위치로 하나의 링크만을 이용해서도 3개의 네트워크 정보를 같이 실어보낼수있음 한 선에 여러 개의 네트워크 정보를 보내는 것이 가능해짐

    • 스위치 : 여러 개의 브로드캐스트 영역을 나누어줄 수 있게됨

    • VLAN에서 꼭 기억해야 할 몇 가지

      • 스위치에서 지원하는 기능. 허브나 브리지 EH는 라우터에서 지원안함

        (한 대의 스위치를 여러 개의 네트워크로 나누기 위해서 사용)

      • VLAN으로 나누어지면 나누어진 VLAN간의 통신은 오직 라우터를 통해서만 가능

      • 각 포트들은 서로 다른 3개의 스위치 중 어디에도 속할수 있음.

      • 스위치 안에 있는 스위치 각각을 우리는 VLAN이라 한다

        트렁크포트(Trunk Port) - 하나의 포트를 통해 서로 다른 여러 개의 VLAN을 전송할 수 있게 하는 포트

        트렁킹 - 모든 VLAN이 하나의 링크를 통해 다른 스위치나 라우터로 이동하기 위해 만듦.

      • 트렁크 포트가 가능하기 때문에 VLAN은 여러 대의 스위치에 구성이 가능.
        즉, 같은 VLAN 1과 VLAN 1, VLAN 2와 VLAN 2, VLAN 3과 VLAN 3끼리만 통신가능

      • 패킷에 VLAN정보도 같이 전송되므로 어느 VLAN소속 패킷인지 목적지에서 구분가능

라우터만 알면 네트워크 도사?

  • 라우터

    • 의미 : 자신이 가야 할 길을 자동으로 찾아서 갈 수 있는 능력을 가진 것

    • 경로결정(Path Determination) : 데이터 패킷이 목적지까지 갈 수 있는 길을 검사하고 어떤 길로 가는 것이 가장 적절한지 결정

      • 라우팅 프로토콜 : 라우티드 프로토콜들에게 목적지까지 가장 좋은 길을 갈 수 있게 해주는 역할 ▪ RIP, IGRP, OSPF, EIGRP등이 있다.
      • 라우팅 테이블 - 라우터는 라우팅 테이블이라는 경로에 대한 지도 정보를 유지함
    • 스위칭(Switching) : 길이 결정되면 그 쪽으로 데이터 패킷을 스위칭해준다

      가장 좋은 경로를 결정하기 위해서 라우팅 알고리즘을 사용하고 라우팅 테이블을 만들어서 관리함.

      • 인터페이스 : 라우터에 나와있는 접속 가능한 포트(Ethernet과 Serial)
      • Ethernet : 내부 네트워크 접속시 사용, 즉 랜을 위한 접속 포트.
      • Serial포트 : WAN 접속을 위한 포트 DSU/CSU와 연결, 외부 네트워크(인터넷 또는 원격지) 접속

라우팅 프로토콜과의 한판

  • RIP

    • 라우팅 프로토콜이다.

    • 다이나믹 프로토콜이다

    • 내부용 라우팅 프로토콜(IGP)이다

    • 디스턴스 벡터 알고리즘이다(Distance(거리)와 Vector(방향)으로 길을 찾아가는 프로토콜)

    • RIP 라우팅 프로토콜에서 라우터가 좋은 길을 결정할 때 기준이 되는 요소는 홉(Hop) 카운트이다

    • RIP 라우팅 프로토콜에서 최대한 갈 수 있는 홉 카운트의 거리는 15개까지 가능 16개부터는 도착불가

      디폴트 업데이트 주기는 30초.

    • 가장 낮은 홉 카운트가 가장 좋은 경로라고 결정한다.

    R 203.240.200.0/24 [120/1] via 203.240.150.2, 00:00:21, Serial0

    R은 RIP로 찾아낸 길을 의미하고 203.240.200.0은 목적지 네트워크(찾아낸 목적지) /24는 255.255.255.0 -> 서브넷 마스크를 이진수로 바꾸었을 때 1의 숫자를 의미하고 120은 RIP의 디스턴스 값을 나타낸다. 그 뒤에 있는 1은 코스트를 의미하는데 RIP에서는 코스트가 홉 카운트니까 1홉 떨어져서 목적지가 있다고 보면된다

    C 203.240.100.0/24 is directly connected, Ethernet0

    C 203.240.100.0/24 is directly connected, Serial0

    C는 connect를 의미하고 라우터에 붙어있는 네트워크임을 알려줌

  • IGRP(Interior Gateway Routing Protocol) ▪ RIP처럼 라우팅 프로토콜이다

    • 다이나믹 프로토콜이다

    • 내부용 라우팅 프로토콜(IGP)이다

    • 디스턴스 벡터 알고리즘이다. 거리와 방향으로 길을 찾는 프로토콜

    • Distance - Vector의 문제점
      한번 배운 라우팅 테이블을 계속 전달하기 때문에 업데이트가 모든 네트워크에 전달되는 시간(Convergence Time)이 많이 걸린다. 이것 때문에 루핑이 발생할 수 있다. 예를들어 업데이트 주기가 30초이면 라우터 A는 30초 후에 변경된 라우팅 테이블을 라우터 B에게 보내고 라우터 B는 다시 30초 후에 라우터 C에게 보내기 때문에 라우터 C는 라우터 A가 라우팅 테이블 변화를 인지한지 60초후에 알수 있게된다.

IPX에 대한 이야기

  • TCP/IP처럼 라우티드 프로토콜이다(라우트 되어지는 프로토콜)
  • IP프로토콜과의 차이점은 IP는 인터넷에서 사용되고 IPX는 내부 네트워크에서 사용됨

라우터, 그 속으로 전진!

  • 네트워크 접근 제어 액세스 리스트(Access List)

    • 액세스 리스트

      접근을 하게 해줄까 말까를 미리 정해놓은 리스트라고 할수있다

      • 주로 보안을 위해서 사용되고 있다

      • 이 액세스 리스트가 모든 침입자를 완벽하게 막지 못하기 때문에 보안장비를 따로 둔다

      • 종류

        • 스탠더드 액세스 리스트(Standard Access List)

          일반적이고 쉬움, 출입통제를 할 때 출발지 주소만을 참고해서 제어, 어디서 왔는가를 본 다음 통과 여부를 결정함

        • 익스텐디드 액세스 리스트(Extended Access List)

          복잡 다이나믹 액세스 리스트라고도함, 출발지, 목적지, 프로토콜, 사용포트번호등 다 본 다음에 통과 여부를 결정

        • 유저 네임(User Name)

          유저 네임과 패스워드에 따라 통제가 가능한 액세스 리스트, 액세스 리스트에 걸려서 못들어가는 경우 Host Unreachable 란 메시지가 나타남

  • 액세스 리스트에서 중요한 네가지 규칙

    • 윗줄부터 하나씩 차례로 수행된다
    • 맨 마지막 line에 “Permit any”를 넣지 않을 경우 default로, 어느 액세스 리스트와도 match 되지않은 나머지 모든 address는 deny된다
      • 마지막줄에는 항상 모든 것을 막는 deny all이 들어 있음
      • 액세스 리스트에 해당하지 않는 주소는 마지막에 deny all에 걸려서 막힘
    • 새로운 line은 항상 맨 마지막으로 추가되므로 access-list line의 선택적 추가(selective add)나 제거(remove)가 불가능함
      • 잘못 내린명령은 no를 이용해서 지우는데 맨 마지막줄만 남기고 모두 지우게되므로 조심해야함
    • interface에 대한 액세스 리스트의 정의(define)가 되어 있지 않은 경우(즉 interface에 access-group) 명령이 들어있지 않은 경우) 결과는 permit any가 된다
      • 액세스 리스트를 거치지 않고 바로 통과되었기 때문에 당연히 permit any가 됨
  • IP 주소의 변환 NAT(Network Address Translation)

    한쪽 네트워크의 IP 주소가 다른 네트워크로 넘어갈 때 변환이 되어서 넘어가는 것

    • 내부 네트워크에는 비공인 IP 주소 사용 외부 인터넷으로 나가는 경우에만 공인 IP 사용하는 경우
    • ISP를 바꾸면서 내부 전체의 IP를 바꾸지 않고 기존 IP를 그대로 사용하는 경우
    • 두 개의 인트라넷을 합하려다 두 네트워크의 IP가 겹치는 경우
    • TCP 로드 분배가 필요한 경우

    Inside Local 주소 - 내부 네트워크에서 사용하는 비공인 주소

    Inside Global 주소 - 외부로 나갈 때 변환되어 나가는 주소

세상이 넓고 네트워킹은 계속된다

  • WAN

    • 넓은 지역의 네트워킹에서도 중간에 통신 회사를 통해서 네트워킹을 구축할때사용

    • 사용하는 목적, 사용료, 거리, 방법 등에 따라 다양한 종류

    • 전용선 방식(Leased Line) : 임대회선으로 볼수있음. 회선을 나 혼자 빌려쓰는것임 비용이 비쌈

    • 회선 스위칭 방식(Circuit Switched) : 내가 통신을 하는 순간에만 나에게 필요한 회선을 열어주고

      통신이 끝나면 회수하는 방식. 전화와 같음

    • 패킷 스위칭 방식(Packet Switched) : 패킷 하나하나가 나누어서 통신회선을 타고 목적지까지 전달

      버추얼서킷 : 사실은 나에게 배정된 회선이 없는데 있는것처럼 통신하는 방식을 이용함. ex) 프레임 릴레이, ATM, X25등이 있음

  • PPP(Point-to-Point)

    • 강력한 보안기능과 여러 가지 네트워크 게층 프로토콜을 한꺼번에 지원하는 장점을 가진 표준 프로토콜

    • 가장 괜찮은 인캡슐레이션 방식

      • NCP(Network Control Protocol) : IP, IPX, Appletalk 등 멀티프로토콜 지원
      • LCP(Link Control Protocol) : 링크 접속에서의 보안, 에러 체크, 압축기능 및 멀티링크 PPP와 같은 다양한 접속 옵션을 제공
      • LCP를 주목하는 이유는 보안기능때문인데 안전한 PPP 통신을 책임진다
    • PAP(PPP Authentication Protocols or Password Authentication Protocol)

      간편하면서도 가장 일반적인 패스워드 확인법

      A라우터가 Host name과 Password를 B라우터로 보내면 일치여부를 바로 알려준다.(접속허가/불허)

      • 2-Way Handshake 방식인증이라고도 하는데 인증을 위해 두 번의 통신이 이루어진것이다.
      • 암호화되어 전송되지도 않고 위험성이 크다.
        • CHAP(Challenge Handshake Authentication Protocol)
          • PAP처럼 중간에서 해킹할수 없게 만들었다
          • 3-Way Handshake 방식. 해킹기법을 사용하였음.
          • B라우터로 접속 시도를 하면 A라우터로 Challenge값을 보내고 받은 챌린지 값으로 패스워드를 암호화하여 보내고 접속허가/불허를 받음
          • 해싱(Hashing) - 기존의 데이터를 어떤 코드 값을 이용해서 완전히 변형시켜서 절대 원본 데이터로 돌아갈 수 없게 만듬.
CATALOG
  1. 1. 왜?
  2. 2. 네트워크 세상에 들어서며
  3. 3. 네트워크와 케이블 etc…
    1. 3.1. CSMA/CD
    2. 3.2. TokenRing
  4. 4. TCP/IP와의 만남
  5. 5. 네트워크 장비들에 관한 이야기
  6. 6. IP주소로의 여행
  7. 7. 스위치를 켜라
  8. 8. 라우터만 알면 네트워크 도사?
  9. 9. 라우팅 프로토콜과의 한판
  10. 10. IPX에 대한 이야기
  11. 11. 라우터, 그 속으로 전진!
  12. 12. 세상이 넓고 네트워킹은 계속된다