[Network] CH3. 케이블의 앞은 LAN 기기였다
성공과 실패를 결정하는 1%의 네트워크 원리를 읽고 정리한 내용입니다.
목차
- 케이블과 리피터, 허브 속을 신호가 흘러간다.
- 스위칭 허브의 패킷 중계 동작
- 라우터의 패킷 중계 동작
- 라우터의 부가 기능
LAN 어댑터에서 패킷이 송신되어 인터넷 접속용 라우터를 통해 인터넷에 나가는 과정을 알아보자.
1️⃣ 케이블과 리피터, 허브 속을 신호가 흘러간다.
아래와 같이 클라이언트 PC는 LAN에 접속되어있고, PC가 송신한 패킷이 리피터 허브, 스위칭 허브, 라우터를 경유하여 인터넷에 나간다. 가정에서는 여러 기기들의 기능이 내장된 라우터를 사용하는 경우가 많지만, 단일 기능의 기기가 이해가 쉬우므로 기기 각각의 단계에 대해 알아보자.
첫단계인 LAN 어댑터에서 패킷이 송신되어 케이블로 나가는 부분부터 알아보자. LAN 어댑터의 PHY회로에서 패킷은 전기 신호로 바뀌고, RJ-45 커넥터를 통해 트위스트 페어 케이블에 들어간다. 그 후 신호는 케이블 속을 흘러 리피터 허브의 커넥터 부분에 도착한다.
트위스트 페어 케이블 (꼰 선상)
전기 신호는 1과 0으로 전달이 되는데, 1에서 0이나 0에서 1로 신호가 변경될때 전압이 급격하게 변화한다. 이처럼 주파수가 높은 신호는 약해지기 쉬워 결국 신호에 변경이 생긴다.
또한, 케이블의 주위에 전자파가 있으면 신호와는 다른 전류가 케이블 안에 흐르게 되는데, 이렇게 신호와 잡음의 전류가 뒤섞이며 파형이 변화되며 잡음이 발생한다. 그리고, 신호선에서 나오는 전자파가 주위의 신호선에 닿아 전류를 발생시켜 신호에 영향을 미치기도 한다.
위의 두 문제는 선을 꼬아 해결할 수 있다.
1. 선이 나선형이 되어 옆 선과 전류가 흐르는 방향이 반대가 되어 잡음에서 생긴 전류가 서로 상쇄된다.
*금속인 신호선에 전자파가 닿으면 전자파의 진행방향의 오른쪽으로 전류가 생긴다.
2. 꼰 간격을 변화시켜 신호선에서 나오는 잡음 성분이 역방향이 되도록하여 잡음의 영향이 줄어든다.
신호가 트위스트 페어 케이블을 지나 리피터 허브에 도달하면, LAN 전체에 신호가 흩어진다. 그리고, 이더넷의 원리에 따라 수신처 MAC 주소(헤더에 쓰인)에 해당하는 기기만 패킷을 수신하게 된다.
그리고 나서, '송신 단자'에서 보낸 신호를 '수신 단자'로 받도록 하기 위해 PHY(MAU)회로와 커넥터 사이의 신호선을 교차시켜서 접속하게 한다. (3-2 그림에 나와있다) 이렇게 신호가 PHY(MAU) 회로의 수신부에 도달하면 리피터 회로에 신호가 들어간다. 리피터 회로는 들어오는 신호를 리피터 허브의 커넥터 부분 즉, 연결된 케이블 전부에 '그대로' 송신한다. 오류는 추후 판명되기에 일단 문제있어 보이는 신호라도 보내고, 추후 수신 확인이 되지 않은 부분에 대해 프로토콜 스택의 TCP 담당 부분이 패킷을 다시 보낸다.
2️⃣ 스위칭 허브의 패킷 중계 동작
리피터 허브를 나온 패킷은 스위칭 허브를 경유한다. 스위칭 허브는 이더넷의 패킷을 그대로 목적지를 향해 중계한다.
PHY회로에서 수신되는 부분까지는 리피터 허브와 같은데, 트위스트 페어 케이블에서 신호가 들어오면, PHY 회로에 수신된다. 그러면 PHY 회로에서 공통의 신호 형식으로 변환한 후, MAC 회로로 전송한다. MAC 회로에서 디지털 데이터로 변환한 후, 패킷의 FCS와 대조하여 오류의 유무를 검사하고, 문제가 없으면 버퍼 메모리에 저장한다. 이와 같은 역할을 하는 스위칭 허브의 안쪽 회로 부분을 포트라고 부르는데, 이는 LAN 어댑터와 거의 같다.
그런데, LAN 어댑터의 경우 MAC 주소가 할당되어 있어 수신한 패킷의 MAC 주소가 자신에게 해당하지 않는 경우 폐기하지만, 스위칭 허브의 포트는 MAC 주소가 할당되어 있지 않아 수신처 MAC 주소를 검사하지 않고 모두 수신하여 버퍼 메모리에 저장한다.
패킷이 버퍼 메모리에 저장이 되면, 수신처 MAC 주소와 일치하는 것이 MAC 주소표에 등록되어 있는지 조사한다. MAC 주소표에는 기기의 MAC 주소와 기기가 어느 포트에 존재하는지에 대한 정보가 기록되어 있는데, 두 정보가 짝을 이루고 있다. 해당 경로표를 이용하여 수신한 패킷을 어디로 송신하면 좋을지 조사하고, 스위치 회로를 경유하여 패킷을 송신측의 포트에 보낸다.
MAC 주소 테이블 갱신
스위칭 허브는 패킷을 송신할 때마다, MAC 주소표의 내용도 함께 갱신한다. 갱신 동작에는 두 종류가 있다.
1. 패킷을 수신했을 때 송신처 MAC 주소를 조사한다.
2. 수신한 입력 포트 번호(송신처 주소)와 MAC 주소를 하나의 세트로 MAC 주소표에 등록한다.
-> 등록된 MAC 주소로 보내야 하는 패킷을 수신했을 때, 매핑된 포트로 중계할 수 있다.
기기의 이동 등의 변경으로 MAC 주소표의 내용이 잘못될 수 있기에 일정 시간이 경과하면 내용을 삭제한다. 삭제하기 이전에 잘못된 정보로 인해 중계가 될 수 있지만, 스위칭 허브(MAC 주소표)를 리셋하면 해당 시점부터 새롭게 주소가 등록되므로 수동으로 등록해줄 필요가 없다.
만일, MAC 주소표에 수신처 MAC 주소와 일치하는 주소가 등록되어있지 않다면, 패킷을 수신한 포트 이외의 전체 포트로 패킷을 전달(flooding = broadcasting)하고, 앞의 과정을 반복하다 해당 MAC 주소를 가진 장치가 응답하면, 응답 패킷의 송신 MAC 주소를 MAC 테이블에 기록한다.
스위칭 허브는 패킷을 수신한 포트와 송신한 포트가 같을 경우 패킷을 중계하지 않고 폐기한다.
아래 사진과 같은 상황 때문에 스위칭 허브는 패킷을 수신한 포트와 송신한 포트가 같을 경우 패킷을 이례적으로 폐기하게 된다. PC A에서 보낸 패킷은 리피터 허브에게 전달되고, 리피터 허브는 모든 포트에 패킷을 뿌리기에 PC B와 스위칭 허브가 패킷을 수신한다. 만일, 주소표에 등록되어있는 송신 포트가 수신한 포트(리피터 허브쪽)와 같다면, 스위칭 허브는 패킷을 리피터 허브에게 반송하게 되고, 리피터 허브는 해당 패킷을 PC A와 B에 뿌리게 된다. 이렇게 되면 제대로 통신이 이루어지지 않기 때문에 스위칭 허브는 위 조건에서 패킷을 폐기하는 것이다.
전이중 모드
스위칭 허브는 리피터 허브와 달리 전이중(Full-Duplex) 모드를 지원해, 데이터를 송수신할 때 각각의 방향으로 동시에 주고받을 수 있다.
리피터 허브는 연결된 모든 기기에 데이터를 브로드캐스트(Broadcast) 방식으로 전달하기 때문에, 여러 컴퓨터가 동시에 송신하면 신호가 충돌(Collision)할 위험이 크다. 이를 방지하기 위해 반이중(Half-Duplex) 방식을 사용하며, 한 번에 한 방향으로만 데이터를 주고받는다. 만약 충돌이 발생하면 이를 감지하고 재전송하는 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 기법을 활용한다.
반면, 스위칭 허브는 목적지 기기에만 데이터를 전송하기 때문에 충돌이 발생하지 않는다. 덕분에 전이중 모드로 동작할 수 있으며, 리피터 허브처럼 충돌을 감지하는 장치가 필요하지 않아 이러한 기능이 제거되었다. 결과적으로, 스위칭 허브는 보다 효율적이고 안정적인 네트워크 환경을 제공한다.
자동조정
초기 이더넷 환경에서는 네트워크 장치의 통신 모드(전이중/반이중)와 전송 속도(10Mbps, 100Mbps 등)를 사용자가 직접 설정해야 했다. 하지만, 수동 설정 방식은 장치 간 설정 불일치로 인해 속도 저하나 통신 장애가 발생하는 경우가 많았다.
전이중(Full-Duplex) 모드가 등장하면서 기존의 반이중(Half-Duplex) 모드와의 전환이 필요해졌고, 이에 따라 상대 장치의 전송 속도를 파악하여 자동으로 조정하는 기능도 요구되었다. 이러한 문제를 해결하기 위해 자동 조정(Auto-Negotiation) 기능이 도입되었다.
이더넷에서는 데이터가 흐르지 않을 때 링크 펄스(Link Pulse) 라는 신호를 주고받으며 자동 조정을 수행한다. 링크 펄스를 통해 상대방이 정상적으로 작동하는지 확인할 수 있으며, 동시에 자신이 지원하는 속도와 통신 모드(전이중/반이중)를 특정 패턴으로 전달한다. 상대방도 동일한 방식으로 정보를 보내면, 두 장치는 서로 지원 가능한 조합(속도 + 동작 모드) 중 우선순위가 높은 설정을 자동으로 선택하여 동작하게 된다.
이제 사용자는 네트워크 설정을 직접 조작할 필요 없이, 장치 간 자동 협상을 통해 최적의 속도와 통신 모드를 적용할 수 있으며, 이를 통해 설정 오류로 인한 네트워크 문제를 방지하고, 보다 안정적이고 효율적인 통신 환경을 구축할 수 있다.
3️⃣ 라우터의 패킷 중계 동작
네트워크에서 패킷이 목적지까지 도달하기 위해 거쳐야 하는 핵심 장치가 라우터(Router) 다. 스위칭 허브(Switch)를 경유한 패킷은 결국 라우터에 전달되며, 라우터는 이를 분석한 뒤 다음 목적지로 중계한다. 패킷이 최종 목적지까지 도달하려면 여러 개의 라우터를 거쳐야 하는 경우가 많으며, 라우터는 각 패킷을 적절한 경로로 전달하는 역할을 수행한다.
라우터도 스위칭 허브처럼 패킷의 전달 대상을 표에 등록된 정보(라우팅 테이블)를 기반으로 결정하지만, 이더넷을 기반으로 동작하는 스위칭 허브와 달리, 라우터는 IP 개념을 바탕으로 동작한다는 점에서 차이가 있다.
라우터의 구성 요소
라우터는 크게 두 가지 부분으로 나눌 수 있다.
1. 중계 부분 (Forwarding Engine)
: 패킷의 목적지를 분석하고, 어느 네트워크로 전송할지 결정하는 역할을 한다. IP 헤더에 기록된 수신처 IP 주소와 라우팅 테이블(Routing Table)에 등록된 정보를 대조하여 최적의 전송 경로를 찾는다.
2. 포트 부분 (Interface / Network Port)
: 패킷을 송수신하는 물리적 인터페이스 역할을 한다. 어떤 하드웨어 인터페이스가 장착되었느냐에 따라 다양한 네트워크 환경을 지원할 수 있다.
- ADSL (전화선 기반 인터넷)
- 이더넷 (유선 LAN)
- 무선 LAN (Wi-Fi)
- 광섬유(Fiber) 등
특정 포트가 이더넷 기반이라면, 해당 포트는 이더넷 규칙(프레임 형식, MAC 주소 기반 전송 등) 에 따라 패킷을 수신하고 송신한다.
라우팅 테이블의 주요 항목
라우터는 IP 주소로 중계 대상을 판단하는데, 호스트 번호를 무시하고, 네트워크 번호 부분만 조사한다.
- 수신처(Destination): 목적지 네트워크의 서브넷 주소(네트워크 번호)
- 넷마스크(Netmask): 네트워크 번호의 비트 수를 판단하기 위한 값
- 게이트웨이(Gateway): 패킷을 전달할 다음 라우터의 주소
- 인터페이스(Interface): 패킷을 송신할 네트워크 포트
- 메트릭(Metric): 목적지까지의 거리(값이 작을수록 가까운 경로)
라우터는 이러한 정보를 활용하여 패킷이 최적의 경로를 따라 목적지까지 도달할 수 있도록 한다.
주소 집약(Aggregation)과 세분화(Subnetting)
라우팅 테이블에는 특정 서브넷에 대한 정보가 등록되지만, 때때로 주소 집약(Aggregation) 을 통해 여러 개의 서브넷을 하나의 서브넷으로 간주하여 등록할 수도 있다.
예를 들어, 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24와 같은 개별 서브넷을 따로 등록하는 대신,
이를 10.0.0.0/16으로 묶어 하나의 네트워크로 등록하면, 라우팅 테이블의 크기를 줄이고 효율적인 경로 설정이 가능하다.
반대로, 한 개의 서브넷을 더 세분화하여 여러 개로 등록하는 경우도 있다. 결국 넷마스크는 수신처를 비교할 때 활용되는 비트 수를 결정하는 역할만 수행하며, 실제 서브넷의 물리적인 넷마스크와 다를 수도 있다.
라우팅 테이블을 활용한 패킷 전달 과정
라우터는 패킷을 수신하면 IP 헤더의 목적지 주소와 라우팅 테이블의 정보를 비교하여 최적의 경로를 찾는다.
1. 패킷의 목적지 IP 주소와 라우팅 테이블의 항목을 비교
- 32비트 IP 주소 전체를 비교하는 것이 아니라, 넷마스크를 활용하여 필요한 부분만 비교한다.
- 예를 들어, 192.168.1.100이라는 IP 주소를 라우팅할 때, 192.168.1.0/24 항목과 비교할 경우 첫 24비트만 확인한다.
2. 여러 개의 후보가 발견되면, 가장 특정한(범위가 좁은) 경로를 선택
- 네트워크 번호가 긴 항목이 우선순위가 높다.
- 예를 들어, 192.168.1.100을 전달할 때 192.168.1.0/24와 192.168.0.0/16 두 개의 후보가 있다면, /24가 /16보다 더 특정한 경로이므로 /24를 선택한다.
3. 네트워크 번호 길이가 같은 후보가 여러 개라면, 메트릭 값이 작은 경로를 선택
- 메트릭 값은 목적지까지의 거리를 의미하며, 값이 작을수록 더 가까운 경로다.
4. 적절한 경로가 없으면 패킷 폐기
- 테이블에 등록된 경로가 없으면 패킷을 폐기하고, ICMP(Internet Control Message Protocol) 메시지를 통해 송신자에게 오류를 통지한다.
- 스위칭 허브는 목적지를 모를 경우 패킷을 네트워크 전체로 브로드캐스트할 수 있지만, 라우터는 인터넷 규모에서 불필요한 트래픽을 방지하기 위해 모르는 패킷을 폐기한다.
5. 기본 경로(Default Route) 활용
- 패킷의 목적지를 찾을 수 없을 경우, 라우팅 테이블에 등록된 기본 경로(0.0.0.0/0)를 통해 패킷을 특정 라우터(기본 게이트웨이)로 전달한다.
- 이를 통해 인터넷으로 나가는 경로를 지정하고, 경로가 불분명한 패킷을 효과적으로 처리할 수 있다.
TTL(Time to Live)과 패킷 순환 방지
현재의 인터넷 환경에서 하나의 패킷은 보통 수십 개의 라우터를 거쳐 목적지까지 도달한다. 만약 패킷이 무한히 순환하는 경우가 발생하면 네트워크가 과부하될 수 있다. 이를 방지하기 위해 TTL(Time to Live) 라는 개념이 도입되었다.
- 패킷이 생성될 때 TTL 필드에 기본적으로 64 또는 128의 값을 설정한다.
- 라우터를 하나 통과할 때마다 TTL 값을 1씩 감소시킨다.
- TTL 값이 0이 되면 패킷을 폐기하고 ICMP 메시지를 통해 송신자에게 오류를 통지한다.
이 방식 덕분에 패킷이 잘못된 경로에서 무한히 순환하는 사태를 방지할 수 있다.
MTU와 패킷 분할(Fragmentation)
라우터가 패킷을 전달할 때, 출력 포트에서 송신할 수 있는 최대 패킷 크기(MTU, Maximum Transmission Unit) 가 입력 포트에서 수신한 패킷보다 작을 수 있다.
이 경우, 패킷을 작은 조각으로 분할(Fragmentation)하여 중계해야 한다.
- 패킷의 IP 헤더에는 "분할 가능 여부"를 나타내는 플래그 필드가 존재한다.
- 분할 가능(DF = 0) 이면 패킷을 여러 개로 나누어 전송한다.
- 분할 불가(DF = 1) 인 경우, 패킷을 폐기하고 ICMP 메시지를 통해 송신자에게 이를 알린다.
패킷을 무분별하게 분할하면 네트워크 성능이 저하될 수 있으므로, 일반적으로 경로 MTU 탐색(Path MTU Discovery, PMTUD) 을 활용해 미리 최적의 MTU 크기를 결정한 후 전송하는 방식이 사용된다.
출력 포트에서의 패킷 송신 과정
라우터는 최적의 경로를 찾은 후, 해당 패킷을 출력 포트(Interface)를 통해 송신한다.
1. 게이트웨이 결정
- 라우팅 테이블의 게이트웨이(Gateway) 항목을 확인하여 다음 중계 대상을 결정한다.
- 게이트웨이에 IP 주소가 기록된 경우 → 해당 IP 주소가 중계 대상이 된다.
- 게이트웨이가 공란(직접 연결 네트워크)인 경우 → 패킷의 목적지 IP 주소가 중계 대상이 된다.
2. MAC 주소 조회(ARP 사용)
- 상대방 IP 주소가 결정되면, ARP(Address Resolution Protocol)를 통해 해당 IP에 대한 MAC 주소를 조회한다.
- MAC 주소가 확인되면 패킷의 MAC 헤더 수신처 필드에 설정한다.
3. 패킷 송신
- 송신처 MAC 주소 필드에는 출력 포트에 할당된 MAC 주소를 설정한다.
- 패킷을 전기 신호로 변환하여 네트워크 케이블 또는 무선을 통해 전송한다.
4️⃣ 라우터의 부가 기능
라우터는 단순히 패킷을 중계하는 역할을 수행하는 것뿐만 아니라, 보다 효율적이고 안전한 네트워크 운영을 위한 부가 기능도 제공한다. 대표적인 기능으로 주소 변환(NAT, Network Address Translation) 과 패킷 필터링 이 있다.
주소 변환(NAT, Network Address Translation)
인터넷에 연결된 모든 기기는 고유한 IP 주소를 가져야 하지만, 사용자의 폭발적인 증가로 인해 IPv4 주소가 부족해지는 문제가 발생했다. 이를 해결하기 위해 프라이빗 주소(Private Address)와 글로벌 주소(Global Address)의 개념이 도입되었고, NAT 기술을 활용하여 내부 네트워크와 외부 네트워크 간의 주소 변환이 가능해졌다. 프라이빗 주소는 독립된 네트워크 내에서만 유효하며, 인터넷과 직접 통신할 수 없다. 반면, 글로벌 주소는 전 세계에서 유일한 주소로, 인터넷과의 직접적인 연결을 위해 사용된다.
라우터는 패킷을 중계할 때 송신처의 프라이빗 주소를 글로벌 주소로 변경하는 방식으로 NAT를 수행한다. 이 과정에서 라우터는 송신 패킷의 프라이빗 IP 주소를 글로벌 IP 주소로 변경하고, 포트 번호를 임의로 지정하여 패킷을 송신한다. 이후 NAT 테이블을 통해 변환된 정보를 저장(글로벌 주소, 글로벌 포트 번호, 프라이빗 주소, 프라이빗 포트 번호를 한 세트로 기록)하고, 인터넷으로부터 회신 패킷이 도착하면 해당 정보를 참고하여 다시 원래의 프라이빗 주소로 변환하여 내부 네트워크로 전달한다. 이러한 방식 덕분에 한정된 글로벌 주소를 여러 기기가 공유할 수 있으며, 결과적으로 IPv4 주소의 부족 문제를 해결할 수 있다.
그러나 NAT에는 한 가지 한계가 있다. NAT 테이블에 기록되지 않은 패킷은 내부 네트워크로 보낼 수 없기 때문에, 외부에서 먼저 내부 네트워크로 접근할 수 없다. 이를 해결하려면 포트 포워딩(Port Forwarding) 기능을 사용하여 특정 포트를 특정 내부 IP 주소로 연결해야 한다. 포트 포워딩을 설정하면 특정 서비스(ex. 원격 데스크톱, 웹 서버 등)에 대해 외부에서 접근이 가능해진다.
패킷 필터링 기능
라우터가 제공하는 또 다른 중요한 기능은 패킷 필터링 이다. 라우터는 패킷을 전달하기 전에 내부 정보를 검사하여 특정 조건에 따라 허용하거나 차단할 수 있다. 이 과정에서 라우터는 MAC 헤더, IP 헤더, TCP/UDP 헤더 등의 내용을 확인하여 미리 설정된 보안 규칙에 따라 패킷을 중계하거나 폐기한다. 예를 들어, 특정 IP 주소에서 오는 패킷을 차단하거나, 원치 않는 포트(ex. 원격 접속을 위한 SSH 포트 22번)를 차단하는 등의 설정이 가능하다. 이를 통해 네트워크 보안을 강화하고, 불필요한 데이터 트래픽을 방지할 수 있다.
이처럼 라우터는 기본적인 패킷 중계 기능 외에도 NAT을 통해 네트워크 주소를 변환하여 IPv4 주소 부족 문제를 해결하고, 패킷 필터링을 통해 네트워크의 보안을 강화하는 역할을 수행한다. 이러한 기능 덕분에 라우터는 보다 효율적이고 안전한 네트워크 환경을 제공할 수 있다.
참고자료
https://product.kyobobook.co.kr/detail/S000000559964
1%의 네트워크 원리 | Tsutomu Tone - 교보문고
1%의 네트워크 원리 | 성공과 실패를 결정하는 1%의 네트워크 원리 (2nd Edition(개정1판 10쇄))이 책만큼 네트워크의 구조와 작동 원리에 대해 체계적으로 설명한 책은 없다! 이 책은 네트워크 기술을
product.kyobobook.co.kr