물리 계층과 데이터 링크 계층은 통신이 이루어지는
가장 근원적인 지점이다.
하드웨어가 네트워크를 통해 메시지를 주고받고
이해하는 방식은 대부분
물리 계층과 데이터 링크 계층에 구현되어 있다.
이더넷
- 데이터 링크 계층과 물리 계층을 아우르는 기술인 이더넷
물리 계층과 데이터 링크 계층은 서로 밀접하게 연관되어 있다.
오늘날의 두 계층은 이더넷이라는 공통된 기술이 사용되기 때문이다.
이더넷은 현대 LAN, 특히 유선 LAN 환경에서 가장 대중적으로 사용되는 기술이다.
예를 들어서 두 대의 컴퓨터가 있다고 가정해보겠다.
이 컴퓨터끼리 정보를 주고받으려면 가장 먼저 케이블과 같은 통신 매체가 필요하다.
그리고 그 통신 매체를 통해 정보를 송수신하는 방법이 정해져 있어야 한다.
이더넷은 다양한 통신 매체의 규격들과 송수신되는 프레임의 형태,
프레임을 주고받는 방법 등이 정의된 네트워크 기술이다.
이더넷 표준에 따라 지원되는 네트워크 장비, 통신 매체의 종류와 전송 속도 등이 달라질 수 있다.
통신 매체 종류
추가 특성 표기(통신 매체의 종류) | 케이블 종류 |
C | 동축 케이블 |
T | 트위스티드 페어 케이블 |
S | 단파장 광섬유 케이블 |
L | 장파장 광섬유 케이블 |
이더넷은 지금도 발전하는 중이다.
규격별로 지원되는 속도도 점차 빨라지고 있다.
이더넷 프레임
현대 유선 LAN 환경은 대부분 이더넷을 기반으로 구성되므로
호스트가 데이터 링크 계층에서 주고받는 프레임 형식도 정해져 있다.
즉, 이더넷 네트워크에서 주고받는 프레임인 이더넷 프레임형식은 정해져 있다.
이더넷 프레임은 상위 계층으로부터 받아들인 정보에
헤더와 트레일러를 추가하는 캡슐화 과정을 통해 만들어진다.
수신지 입장에서는 프레임의 헤더와 트레일러를 제거한 뒤
상위 계층으로 올려보내는 역캡슐화 과정을 거친다.
이더넷 프레임 헤더는 기본적인 다양한 정보로 구성된다.
이더넷 네트워크에서 통신하는 컴퓨터들은 다음과 같은 정보를 주고받는 셈이다.
프리앰블
프리앰블은 이더넷 프레임의 시작을 알리는 8바이트(64비트) 크기의 정보이다.
프리앰블의 첫 7바이트는 10101010값을 가지고, 마지막 바이트는 10101011값을 가진다.
수신지는 이 프리앰블을 통해 이더넷 프레임이 오고 있음을 알아차린다.
즉, 프리앰블은 송수신지 간의 동기화를 위해 사용되는 정보이다.
수신지 MAC 주소와 송신지 MAC 주소
이번 게시글에서 가장 중요한 부분이다.
'물리적 주소'라고 불리는 MAC 주소는 데이터 링크 계층의 핵심이다.
MAC주소는 네트워크 인터페이스마다 부여되는 6바이트(48비트) 길이의 주소로,
LAN 내의 수신지와 송신지를 특정할 수 있다.
같은 네트워크 내에서 동일한 MAC 주소를 가진 기기들이 있다면
송신지와 수신지를 특정할 수 없기에 곤란할 것이다.
그래서 MAC 주소는 일반적으로 고유하고,
일반적으로 변경되지 않는 주소로써 네트워크 인터페이스마다 부여된다.
보통 NIC라는 장치가 네트워크 인터페이스 역할을 담당한다.
즉, 한 컴퓨터에 NIC가 여러게 있다면 MAC 주소도 여러 개 있을 수 있다.
MAC 주소는 일반적으로 변경되거나 고유하지만,
반드시 고유하고 변경이 불가능한 것은 아니다.
사실 MAC 주소의 변경이 가능한 경우가 많으며,
따라서 고유하지 않을 수도 있다.
다만, 동일 네트워크 내에서 동작하는 기기의 MAC 주소가 우연히 같을 확률은 낮고,
같게 만드는 상황도 흔하지 않다.
따라서 MAC 주소를 '일반적으로 고유하고, 변경되지 않는 주소' 정도로 이해하는 것이 적절하다.
MAC 주소는
CMD에 >getmac /v 같이 입력하면 물리적 주소 밑에 뜨는 것들이 MAC 주소이다.
타입/길이
타입이란 이더넷 프레임이 '어떤 정보를 캡슐화했는지'를 나타내는 정보이다.
이더타입이라고도 부른다.
타입/길이 필드에는 타입 혹은 길이가 올 수 있다.
필드에 명시된 크기가 1500이하일 경우 이 필드는 프레임 크기(길이)를 나타내는 데 사용되고,
1536 이상일 경우에는 타입을 나타내는 데 사용된다.
데이터
데이터는 상위 계층에서 전달받거나 사우이 계층으로 전달해야 할 내용이다.
네트워크 계층의 데이터와 헤더를 합친 PDU가 이곳에 포함된다.
최대 크기는 1500바이트로, 유의할 점은 반드시 일정 크기(64바이트 이상)여야 한다는 점이다.
그 이하의 데이터라면 크기를 맞추기 위해서 패딩이라는 정보가 내부에 채워진다.
보통 46바이트 이사잉 될 때까지 0으로 채워집니다.
FCS
FSC는 수신한 이더넷 프레임에 오류가 있는지 확인하기 위한 필드이다.
데이터 링크 계층에서 오류 검출이 이루어지기도 한다.
FSC에서 오류 검출을 한다.
이 필드에는 CRC, 즉 순환 중복 검사라고 불리는 오류 검출용 값이 들어간다.
송신지는 프리앰블을 제외한 나머지 필드 값들을 바탕으로 CRC 값을 계산한 후,
이 값을 FCS 필드에 명시한다.
그리고 수신지는 수신한 프로엠에서 프리앰블과 FCS 필드를 제외한
나머지 필드 값을 바탕으로 CRC 값을 계산한 뒤,
이 값을 FCS 필드 값과 비교한다.
이때 비교 값이 일치하지 않으면 프레임에 오류가 있다고 판단하여 해당 프레임을 폐기한다.
즉, FCS에서는 송수신지의 CRC 값을 비교하여 오류를 검출한다.
이더넷 외 다른 LAN 기술 - 토큰링
이더넷 외에 다른 LAN 기술은 대표적으로 토큰링이 있다.
토큰 링 네트워크에서는 호스트들이 다음 그림처럼 링 (고리) 형태로 연결된다.
호스트끼리 돌아가며 토큰이라는 특별한 정보를 주고받는데,
네트워크 내 다른 호스트에게 메시지를 송신하려면 반드시 이 토큰을 가지고 있어야 한다.
다음 그림은
현재 토큰이 A에게 있으므로 지금은 A만 메시지 전송이 가능하다.
C나 D는 메시지를 송신하고 싶어소 송신할 수 없다.
A는 메시지 전송이 끝나면 다음 컴퓨터 (가령B) 에게 토큰을 넘겨준다.
만약 B가 송신할 메시지가 없다면 다음 컴퓨터(가령 C)에게 토큰을 그대로 넘겨준다.
C가 송신하고자 하는 메시지가 있었다면 이제 비로소 송신할 수 있다.
'컴퓨터 프로그래밍 공부 > 네트워크 서버' 카테고리의 다른 글
스위치와 VLAN (3) | 2024.11.14 |
---|---|
허브 (0) | 2024.11.08 |
네트워크 미시적으로 살펴보기 (1) | 2024.10.27 |
네트워크 거시적으로 살펴보기 (1) | 2024.10.26 |
게임 서버 프로그래밍 입문 - (1) (0) | 2024.05.10 |