이전 1편에서 같은 로컬 네트워크 클라이언트 끼리의 통신 과정을 알아봤다. 같은 로컬 네트워크가 아닌 다른 로컬 네트워크로의 통신은 어떻게 진행되는지 알아보자.

 

 

두 개의 서로 다른 로컬 네트워크

 

네트워크 계층(Network Layer)

 

- 여러 노드의 경로를 찾고 올바르게 전달될 수 있는 기능과 수단을 정의

- 주요 단위 : 패킷

- 주요 구성 요소 : Router, IP, ARP

- 서로 떨어진 Local Network 간의 통신을 지원

 

노드를 활용한 인터넷 라우팅 과정

 

 

먼저 통신을 하려면 목적지의 주소를 알아야 한다. 인터넷 세계에서는 IP를 주소로 사용한다.

IP (Internet Protocol)

- 인터넷 프로토콜 상에서 통신 주체를 식별하기 위한 아이디

- 두 가지 종류 (IPv4, IPv6)

 

CIDR (Classless Inter Domain Routing)

- IP 주소의 영역을 여러 네트워크 영역으로 나누기 위해 IP를 묶는 방식

- CIDR Notation : IP 주소의 집합

- 네트워크 주소와 호스트 주소로 구성 (ex 10.0.1.0/24, 172.16.0.0/12)

- 네트워크 주소가 같은 클라이언트는 같은 로컬 네트워크에 있는 것으로 인식 

 

네트워크 주소, 호스트 주소

 

Router

- 네트워크간에 패킷을 주고 받는 L3 장치

- 보내려는 데이터가 같은 네트워크 주소에 있지 않는 경우 라우터로 전송

- IP 대역별 최적의 경로를 수집 및 관리

- 어떤 경로의 노드를 경유해야 가장 효율적으로 도착하는지 라우팅 테이블 사용

- 자신의 로컬 네트워크가 아니라면 라우터로 전달 (서브넷 마스크 활용)

- 패킷을 프레임 안에 넣어 최적 경로에 따른 다른 라우터로 전달

- IP 주소에 따른 Frame 확인 방법 : ARP

Subnet Mask

- 어느 부분이 호스트 비트인지, 어느 부분이 네트워크 비트인지 구분해주는 Mask

- AND 연산을 활용해 네트워크 주소를 필터링

 

서브넷 마스크 AND 연산

 

ARP (Address Resolution Protocol)

- IP를 통해 로컬 네트워크의 클라이언트, 라우터 등의 Mac 어드레스를 찾는 프로토콜

- BroadCast (Mac : FF:FF:FF:FF:FF:FF)으로 IP 요청

- 응답 받은 IP Mac Address를 기반으로 테이블에 저장

 

ARP 요청 과정


1. 클라이언트 A가 MAC FF 주소로 ARP 요청을 보내게 되면 스위치는 이를 모든 클라이언트에게 전송한다.

2. 클라이언트 C,D는 자신의 IP가 아니므로 프레임을 버리게 된다.

3. 클라이언트 B의 경우 자신의 MAC 주소를 스위치를 통해 클라이언트 A에게 전송한다.

 

ARP 응답 과정

 

위와 같은 과정으로 라우터의 MAC 주소를 얻어낸 후 다른 네트워크 (63.12.33.12)으로 데이터를 전송한다고 가정하자

 

라우터로의 데이터 전송

 

같은 로컬 네트워크에 없다고 판별한 이후 라우터로 패킷을 전송한다.

 

패킷 전달 과정

 

1. 네트워크 계층 -> 데이터 계층 -> 물리 계층 순서로 패킷을 전달하게 된다.

2. 패킷의 주요 구성 

 - 헤더 : 출발지/목적지 IP, TTL(패킷의 생존 시간), 프로토콜 정보(예 TCP,UDP)

 - 페이로드 : 실제 전송할 데이터

 

라우터 내부 동작

 

클라이언트로부터 데이터를 받은 라우터는 해당 프레임을 복원하여 패킷을 열어 어떤 목적지로 보내지는지 확인한다.

라우터의 동작은 다음과 같다.

 

1. 패킷 수신 :클라이언트로부터 패킷으 수신, 출발지와 목적지 IP 주소가 포함되어 있음

2. 라우팅 테이블 조회 : 자신의 라우팅 테이블을 참조하여 패킷의 목적지 주소에 대한 HOP을 결정

3. 패킷 포워딩 : 결정된 다음 HOP에 따라 패킷을 전송할 인터페이스 선택

 

Next Hop 동작 과정

 

 

최적의 경로로 Microsoft 라우터로 프레임이 전송된 경우 해당 라우터에서도 프레임을 분해하여 위와 같은 과정을 거친 후 최적의 Next Hop인 Netflix 라우터로 전송된다.

 

최종 도착

 

Netflix 라우터에서 프레임을 열어 대상 IP를 확인해보니 같은 네트워크 주소임을 확인했다. (63.12.33.0)

따라서 해당 패킷을 스위치로 전달하여 데이터는 도착지 IP 주소와 일치하는 클라이언트에게 전달된다.

 

패킷 복원 과정

 

이렇게 목적지 IP를 가진 클라이언트 B에서 물리 -> 데이터 -> 네트워크 계층을 거쳐 패킷에 들어있는 PayLoad를 확인할 수 있다.

 

네트워크 계층을 통해 서로 다른 네트워크가 통신하는 과정을 간단하게 알 수 있지만 문제가 몇 가지 있다.

 

1. 한 번의 하나의 통신만 가능

해당 패킷이 어떤 어플리케이션으로 보내진 패킷인지 알 수 없다.

 

2. 패킷의 순서가 보장되지 않는다.

여러 노드를 통해서 데이터가 전달 될텐데 전송 속도가 전부 다를 수 있어 패킷의 순서가 엉망일 수 있다.

 

다음 계층을 통해 해결 방법을 알아보자.

 

 

출처 : 유튜브 AWS 강의실