베지밀
LAN과 라우팅 본문
네트워크를 하다보면 ~AN이라는 용어를 많이 접하게 된다. LAN, WAN, MAN, PAN, CAN 등..
여기서 AN은 네트워크의 범위를 의미하고, 그 앞에 붙는 단어로 네트워크 범위를 정의하게 된다.
LAN은 그 중에서도 네트워크의 기본이 되는 영역이다.
LAN(Local Area Network)
LAN을 한 마디로 표현하면 ARP Request 패킷이 미치는 범위이다.
스위치는 아무리 여러 대가 있어도 하나의 LAN이며, 라우터는 LAN을 구분하는 경계선이다.
- 동일 LAN에서의 통신
- 목적지 IP로 직접(스위치를 거쳐) 데이터를 보낸다.
- 다른 LAN에서의 통신
- 목적지로 향하는 길(route)을 아는 라우터 IP로 보낸다. 이 '라우팅' 과정을 반복하여 목적지로 향한다.
- 이 때, ARP Request를 누구에게 보내야 할지 알려주는 것이 Routing Table이다.
LAN 통신과 3테이블
패킷이 한 호스트에서 다른 호스트로 넘어갈 때는 다음과 같이 동작한다.
- 출발지 PC에서 라우팅 테이블을 참조하여 목적지 PC IP에 대한 next hop을 찾는다
ARP 테이블에서 next hop에 대한 MAC 주소가 있는지 확인하고, 없다면 ARP Request를 보내서 MAC주소를 찾는다. - 스위치는 ARP Request를 받은 후 MAC 테이블을 생성하여 ARP Request를 같은 네트워크 상의 PC에게 브로드캐스트한다.
- 목적지 PC는 스위치로부터 받은 ARP Request에 대해 자신의 MAC 주소가 포함된 ARP Reply를 보낸다.
- 스위치는 MAC 테이블에 수신 포트와 MAC 주소 정보를 기록하고 출발지 PC에게 ARP Reply를 보낸다.
- 출발지 PC는 ARP 테이블에 목적지 PC의 MAC 주소를 등록하고 메세지를 송신한다.
여기서 각 테이블의 역할은 다음과 같다.
라우팅 테이블 | 목적지로 가기 위한 게이트웨이(Next hop)를 관리한다. |
ARP 테이블 | PC측에서 IP주소에 해당하는 MAC주소를 관리한다. - 모든 IP 장비들은 라우팅 테이블과 ARP 테이블을 갖고 있다. - 라우팅 테이블에서 Next hop IP를 찾고, ARP 테이블에서 Next hop IP에 대한 MAC주소를 찾는다. |
MAC 테이블 | 스위치 측에서 어떤 포트(인터페이스)가 어떤 MAC 주소와 연결되어 있는지 관리한다. - MAC 테이블은 있을수도(L2 스위치를 사용하는 등) 없을수도(라우터 간 케이블로 연결된 경우) 있다. - 라우터를 통과할 대마다 MAC주소는 바뀌기 때문이다. - L2 스위치를 통과할 때마다 MAC주소는 바뀐다. 라우터는 각 LAN 구간을 연결하기 때문에 MAC주소를 바꿔서 '라우팅'한다. |
ARP 테이블
- ARP Request는 Broadcast된다. ARP Reply로 MAC 주소를 알아내서 패킷을 상대방에게 보내도록 한다.
- 유형이 정적인 항목은 OS나 관리자가 직접 생성한 것으로, 시간이 지나도 삭제되지 않는다.
- 유형이 동적인 항목은 ARP Reply를 통해 PC가 생성한 항목이기 때문에 timeout 시간이 경과하면 삭제된다.
- 이 과정에서 스위치가 브로드캐스팅을 통해 MAC 주소를 알아내준다.
- 참고 : Promiscuous mode (무차별 모드)
- 수신되는 모든 이더넷 프레임을 수신해서 IP계층으로 보내는 것
- 기본적으로 L2스위치는 모두 무차별 모드가 설정되어있다.
MAC 테이블
- 스위치에서 관리하는 MAC주소와 Port를 연결한 테이블
- 스위치가 이더넷 프레임을 수신하면 MAC 테이블을 생성하여 해당 MAC 주소와 Port를 기록한다.
라우팅 테이블
- 모든 IP장비는 자신의 Interface IP를 설정하면 자동으로 라우팅 테이블에 등록된다.
- 라우팅의 4가지 상황
- 목적지가 자신의 인터페이스면? → 직접 패킷 전달
- 목적지가 다른 LAN인데 길을 아는 경우? → 다음 라우터로 전달
- Default Gateway가 설정된 경우? → Default Gateway로 전달
- 가는 길도 모르고 셋 다 아니면? → 패킷 Drop
- 라우팅 테이블 보기
- 게이트웨이 = 다른 LAN으로 가기 위한 다음 라우터의 IP = Next hop
- 네트워크 대상이 0.0.0.0인 것 = Default Gateway
- 게이트웨이가 '연결됨'인 항목 = 직접 연결된 상황(1번 상황)
- 인터페이스 = 호스트 interface에 할당된 IP
- 매트릭 = 우선순위. 숫자가 작을 수록 높은 우선순위를 갖는다.
이제 LAN에 대해 알았으니 LAN 간 통신을 수행하는 라우팅에 대해 알아보자.
🌐라우팅이란?
라우팅이란 IP 패킷을 다른 네트워크로 전달하는 과정이다.
라우터는 네트워크 간 경로를 찾아 데이터를 전송하며, 이를 통해 물리적으로 멀리 떨어진 네트워크끼리도 통신할 수 있다. 이 과정은 네트워크 통신의 핵심 요소로, 안정적인 데이터 전송을 위해 반드시 필요한 기술이다.
라우팅 과정
라우팅은 다음 단계로 이루어진다.
- 이더넷 헤더와 FCS 제거
라우터가 받은 패킷의 MAC 주소가 자신의 주소와 일치하면 헤더와 FCS를 제거한다. - 목적지 IP 주소 확인
동일 네트워크 : 목적지 호스트로 직접 전달
다른 네트워크 : 라우팅 진행 - 패킷 헤더 수정
TTL(Time to Live)를 1 감소시키고 헤더 체크섬을 새로 계산한다. - 라우팅 테이블 조회
목적지 네트워크에 해당하는 넥스트 홉(다음 라우터)를 확인하고 새로운 이더넷 헤더를 생성한다. - ARP 프로토콜 실행
목적지 MAC 주소를 확인하고 패킷을 다음 라우터로 전달한다. - 양방향 통신
최종 목적지에 도달하면 L2 헤더를 교체하여 이에 대한 응답을 전송한다.
라우팅 테이블과 구성
라우팅을 할 때에는 라우팅 테이블을 참조하게 되는데, 라우팅 테이블은 네트워크 경로 정보를 담고 있다.
네트워크 경로 정보 중 중요하게 봐야할 것은 "네트워크 주소/서브넷 마스크와 넥스트 홉 주소"이다.
라우터는 네트워크 전체를 알 필요 없이 자신을 중심으로 한 이웃 라우터까지만 알면 된다.
라우팅 테이블은 크게 세 가지 방법으로 생성된다.
- 직접 접속: 특별한 설정 없이 네트워크 인터페이스에 IP 주소를 설정하면 자동 생성. '직접 접속된 네트워크만' 알 수 있음.
- Static Routing: 관리자가 라우터에서 명령어로 경로를 수동 등록
- Routing Protocol: 라우터 간 정보 교환을 통해 라우팅 경로 자동 등록
주요 라우팅 프로토콜
라우팅 프로토콜의 종류는 다양하고 그 구분도 다양하지만 이 포스팅에서는 간단한 정의만 다루도록 하자.
- RIP (Routing Information Protocol)
- 거리 벡터 기반, 최소 홉 카운트 계산.
- 최대 홉 수 15로 제한되며, 주로 내부용(IGP)으로 사용.
- OSPF (Open Shortest Path First)
- 링크 상태 기반, 최단 경로 계산.
- 중대형 네트워크에서 주로 사용.
- BGP (Border Gateway Protocol)
- 외부 네트워크(인터넷 백본) 라우팅에 사용.
VLAN과 L3 스위치
VLAN은 하나의 스위치를 여러 네트워크로 분리하는 기능인데, 서로 다른 VLAN 끼리 통신하려면 라우터나 L3 스위치가 필요하다.
포트는 임의로 설정할 수 있으며, 같은 VLAN에 할당한 포트끼리만 이더넷 프레임을 전송하여, ARP 브로드캐스트의 범위를 좁혀주는 역할을 한다. 이를 통해 스위치나 네트워크 상의 부하를 예방하는 효과도 있다.
사진에서 L3 스위치 상단에는 인터넷으로 나가는 길인 e0, e1이 있고, 하단에는 PC와 직접 연결된 인터페이스 e2, e3, e4가 있다.
각 인터페이스에 VLAN을 설정해주면 PC1은 PC2, PC3과 통신하기 위해 최상단의 라우터를 거쳐야 한다.
PC2, PC3이 ARP 패킷을 보냈을 때, PC1은 이를 수신할 수 없다.
결국, 하나의 스위치와 연결되어 있지만 다른 네트워크로 인식하기 때문이다.
그런데 만약 L3 스위치와 라우터 간에 VLAN이 100개가 있다면?
스위치 간 연결이 많아지면 라우터의 인터페이스는 한정적이기 때문에 비효율적일 것이다.
따라서 이를 효율적으로 연결하기 위한 것이 트렁크 포트이다.
트렁크 포트
하나의 포트로 다수의 VLAN이 지나갈 수 있도록 하는 것이 트렁크포트이다.
VLAN 포트로 송수신하는 이더넷 프레임에는 이더넷 헤더를 확장하여 VLAN 태그(VLAN ID)를 추가하고, 스위치는 VLAN 태그로 VLAN을 식별하여 통신할 수 있다.
f1/1, f1/2, f1/3에서 들어온 데이터를 스위치가 f1/0을 통해 보내면 라우터는 f0/0에서 받기만 하면 된다.
그러면 간편하게 하나의 인터페이스와 하나의 케이블로 여러 VLAN을 관리할 수 있다.
* 이 때 라우터와 스위치 모두 통신 과정에서 VLAN 설정을 해주어야 하고, VLAN 태그를 붙여서 데이터를 보낸다.
** 또한 VLAN 간 라우팅을 하려면 L3 스위치에 IP주소를 설정해야 하는데, 다음 두 가지 방법으로 설정할 수 있다.
- L3 스위치 내부의 VLAN 인터페이스에 IP 주소를 설정하기
- L3 스위치 포트 자체에 IP 주소를 설정하기
따라서, VLAN은 L2 스위치를 가상으로 분할하고, 트렁크 포트는 포트를 VLAN 별로 가상으로 분할한다.