네트워크 인터페이스의 개념과 역할을 알아보고 NIC, IP 주소, MAC 주소와 어떤 관계가 있는지 컴퓨터의 네트워크 연결 과정을 쉽게 설명합니다.

컴퓨터에서 인터넷을 사용하다 보면 네트워크 설정 화면에서 네트워크 인터페이스(Network Interface)​라는 말을 볼 때가 있습니다.

처음 보면 네트워크 카드나 랜 포트와 같은 장치를 의미하는 것처럼 보이기도 합니다.

실제로 서로 관련이 있기는 하지만 네트워크 인터페이스는 조금 더 넓은 개념입니다.

쉽게 말하면 컴퓨터가 네트워크와 통신할 수 있도록 연결해 주는 접점이라고 생각하면 됩니다.

인터넷에 연결할 때 단순히 랜 케이블 하나만 꽂는다고 끝나는 것이 아니라 컴퓨터 내부에서는 네트워크 인터페이스를 통해 데이터를 주고받게 됩니다.

네트워크 인터페이스란?

네트워크 인터페이스는 컴퓨터가 네트워크에 연결되어 데이터를 주고받을 수 있도록 해주는 통신 인터페이스입니다.

조금 쉽게 표현하면:

컴퓨터
   ↓
네트워크 인터페이스
   ↓
네트워크
   ↓
인터넷

여기서 네트워크 인터페이스는 컴퓨터와 네트워크 사이를 연결하는 역할을 합니다.

물리적인 장치일 수도 있고 운영체제에서 만들어지는 논리적인 인터페이스일 수도 있습니다.

이 부분이 네트워크 인터페이스를 처음 공부할 때 가장 헷갈릴 수 있는 부분입니다.

네트워크 인터페이스와 NIC는 같은 것일까?

비슷하게 사용되는 경우가 많지만 완전히 같은 의미라고 보기는 어렵습니다.

NIC(Network Interface Card)​는 네트워크 연결을 담당하는 하드웨어를 의미합니다.

예를 들어:

랜카드
Wi-Fi 어댑터
내장 LAN 컨트롤러

등이 NIC에 해당할 수 있습니다.

반면 네트워크 인터페이스는 운영체제에서 네트워크 연결을 표현하는 논리적인 부분까지 포함하는 더 넓은 개념으로 볼 수 있습니다.

예를 들어 컴퓨터에 랜카드가 하나 있다고 해도 운영체제에서는:

Ethernet

같은 네트워크 인터페이스 이름으로 표시될 수 있습니다.

즉:

NIC = 네트워크 연결을 위한 하드웨어

Network Interface = 운영체제에서 네트워크 연결을 담당하는 인터페이스까지 포함하는 개념

이라고 이해하면 편합니다.

컴퓨터에는 네트워크 인터페이스가 하나만 있는 것이 아니다

요즘 컴퓨터를 보면 네트워크 인터페이스가 하나만 있는 경우가 많습니다.

예를 들어 노트북을 생각해 보면:

Ethernet
Wi-Fi
Bluetooth
Loopback

등 여러 인터페이스가 존재할 수 있습니다.

유선 LAN을 연결하면 Ethernet 인터페이스를 사용하고, Wi-Fi로 연결하면 무선 네트워크 인터페이스를 사용합니다.

그래서 운영체제에서 네트워크 정보를 확인하면 생각보다 많은 인터페이스가 표시될 수 있습니다.

Ethernet 인터페이스

가장 익숙한 것이 Ethernet 인터페이스입니다.

랜 케이블을 컴퓨터에 연결해서 네트워크를 사용할 때 이용합니다.

구조는 간단합니다.

컴퓨터
  ↓
Ethernet 인터페이스
  ↓
랜 케이블
  ↓
스위치
  ↓
라우터
  ↓
인터넷

회사에서 데스크톱 PC를 사용하는 경우에는 이런 형태가 상당히 흔합니다.

Wi-Fi도 네트워크 인터페이스다

무선 인터넷을 사용하는 경우에는 Wi-Fi 인터페이스가 사용됩니다.

컴퓨터
  ↓
Wi-Fi 인터페이스
  ↓
무선 신호
  ↓
무선 AP
  ↓
네트워크

랜 케이블이 연결되어 있지 않더라도 네트워크 인터페이스를 통해 데이터를 주고받는다는 점은 같습니다.

그래서 네트워크 인터페이스라고 해서 반드시 물리적인 랜 포트만 생각할 필요는 없습니다.

Loopback 인터페이스도 있다

네트워크 인터페이스를 공부하다 보면 Loopback이라는 인터페이스도 만나게 됩니다.

대표적으로:

127.0.0.1

이라는 주소가 있습니다.

이 주소는 자신의 컴퓨터를 가리키는 대표적인 IPv4 Loopback 주소입니다.

예를 들어 프로그램을 개발할 때:

localhost
127.0.0.1

을 사용하는 경우가 있습니다.

이때 실제 랜 케이블을 통해 외부 네트워크로 데이터가 나가는 것이 아니라 컴퓨터 내부에서 네트워크 통신을 테스트할 수 있습니다.

따라서 Loopback 역시 넓은 의미에서 네트워크 인터페이스의 한 종류로 볼 수 있습니다.

네트워크 인터페이스에는 IP 주소가 연결된다

네트워크 인터페이스를 이해할 때 IP 주소와의 관계도 알아두면 좋습니다.

예를 들어:

Ethernet 인터페이스
        ↓
192.168.0.10

처럼 특정 인터페이스에 IP 주소가 설정될 수 있습니다.

컴퓨터가 네트워크를 통해 데이터를 보내거나 받을 때 운영체제는 어떤 네트워크 인터페이스를 사용할지 판단합니다.

예를 들어:

인터넷으로 데이터 전송
        ↓
라우팅 정보 확인
        ↓
Ethernet 인터페이스 선택
        ↓
랜 케이블로 전송

과 같은 과정이 이루어질 수 있습니다.

MAC 주소와도 관련이 있다

네트워크 인터페이스를 이야기할 때 MAC 주소도 자주 등장합니다.

물리적인 Ethernet 인터페이스에는 일반적으로 MAC 주소가 할당되어 있습니다.

예를 들어:

Ethernet

MAC
00:1A:2B:3C:4D:5E

IP
192.168.0.10

처럼 볼 수 있습니다.

여기서 MAC 주소와 IP 주소는 역할이 다릅니다.

MAC 주소는 주로 같은 네트워크에서 Ethernet 프레임을 전달할 때 사용되고, IP 주소는 네트워크 계층에서 목적지를 식별하고 라우팅하는 데 사용됩니다.

하나의 컴퓨터에서 여러 인터페이스를 사용할 수도 있다

컴퓨터에 Ethernet과 Wi-Fi가 모두 있다면 동시에 여러 네트워크 인터페이스가 존재할 수 있습니다.

예를 들어:

컴퓨터

Ethernet
192.168.0.10

Wi-Fi
192.168.1.20

이처럼 서로 다른 인터페이스에 각각 IP 주소가 설정될 수 있습니다.

이때 운영체제는 라우팅 테이블 등을 참고해서 어떤 인터페이스를 통해 데이터를 보낼지 결정합니다.

예를 들어 인터넷으로 나가는 기본 경로가 Ethernet에 설정되어 있다면 일반적인 인터넷 트래픽은 Ethernet 인터페이스를 통해 나갈 수 있습니다.

네트워크 인터페이스의 상태도 중요하다

운영체제에서는 네트워크 인터페이스가 현재 어떤 상태인지 확인할 수 있습니다.

대표적으로:

UP
DOWN

같은 상태를 볼 수 있습니다.

UP은 해당 인터페이스가 활성화되어 있다는 의미로 사용되고, DOWN은 비활성화된 상태를 나타냅니다.

물론 실제 운영체제나 명령어에 따라 표시 방식은 조금씩 달라질 수 있습니다.

예를 들어 랜 케이블이 빠져 있거나 네트워크 어댑터가 비활성화되어 있다면 정상적인 통신이 되지 않을 수 있습니다.

Windows에서는 어떻게 확인할까?

Windows에서는 네트워크 어댑터 설정이나 명령 프롬프트를 통해 네트워크 인터페이스 정보를 확인할 수 있습니다.

대표적으로:

ipconfig

명령어를 사용할 수 있습니다.

실행하면 다음과 같은 정보들을 확인할 수 있습니다.

IPv4 Address
Subnet Mask
Default Gateway

등입니다.

좀 더 자세한 정보를 보고 싶다면:

ipconfig /all

을 사용할 수도 있습니다.

여기에서는 네트워크 어댑터의 MAC 주소와 DHCP 정보 등도 확인할 수 있습니다.

Linux에서는 인터페이스 이름이 조금 다르다

Linux에서는 네트워크 인터페이스 이름이 Windows와 다르게 표시될 수 있습니다.

예를 들어:

eth0
ens33
enp0s3
wlan0

등의 이름을 볼 수 있습니다.

최근 Linux에서는 ip 명령어를 이용해서 네트워크 인터페이스를 확인하는 경우가 많습니다.

ip addr

를 실행하면 인터페이스와 IP 주소 등의 정보를 확인할 수 있습니다.

예를 들어:

eth0
192.168.0.10

lo
127.0.0.1

같은 형태로 확인할 수 있습니다.

가상 네트워크 인터페이스도 존재한다

네트워크 인터페이스가 반드시 실제 랜카드와 연결되어 있어야 하는 것은 아닙니다.

가상화 환경이나 Docker 같은 기술을 사용하면 가상 네트워크 인터페이스가 만들어질 수 있습니다.

예를 들어:

실제 NIC
   ↓
물리 네트워크

가상 인터페이스
   ↓
가상 머신 / 컨테이너

처럼 구성할 수 있습니다.

그래서 개발 환경에서 네트워크 인터페이스 목록을 확인했는데 처음 보는 인터페이스가 여러 개 나타나는 경우가 있습니다.

처음에는 “내 컴퓨터에 랜카드가 이렇게 많았나?”라는 생각이 들 수 있지만, 실제로는 가상 환경에서 만들어진 인터페이스일 수도 있습니다.

Docker에서도 네트워크 인터페이스가 사용된다

Docker를 사용해 본 사람이라면 컨테이너 내부에서 네트워크 인터페이스가 존재하는 것을 볼 수 있습니다.

일반적으로:

컨테이너
   ↓
가상 네트워크 인터페이스
   ↓
Docker 네트워크
   ↓
호스트
   ↓
실제 네트워크

와 같은 구조로 통신이 이루어집니다.

이처럼 네트워크 인터페이스는 실제 PC의 랜카드뿐만 아니라 가상 네트워크 환경에서도 중요한 역할을 합니다.

네트워크 인터페이스와 라우팅의 관계

여기서 앞에서 공부했던 라우팅 테이블과도 연결됩니다.

컴퓨터가 데이터를 보낼 때 단순히 목적지 IP만 확인하는 것이 아니라 어느 인터페이스를 통해 보내야 하는지도 결정해야 합니다.

예를 들어:

목적지
8.8.8.8
   ↓
라우팅 테이블 확인
   ↓
기본 경로 선택
   ↓
Ethernet 인터페이스 사용
   ↓
라우터로 전송

이런 방식입니다.

따라서 네트워크 인터페이스는 단순히 인터넷 연결을 담당하는 장치가 아니라 운영체제가 네트워크 데이터를 실제로 주고받는 통로라고 생각할 수 있습니다.

네트워크 인터페이스가 여러 개라면?

예를 들어 노트북에 Wi-Fi와 Ethernet이 동시에 연결되어 있다고 해보겠습니다.

             인터넷
                ↑
        ┌───────┴───────┐
        │               │
    Ethernet          Wi-Fi
        │               │
        └────── 컴퓨터 ────┘

이 경우 컴퓨터는 두 개의 네트워크 경로를 가지고 있습니다.

그렇다면 어떤 것을 사용할지는 운영체제의 네트워크 설정과 라우팅 정보에 따라 결정됩니다.

그래서 네트워크 인터페이스와 라우팅 테이블은 서로 밀접하게 연결되어 있습니다.

네트워크 인터페이스가 중요한 이유

네트워크를 공부할 때 IP 주소, MAC 주소, 스위치, 라우터 같은 용어는 많이 접하지만 네트워크 인터페이스는 상대적으로 쉽게 지나치기 쉽습니다.

하지만 실제 컴퓨터에서는 네트워크 통신이 인터페이스를 통해 이루어집니다.

예를 들어:

애플리케이션
      ↓
운영체제 네트워크 스택
      ↓
네트워크 인터페이스
      ↓
NIC
      ↓
랜 케이블 / Wi-Fi
      ↓
네트워크

이런 흐름을 생각하면 네트워크 인터페이스가 어디에 위치하는지 이해하기 쉽습니다.

네트워크 인터페이스를 쉽게 기억하는 방법

처음에는 Network Interface라는 이름이 조금 추상적으로 느껴질 수 있습니다.

그럴 때는 “컴퓨터와 네트워크가 만나는 접점”​이라고 생각하면 편합니다.

컴퓨터
   ↕
네트워크 인터페이스
   ↕
네트워크

유선이면 Ethernet 인터페이스를 사용할 수 있고, 무선이면 Wi-Fi 인터페이스를 사용할 수 있습니다.

그리고 Loopback처럼 컴퓨터 내부에서 통신하기 위한 논리적인 인터페이스도 존재합니다.

즉, 네트워크 인터페이스는 단순히 “랜카드”만을 의미하는 것이 아니라 컴퓨터가 네트워크와 통신하기 위한 연결 지점 전체를 생각하는 개념입니다.

정리

네트워크 인터페이스는 컴퓨터가 네트워크와 데이터를 주고받을 수 있도록 연결해 주는 인터페이스입니다.

대표적으로:

Ethernet
Wi-Fi
Loopback
가상 네트워크 인터페이스

등이 있습니다.

NIC는 네트워크 연결을 담당하는 하드웨어를 의미하는 반면, 네트워크 인터페이스는 운영체제에서 관리되는 논리적인 네트워크 연결까지 포함하는 더 넓은 개념으로 볼 수 있습니다.

또한 네트워크 인터페이스에는 IP 주소가 설정될 수 있고, 물리적인 네트워크 인터페이스에는 MAC 주소가 연결되어 사용됩니다.

컴퓨터가 데이터를 전송할 때는 라우팅 정보를 확인한 뒤 적절한 네트워크 인터페이스를 통해 데이터를 내보내게 됩니다.

결국 네트워크 인터페이스를 한 문장으로 정리하면:

“컴퓨터가 네트워크와 통신하기 위해 사용하는 연결 지점”​이라고 이해하면 됩니다.

처음에는 단순한 랜카드 정도로 생각해도 되지만, Linux나 Docker, 가상머신 등을 다루기 시작하면 가상 인터페이스까지 등장하기 때문에 물리적인 장치와 운영체제에서 보이는 인터페이스를 구분해서 이해하는 것이 중요합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

글쓴이

rjsan46@koreabites.com

관련 게시물

웹 브라우저에 주소를 입력하면 일어나는 일

웹 브라우저 주소창에 웹사이트 주소를 입력하고 엔터를 누르면 바로 화면이 나타나는 것처럼 보인다. 하지만 실제로는 그 짧은 순간에 꽤 많은 일이 일어난다....

모두 읽어보기

소켓이란 무엇일까? 프로그램과 네트워크를 연결하는 통로

네트워크를 공부하다 보면 IP 주소와 포트 번호라는 말을 계속 만나게 된다. IP 주소는 어떤 컴퓨터와 통신할 것인지 구분하고, 포트 번호는 그 컴퓨터에서...

모두 읽어보기

쿠키와 세션은 어떻게 다를까?

웹사이트를 이용하다 보면 한 번 로그인한 뒤 다른 페이지로 이동해도 로그인 상태가 계속 유지되는 것을 볼 수 있다. 예를 들어 쇼핑몰에 로그인한...

모두 읽어보기

SSL과 TLS는 어떤 역할을 할까?

앞에서 HTTPS가 HTTP보다 안전한 이유를 살펴봤다. HTTPS는 단순히 HTTP 자체가 더 안전하게 만들어진 프로토콜이 아니라, HTTP 통신에 TLS라는 보안 계층을 적용한 것이라고...

모두 읽어보기

포트 번호로 네트워크 서비스를 구분하는 방법

컴퓨터가 네트워크를 통해 다른 컴퓨터와 통신할 때 가장 먼저 떠오르는 것이 IP 주소다. 예를 들어 어떤 서버의 IP 주소가 192.168.0.10이라고 해보자. 그런데...

모두 읽어보기

HTTPS는 HTTP보다 무엇이 안전할까?

인터넷에서 웹사이트에 접속하다 보면 주소창에 http://가 붙어 있는 경우도 있고 https://가 붙어 있는 경우도 있다. 요즘은 대부분의 웹사이트가 HTTPS를 사용하기 때문에 사실상...

모두 읽어보기