Computer/네트워크

Network Interface 파헤치기

hadaney 2022. 6. 26. 23:56

안녕하세요~ 네트워크 공부를 시작한 네린이입니다 :_)

 

보통 네트워크 공부를 시작하면 헷갈리는 용어들이 굉장히 많습니다. 실제 장비들을 보거나 코드를 돌려보면서 학습하기 어렵다보니 특정 용어들은 직관적으로 이해하기도 쉽지 않고요. 

 

그래서 오늘은 가장 기본적인 Network Interface 개념부터 관련된 용어들을 이해해보는 시간을 가져보겠습니다.

Network Interface

먼저 Network란 두 대 이상의 컴퓨터를 연결해 통신하는 것을 일컫습니다. 그리고 Interface는 어떤 것들 사이의 소통을 위한 매개체 또는 프로토콜(약속, 규약)을 의미합니다. 그리고 Network Interface(NI)는 컴퓨터와 네트워크 사이의 상호 연결 지점을 의미합니다. 아래는 Network Interface에 대한 정의입니다.


💡 A network interface is the point of interconnection between a computer and a private or public network.

A network interface is generally a network interface card (NIC), but does not have to have a physical form.

Instead, the network interface can be implemented in software.

https://docs.oracle.com/javase/tutorial/networking/nifs/definition.html 


Network Interface(NI)는 실제로 물리적 실체를 가질 수도 있고, 소프트웨어만으로도 구현될 수 있습니다. 일반적으로는 이 연결지점을 담당하는 물리장비인 Network Interface Card(NIC)로 NI를 표현하지만, loopback Interface와 같이 소프트웨어 전용 구성 요소로도 나타낼 수 있습니다. 또는 클라우드처럼 가상으로 물리장비를 파티션해 여러 사용자가 나눠쓰는 환경에서는 논리적 네트워크 요소로 NI를 직접적으로 생성하기도 합니다. 아래는 amazon VPC에서 NI를 생성하는 장면입니다.

 

Network Interface Card

Network Interface Card(NIC)는 컴퓨터에 전용 네트워크를 제공하는 회로 기판으로 현재는 컴퓨터의 마더보드에 기본적으로 내장되어 있습니다. NIC는 같은 의미를 지닌 이름이 많습니다. Network Interface Controller 라고도 불리며, 좁은 네트워크(Local Area Network, 근거리 통신망)와 컴퓨터를 연결한다는 의미에서 LAN card, LAN Adaptor로도 불립니다. 또한 네트워크 통신을 위한 하드웨어 구성요소이기도 하여 Network Adaptor라고도 불립니다.

 

Network Interface Card의 종류는 크게 2가지가 있습니다: `Ethernet NIC, Wireless NIC`

랜카드. https://www.deskdecode.com/lan-card-or-wifi-card-nic/

Ethernet은 LAN이라는 작은 범위의 네트워크를 구성하는 여러 방식 중 하나입니다. Ethernet 이외에 Token Ring, FDDI 등 다양한 형태가 있지만, 1980년 Ethernet이 등장한 이후로 현재는 다른 네트워크 구성 방식들을 대체하며 가장 많이 쓰이는 네트워킹 방식이 되었습니다. Ethernet NIC는 해당 카드에 케이블을 연결해야 하며, 케이블은 Ethernet 규격에 맞추어 연결해야 합니다. 이더넷 규격은 여러 교과서에서도 참조표로 많이 등장하죠?

이더넷 규격. https://www.researchgate.net/figure/table-of-recommended-distances-for-networking-Ethernet_tbl2_330134691

Wireless NIC는 케이블 연결이 필요하지 않은 무선 통신을 지원하며 카드에 통합된 작은 안테나로 구성됩니다. WiFi 가 여기에 속하며 무선 네트워크를 작동하기 위해서는 안테나가 달린 라우터가 필요합니다. 요즘에는 Bluetooth device로도 WiFi를 할 수 있는데 이 방식 또한 Wireless NIC 중 하나입니다. 

https://en.wikipedia.org/wiki/Wireless_network_interface_controller

 

그렇다면 실질적으로 NIC는 어떤 역할을 할까요?

NIC는 OSI 7계층 중 물리 계층과 데이터링크 계층에 속한 장비로 기본적으로 네트워크에서 컴퓨터로 전달된 전기신호를 데이터(=비트)로 변환합니다. 그리고 프로세서에 IRQ(인터럽트 요청)를 보내 변환한 데이터를 CPU까지 전달하는 역할을 합니다. 반대로 전송할 데이터를 전기신호로 변환하기도 합니다. 이 경우 전송될 프레임의 유형이나 버퍼 사이즈 등을 설정하여 통신을 준비하고 빠른 전송을 위해 데이터를 압축하기도 합니다.

Virtual Network Interface

앞서 설명했듯이 Network Interface(NI)는 NIC가 없이도 소프트웨어만으로도 구성될 수 있습니다. wiki에서 Virtual Network Interface를 다음과 같이 정의합니다.


It is common for the operating system kernel to maintain a table of virtual network interfaces in memory. This may allow the system to store and operate on such information independently of the physical interface involved 

https://en.wikipedia.org/wiki/Virtual_network_interface


커널이 메모리에 가상 네트워크 인터페이스 테이블을 유지 관리하는 것은 일반적이며 시스템이 관련된 물리적 인터페이스와 독립적으로 그러한 정보를 저장하고 작동하게 할 수 있습니다.

 

그렇다면 왜 네트워크 장비에서 가상의 인터페이스가 필요할까요? 네트워크 실습을 위해 물리장비 없이도 추가적인 네트워크를 생성할 때 사용할 수 있으며 이 밖에도 라우팅 프로토콜(OSPF, BGP 등) 내에서 라우터를 구별하는 Router ID로 사용하기 위해서 또는 라우터 기기 자체를 테스트하기 위한 용도로도 쓰입니다.

Loopback Interface

Virtual Network Interface를 본 김에 Loopback Interface도 같이 확인해보겠습니다. 먼저 Loopback의 정의는 다음과 같습니다. 


💡 루프백(Loopback, loop-back) 전기신호의 라우팅, 디지털 데이터 스트림(digital data streams), 또는 품목의 흐름이 의도적인 가공이나 수정 없이 원래의 장치나 장비로 돌아가는 것을 말한다. 이것은 주로 전송이나 수송 기반 시설을 테스트하는 수단으로 사용된다.

https://ko.wikipedia.org/wiki/%EB%A3%A8%ED%94%84%EB%B0%B1 


Loopback 자체는 기존의 장치 또는 장비로 신호를 그대로 되돌리는 것을 일컫는다는 사실에 기반하여 Loopback Interface는 자기 자신을 가리키는 역할을 하는 가상의 인터페이스입니다.

 

Loopback Interface는 물리적으로 호스트를 연결하지 않고도 논리적인 인터페이스를 만들 수 있습니다. 가상의 네트워크이기 때문에 라우터가 다운되지 않는 한 계속 살아으며 이 때문에 가장 튼튼한 네트워크 인터페이스라고도 불립니다. 참고로 Loopback Interface는 생성과 동시에 Layer 2 계층의 역할을 수행합니다. 이와 달리 Serial Interface(직렬 포트)나 Ethernet Interface는 동작을 위해 사전에 Bandwith나 Clock rate 설정(통신 속도)과 같은 추가적인 조치들이 필요하며, 물리적 여건에 따라 쉽게 망가질 수 있습니다. 

 

라우터에서 loopback interface를 생성하는 방법은 다음과 같습니다

# (라우터에서 다음과 같은 명령어를 수행합니다)

# 먼저 설정할 loopback interface의 번호를 선택한다.
# 만들 수 있는 범위는 0 ~ 0,2147483647
interface loopback 0 

# 그리고 만든 loopback interface에 IP 주소를 부여한다.
# ip add <IP 주소> <서브넷 마스크> 
ip add 1.1.1.1 255.255.255.0

show ip route

 

네트워크 장비가 아닌 TCP/IP에서 Loopback Interface는 어떤 역할을 할까요?

TCP/IP 에서 `127.0.0.1`은 localhost 주소 또는 루프백(loopback)으로 불립니다. `127.0.0.1`이 IPv4에서 자기 자신을 가리키는 목적으로 예약되어 있는 IP 주소이기 때문입니다. IETF(국제 인터넷 표준화 기구)는 127/8(127.0.0.X)로 Loopback Interface를 제시하지만 일반적으로 127.0.0.1을 가장 많이 사용한다고 합니다.

기본적으로 생성되어 있는 Loopback Interface

Loopback Interface는 자신을 가리키는 인터페이스로, 같은 컴퓨터 내에서 동작하는 네트워크 응용 프로그램 클라이언트와 서버가 송수신할 때 사용합니다. Loopback Interface로 데이터를 송신하면 컴퓨터는 네트워크 인터페이스 컨트롤러에 패킷을 보내지 않고 네트워크 소프트웨어 스택으로 다시 보내게 됩니다. 따라서 패킷을 외부로 전송되지 않고 자신이 받은 것으로 처리되어 상위 계층으로 올려보내게 됩니다. 그래서 보통 서버/클라이언트 프로그램을 만들게 되면 이 Loopback 주소로 네트워크에 직접 연결하지 않고 빠르게 프로그램을 테스트할 수 있습니다.