[네트워크] 6-3. LAN #1 (ARP, Ethernet)

kkado·2023년 6월 9일
0

네트워크

목록 보기
34/49

⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.


앞으로 2개의 글에 걸쳐 근거리 통신망 (LAN, Local Area Network)의 전체적인 구성 방식에 대해서 다룰 예정이다. 내용이 좀 길어져서 두 개의 글로 나누고자 한다.

1. MAC Address란

계층 구조에서 3계층에 해당하는 네트워크 계층에서 라우터 간의 통신은 IP 주소를 통해서 가능했다. 이와 더불어 라우팅 알고리즘, 라우팅 테이블 등 여러 개념을 알아본 바 있다.

2계층에 해당하는 링크 계층에서도 IP 주소와 비슷한 역할, 즉 통신에 사용되는 인터페이스의 식별자가 필요하다. 이를 MAC 주소 (Media Access Control address) 라고 한다. 또는 '물리적 주소' 라는 표현을 사용하기도 한다.

맥 주소는 물리적으로 연결된 인터페이스 간에 프레임을 전송하는 데 사용된다.

맥 주소는 48비트로 표현한다. 16진수(4비트)를 12개 이어붙인 형태로 사용하며 두 개씩 끊어서 하이픈('-') 으로 구분한다. (예시 : 1A-2F-BB-76-09-AD)

LAN 환경의 모든 인터페이스는 고유한 맥 주소를 가지고 있다.


2. ARP

맥 주소가 뭔지 알았으니 이제 맥 주소를 이용해 데이터를 전송하고자 한다. 그런데 문제가 있다.

IP 계층에서 받은 datagram으로 만든 frame으로는 상대방의 destination IP밖에 알 수 없다. 즉 이 destination IP로 보내기 위해 어느 맥 주소로 보내야 하는지는 알 수 없다. 여기서 ARP가 사용된다.

주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜이다. (위키백과)

마치 라우팅 테이블처럼 모든 IP 노드는 ARP table을 가지고 있다.
ARP table에는 정보가 <IP address, MAC address, TTL> 형식으로 저장된다.

TTL은 언제까지 이 주소 매핑을 저장할지 유효 시간을 나타낸다. TTL 만큼의 시간이 지나면 매핑 정보는 사라지게 되고 보편적으로 20분을 사용한다.

ARP의 동작 방식

노드 A가 B에게 datagram을 보내려고 한다고 가정하자.
A는 B의 IP 주소를 알고 있고 맥 주소는 모른다. 즉 A가 가지고 있는 ARP table에 B의 정보가 없다.

  • 먼저 A는 마치 브로드캐스트 하듯이 target MAC address를 FF-FF-FF-FF-FF-FF 로 설정하여 보낸다. 이러면 LAN에 존재하는 모든 노드가 ARP 쿼리 메시지를 받게 된다. "이 주소 주인 찾습니다!" 하고 소리지르는 것과 비슷하다고 보면 된다.

  • B는 ARP 메시지를 받고 A에게 자신의 맥 주소를 포함하여 응답을 보낸다.

  • A는 B의 응답을 보고 자신의 ARP table에 정보를 추가한다.

Routing flow

이제 네트워크 계층 (IP datagram)과 연계해서 전체적인 흐름을 살펴보면 다음과 같다.

A에서 B로 datagram을 보낸다고 할 때, IP datagram header에는 source IP (A의 IP)와 destination IP (B의 IP)가 들어가 있다.

이 datagram을 링크 계층에서 받아서 frame header를 추가한다. 이 때 destination MAC address는 프레임의 destination이므로 B의 MAC 주소가 아닌 라우터 R의 주소이다.

MAC 주소에 E6-E9-00-17-BB-4B 를 붙여서 R에게 보낸다.

R에 도착한 frame은 frame header 부분이 제거되어 IP로 전달된다.

R 내부의 라우팅 테이블을 보고 outgoing link를 결정한다. link 계층으로 내려보내고, source MAC address와 destination MAC address를 R의 outgoing link와 B의 MAC address로 채워서 보낸다.

frame이 B에 전달되면 datagram을 추출 해서 IP에게 전달하게 된다.


Ethernet

이더넷(영어: Ethernet)은 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격이다. 이더넷은 OSI 모델의 물리 계층에서 신호와 배선, 데이터 링크 계층에서 MAC(media access control) 패킷과 프로토콜의 형식을 정의한다.

이더넷은 가장 대표적인 컴퓨터 네트워크 기술 중 하나로, 같은 네트워크 안의 컴퓨터끼리 데이터를 주고 받을 때 사용된다.

여담 : 이더넷이라는 말은 빛의 매질이라 상상했던 가상의 물질인 에테르 (ether) 에서 따 왔다고 한다. 연결을 정의하는 맥락이라고 이해하면 될 것 같다

Ethernet frame

이더넷 프레임은 IP datagram을 포함한 3계층 프로토콜 패킷을 캡슐화(encapsulate)한다.

  • preamble : 송/수신 속도 (clock rate) 간의 일치를 위한 필드이다.
  • address : 송, 수신자의 MAC 주소이다.
  • type : 상위 계층에서 어떤 프로토콜을 사용하는지를 나타낸다. 대부분 IP 이지만 다른 것도 가능하다. demultiplex 에 사용한다.
  • CRC : CRC 방식으로 에러를 검증하기 위한 필드이다.

이더넷은 connectionless, unreliable 한 연결을 제공한다.

handshaking 과정이 존재하지 않으며 수신자가 ACK 이나 NAK 과 같은 확인 메시지를 보내지 않는다.

profile
베이비 게임 개발자

0개의 댓글