
네트워크에서 데이터를 목적지까지 전달하려면 단순히 IP 주소만 알고 있다고 되는 것은 아닙니다.
같은 네트워크에서는 MAC 주소가 필요하고, 다른 네트워크로 이동할 때는 IP 주소와 게이트웨이가 필요합니다. 또한 목적지에 도착한 데이터가 어떤 애플리케이션으로 전달되어야 하는지는 TCP/UDP의 포트 번호를 통해 구분합니다.
이번 글에서는 네트워크 통신에서 자주 등장하는 유니캐스트·브로드캐스트·멀티캐스트·애니캐스트, MAC 주소, IP 주소와 서브넷, TCP/UDP, ARP, 게이트웨이를 중심으로 정리해보겠습니다.
네트워크 통신 방식은 목적지 주소를 기준으로 크게 네 가지로 나눌 수 있습니다.
| 통신 방식 | 형태 | 특징 |
|---|---|---|
| 유니캐스트 | 1:1 | 하나의 목적지와 통신 |
| 브로드캐스트 | 1:전체 | 같은 네트워크의 모든 호스트에 전달 |
| 멀티캐스트 | 1:그룹 | 특정 그룹에 속한 여러 호스트에 전달 |
| 애니캐스트 | 1:1 | 동일 주소를 가진 후보 중 가까운 호스트와 통신 |
가장 일반적인 통신 방식으로, 출발지와 목적지가 명확한 1:1 통신입니다.
같은 네트워크에 존재하는 모든 호스트에게 데이터를 전달하는 방식입니다.
대표적으로 상대방의 MAC 주소를 알아내기 위한 ARP 요청에서 사용됩니다.
IPv6에서는 브로드캐스트 대신 멀티캐스트를 활용합니다.
특정 멀티캐스트 그룹에 가입한 여러 호스트에게 데이터를 한 번에 전달합니다.
IPTV, 사내 방송, 실시간 데이터 전송처럼 동일한 데이터를 여러 사용자에게 동시에 전달할 때 유용합니다.
같은 주소를 가진 여러 서버 중 가장 가까운 또는 가장 효율적인 서버와 통신하는 방식입니다.
대표적으로 DNS 서비스와 같은 분산 서비스에서 활용됩니다.
MAC(Media Access Control) 주소는 2계층 데이터 링크 계층에서 사용하는 주소입니다.
이더넷이나 Wi-Fi 환경에서 네트워크 인터페이스를 식별하기 위해 사용합니다.
MAC 주소는 일반적으로 48비트이며 16진수 12자리로 표현됩니다.
00:1A:2B:3C:4D:5E
MAC 주소는 크게 두 영역으로 나뉩니다.
| 제조사 식별 영역 | 장비 식별 영역 |
| OUI | UAA |
| 24bit | 24bit |
NIC(Network Interface Card)는 프레임을 수신하면 Destination MAC Address를 확인합니다.
자신에게 전달된 프레임이라면 상위 계층으로 전달하고, 관계없는 프레임이라면 일반적으로 폐기합니다.
다만 다음과 같은 주소는 처리 대상이 될 수 있습니다.
OSI 7계층에서 대표적으로 주소를 사용하는 계층은 다음과 같습니다.
| 계층 | 주소 |
|---|---|
| 2계층 | MAC 주소 |
| 3계층 | IP 주소 |
MAC 주소가 로컬 네트워크에서 사용되는 주소라면, IP 주소는 네트워크와 네트워크 사이에서 목적지를 찾기 위한 논리적인 주소입니다.
IPv4 주소는 32비트이며 8비트씩 네 개의 옥텟으로 나누어 표현합니다.
192.168.0.10
IP 주소는 크게 두 부분으로 나뉩니다.
Network Address + Host Address
과거에는 IP 주소를 A, B, C 클래스 단위로 나누는 클래스풀(Classful) 방식이 사용되었습니다.
하지만 인터넷 사용자가 급격히 증가하면서 고정된 클래스 단위의 주소 할당은 많은 IP 주소를 낭비하게 되었습니다.
이를 해결하기 위해 현재는 클래스리스(Classless) 방식과 CIDR을 사용합니다.
192.168.0.0/24
/24는 앞의 24비트가 네트워크 영역이라는 의미입니다.
클래스리스 환경에서는 IP 주소만으로 네트워크 영역과 호스트 영역을 구분할 수 없습니다.
이때 사용하는 것이 서브넷 마스크(Subnet Mask)입니다.
예를 들어 다음과 같습니다.
IP Address : 192.168.0.10
Subnet Mask : 255.255.255.0
CIDR : /24
이 경우 네트워크 주소는 다음과 같습니다.
192.168.0.0
같은 네트워크에 속한 호스트인지 판단할 때 IP 주소와 서브넷 마스크를 이용해 네트워크 영역을 비교합니다.
하나의 큰 네트워크를 더 작은 네트워크로 나누는 것을 서브네팅(Subnetting)이라고 합니다.
서브네팅을 하는 이유는 크게 두 가지입니다.
예를 들어 /24 네트워크를 /26으로 나누면 여러 개의 작은 네트워크로 분리할 수 있습니다.
192.168.0.0/26
192.168.0.64/26
192.168.0.128/26
192.168.0.192/26
서브넷을 이해할 때 가장 중요한 것은 다음 세 가지입니다.
인터넷에서 사용되는 IP 주소는 전 세계에서 유일해야 합니다.
이를 공인 IP(Public IP)라고 합니다.
반면 회사 내부나 가정과 같이 독립된 네트워크에서는 사설 IP(Private IP)를 사용할 수 있습니다.
대표적인 사설 IPv4 대역은 다음과 같습니다.
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
사설 IP는 인터넷에서 직접 사용할 수 없기 때문에 일반적으로 NAT(Network Address Translation)를 이용해 공인 IP로 변환한 뒤 인터넷과 통신합니다.
가정에서 사용하는 공유기가 대표적인 NAT 장비입니다.
PC
192.168.0.10
↓
공유기
NAT
↓
Public IP
↓
Internet
MAC 주소와 IP 주소가 목적지 장치를 찾기 위한 정보라면 4계층의 TCP와 UDP는 목적지 장치 안에서 어떤 애플리케이션과 통신할 것인지를 구분합니다.
이때 사용하는 것이 포트 번호(Port Number)입니다.
대표적인 포트는 다음과 같습니다.
| 서비스 | 프로토콜 | 포트 |
|---|---|---|
| HTTP | TCP | 80 |
| HTTPS | TCP | 443 |
| SMTP | TCP | 25 |
TCP와 UDP는 모두 4계층 프로토콜이지만 통신 방식에는 큰 차이가 있습니다.
TCP는 신뢰성 있는 데이터 전송을 목표로 합니다.
대표적인 특징은 다음과 같습니다.
TCP는 실제 데이터를 전송하기 전에 상대방과 통신할 준비가 되었는지 확인합니다.
Client Server
SYN -------------------------->
<---------------- SYN + ACK
ACK -------------------------->
Connection Established
SYN 전송SYN + ACK로 응답ACK 전송이 과정이 완료되면 TCP 연결이 성립됩니다.
UDP는 TCP보다 구조가 단순합니다.
TCP처럼 연결을 미리 설정하거나 데이터 수신 여부를 확인하지 않습니다.
따라서 다음과 같은 특징이 있습니다.
그래서 데이터 일부가 손실되더라도 지연 시간이 더 중요한 서비스에서 활용됩니다.
예를 들어 실시간 음성이나 영상과 같은 환경에서는 데이터 한두 개가 손실되는 것보다 재전송 때문에 전체 화면이나 음성이 늦어지는 것이 더 큰 문제가 될 수 있습니다.
| TCP | UDP |
|---|---|
| 연결 지향 | 비연결형 |
| 신뢰성 높음 | 전송 보장 없음 |
| 순서 보장 | 순서 보장 없음 |
| 재전송 지원 | 재전송 없음 |
| 상대적으로 오버헤드가 큼 | 상대적으로 가벼움 |
IP 주소와 MAC 주소는 서로 다른 체계입니다.
IP 주소를 알고 있다고 해서 상대방의 MAC 주소를 자동으로 알 수 있는 것은 아닙니다.
이 둘을 연결해주는 것이 ARP(Address Resolution Protocol)입니다.
ARP는 같은 네트워크에서 IP 주소를 이용해 상대방의 MAC 주소를 알아내는 프로토콜입니다.
서버 A가 같은 네트워크에 있는 서버 B와 통신한다고 가정해보겠습니다.
서버 A는 서버 B의 IP 주소는 알고 있지만 MAC 주소는 모르는 상태입니다.
서버 A는 네트워크 전체에 질문합니다.
"10.1.1.2를 사용하는 장비의 MAC 주소는 무엇인가?"
ARP Request는 브로드캐스트로 전달됩니다.
Destination MAC
FF:FF:FF:FF:FF:FF
해당 IP를 가진 서버 B가 자신의 MAC 주소를 응답합니다.
ARP Reply는 일반적으로 유니캐스트로 전달됩니다.
서버 A는 응답받은 정보를 ARP 테이블에 저장합니다.
10.1.1.2 → AA:BB:CC:DD:EE:FF
이후에는 매번 ARP 요청을 보내지 않고 저장된 정보를 이용해 바로 통신합니다.
Windows에서는 다음 명령으로 ARP 테이블을 확인할 수 있습니다.
arp -a
GARP(Gratuitous ARP)는 상대방의 MAC 주소를 찾는 일반적인 ARP와 달리 자신의 IP와 MAC 주소 정보를 네트워크에 알리는 데 사용됩니다.
대표적인 활용 목적은 다음과 같습니다.
특히 서버나 게이트웨이가 이중화된 환경에서 Active 장비가 변경될 때 새로운 MAC 주소나 경로를 빠르게 알리는 용도로 활용할 수 있습니다.
RARP도 존재하지만 현재는 대부분 BOOTP와 DHCP로 대체되어 실제 환경에서 중요도가 낮습니다.
네트워크 통신에서 가장 중요한 판단 중 하나는 다음과 같습니다.
목적지가 나와 같은 네트워크에 있는가, 다른 네트워크에 있는가?
이를 판단할 때 사용하는 것이 서브넷 마스크입니다.
목적지가 같은 네트워크라면 ARP를 이용해 상대방의 MAC 주소를 알아낸 뒤 직접 통신합니다.
PC A
↓
Switch
↓
PC B
라우터가 필요하지 않습니다.
목적지가 다른 네트워크라면 직접 ARP를 보내 목적지를 찾을 수 없습니다.
브로드캐스트는 라우터를 넘어가지 않기 때문입니다.
따라서 패킷을 기본 게이트웨이(Default Gateway)로 전달합니다.
PC
↓
Default Gateway
↓
Router
↓
Remote Network
↓
Server
이때 중요한 점이 있습니다.
원격 네트워크와 통신할 때 IP 패킷의 목적지 IP는 실제 서버이지만, 현재 이더넷 프레임의 목적지 MAC 주소는 기본 게이트웨이의 MAC 주소입니다.
Destination IP
→ 최종 목적지 서버
Destination MAC
→ 현재 네트워크에서 다음으로 전달할 게이트웨이
즉 IP 주소는 최종 목적지를 나타내고, MAC 주소는 현재 네트워크 구간에서 데이터를 전달할 다음 대상을 나타냅니다.
이 차이를 이해하면 라우팅과 패킷 전달 과정을 이해하기 훨씬 쉬워집니다.
지금까지의 내용을 하나의 통신 과정으로 연결해보겠습니다.
내 PC에서 다른 네트워크에 있는 웹 서버로 접속한다고 가정합니다.
Application
HTTP/HTTPS
↓
Transport
TCP + Port
↓
Network
Destination IP
↓
Data Link
Gateway MAC
↓
Router
↓
Internet
↓
Web Server
각 정보의 역할을 정리하면 다음과 같습니다.
| 정보 | 역할 |
|---|---|
| MAC 주소 | 현재 네트워크 구간에서 장비 식별 |
| IP 주소 | 최종 네트워크 목적지 식별 |
| 서브넷 마스크 | 로컬/원격 네트워크 구분 |
| 기본 게이트웨이 | 다른 네트워크로 나가는 출구 |
| ARP | IP 주소를 MAC 주소로 연결 |
| Port | 목적지의 애플리케이션 구분 |
| TCP/UDP | 애플리케이션 데이터 전달 방식 결정 |
이번 장에서 가장 중요하게 기억해야 할 것은 각각의 개념을 따로 외우는 것이 아니라 서로 어떻게 연결되는지 이해하는 것입니다.
같은 네트워크인가?
↓
Subnet Mask
↙ ↘
Yes No
↓ ↓
상대방 ARP Gateway ARP
↓ ↓
상대 MAC Gateway MAC
↘ ↙
Frame 전송
↓
IP 통신
↓
TCP / UDP
↓
Application
핵심만 다시 정리하면 다음과 같습니다.
결국 네트워크 통신의 핵심은 MAC으로 현재 구간을 이동하고, IP로 최종 목적지를 찾아가며, Port를 통해 최종 애플리케이션까지 데이터를 전달하는 과정이라고 정리할 수 있습니다.