이더넷
이더넷$^{Ethernet}$은 현대 LAN, 특히 유선 LAN 환경에서 가장 대중적으로 사용되는 기술이다. 그리고 물리 계층과 데이터 링크 계층에서 공통적으로 사용되며 두 계층이 서로 강하게 연관되는데 원인이 된다.
두 대의 PC가 정보를 주고 받으려면 어떤 전제가 필요할까? 케이블이나 와이파이같은 통신 매체가 필요하고 그 통신 매체를 통해 정보를 송수신하는 방법이 정해져 있어야 한다. 바로 이더넷이 그 방법이다.
이더넷은 다양한 통신 매체의 규격들과 송수신되는 프레임의 형태, 프레임을 주고받는 방법 등을 정의하고 있어 데이터를 수신하는 PC가 어떻게 보내야 송신하는 PC가 잘 받을 수 있는지, 송신하는 PC는 수신하는 PC가 어떻게 데이터를 보낼 지를 알 수 있다.
만약 이더넷의 역할이 없다면, 각기 다른 제조사나 소프트웨어에서 정의한 방식이 서로 호환되지 않아 통신이 불가능해질 것이다.
1. 이더넷 표준
오늘날의 유선 LAN 환경은 대부분 이더넷을 기반으로 구성된다. 그리고 이렇게 될 수 있었던 배경에는 이더넷의 국제적인 표준화가 있다.
이더넷이 처음 세상에 등장한 이후 전기전자공학자협회$^{Institute\ of\ Electrical\ and\ Electronics\ Engineers}$라는 국제 조직은 이더넷 관련 기술을 IEEE 802.3이라는 이름으로 표준화 했다. IEEE 802.3 는 이더넷 관련 다양한 표준들의 모음을 의미한다고 생각해도 좋다.
네트워크 장비(통신 매체 포함)들이 그런 이더넷 표준을 따르고 있기 때문에, 서로 다른 컴퓨터가 각기 다른 제조사의 네트워크 장비를 사용해도 동일한 형식의 프레임을 주고받고 약속한 듯 통일된 형태로 작동할 수 있다.
이더넷은 지속해서 발전하고 있고 새로운 이더넷 표준들이 계속해서 만들어지고 있다. 802.3u 혹은 802.3ab 처럼 뒤에 버전을 나타내는 알파벳으로 표현되며 새로운 표준들이 나오고 있는데, 핵심은 이더넷 표준에 따라 지원되는 네트워크 장비, 통신 매체의 종류와 전송 속도 등이 달라질 수 있다는 점이다.
2. 통신 매체 표기 형태
물리 계층에 관련된 이더넷 표준을 알아보자.
물리 계층 장비인 통신 매체는 이더넷 표준 규격에 따라 표기하기도 하지만, 하지 않는게 더 일반적이다. 규격에 맞추기 보다는 통신 매체의 속도와 특성을 한눈에 파악하기 쉽게 표기한다. 그럼 어떻게 표기하는지 알아보자.
2-1. 전송 속도
숫자만 있으면 Mbps 속도, 숫자 뒤에 G가 붙는 경우엔 Gbps를 의미한다. 예를 들어 100Base-T 케이블은 100Mbps 속도를 지원하는 케이블이고 10GBASE-T는 10Gbps 속도를 지원하는 케이블이다.
2-2. BASE
BASE는 베이스밴드$^{BASEband}$의 약자로, 변조 타입$^{modulation\ type}$을 의미한다.
여기서 변조 타입이란 비트 신호로 변환된 데이터를 통신 매체로 전송하는 방법을 의미한다. 일반적인 LAN 환경에서 특별한 경우가 아니라면 대부분 디지털 신호를 송수신하는 베이스밴드 방식을 사용하기 때문에 대부분의 이더넷 통신 매체는 BASE를 사용한다고 생각해도 좋다.
2-3. 추가 특성
추가 특성$^{additional\ distinction}$ 에는 통신 매체의 특성을 명시한다.
이곳에 명시할 수 있는 특성의 종류는 다양하다. 10BASE-2, 10BASE-5와 같이 전송 가능한 최대 거리가 명시되기도 하고, 데이터가 비트 신호로 변환되는 방식을 의미하는 물리 계층 인코딩 방식이 명시되기도 하며, 비트 신호를 옮길 수 있는 전송로의 수를 의미하는 레인 수가 명시되기도 한다.
다만 처음 이더넷을 학습하는 개발자 입장에서 추가 특성의 종류보단 통신 매체의 종류에 주목해야 한다.
2-4. 통신 매체 종류
추가 특성에 C, T, S, L이라는 글자가 있다면 각각 동축 케이블(C), 트위스티드 페어 케이블(T), 단파장 빛을 활용하는 광섬유 케이블(S), 장파장 빛을 활용하는 광섬유 케이블(L)을 의미한다. 각 케이블들의 이미지는 첨부하지 않겠다. 검색해서 참고하길 바란다.
다음의 통신 매체 표기 형식의 예시를 보고 전송 속도와 종류를 중심으로 의미를 파악해보자.
- 10BASE-T 케이블: 10Mbps 속도를 지원하는 트위스티드 페어 케이블
- 1000BASE-SX 케이블: 1000Mbps 속도를 지원하는 단파장 광섬유 케이블
- 1000BASE-LX 케이블: 1000Mbps 속도를 지원하는 장파장 광섬유 케이블
4. 이더넷 프레임
이제 데이터 링크 계층에 관련된 이더넷 표준인 이더넷 프레임에 대해 살펴보자.
이더넷 프레임은 캡슐화 과정을 통해 만들어진다. 수신지 입장에서는 역캡슐화 과정을 거친다.
이더넷 프레임 헤더는 기본적으로 프리앰블, 수신지 MAC 주소, 송신지 MAC 주소, 타입/길이로 구성되고, 페이로드는 데이터, 트레일러는 FCS로 구성된다.
4-1. 프리앰블
프리앰블$^{preamble}$은 이더넷 프레임의 시작을 알리는 8바이트(64비트) 크기의 정보다.
프리앰블의 첫 7바이트는 10101010 값을 가지고, 마지막 바이트는 10101011 값을 가진다. 수신지는 이 프리앰블을 통해 이더넷 프레임이 오고 있음을 알아차린다. 그래서 프리앰블은 송수신지 간의 동기화를 위해 사용되는 정보라고 이해하면 된다.
4-2. 수신지 MAC 주소와 송신지 MAC 주소
이더넷 프레임에서 가장 중요한 부분으로 ‘물리적 주소’라고도 할 수 있는 이것들은 데이터 링크 계층의 핵심이다. 왜냐하면, MAC 주소는 네트워크 인터페이그마다 부여되는 6바이트(48비트) 길이의 주소로, LAN 내의 수신지와 송신지를 특정할 수 있기 때문이다. 주소를 알아야 택배가 잘 도착할 수 있는 것과 같은 논리로 데이터 송수신에 중요하다고 이해하면 된다.
이러한 MAC 주소는 일반적으로 고유하고, 변경되지 않는 주소로써 네트워크 인터페이스마다 부여된다. 그리고 보통 네트워크 인터페이스 역할은 NIC$^{Network\ Interface\ Controller}$라는 장치가 담당한다. 만약 하나의 컴퓨터에 NIC가 여러 개 있다면 MAC 주소도 여러 개 있을 수 있다.
MAC 주소와 관련된 대표적인 오해로 ‘MAC 주소는 반드시 고유하고 변경이 불가능하다’라는 것이 있다. 사실 MAC 주소는 변경이 가능한 경우도 많고, 고유하지 않을 수도 있다. 다만, 동일한 네트워크 내에서 동작하는 기기의 MAC 주소가 우연히 같을 확률은 낮고, 같게 만드는 상황도 흔하지 않다.
4-3. 타입/길이
필드에 명시된 크기가 1500(16진수 05DC) 이하일 경우 이 필드는 프레임의 크기(길이)를 나타내는 데 사용되고, 1536(16진수 0600) 이상일 경우에는 타입을 나타내는 데 사용된다.
타입이란 이더넷 프레임이 ‘어떤 정보를 캡슐화했는지’를 나타내는 정보다. 이더타입이라고도 부른다.
대표적으로 상위 계층에서 사용된 프로토콜의 이름이 명시된다. 가령 어떤 프레임이 IPv4 프로토콜이 캡슐화된 정보를 운반하나면 타입에는 16진수 0800이, 어떤 프레임이 ARP 프로토콜이 캡슐화된 정보를 운반한다면 타입에는 16진수 0806이 명시될 것이다.
4-4. 데이터
데이터는 상위 계층에서 전달받거나 상위 계층으로 전달해야 할 내용이다.
네트워크 계층의 데이터와 헤더를 합친 PDU가 이곳에 포함된다. 최대 크기는 1500 바이트로, 유의할 점은 반드시 일정 크기(46바이트 이상)여야 한다는 점이다. 그 이하의 데이터라면 크기를 맞추기 위해 패딩이라는 정보를 내부에 채워야 한다.
4-5. FCS
FCS$^{Frame\ Check\ Sequence}$는 수신한 이더넷 프레임에 오류가 있는지 확인하기 위한 필드이다. 데이터 링크 계층에서 오류 검출이 이루어지기도 하는데 바로 여기서 이루어진다.
이 필드에는 CRC$^{Cycle\ Redundancy\ Check}$, 즉 순환 중복 검사라고 불리는 오류 검출용 값이 들어간다.
송신지는 프리앰블을 제외한 나머지 필드 값들을 바탕으로 CRC 값을 계산한 후, 이 값을 FCS 필드에 명시한다. 그리고 수신지는 수신한 프레임에서 프리앰블과 FCS 필드를 제외한 나머지 필드 값들을 바탕으로 CRC 값을 계산한 뒤, 이 값을 FCS 필드 값과 비교한다. 이때 비교 값이 일치하지 않으면 프레임에 오류가 있다고 판단해 해당 프레임을 폐기한다.