[F-Lab 모각코 챌린지 26일차] 인터넷 계층과 네트워크 인터페이스 계층의 관계

Nami·2023년 6월 26일
1

66일 포스팅 챌린지

목록 보기
26/66
post-thumbnail

우선 공부하고 싶었던 개념은 ARP였으나 파보면서 계획이 변경되었다. 프론트엔드 관점으로 방향성을 다시 잡게 되었다. 내용을 훑다보면 자연스럽게 그 흐름을 익힐 수 있게 될 것.

인터넷 계층과 네트워크 인터페이스 계층의 관계

ARP

논리적인 IP 주소를 (네트워크 계층 | OSI) 물리적인 MAC 주소로 (데이터 링크 계층 | OSI) 바꾸어주는(bind) 역할을 하는 주소 해석 프로토콜.

논리적 주소와 물리적 주소 사이의 변환을 담당하는 프로토콜. TCP/IP 계층의 관점으로 보면 인터넷 계층과 네트워크 인터페이스 계층 사이에 작동한다.

동작방식

  • 최초 상대방의 물리적 주소를 알지 못하고 IP 주소만을 알고 있기 때문에 ARP Request 메시지로 Broadcast 한다.
  • IP와 같은 B 시스템은 요청자의 MAC 주소로 Unicast로 응답하여 자신의 IP와 MAC 주소 정보를 담아 전송한다.
  • ARP Cache에 IP에 매핑된 MAC 주소를 일정시간(1-2분) 보관해두고 시간이 지나면 삭제한다.

(ARP 캐시 테이블 확인하는 방법도 있는데 더이상은 깊게 안파려한다.)

MAC Media Access Control

네트워크 인터페이스 카드(NIC, 네트워크 어댑터)에 할당된 고유한 식별자이다. MAC 주소는 네트워크 장치(컴퓨터, 노트북, 스마트폰, 라우터)가 제조사에 의해 고유하게 부여되며, 전 세계적으로 유일한 주소이다. LAN(Local Address Network)에서 목적지와 통신하기 위한 실질적인 주소가 바로 MAC.

MAC 주소는 48비트 길이로 이루어져 있고, 16진수로 표현된다. 주소 형식은 보통 6개의 그룹으로 나누어져 있고 각 그룹은 2개의 16진수 숫자로 표현된다. 예를 들어, "00:1A:2B:3C:4D:5E"와 같은 형식.

ARP를 네트워크 단계로 다루지 않는 이유?

(개인적 궁금증)
ARP는 네트워크 계층과 데이터 링크 계층 사이에 동작하는 프로토콜이지만, 일반적으로 네트워크 계층에서 다루는 프로토콜이 아니라 데이터 링크계층에서 다루는 프로토콜로 간주된다. 네트워크 계층에서 사용하는 프로토콜인 IP와 밀접한 관련이 있지만 직접적인 개입이 어렵다. 즉, 물리적 단계에 가깝게 보는 것이다.

네트워크에서 수행되는 라우팅, 패킷 분할 및 조립, 에러 검출 및 복구 와는 연관성이 적다.
네트워크 공부를 어디까지 해야하나 고민이 좀 되었는데 이제 좀 알 것 같다!

HTTP 공부 처음에 참조했던 그림을 들고왔다. 그때와 지금 보았을 때 확실히 이해도가 달라졌다. ARP 단계 이전에 라우팅에 대해 공부가 우선이라 생각되었다.

인터넷 계층의 필요성과 라우터의 역할

네트워크 인터페이스 계층(데이터 링크 계층 ~ 이후 | OSI)의 역할은 어디까지나 물리적으로 직접 연결된 컴퓨터 간에 데이터를 전송하는 데에 있다.

직접 연결된 컴퓨터의 범위를 넘어서 멀리 떨어진 컴퓨터에 데이터를 전송하기 위해 필요한 계층이 인터넷 계층이다. 인터넷 계층은 인터 네트워킹(Inter Networking), 즉 네트워크 간 데이터를 전송하는 역할을 한다. 서로 다른 네트워크 간에 데이터를 전송하는 라우터가 인터넷 계층의 역할을 구현하는 핵심 네트워크 장비이다.

IP Internet Protocol

수많은 네트워크가 연결된 인터넷에서 데이터가 송신지를 출발하여 수신지에 도착하기까지 수많은 라우터들을 통과하게 된다. 그 과정에서 데이터가 길을 잃지 않고 정확한 목적지에 도착할 수 있도록 하는 것이 IP이다. IP에 따라 네트워크에 연결된 컴퓨터는 물리적 연결이나 거리에 상관없ㅅ이 통신이 가능하기 때문에 인터넷을 지탱하는 TCP/IP 계층 모델에서 가장 중심이 되는 프로토콜이다.

IP는 1️⃣ IP 주소 (최종 목적지 결정)와 2️⃣ 라우팅 (목적지까지 경로 결정)으로 기능을 구현한다.

인터페이스와 IP 주소의 할당

IP 주소는 호스트 역할을 하는 컴퓨터 뿐만 아니라, 라우팅을 하는 라우터에도 할당된다. 호스트와 라우터를 링크로 연결한 네트워크에서 라우팅은 IP 주소를 기반으로 호스트와 라우터, 라우터와 라우터, 라우터와 호스트의 경계를 넘나들며 링크를 연결하는 과정이다. 각각의 경계를 인터페이스라고 하며 각 인터페이스가 IP 주소를 갖고 있어야 라우팅을 할 수 있다. 따라서 IP는 각 호스트와 라우터의 인터페이스가 IP 주소를 갖도록 요구한다. 연결되는 인터페이스마다 IP 주소가 할당됨.

라우팅 Routing

네트워크에서 경로를 선택하는 프로세스. 컴퓨터 네트워크는 노드라고 하는 여러 시스템과 이러한 노드를 연결하는 경로 또는 링크로 구성된다. 상호 연결된 네트워크에서 두 노드 간의 통신은 여러 경로를 통해 이루어질 수 있다. 라우팅은 미리 정해진 규칙을 사용하여 최적의 경로를 선택하는 프로세스이다.

최적의 경로란 가장 짧은 거리, 가장 적은 시간 내에 데이터를 전송할 수 있는 경로.

라우터는 IP 주소를 보고 데이터의 최종 목적지가 어느 네트워크에 접속 해있는지 판단해서 그 네트워크와 연결된 네트워크의 라우터 중 최적의 경로 상에 위치한 라우터로 데이터를 전송한다.

하나의 라우터가 결정하는 건 경로의 일부이다. 자신의 위치에서 최종 목적지까지 가기 위해 자신이 다음에 어디로 데이터를 보내야 하는지를 결정하는 것. 모든 경로를 이해하고 있는 것은 아님. 라우터에서 라우터로 이동하면서 라우터의 결정이 차례로 연결되어 최종 목적지까지 결정되는 것.

라우터에서 라우터로 최종 목적지가 속한 네트워크까지 최적의 경로를 찾아가는 반복적인 과정이 라우팅이다.

송신지 네트워크 인터페이스 계층을 거쳐 프레임으로 변환된 IP 패킷은 인터넷에서 수많은 라우터의 라우팅을 거쳐 수신지 네트워크 인터페이스 계층에 도착한다.

수신지 네트워크 인터페이스 계층으로부터 IP 패킷을 넘겨받은 수신지 인터넷 계층은 IP 헤더에서 수신지 IP 주소를 읽고 자신의 IP 주소와 일치하는지 비교하여 자신에게 온 데이터가 맞는지 확인한다. 자신에게 온 데이터가 맞으면 IP 패킷에서 IP 헤더를 삭제한 데이터(TCP Segment)를 상위 계층(전송 계층)으로 넘긴다.

네트워크 인터페이스 계층과 인터넷 계층의 관계

IP 주소와 MAC 주소를 모두 갖고 있는 컴퓨터와 라우터는 이 두 주소를 어떻게 구분하고 사용하면서 데이터를 전송하는 것일까?

인터넷 계층에서 IP 주소를 MAC 주소로 변환하는 역할을 하는 ARP(Address Resolution Protocol, 아프) 프로토콜이 사용된다.

ARP에 따라 IP 패킷을 전송할 MAC 주소를 받은 네트워크 인터페이스 계층은 MAC 주소를 이더넷 헤더에 담은 프레임 형태의 패킷을 만들어 라우터로 전송하는 것

프레임 형태의 패킷을 전송받은 라우터는 IP 헤더에서 수신지 IP 주소를 보고 다음에 어느 라우터로 패킷을 전송할지를 결정한다. 라우팅으로 결정된 다음 라우터에게 패킷을 건네 주기 위해 라우터의 IP 주소를 ARP 프로토콜을 사용해 MAC 주소로 변환.

라우터를 통과할 때마다 패킷의 최종 목적지인 IP 주소는 변하지 않지만, 라우팅 결과 선택된 경로에 따라 패킷의 다음 전송지인 MAC 주소가 변경되는 과정이 반복된다.

라우팅에서 MAC 주소와 IP 주소의 변환

프레임에 기록된 MAC 주소는 데이터를 전송하기 위한 최종 목적지 주소가 아니라, 물리적으로 연결된 바로 다음 목적지의 MAC 주소를 가리킨다. 스위치로만 연결된 유선 LAN에서는 다음 목적지의 MAC 주소가 최종 목적지의 MAC 주소와 일치하지만, 네트워크와 네트워크가 연결된 인터넷에서는 최종 목적지에 도달하기 전 반드시 라우터들을 거쳐야하므로 다음 목적지의 주소는 다음 라우터의 MAC 주소가 된다. 라우터가 최종 목적지가 속한 네트워크에 도착하기 위해 수많은 라우터를 거쳐가면서 프레임은 다음 목적지 MAC 주소로 계속 교체되는 것.

데이터를 최종 목적지까지 전달하기 위한 경로 중 최적의 경로 상에 있는 라우터를 찾아 다음 전송 목적지로 정하고, 다음 전송 목적지로 수신지 MAC 주소를 변경해서 데이터를 전송하는 과정을 라우팅이라고 한다.

프론트엔드로서 확실히 짚고 넘어가야할 핵심은 내가 영향을 끼칠 수 있는 단계가 어디까지인가? 최적화는 어떻게 어디까지 진행할 수 있을까.
즉 Application 계층, Transport 계층을 중점적으로 바라보면 될 듯하다! Data Link, Physical 계층 단계는 백엔드와의 소통에 좋을 것이고 옵셔널한 부분이라 생각. 나중에 욕심이 더 나면 더욱 파보는 것도 재밌을 듯하다.


참조 ✅

0개의 댓글