IT 엔지니어를 위한 네트워크 입문이 읽기 싫을때 - 1

고승원·2023년 10월 29일
0

TIL

목록 보기
23/24
post-thumbnail

이 글은 IT 엔지니어를 위한 네트워크 입문 스터디를 마치고 정리한 글이다.

이전에 정리했던 RealMySQL 정리와는 조금 다르게 양이 너무 많아 설명을 모두 적으면, 책을 다시 읽는게 더 좋을 것 같아 키워드 위주로 정리했다.

1. 네트워크 구성도

네트워크는 단말간 물리적인 연결이 필요하다.(케이블부터 공기까지)

보통 상-하 또는 좌-우로 트래픽을 분산한다.

단말간 통신을 어떻게 할까? 통신 규약(프로토콜)이 있다.

통신 규약은 여러가지가 있지만 현재는 이더넷의 TCP/IP 기반이 대부분이다.

OSI 계층별 설명

TCP/IP 프로토콜 스택

  • 이더넷 : 물리 연결
  • 네트워크 계층 : 데이터가 목적지를 찾도록 한다.
  • 전송 계층 : 잘린 패킷을 데이터 형태로 조합한다.
  • 애플리케이션 계층 : 전송과 동일하다.

OSI 7 계층 스택

  1. Physical (허브, 리피터, 케이블, 커넥터 등)
    물리적 연결과 관련된 정보로 전기신호를 전송한다.

  2. DataLink (랜카드, 스위치)
    전기신호를 우리가 알아볼 수 있는 형태로 처리한다.
    주소 정보를 정의하고, 정확한 주소(MAC주소)와 통신하는데 초점이 맞춰져있다.(상대방이 받을 수 있는지 확인한다.)
    데이터에 대한 에러 탐지/수정 역할(이더넷 기반에선 탐지만)

    랜카드에는 고유한 MAC주소가 있는데 입력되는 전기신호를 데이터로 바꾸고, MAC주소를 확인한 뒤 자신에게 돌아오는 전기신호를 확인한다. 통과하면 메모리에 적재
    스위치는 단말의 MAC주소와 포트번호를 습득한다. 이 데이터를 기반으로 포트를 필터링하고, 포워딩한다. 스위치의 발전과 함께 이더넷 기반 네트워크는 급증했다.

  1. Network (라우터)
    IP(네트워크 주소 + 호스트 주소)와 같은 논리적인 주소 정의.
    네트워크 주소를 이용해 원격지 네트워크 최적의 경로를 지정한다.
  1. Transport
    데이터들이 정상적으로 잘보내지는지 확인하는 역할.(로드밸런서, 방화벽)
    패킷이 유실되거나, 순서가 바뀌는 경우를 바로잡아준다.
    보내는 순서는 시퀀스, 받는 순서는 ACK이라 하고, 포트번호를 사용해 상위 애플리케이션을 구분한다. 이 정보를 이용해 부하를 분산하거나, 보안정책을 수립한다.

  2. Session
    양 끝단의 응용프로세스가 연결을 성립, 안정적으로 유지, 작업 후 연결 종료.
    세션을 관리하는 것이 주요 역할. TCP/IP 세션을 만들고 책임진다.
    에러에 대한 복구와 재전송 수행

  3. Presentation
    표현 방식이 다른 애플리켕이션 또는 시스템간의 통신을 위해 통일된 구문으로 변환한다. (MIME인코딩, 암호화, 압축, 코드변환등)

  4. Application
    애플리케이션 프로세스를 정의하고, 서비스 수행.(FTP, SMTP, HTTP, TELNET등)
    소프트웨어 UI 또는 사용자 입출력을 정의한다.

계층간 통신

상위에서 하위 계층으로 보낼때 헤더를 추가하고 전기신호로 만드는 것을 인캡슐레이션,

하위에서 상위 계층으로 보낼때 헤더를 벗기고 데이터를 올려 보내는 것은 디캡슐레이션이라 한다.

2. 네트워크 연결과 구성 요소

네트워크 연결 구분

예전에는 여러 LAN, MAN, WAN등 프로토콜이 존재했지만, 현재는 이더넷으로 통합 되어 구분은 의미가 없어졌다.

  • LAN : 사무실용 소규모 네트워크를 뜻한다. 근거리 전용이라 스위치와 같은 간단한 장비로 연결된 네트워크를 뜻한다.
  • MAN : 100km 이내의 한 도시를 연결하는 네트워크를 뜻한다.
  • WAN : 먼 거리에 있는 네트워크를 연결하기 위해 사용된다. 대부분 통신사로부터 임대해서 사용한다.

네트워크 회선

원격지 네트워크에 연결하기 위해서 WAN을 사용하는데 WAN도 이더넷을 사용한다.

특별한 상황에선 다른 기술을 사용하기도 한다.

  • 인터넷 회선 : 인터넷 접속을 위해 통신사와 연결하는 회선 (연결하지 않은 회선보다 저렴하지만, 내부 선로를 공유하기 때문에 사용자가 많으면 느려진다.)
  • 전용 회선 : 가입자와 통신사간 대역폭을 보장해준다. (직접 연결한 것같은 품질을 보장한다.)
  • 인터넷 전용 회선 : 인터넷 연결 회선에 대해 대역폭을 보장해준다.(ex.이더넷)
  • VPN : 가상으로 연결한 것 같은 효과를 만들어 준다. (거리가 늘어날수록 비용이 증가한다.

네트워크 구성 요소

  • 네트워크 인터페이스 카드(랜카드) : 컴퓨터를 네트워크에 연결하기 위한 장치.
    • 주 역할 : 데이터 변환, MAC주소가 아니면 패킷 폐기, 흐름 제어
    • 일부 랜카드는 L3 스위치 기능이 내장되어 가상화 서버끼리 연결하는 vSwitch 가속 기능도 제공된다.
  • 케이블과 커넥터 : 신뢰도 높은 통신에선 유선 통신을 사용한다. (ex.트웨스티드 페어, 동축, 광)
    • 구성 : 트랜시버(신호변환), 케이블 본체(케이블), 커넥터(연결 부분)
  • 허브 : 거리가 멀어질수록 전기신호가 줄어드는데 이를 재생성하고, 여러대의 장비를 연결하는 목적으로 사용.
    • 무한 순환 문제로 잘 사용하지 않음
  • 스위치 : 허브와 동일하게 여러 장비를 연결하고 통신을 중재한다. (2계층)
    • 허브와 동일하게 사용되어 허브라고 불리기도 한다. 다만, 해당하는 MAC 주소에만 전송하여 낭비가 없다.
  • 라우터 : 먼 거기로 통신할 수 있는 프로토콜로 변환시키는 장비이다. (3계층)
    • 브로드캐스트 : 로컬 네트워크의 모든 시스템에게 전송하는 방식 (성능 저하가 야기됨)
    • 멀티캐스트 : 네트워크에 연결되어 있는 시스템중 일부에게만 전송하는 방식
  • LB : 4계층 포트 주소를 확인할 수있으며, IP를 변경할 수 있다. 그리고 헬스체크 및 대용량 세션 처리도 가능하다. (ex. L4 스위치)
  • 보안장비 : 가장 많이 알려진 장비는 방화벽이며 4계층에서 패킷 정책과 비교하여 포워딩 한다.
  • 모뎀과 공유기 : 공유기는 2계층의 스위치, 3계층의 라우터, 4계층의 NAT 그리고 간단한 방화벽을 모아놓은 장비이다. 기기 내부는 스위치, 무선, 라우터 회로로 나뉜다.

3. 네트워크 통신하기

출발지에서 목적지로 데이터를 전송할 때 통신하는 방법은 다음과 같다.

  • 유니캐스트 : 1:1 통신 방식 실제로 대부분의 통신은 유니캐스트 방식이다.

  • 브로드캐스트 : 동일 네트워크에 모든 호스트에 패킷을 전달할때 사용. 유니캐스트로 통신하기 전에 상대방의 정확한 위치를 알기위해 사용한다.

    • IPv6에선 브로드캐스트가 존재하지 않고 링크 로컬 멀티캐스트로 대체된다.
  • 멀티캐스트 : 해당 그룹에 속한 다수의 호스트로 패킷을 전송한다. 사내방송이나 증권시세, IPTV와 같은 실시간 방송을 사용한다.

  • 애니캐스트 : 주소가 같은 호스트중에 가장 가깝거나 효율적으로 서비스할 수 있는 호스트와 통신하는 방식이다.
    가장 가까운 DNS 서버를 찾거나, 가장 가까운 게이트웨이를 찾는 애니캐스트 게이트웨이를 사용하기도 한다.

    최초 통신은 1:1로 유니캐스트와 애니캐스트가 동일하지만 통신할 후보자는 다르다. 유니캐스트는 정확한 출발지와 목적지가 있지만, 애니캐스트는 같은 목적지 주소를 가진 서버가 여러대여서 다수의 후보군이 있다.

MAC 주소

2계층 통신을 위해 네트워크 인터페이스에 할당된 물리적인 고유 식별자를 뜻한다.

2계층에서 전기 신호를 데이터로 변경하고, 도착 MAC주소를 확인한다. 이때 본인의 주소와 다르면 폐기한다.

IP 주소

3계층에서 사용되는 논리적인 주소를 뜻한다.

IPv4는 4개의 옥텟으로 나누는데, 옥텟 단위로 주소와 호스트를 나누어 네트워크를 세밀하게 분할할 수 있다.(요새는 비트 단위로 분할함)

TCP, UDP

4계층 프로토콜을 뜻한다. 2,3 계층과 다르게 출발지와 도착지를 구분해 처리한다.

  • TCP : 세션을 안전하게 연결하고 패킷이 잘 전송되었는지 확인한다.
    • 패킷에 sequence를 만들고 순서를 보장한다. 각 패킷은 윈도 사이즈에 맞춰서 전송된다.
    • 3wayhandshake를 통해 통신 시작 전 사전 연결작업을 진행한다.
  • UDP : 데이터 신뢰성을 보장하지 않는 대신 빠른 속도를 보장한다.
    • 4계층 프로토콜의 특징이 거의 없고, 헤더도 비교적 가볍다.

ARP (Address Resolution Protocal)

2계층의 MAC 주소와 3계층의 IP 주소는 관계가 없는데 어떻게 알아낼까 → ARP 사용

첫 통신을 할 때 IP주소는 알지만, MAC 주소를 몰라 캡슐화 할 수 없다. 이때 ARP를 사용해 브로드캐스트로 MAC 주소를 질의한다.

ARP 요청은 CPU가 처리하기 때문에 요청이 몰리면 부하가 생긴다.(ARP 공격을 하기도 함) 따라서 ARP 필터링이나, 캐시를 사용해 성능을 높인다.

  • GARP : IP 필드에 자신의 IP를 채워 보내는데, 이는 IP 충돌 감지, 상대방의 ARP테이블 갱신, 고가용성 클러스터링등의 목적이 있다.
  • RARP : MAC 주소를 알고, IP 주소가 할당되지 않은 단말에 할당하기 위해 사용

서브넷과 게이트웨이

게이트웨이 : 원격지 네트워크와의 통신에 사용하는 장비 (ex. 라우터, L3스위치)

서브넷 : 원격지 네트워크 통신을 할 때 목적지가 동일한 네트워크 인지 확인하는 용도 (다른 네트워크는 ARP 못보냄)

4. 스위치: 2계층 장비

스위치는 여러 장비가 동시에 패킷 통신할때 간섭이 없도록 도와주는 장비이다.

기존에는 스위치가 없어 패킷 경합이 일어났었는데, 스위치 덕분에 네트워크 효율성이 향상되었다.

스위치 동작 방식

  1. 플러딩 : 스위치가 부팅하면 네트워크 관련 정보가 아무것도 없다. 이때 스위치는 요청이 들어온 포트를 제외하고 모든 포트로 패킷을 전달한다. (허브와 같음)
    패킷 정보의 MAC 주소를 보고 이를 학습해 테이블을 만들고 이를 통해 패킷을 전송한다.
    - 비정상적인 플러딩 : TCP/IP 네트워크에선 ARP 브로드캐스트를 미리 주고받은 후 데이터가 전달되기 때문에 플러딩하지 않는다. 스위치를 사용해 필요한 곳에만 포워드 하므로 주변 통신을 악의적으로 가로채기 힘들어 보안에 도움이 된다.

  2. 어드레스 러닝 : MAC 주소 테이블을 만들고 유지하는 과정을 뜻한다. 패킷의 출발지 MAC 주소를 이용해 테이블에 기록한다.

  3. 포워딩/필터링 : 패킷이 스위치에 들어온 경우 자신의 MAC 테이블과 비교해 매치되는 포트로 포워딩한다. 이때 다른 포트로 패킷을 전송하지 않는데 이를 필터링이라고 한다.

VLAN

물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술이다.

브로드캐스트로 단말들의 성능저하, 보안 향상을 위한 차단 용도, 정책 분리 같은 이유로 네트워크를 분리한다.

VLAN으로 나뉜 네트워크는 유니캐스트, 브로드캐스트로 통신할 수 없으며, 3계층 장비를 통해 통신해야 한다.

종류와 특징

  • 포트기반 VLAN : 스위치를 논리적으로 분할해 사용하는 방법. 일반적으로 사용되는 방법으로 어떤 단말에 접속하든지 스위치의 특정 포트에 VLAN을 할당하면 할당된 VLAN에 속하게 된다.
  • MAC 기반 VLAN (다이나믹 VLAN) : 스위치의 고정 포트에 VLAN을 할당하는 것이 아니라 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당하는 방법이다.

VALN 모드 동작 방식 (포트 기반)

같은 스위치의 다른 VLAN은 별도의 스위치에 연결된 것과 같으므로 ARP 요청이 전달되지 않아 VLAN 간 통신이 불가능하다. 따라서 3계층 장비를 사용해야 한다.

여러개의 VLAN이 존재하는 상황에서 스위치를 서로 연결해야 하는 경우에는 각 VLAN끼리 통신하려면 VALN 개수만큼 포트를 연결해야한다. VLAN을 많이 사용하는 중형 이상의 네트워크에선 통신을 위한 포트만으로도 많은 포트가 낭비된다.

태그 포트 : 여러 VLAN이 한번에 통신하도록 해주는 포트다. 패킷이 들어올 경우 태그를 벗겨내면서 태그된 VLAN으로 패킷을 전송한다.

VLAN 태그 기능은 이 문제를 해결할 수 있다. (태그포트, 트렁크포트)

하나의 포트에 여러개의 VLAN을 함께 전송할 수 있게 해준다. 태그 포트는 이더넷 프레임 중간에 VLAN ID 필드를 끼워넣어 이 정보를 이용하는데, 보낼때 VLAN ID를 붙이고 수신측에서 제거하면서 VLAN으로 패킷을 보낼 수 있다.

태그 포트 기능이 스위치에 생기면서 스위치 패킷 전송에 사용되는 MAC 주소 테이블에도 변화가 생긴다.

다른 VLAN과 통신하지 못하도록 MAC 테이블에 VLAN을 지정하는 필드가 추가된다.

STP

IT 환경에서 SPoF로 인한 장애를 피하기 위해 다양한 노력을 한다. 네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해 N중화 네트워크를 디자인하고 구성한다.

  • SPoF : 하나의 시스템 또는 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소

SPoF를 피하기 위해 장비를 두 대 구성하면 네트워크 루프가 일어나 마비시킬 수 있다.

루프를 예방하기 위해 별도의 매커니즘이 필요한데 어떤 방법이 있는지 알아보자

루프

루프의 원인은 크게 많지 않다.

  • 브로드캐스트 스톰 네트워크가 연결된 상태에서 브로드캐스트를 발생시키면 스위치는 유입된 포트를 제외한 모든 포트로 플러딩 한다. 루프 구조인 경우 이 패킷이 계속 돌아가는데 이를 뜻한다.
  • 스위치 MAC 러닝 중복 문제 루프 구조 상태에선 브로드캐스트 뿐만 아니라 유니캐스트도 문제를 일으킨다. 스위치는 출발지의 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소 학습이 정상적으로 이루어지지 않는다. 이를 MAC 어드레스 플래핑이라고 한다.

STP(Spanning Tree Protocol)

루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 매커니즘이다.

STP를 사용해 루프를 예방하려면 전체 스위치가 어떻게 연결되는지 알아야 한다. 전체적인 스위치 연결 상황을 파악하려면 스위치 간에 정보를 전달해야 하는데, 이를 위해 스위치는 BPDU라는 프로토콜을 통해 스위치간 정보를 전달하고, 루프 구간을 확인한다.

스위치 포트의 상태 및 변경 과정

STP가 동작중인 스위치에서는 루프를 막기 위해 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단한다. 그리고 4가지 상태를 거쳐 포워딩 된다.

  1. Blocking : 패킷 데이터를 차단한 상태로 상대방이 보내는 BPDU를 기다린다.
  2. Listening :해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계이다.
  3. Learning : 해당 포트를 포워딩하기로 결정하고 실제로 패킷 포워딩이 일어날 때 스위치가 곧바로 동작하도록 MAC 주소를 러닝하는 단계.
  4. Forwarding : 패킷을 포워딩하는 단계로 정상적으로 통신한다.

다음과 같은 단계를 거치기 때문에 스위치에 신규 장비를 붙이면 통신하는데 50초가 소요된다. 스위치는 루프를 예방하기 위해 매우 방어적으로 동작하기 때문에 새로운 장비가 스위치가 아니어도 동일한 시간이 필요하다.

향상된 STP(RSTP, MST)

STP는 네트워크에 속한 모든 스위치까지 BPDU가 전달되는 시간을 고려해 30~50초의 시간이 소요된다. 너무 오래 걸리기 때문에 속도 향상이 필요했다.

  • RSTP : STP가 활성화 되기까지의 시간이 오래걸려 개발되었다. 2~3초의 절체 시간이 있어 일반적인 TCP 통신이 세션을 유지할 수 있게 한다.
  • MST
    • CST(Common Spanning Tree)
    • PVST(Per Vlan Spanning Tree)
    • MST(Multiple Spanning Tree)
profile
봄은 영어로 스프링

0개의 댓글