통신 한 번에는 서로 다른 세 가지 식별자가 쓰인다. 같은 서버에 접속하더라도 어느 네트워크의 어느 장치인지(IP), 같은 네트워크 안에서 어느 인터페이스인지(MAC), 그 장치 안의 어느 프로그램인지(포트)를 따로 가리켜야 하기 때문이다. 계층 모델로 보면 이렇게 나뉜다.
| 식별자 | 계층 | 가리키는 대상 | 형태 |
|---|---|---|---|
| IP 주소 | 인터넷(L3) | 네트워크에 연결된 장치 | IPv4는 32비트, 점으로 구분한 숫자 네 묶음 |
| MAC 주소 | 링크(L2) | 같은 네트워크 안의 네트워크 인터페이스 | 48비트 |
| 포트 번호 | 전송(L4) | 장치 안에서 동작하는 프로그램/서비스 | 숫자(총 65,535개) |
IP 주소는 인터넷 프로토콜이 장치마다 부여하는 고유한 식별 번호다. 브라우저가 서버에 요청을 보낼 때 요청에 출발지 IP가 들어 있어야 서버가 응답을 돌려보낼 곳을 안다. 도메인 이름을 IP로 바꿔 주는 것은 DNS가 한다.
IPv4는 192.0.2.1처럼 점으로 구분한 숫자 네 묶음이고 32비트라서 약 43억 개의 주소를 만들 수 있다. 기기가 늘면서 부족해져 128비트 형식의 IPv6가 나왔고, 지금은 두 버전이 함께 쓰인다. 할당 방식은 동적 IP와 고정 IP로 나뉜다. 대부분의 장치는 ISP가 공유 풀에서 임시로 나눠 주는 동적 IP를 쓴다. 그런데 직접 운영하는 웹 서버나 API 서버가 동적 IP를 쓰면 IP가 바뀔 때 DNS 질의가 실패해서 서비스가 사실상 내려갈 수도 있다. 그래서 서버에는 고정 주소가 필요하다.
이더넷은 케이블 위에서 48비트 주소를 요구하는데 IP처럼 상위 프로토콜의 주소는 길이도 값도 이더넷 주소와 맞지 않는다. 그래서 둘을 연결하는 변환이 필요해진 것이다. 이더넷 프레임에는 목적지와 출발지 48비트 주소가 들어가고 이 주소는 고유하고 고정된 값이어야 하는 것으로 정해져 있다.
| 비교 | IP 주소 | MAC 주소 |
|---|---|---|
| 길이 | 32비트(IPv4) | 48비트 |
| 성격 | 할당/변경 가능(동적 할당이 흔함) | 인터페이스에 고유하고 고정 |
| 쓰이는 범위 | 네트워크 사이를 넘어 전달 | 같은 네트워크(같은 케이블) 안에서 전달 |
| 계층 | 인터넷(L3) | 링크(L2) |
정리하면 IP는 네트워크를 넘어 목적지를 찾는 주소이고, MAC은 같은 네트워크 안에서 다음 장치에 프레임을 넘기는 주소다.
IP 주소는 알지만 MAC 주소를 모를 때 쓰는 것이 ARP(Address Resolution Protocol)다. ARP는 IP 주소를 MAC 주소로 바꿔 주는 프로토콜이다. 같은 케이블 위의 두 장치 X와 Y가 통신하는 과정을 정리하면 이렇다.
| 단계 | 일어나는 일 |
|---|---|
| 1 | X가 Y의 IP로 보내려는데 변환 표에 MAC 주소가 없으면, 보내려던 패킷은 일단 버리고(상위 계층이 다시 보낸다고 가정) ARP 요청을 만든다 |
| 2 | 요청에는 X 자신의 MAC/IP와 찾으려는 Y의 IP가 들어가고, 찾는 MAC 칸은 비워 둔다 |
| 3 | 요청은 같은 케이블의 모든 장치에게 브로드캐스트로 전달된다 |
| 4 | 자기 IP가 맞는 Y만 요청을 받아들이고, 자기 MAC을 채워 X에게 직접(브로드캐스트 아님) 응답한다 |
| 5 | X는 응답으로 Y의 MAC을 변환 표에 기록하고, 이후 같은 목적지는 표를 보고 바로 보낸다 |
통신은 보통 양방향이라고 보기 때문에 Y도 X의 요청을 받으면서 X의 MAC/IP를 표에 기록한다. 이렇게 필요할 때만 물어보는 방식이라 모든 장치가 주기적으로 주소를 방송할 때보다 트래픽이 적다.
IP가 장치를 찾았으면 그 장치 안에서 어느 프로그램에 데이터를 줄지는 포트 번호가 정한다. 포트는 운영체제가 관리하는 가상의 접점이고 프로그램/서비스마다 연결된다. 메일과 웹 페이지가 같은 네트워크 연결로 들어와도 서로 다른 포트로 구분해서 처리한다. 하나의 웹 서버에서 HTTPS(443)와 SSH(22)가 동시에 동작할 수 있는 이유가 이것이다.
포트는 전송 계층(L4) 개념이다. TCP/UDP 헤더에 포트 번호를 적는 자리가 있고 IP 헤더에는 목적지 IP만 있고 포트 자리가 없다. 포트는 총 65,535개가 있고 많이 쓰는 것은 아래와 같다.
| 포트 | 프로토콜 | 용도 |
|---|---|---|
| 21 | FTP | 파일 전송 |
| 22 | SSH | 원격 접속(보안 연결) |
| 25 | SMTP | 메일 전송 |
| 53 | DNS | 도메인 이름을 IP로 변환 |
| 80 | HTTP | 웹 |
| 123 | NTP | 시간 동기화 |
| 443 | HTTPS | 암호화된 웹 |
| 3389 | RDP | 원격 데스크톱 |
번호별 전체 목록은 IANA가 관리한다. 포트는 보안과도 직접 연결된다. 방화벽은 보통 모든 포트를 기본으로 막고 25/80/443처럼 꼭 필요한 포트만 열어 둔다.
웹 접속 흐름에 대응시키면 전송 계층 헤더에는 서버 프로그램을 가리키는 목적지 포트(HTTPS는 443)가, 인터넷 계층 헤더에는 서버의 IP가, 링크 계층 헤더에는 같은 네트워크의 다음 장치 MAC이 들어간다. 이 중 IP와 포트는 목적지까지 그대로 유지되고, MAC은 구간마다 달라진다.
| 키워드 | 한 줄 정리 |
|---|---|
| IP 주소 | 네트워크 안의 장치를 가리키는 주소, IPv4는 32비트 네 묶음 |
| 동적/고정 IP | 대부분 임시 할당, 서버는 고정이 필요 |
| MAC 주소 | 같은 네트워크 안에서 인터페이스를 가리키는 48비트 주소 |
| IP와 MAC의 차이 | IP는 네트워크를 넘는 주소, MAC은 같은 네트워크 안의 주소 |
| ARP | IP를 MAC으로 바꿔 줌, 요청은 브로드캐스트/응답은 직접 전달 |
| 다른 네트워크로 보낼 때 | ARP가 찾는 것은 다음 홉(게이트웨이)의 MAC |
| 포트 번호 | 장치 안의 프로그램을 가리키는 L4 번호, 총 65,535개 |
확인일: 2026-10-02