[ACSA 교육#6] 이더넷 프레임

지난 포스팅에서 TCP/IP Stack을 알아봤습니다.
TCP/IP Stack과 OSI 7계층을 비교하면서 무슨 차이가 있는지 살펴보았는데요.

오늘은 OSI 7계층에서 Layer 1과 Layer 2에 해당하는 이더넷(Ethernet)을 알아볼까 합니다.

이더넷(Ethernet)

이더넷은 OSI 모델의 Layer 1과 Layer 2에서 사용되는 컴퓨터 네트워크 기술입니다.

이 표준은 Layer 2에서 6바이트(48비트)의 MAC(Media Access Control)주소를 각 장치에 할당하는데 사용됩니다. 제조사는 각각의 NIC(Network Interface Card, 흔히 PC에서 랜카드라 일컫는 것)에 고유한 16진수(Hexadecimal) MAC주소를 할당합니다. 이 주소는 NIC의 ROM(Read Only Memory)에 저장됩니다.

즉, 전 세계 모든 이더넷 NIC에는 각각의 고유한 MAC주소가 있습니다. 이게 어떻게 가능할까요?

Family of computer network technologies used in Layer 1 and Layer 2. 
Layer 2 Ethernet uses MAC addresses — a 6-byte address assigned to each NIC. 
First 3 bytes: NIC manufacturer's OUI 
2 
3 
Last 3 bytes: Vendor assigned 
4 
5 
6 
ox8c8590766c95 
ox8c8590766c95 
Host A 
Ethernet link 
ox8c85908123a4 
Host B

각 MAC주소에 처음 3바이트는 OUI(Organization Unique Identifier)라고 합니다.
이더넷 NIC를 제조하는 모든 제조업체는 각각의 고유한 3바이트 번호를 할당 받습니다. 물론, 고유한 3바이트 번호가 하나인 경우도 있지만, 한 제조사가 많은 제품을 생산하는 경우 여러 개의 OUI를 가질 수도 있습니다.
MAC주소의 나머지 3바이트는 NIC 일련번호(Serial No.)로 구성됩니다.

16진수에서 1바이트(Byte)는 두 자리 수로 구성됩니다. 따라서 각 MAC주소는 12개의 16진수 문자로 표시됩니다. 각 바이트를 구분하기 위해서 일반적으로 콜론(:)이나 대시(-)로 구분합니다.

https://macvendors.com 과 같은 웹사이트에서 OUI를 검색하면 MAC주소로 NIC 제조사를 확인할 수 있습니다.

Ethernet Frame (이더넷 프레임)

From upper layers 
Layer 2 Header 
Byte count 
Preamble 
46- 1500 
7 
SFD 
1 
Host A 
DMAC 
6 
Ethernet link 
SMAC 
6 
Ether Type 
2 
Ox8c::a4 
Host B 
Trailer 
FCS 
4 
Error checking
이더넷 프레임 구조

Host B가 OSI 상위 계층으로부터 데이터를 수신한다고 가정해볼까요?
상위 계층의 직원으로 이더넷을 생각보겠습니다. 이들은 이더넷에 Payload를 제공하고 이더넷에 이를 Host A에게 전달하도록 요청합니다. 전달하기 위한 이더넷 프로세스는 그림과 같이 헤더(Header)트레일러(Trailer)로 이 Payload를 감싸게 됩니다.

각 Header와 Trailer의 필드는 다음과 같습니다.

  • Preamble : 수신 시스템에 이더넷 프레임이 시작 중임을 알리고 동기화를 활성화합니다.
  • SFD(Start Frame Delimiter) : 다음 Byte부터 목적지 MAC주소 필드가 시작되는 것을 알려줍니다.

이더넷 세그먼트에는 Host가 여러 개 있을 수 있습니다. 모든 Host들은 Preamble과 SFD를 일종의 신호로 인식합니다.

“자, 여기 보세요!! 여기 Frame 하나가 도착했습니다. 당신 것일수도 있어요!”

이렇게 Frame이 도착했다는 것을 알게 되었을 때, 수신자는 자신을 위한 Frame인지 아니면 다른 Host를 위한 것인지 어떻게 알 수 있을까요?
바로 다음 필드인 목적지MAC주소를 읽게 됩니다.

  • 목적지 MAC주소(DMAC) : 메시지를 수신하는 컴퓨터 시스템의 NIC을 식별합니다.
    예를 들어, Host A는 MAC주소를 읽고 자신의 MAC주소인지 확인되면 프레임을 받아들이게 됩니다.
    다른 장치와 스테이션들은 MAC주소를 읽고, 해당 하는 MAC주소가 해당 스테이션에 없다면 프레임을 삭제합니다. 교실에서 A라는 학생에게 이름을 부르면서 이야기를 전달한다면, 다른 학생들은 그 내용을 무시하고 A라는 학생만 응답하는 것과 같다고 이해하시면 좋습니다.
  • 출발지 MAC주소(SMAC) :  송신하는 컴퓨터 시스템의 NIC을 식별합니다.
    이것을 통해 Host A는 어디에서 메시지가 왔고, 누구에게 응답해야 하는지 알 수 있게 됩니다.
  • 이더넷 타입(EtherType) : 프레임 내부의 Layer 3 프로토콜(예: IPv4, IPv6)를 정의합니다.
    EtherType 필드는 프로세싱을 위해 Payload를 전달할 스택을 Host에 알려주게 됩니다.
  • 페이로드(Payload) : 전송할 테이터를 포함하고 있습니다.
  • FCS(Fram Check Sequence): CRC(Cyclic Redundancy Check)나 체크섬(Checksum)방법을 사용하여 손상된 데이터를 탐지할 수 있습니다.
    Host B는 이 프레임을 생성할 때 대부분의 헤더와 페이로드 비트에 대해 수학적 계산을 진행합니다. 이 계산 결과는 FCS 필드에 배치됩니다. Host A가 프레임을 수신하면 동일한 계산을 통해 FCS필드에 저장된 값과 비교합니다. 값이 동일하다면 페이로드는 손상되지 않았다는 것을 알 수 있습니다. 만약 전자파간섭이나 케이블 불량 등으로 데이터가 손상되었다면, Host A의 계산 값이 FCS 필드의 값과 일치하지 않기 때문에 해당 프레임은 폐기 됩니다.

Ethernet Payload에는 애플리케이션 데이터가 포함될 뿐만 아니라 상위 계층의 헤더 정보도 포함되어 있습니다. TCP는 IP가 페이로드의 일부를 고려하는 헤더를 추가합니다. 그런 다음에 IP가 헤더를 추가하고, 이더넷은 페이로드의 일부를 참고합니다.

다음 포스팅에서는 IP헤더의 정보를 살펴보도록 하겠습니다.