[TCP/IP] 네트워크 인터페이스 계층
네트워크 인터페이스 계층의 역할
TCP/IP 모델 최하층에 위치한 네트워크 인터페이스 계층은 인접한 네트워크 기기 간에, 전기신호나 전파와 같은 물리적 신호가 도달하는 범위에서 데이터를 전송하는 역할을 한다.
위의 그림 1에서 네트워크 1 내에 있는 1번 PC와 2번 노트북은 랜 케이블과 스위치로 직접 연결되어 있다. 1번 PC와 2번 노트북 사이의 데이터 전송은 네트워크 인터페이스 계층의 기능만으로 가능하다. 스위치가 자신과 연결된 기기들의 물리 주소를 식별하고 데이터를 제어함으로써 1번 PC에서 전송된 데이터가 2번 노트북으로 정확하게 도달할 수 있게 되는 것이다.
네트워크 인터페이스 계층에 속한 물리적인 네트워크 장비로는 랜카드(NIC), 스위치, 무선 AP등이 있다. 이런 하드웨어를 랜 케이블 같은 전송 매체로 연결하여 데이터의 물리적 신호 전송이 가능한 유선 *LAN이나 무선 LAN과 같은 물리 네트워크를 구성한다.
*LAN: Local Area Network
랜카드(NIC; Network Interface Card)
네트워크에 연결하는 컴퓨터에는 유선이든 무선이든 반드시 하나 이상의 랜카드(NIC)가 있어야 한다.
컴퓨터에 랜카드(NIC)가 장착되어 있어야 랜 케이블을 연결할 수 있는 랜포트(또는 외부 포트)가 생기고, 랜포트에 랜 케이블을 꽂음으로써 다른 컴퓨터나 네트워크 장비를 연결하는 유선 네트워크를 만들 수 있다.
또한 컴퓨터에 무선 랜카드가 장착되어야 무선랜 인터페이스가 생기고, 무선랜 인터페이스와 *무선 AP가 연결되는 무선 네트워크를 만들 수 있다.
*무선 AP(무선 액세스 포인트): 컴퓨터 네트워크에서 와이파이를 이용한 관련 표준을 이용하여 무선 장치들을 유선 장치에 연결할 수 있게 하는 장치
또한 랜카드(NIC)는 컴퓨터가 만든 디지털 데이터를 전기 신호나 전파와 같은 물리적 신호로 변환하여 네트워크로 내보내거나, 네트워크로 부터 받은 물리적 신호를 디지털 데이터로 변환하는 기능을 가지고 있다. 즉 랜카드는 컴퓨터와 네트워크 사이에서 인터페이스 역할을 하며 프로토콜의 처리를 담당하는 기능을 하는 핵심적인 하드웨어이다.
랜카드와 장치 드라이버
컴퓨터에 랜카드(NIC)을 장착한다고 저절로 작동하는 것은 아니다. 물리적 장비(하드웨어)를 그 용도에 맞게 사용하기 위해선 하드웨어를 관리하고 제어할 수 있는 소프트웨어(=장치 드라이버)가 필요하다
예를들어 컴퓨터를 사용해 문서를 작성하려면, 컴퓨터에 하드웨어를 제어하는 운영체제(OS)라는 시스템 소프트웨어가 설치되고, 그 위에 MS워드와 같은 응용 소프트웨어가 설치된다. 같은 맥락으로 프린터와 같은 주변 기기를 컴퓨터와 연결할 때도 장치 드라이버(Device Driver)라는 소프트웨어를 컴퓨터에 설치해야 사용이 가능하다.
컴퓨터 운영체제(OS)에 랜카드(NIC)을 작동시키기 위한 장치 드라이버가 설치되어야 컴퓨터가 랜카드를 제어하고 프로토콜을 처리하며 네트워크 인터페이스 계층의 역할을 구현할 수 있는 환경이 만들어진다.
+) OS에는 자주 사용되는 표준 기기들을 제어할 수 있는 장치드라이버가 내장되어있다. 따라서 랜카드 장치 드라이버나 USB 장치 드라이버와 같이 자주 쓰이는 장치 드라이버는 따로 설치할 필요 없이 컴퓨터에 기기를 연결하면 바로 이용할 수 있다. 이것을 플러그 앤 플레이(Plug and Play)기능이라고 한다.
네트워크 인터페이스 계층과 프로토콜
TCP/IP에서 (랜 케이블을 따라 전기 신호로 데이터를 전송하는) 유선 LAN은 이더넷 프로토콜(IEEE 802.3)을, *(공기 중에서 전파로 데이터를 전송하는) 무선 LAN은 무선 LAN 프로토콜(IEEE 802.11*)을 거의 표준으로 사용한다. (실제로는 특정 프로토콜을 규정하지 않고 모든 표준 규격과 프로토콜을 지원한다.)
*IEEE 802.3 (=이더넷(Ethernet)) (=유선 LAN): 랜케이블(=이더넷 케이블), 랜포트(=이더넷 포트)에 의해 만들어진 네트워크
*IEEE 802.11 (=와이파이(Wi-Fi)) (=무선 LAN): 무선 AP가 설치된 곳의 일정 거리 안에서 무선 인터넷에 접속할 수 있는 기술
네트워크 인터페이스 계층의 프레임 전송
네트워크 데이터를 전송하려는 물리적인 기기를 노드(Node)라고 한다. 각각의 노드는 서로 다른 노드와 구분되기 위해 주소를 가진다. 따라서 노드 = 네트워크에 연결된 주소가 있는 물리적인 기기이다.
네트워크 인터페이스 계층은 물리적으로 연결된 기기들 간의 데이터 전송을 제어하므로 다른말로 표현하면 같은 네트워크에 연결된 노드와 노드 간의 데이터 전송을 제어하는 것이다.
데이터 전송을 제어한다는 것은 크게 두가지 의미를 가진다.
- 데이터를 순차적으로 전송하기 위해 데이터에 번호를 부여해 전송하는 순서 제어
- 수신지가 감당할 수 있을 정도로 전송 양을 조절하고, 수신측의 수신 여부를 확인하는 흐름 제어
프레임 전송
보내고자 하는 데이터는 프레임 단위로 전송하게 된다. 이때 프레임은 헤더(수신지 주소 및 필요한 정보)+데이터(IP 패킷)로 구성된다.
LAN의 표준화 규칙인 이더넷 프로토콜과 무선 LAN프로토콜은 노드를 식별하기 위해 MAC 주소를 사용하여 프레임을 전송한다.
MAC 주소와 랜카드
네트워크 인터페이스 계층에서 핵심으로 사용되는 장치인 랜카드(유선 네트워크와 랜케이블을 연결하는 인터페이스)에는 제조 단계에서 부여되는 전세계에서 유일한 MAC주소가 할당된다. 이외에도 무선 AP(유선 네트워크와 무선 네트워크를 연결하는 인터페이스), 라우터(서로 다른 네트워크와 네트워크를 연결하는 인터페이스) 또한 고유한 MAC주소를 할당받는다.
스위치
- 스위치와 브리지의 차이?
스위치와 브리지는 둘 다 데이터링크 layer 장비이며, 둘 이상의 근거리 네트워크를 서로 연결할 때 사용되는 장치라는 점에서 비슷하다. 하지만 둘 사이에도 차이점이 있다.- 처리 장치의 차이
스위치는 하드웨어적으로 처리를 하는 반면 브리지는 소프트웨어적으로 프레임을 처리한다. 따라서 처리 속도는 스위치가 훨씬 빠르다는 장점이 있다. - 다양한 속도 지원
브리지는 포트들이 모두 같은 속도를 지원한다. 하지만 스위치는 10메가 포트와 100메가 포트가 한 장비에 같이 있어 다양한 속도를 지원해준다. - 포트 수
브리지는 보통 2개에서 3개 정도의 포트를 가진다. 스위치는 몇십, 몇백 개의 포트를 제공할 수 있다. - 프레임 처리방식의 차이
브리지의 경우 프레임을 처리하는데 Store-and-forward 방식만을 지원한다. 스위치는 Store-and-forward방식과 Cut-through 두개의 방식을 사용한다.
+) 프레임 처리방식- Store-and-forwarding방식: 스위치나 브리지가 들어오는 프레임을 전부 받아들인 후 처리를 시작한다. 프레임이 전부 들어오면 에러는 없는지, 송수신지 주소는 어디인지 등을 파악하여 처리한다. 에러가 발견되는 경우, 해당 프레임을 버리고 송신지에 재전송을 요청하므로 복구능력이 뛰어나다고 볼 수 있다.
- Cut-through방식: 스위치가 들어오는 프레임의 목적지 주소만 확인한 후 바로 전송하는 방식이다. Store-and-forwarding방식 처럼 전부 다 들어올 때 까지 기다리지 않고 목적지 주소만 확인하므로 첫 48비트만 확인후 보내기 때문에 훨씬 빠르다는 장점이 있지만, 에러를 찾아내기 어려워 복구 능력이 낮다는 약점을 가지고 있다.
- +) Fragment-free방식: Store-and-forwarding방식과 Cut-through방식의 장점을 결합한 방식. 전체 프레임이 다 들어올 때 까지 기다릴 필요가 없다는 측면에서는 Cut-through방식의 장점을 가져왔지만, 첫 48비트만 보는것이 아니라 첫 512비트를 확인하게 된다. 따라서 Store-and-forwarding방식의 복구능력의 장점도 가져왔다고 할 수 있다. (요즘 고가형 스위치는 이 방식을 지원한다.)
- 처리 장치의 차이
여러대의 컴퓨터를 연결하여 LAN이라는 소규모 네트워크를 만들 때 스위치라는 네트워크 장비가 사용된다.
스위치는 그림4와 같이 여러개의 랜포트를 통해 네트워크 인터페이스를 확장하는 역할을 하지만, 랜카드나 라우터, 무선AP와 같이 서로 다른 기기나 네트워크가 상호작용하도록 돕는 인터페이스는 아니다. 따라서 MAC주소를 가지고 있지 않다.
스위치는 그림5와 같이 각 포트번호와, 해당 포트에 연결되어있는 컴퓨터의 MAC주소를 “MAC 주소 테이블”이라는 데이터베이스에 저장한다.
MAC 주소에 의한 데이터 전송 과정
이더넷 프로토콜에 따른 통신
먼저 이더넷 프로토콜을 따르는 네트워크 인터페이스 계층에서는 MAC주소 기준으로 수신지를 식별한다. 스위치가 MAC 주소를 기준으로 수신지를 선택하는 것을 MAC 주소 필터링이라고 한다.
(내가 이해한 바를 토대로 순서대로 나열)
1. 상위계층(인터넷 계층)으로 부터 데이터를 송신지 네트워크 인터페이스 계층으로 넘겨 받는다.
2. 데이터를 받은 송신지 네트워크 인터페이스 계층은, 이더넷 형식으로 데이터를 보내기 위해 송수신지 MAC주소를 가지는 이더넷 헤더를 데이터에 붙여 이더넷 프레임을 만든다. → 송수신지 MAC주소는 어디서 맵핑 해오나? (: IP주소로 부터 MAC주소를 얻어내는 것이 ARP*(Address Resolution Protocol이다.) *ARP(주소 결정 프로토콜): IP 주소를 MAC 주소와 매칭 시키기 위한 프로토콜. 동일 IP대역을 가지는 LAN 내에서 broadcast로 ARP request를 날리고 각 노드들이 ARP response(MAC주소)를 날린다.
3. 이더넷 프레임은 랜카드를 거쳐 랜케이블을 거쳐 스위치에 도착한다.
4-1. 스위치의 MAC 주소 테이블에서 수신지 MAC주소에 해당하는 포트로 이더넷 프레임을 보낸다.
4-2. MAC 주소 테이블에 수신지 MAC주소가 등록되어있지 않은 경우, 송신 포트를 제외한 포트 중 MAC주소가 등록되지 않은 포트로 이더넷 프레임을 전송한다. 이것을 플러딩(Flooding)이라고 한다. → MAC 주소가 등록되지 않은 포트로 가면, 수신지 MAC 주소로 한번에 바로 찾아가나…? (: Flooding은 MAC주소가 없는 모든 포트로 패킷을 전달한다. 따라서 스위치에 연결된 모든 node에 방문하기 때문에 아마 찾아갈 것- 아래 예시)
5. 해당 포트의 랜케이블을 거쳐 랜카드를 거쳐 수신지 네트워크 인터페이스에 이더넷 프레임이 도달한다.
6. 수신지 네트워크 인터페이스는 이더넷 프레임의 이더넷 헤더에있는 수신지 MAC 주소가 자신의 MAC주소와 일치하는지 확인한다.
7-1. 자신에게 온 데이터가 맞으면 이더넷 프레임에서 이더넷 헤더를 삭제하고 데이터 부분을 상위계층(인터넷 계층)으로 넘긴다.
7-2. 자신에게 온 데이터가 아니면 이더넷 프레임을 폐기한다.
무선 LAN 프로토콜에 따른 통신
무선 LAN 프로토콜의 경우, 송신지와 수신지 사이를 무선 AP가 중계한다. → 그럼 스위치가 꼭 필요한가? 그냥 랜케이블 하나로 연결하면 안되나? (: 컴퓨터가 여러대인 경우…) 따라서 무선 LAN프레임의 헤더에는 송수신지 MAC 주소 외에 무선 AP의 MAC 주소에 대한 정보도 포함된다.
(출처: https://better-together.tistory.com/101)
본 내용은 제가 네트워크 공부를하며 위 블로그를 참고해 정리한 내용이어서 스스로가 이해하기 쉽도록 말을 길게 풀어 쓴 구간이 많습니다. 위 블로그에서 깔끔하고 상세하게 설명을 잘 하고 있기 때문에 공부를하는 분들은 위 블로그로 확인해보시는것도 추천드립니다~