본문 바로가기

Computer Science/네트워크

[쉽게 배우는 데이터 통신과 네트워크] CH5. MAC 계층

반응형
SMALL

01. MAC 계층과 IEEE 802 시리즈

LAN 환경의 계층 2 기능에 대한 표준안을 다루는 IEEE802 시리즈를 알아본다. IEEE 802 시리즈는 LLC 계층뿐 아니라 MAC 계층에 대한 다양한 표준안을 정의하고 있다.

 

1. MAC 계층의 이해

MAC과 LLC 계층의 관계

  • LAN 환경에서는 (a)와 같이 데이터 링크의 계층을 LLC 계층과 MAC 계층으로 나누어 처리한다.
    • LLC 계층: 데이터 링크 계층의 기본 기능을 주로 다룬다.
    • MAC 계층: 물리적인 전송 선로의 특징과 매체 간의 연결 방식에 따른 제어 부분을 처리한다.

 

1.1 MAC 계층

  • 전송 선로의 물리적인 특성을 반영하므로 LAN의 종류에 따라 특성이 구분된다.
  • LAN 환경을 위한 MAC 계층은 종류가 다양하다.
    • 이더넷: 공유 버스를 이용해 호스트를 연결한다.
      • 데이터를 전송하기 전에 전송 선로를 먼저 확인해 다른 호스트가 데이터를 전송 중인지 여부를 파악한다.
      • 다른 호스트가 전송 선로를 사용하지 않으면 전송 가능하고, 사용하고 있다면 나중에 다시 시도한다.
      • 둘 이상의 호스트에서 동시에 데이터 프레임 전송을 시도하면 충돌이 발생한다. 충돌이 생기면 호스트는 이를 감지하고, 일정 시점 후 재전송한다.
    • 토큰 링: 토큰이라는 특정 패턴의 제어 데이터가 링을 순환한다.
      • 데이터 프레임을 전송하려면 먼저 토큰을 확보해야 하며, 전송을 완료하자마자 토큰을 링에 내놓아야 한다.
      • 각 호스트에 전송 우선순위를 부여할 수 있다.

 

1.2 LLC 계층

  • 이더넷에 사용하는 LLC와 토큰 링에서 사용하는 LLC는 약간 다를 수 있다. (LAN 특성에 부분적으로 영향 받음)
    • 이더넷의 LLC 계층은 프레임을 전송하는 과정에서 슬라이딩 윈도우 프로토콜을 사용한다.
    • 토큰 링/토큰 버스 구조에서는 송신 호스트가 수신 호스트의 도움 없이, 보낸 프레임의 전송 오류를 검출하고 재전송하는 기능을 수행할 수 있어 슬라이딩 윈도우 프로토콜이 불필요하다.

 


2. IEEE 802 시리즈

IEEE 802 시리즈의 계층 구조

  • 네트워크 계층과 LLC 계층의 기능은 LAN 종류에 큰 영향을 받지 않으므로 공통의 프로토콜인 IEEE 802.2 표준안을 사용한다.
  • MAC 계층은 물리 계층의 종류에 따라 다양하게 사용될 수 있으므로, 각각에 대하여 별도의 표준안이 정의되어 있다.

 

2.1 CSMA/CD

  • 이더넷으로 더 많이 알려졌다. (충돌 허용 방식)
  • 충돌 허용 방식에서는 충돌로 깨진 프레임을 복구하는 작업이 필요하기 때문에 프레임을 송신한 호스트에서 충돌을 감지하는 기능이 필요하다.
  • 충돌이 자주 발생하면 오류 복구 과정에 따라 재전송도 많이 이루어져, 네트워크 전체 성능이 떨어진다. 일반적으로 공유 매체의 길이가 길수록 프레임의 전송 지연이 증가하여 충돌이 발생할 가능성도 높아진다.
  • 충돌을 해결하는 다른 방법인 충돌 회피 방식 중 가장 간단한 방법은, 각 송신 호스트에 서로 다른 전송 시간대를 지정하는 타임슬롯을 배정하는 방법이다.

 

공유 버스에서의 데이터 전송

  • 하나의 공유 버스에 호스트 5개가 연결된 LAN 환경을 가정하여 CSMA/CD 방식에서 데이터를 전송한다.
  • (a) 호스트5가 호스트1에 프레임을 전송할 때, 먼저 다른 호스트가 공유 버스를 사용하고 있는지 확인한다.
  • (b) 버스를 사용하고 있지 않으면 전송 프레임을 공유 버스에 보낸다.
    • 다른 호스트가 동시에 전송하면 충돌이 생기므로 이 부분을 처리하는 기능이 필요하다.
    • 호스트1 외 나머지 호스트는 해당 프레임을 수신하지 않으므로 버린다.
  • (c) 결과적으로 호스트5에서 호스트1까지 프레임을 올바르게 전송할 수 있다.

 

2.2 토큰 버스

토큰 버스

  • 물리적인 버스 구조(점선)로 연결되지만 논리적인 프레임 전달은 링 구조(실선)이다.
  • 데이터 프레임 전송이 호스트 사이에 순차적으로 이루어지도록 토큰이라는 제어 프레임을 사용한다.
  • 프레임을 전송하려면 반드시 토큰을 확보해야 한다. 프레임 전송을 원하는 호스트는 토큰이 도착할 때까지 기다려서 도착한 토큰을 획득한 뒤 프레임을 전송한다.
  • 프레임 전송 후 이웃 호스트에 토큰을 넘겨준다. (이웃하는 순서는 각 호스트의 고유 번호가 높은 순)

 

2.3 토큰 링

토큰 링

  • 순환 구조의 전송 매체와 연결되는 링 인터페이스의 동작은 대기 모드와 전송 모드로 구분된다.
    • 대기 모드: 입력단으로 들어온 비트를 출력단으로 즉시 내보낸다. (링 네트워크 유지)
    • 전송 모드: 호스트가 토큰을 획득해 프레임을 전송할 수 있는 권한을 보유한 상태이다.
  • 송신 호스트가 전송한 프레임이 링을 한 바퀴 돈 후 송신 호스트에 되돌아온다.
  • 프레임의 목적지 주소가 자신의 주소와 동일한 호스트는 해당 프레임을 수신하고, 프레임 내부의 특정 위치에 올바르게 수신했다고 표시한다.
  • 송신 호스트는 자신에게 되돌아온 프레임의 특정 위치 값을 확인하여 프레임이 올바로 전송되었음을 확인한 뒤, 데이터 프레임을 회수하고 토큰 프레임을 링에 반환한다.

 


02. 이더넷

원래 IEEE 802.3 표준안을 실제로 구현한 제품이지만, 현재는 더 일반화된 용어로 사용한다.

 

1. 이더넷과 신호 감지 기능

  • 전송 매체의 신호를 감지해 프레임의 전송 여부를 결정하는 프로토콜을 신호 감지 프로토콜이라 한다.
  • 신호 감지 프로토콜에서 선로의 전달 지연이 성능에 영향을 많이 준다.

 

1.1 1-persistent CSMA

  • 신호 감지 프로토콜 중 가장 간단한 형태
  • 프레임을 전송하기 전에 전송 채널이 사용 중인지 확인한다.
  • 다른 호스트에서 채널을 사용 중이면 유휴 상태가 될 때까지 대기하다가, 임의의 순간에 채널에 유휴 상태로 변경되면 확률 1의 조건으로 프레임을 무조건 전송한다.
  • 둘 이상의 호스트에서 동시에 유휴 상태로 판단하면 프레임 전송 과정에서 충돌이 발생할 수 있다.
  • 충돌이 발생하면 임의의 시간 동안 대기한 후에 전송 채널을 감지하는 과정을 다시 반복한다.

 

1.2 Non-persistent CSMA

  • 전송 채널의 신호를 감지해 채널이 사용 중이라고 판단하면 더는 채널의 유휴 상태를 확인하지 않는다.
  • 임의의 시간동안 기다린 후에 다시 채널 감지를 시작하기 때문에 1-persistent 방식보다 충돌 가능성이 낫다.

 

1.3 p-persistent CSMA

  • 슬롯 채널 방식에서 많이 사용한다.
  • 채널이 유휴 상태이면 p의 확률로 프레임을 전송하고, 채널이 사용 중이면 다음 슬롯을 기다린 후 앞의 과정을 반복한다.

 

1.4 CSMA/CD

  • 충돌 감지 기능을 사용해 충돌 여부를 확인한다. 일단 호스트가 충돌을 감지하면 진행 중인 프레임의 전송을 중지한다.

 

이더넷의 연결

  • 이더넷 방식을 이용하는 고전적인 LAN 접속 방법이다.
  • 굵고 긴 전송 케이블로 된 전송 매체에 트랜시버 장비로 보조선을 연결해 각 호스트를 연결한다.
    • 트랜시버는 호스트를 전송 케이블에 연결하기 위한 송수신 장치로, 전송 선로의 신호를 감지하는 기능과 함께 충돌 현상을 감지하는 기능도 제공한다.
    • 임의의 트랜시버가 충돌을 감지하면 이를 특정 신호의 형태로 변환해 전송 케이블에 다시 전송해야 한다.
  • IEEE 802.3 표준안은 전송 케이블의 최대 길이를 일정 범위 이내로 제한하는데, 케이블의 길이가 너무 길면 신호 감쇄 현상에 의해 오류가 발생할 가능성이 높아지기 때문이다.
  • 케이블에 연결되는 호스트 간 간격도 너무 좁아지지 않도록 일정 간격 이상으로 규정한다.
  • 이더넷 케이블 하나에 연결되는 호스트 수가 증가하면 케이블을 2개로 나누어 리피터로 연결해야 한다.
    • 왼쪽 케이블에서 전송되는 신호는 리피터를 통해 오른쪽으로 전달되고, 반대 방향으로도 신호를 증폭해 전달한다.

 


2. 프레임 구조

이더넷 프레임의 구조

이더넷 프레임의 Data 필드 왼쪽에 위치한 필드들은 헤더, 오른쪽은 트레일러에 속한다.

  • Preamble(프리엠블)
    • 7바이트 크기
    • 수신 호스트가 송신 호스트의 클록과 동기를 맞출 수 있도록 시간 여유를 제공하는 것이 목적이다.
    • 각 바이트는 10101010 비트 패턴을 포함한다.
  • Start Delimiter(시작 구분자)
    • 프레임이 시작된다는 의미로 사용된다.
    • Preamble 필드와 구분하기 위해 10101011의 값을 갖는다.
  • Source Address/Desination Address(송신 호스트 주소/수신 호스트 주소)
    • MAC 계층에서는 호스트를 구분하는 고유의 MAC 주소를 사용한다.
    • 두 필드는 전송되는 프레임의 송수신 호스트 주소를 표현한다.
    • 수신 호스트 주소는 최상위 비트가 1이면 그룹 주소를, 0이면 일반 주소이다.
  • Length/Type
    • 필드 값이 1,500 이하이면 Data 필드의 데이터 크기를 의미하는 Length로 해석하고, 그렇지 않으면 Type으로 해석한다.
    • Length: Data 필드에 포함된 가변 길이의 전송 데이터 크기
    • Type: 이더넷 프레임에 캡슐화된 상위 프로토콜의 패킷 종류를 구분
  • Checksum
    • 데이터 전송 과정에서 데이터 변형 오류의 발생 여부를 수신 호스트가 확인할 수 있도록 송신 호스트가 값을 기록한다.

 


3. LLC 프레임 캡슐화

이더넷 프레임의 Data 필드

  • 네트워크 계층에서 전송을 요구한 패킷은 LLC 계층으로 내려오면서, LLC 헤더 정보를 추가해 LLC 프레임이 된다.
  • LLC 프레임은 다시 MAC 계층으로 내려오는데, 이 과정에서 MAC 헤더와 MAC 트레일러 정보를 추가한다.
  • 이후 MAC 계층에서는 MAC 프레임을 물리 계층을 사용하여 수신 호스트에 전송한다.

 


4. 허브와 스위치

허브와 스위치

  • (a)는 공유 버스 구조를 사용하는 이더넷의 전형적인 원리를 보여준다.
    • 임의의 호스트에서 전송한 프레임은 버스에 연결된 모든 호스트에 전송되고, 목적지의 주소에 해당하는 호스트만 프레임을 수신한다.
    • 최근에는 100Mbps, 1Gbps의 이더넷이 주로 사용된다.

 

4.1 허브 (b)

  • 박스 형태의 장비에 호스트를 연결하는 다수의 포트를 지원하여, 각 호스트는 외형상 허브에 스타형 구조로 연결된다.
  • 내부의 동작 원리는 버스형 구조를 지원하기 때문에 임의의 호스트에서 전송한 프레임을 연결된 모든 호스트에 전달한다.
  • 허브 구조의 LAN에서는 전체 전송 용량이 각 호스트를 연결하는 전송 선로 용량의 제한을 받기 때문에, 최대 전송 용량은 100Mbps로 제한된다.

 

4.2 스위치 (c)

  • 일반 허브와 형태가 동일하지만, 성능 면에서 장점이 있다.
    • 중앙 허브에 스위치 기능이 있어 임의의 호스트로부터 수신한 프레임을 목적지로 지정한 호스트에만 전송한다.
    • 이들 사이에 프레임 전송이 진행되고 있어도, 다른 호스트끼리 프레임을 전송할 수 있다.
    • 전체 전송 용량이 증가하는 효과가 생긴다.

 


03. 토큰 버스

1. 프레임 구조

토큰 버스 프레임의 구조

  • 토큰 버스 프로토콜에서 정의한 토큰 버스 프레임의 구조이다.
  • 상단의 숫자는 각 필드의 크기로, 단위는 바이트이다.
  • 토큰 버스 프레임에는 데이터 프레임과 토큰 프레임을 구분하기 위한 Frame Control 필드가 추가된다.
  • 헤더와 트레일러에 정의된 필드의 기능은 다음과 같다.
    • Start Delimiter/End Delimiter(시작 구분자/끝 구분자)
      • 프레임의 시작과 끝을 의미하는 경계를 표시한다.
    • Frame Control (프레임 제어)
      • 데이터 프레임과 제어 프레임을 구분해준다.
      • 데이터 프레임에서는 프레임 우선순위와 수신 호스트의 응답 확인이 필요할 때 사용한다.
      • 제어 프레임에서는 토큰의 전달, 링 관리와 같은 용도로 사용한다.

 

토큰 버스 프레임의 Frame Control 필드

  • 첫 번째 2비트 값에 따라 역할이 구분된다.
  • 토큰 버스에서 우선순위는 값이 0, 2, 4, 6인 4개의 클래스로 나누며 숫자가 클수록 우선순위가 높다.
    • 각 호스트에서는 4개의 클래스를 관리하기 위한 논리적인 큐를 만들어야 하며, 토큰 프레임은 우선순위가 6이다.

 


2. LLC 프레임 캡슐화

토큰 버스 프레임의 Data 필드

  • LLC 계층에서 내려온 LLC 프레임이 MAC 계층에 전달된 후, 토큰 버스 프레임의 Data 필드에 캡슐화되어 전송되는 원리이다.
  • LLC 프레임의 좌우에 토큰 프레임의 헤더와 트레일러 정보가 채워지면 물리 계층이 수신 호스트로 전송한다.
  • 수신 호스트의 MAC 계층은 토큰 버스 프레임의 헤더와 트레일러 정보를 해석하여 제거하고, 상위 계층인 LLC 프로토콜에서는 LLC 프레임 정보만 올려준다.

 


04. 토큰 링

1. 프레임 구조

토큰 링 프레임의 구조

  • 데이터 프레임과 토큰 프레임으로 구분할 수 있다.
  • 모니터: 링에 연결된 호스트 중에는 다른 호스트와 구별되는 특별한 기능을 수행하는 관리 호스트
    • 네트워크 관리와 관련된 기능을 수행한다.
    • 주로 네트워크의 정상 동작을 방해하는 예기치 않은 오류를 복구한다.

 


2. LLC 프레임 캡슐화

토큰 링 프레임의 Data 필드

  • LLC 계층에서 MAC 계층으로 전송 요청이 내려온 LLC 프레임을 토큰 링 프레임의 구조로 캡슐화하는 과정이다.
  • LLC 프레임은 토큰 링 프레임의 Data 필드에 기록되고, 나머지 토큰 링 프레임의 필드 값을 기록한 후 물리 계층을 통해 수신 호스트에 전달된다.

 


3. 프레임 필드의 의미

  • 송신 호스트 주소, 수신 호스트 주소, 데이터, 체크섬 등은 이더넷, 토큰 버스 프로토콜에서의 용도와 같다.

 

3.1 Start Delimiter/End Delimiter

  • SD/ED 필드는 프레임의 시작과 끝을 구분한다.
  • 데이터의 처음과 중간 프레임은 I 비트의 값을 1로 지정해 전송하고, 마지막 프레임은 값을 0으로 지정함으로써, 수신 호스트가 연속 데이터를 구분하여 수신할 수 있게 해준다. E 비트는 오류 검출용으로 이용한다.

 

3.2 Access Control

Access Control 필드

  • AC 필드는 여러 가지 제어 기능을 수행하기 위해 사용된다.
  • 우선순위 비트, 토큰 비트, 모니터 비트, 예약 비트로 나뉜다.
    • 우선순위 비트: 토큰의 우선순위보다 높은 프레임을 전송할 수 있도록 해준다.
    • 토큰 비트: 토큰 프레임과 일반 프레임을 구분하는데, 토큰 프레임은 값이 0이다.
    • 모니터 비트: 프레임이 무한정 순회할 때, 프레임을 링에서 제거함으로써 무한정 순회 현상을 방지한다.

 

3.3 Frame Control

Frame Control 필드

  • 토큰 링 프레임의 FC 필드는 LLC 계층에서 목적지 호스트로 전송해줄 것을 요청한 LLC 프레임과 토큰 링 프로토콜에서 사용하는 제어용 프레임을 구분하는 데 사용한다.
  • TT 비트의 값에 의한 프레임 구분은 다음과 같다.
    • TT 비트 = 00 : 제어 기능을 수행하기 위한 프레임을 위해 정의된다.
    • TT 비트 = 01 : 상위 계층인 LLC 계층에서 전송을 요구한 LLC 프레임을 의미한다.

 

3.4  Frame Status

Frame Status 필드

  • FS 필드는 토큰 링 프레임의 맨 마지막에 위치하며, 프레임의 수신 호스트가 송신 호스트에 응답할 수 있도록 한다.
  • 2개의 플래그 비트 A, C로 정의되며, 두 필드의 값이 쌍으로 존재한다.
    • 한 쌍의 값이 동일한 경우에만 유효한 응답으로 정의되고, 다르면 0으로 처리되어 무시한다.
    • A 비트: 목적지 호스트에 데이터 프레임이 전달되면 A(access) 비트를 1로 지정한다.
    • C 비트: 입력된 데이터 프레임의 수신 호스트 주소가 자신의 주소와 동일한 프레임이 지나가면 프레임을 내부 버퍼에 보관하고, C(copy) 비트를 1로 지정한다.
    • A 비트와 C 비트가 모두 1이면 수신 호스트가 제대로 수신한 것으로 판단한다.

 


References

반응형
LIST