맨위로가기

반송파 감지 다중 접속 및 충돌 탐지

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

반송파 감지 다중 접속 및 충돌 탐지(CSMA/CD)는 여러 장치가 통신 채널을 공유하는 방식 중 하나로, 1970년대 ALOHAnet에서 유래하여 이더넷에서 널리 사용되었다. CSMA/CD는 통신 전에 채널이 비어 있는지 확인하고, 충돌 발생 시 재전송하는 방식으로 작동한다. 초기 이더넷에서는 동축 케이블을 통해 여러 장치가 연결되었지만, 스위치 장비와 전이중 통신이 보편화되면서 10기가비트 이더넷 이후에는 CSMA/CD가 더 이상 사용되지 않는다. 현재는 하위 호환성 및 반이중 통신을 위해 지원되며, 무선 LAN에서는 CSMA/CA가 유사하게 사용된다.

더 읽어볼만한 페이지

  • 매체 접근 제어 - 알로하넷
    알로하넷은 1968년 하와이 대학교에서 개발된 초기 컴퓨터 네트워킹 설계로, 무선 장비를 사용하여 하와이 제도의 사용자들을 연결하고 공유 매체를 통한 전송, 충돌 감지 및 재전송 체계 등의 기술을 도입하여 이더넷 및 Wi-Fi 네트워크 발전에 기여했다.
  • 매체 접근 제어 - MAC 주소
    MAC 주소는 네트워크 장치를 식별하는 고유한 48비트 식별자로, IEEE 802 MAC 주소로 알려져 있으며, 최근 스푸핑 악용 및 개인 정보 보호를 위한 랜덤화 기술이 논의되고 있다.
  • 이더넷 - 기가비트 이더넷
    기가비트 이더넷은 1 Gbit/s의 전송 속도를 지원하는 이더넷 표준으로, 광섬유 및 UTP 케이블을 통해 다양한 기기에 적용되어 광대역 인터넷과 기업 네트워크의 주요 기술로 사용되었으나, 더 빠른 이더넷 기술의 발전으로 비중은 줄어들고 있지만 비용 효율성과 호환성으로 인해 중요한 역할을 지속할 것으로 예상된다.
  • 이더넷 - 네트워크 인터페이스 컨트롤러
    네트워크 인터페이스 컨트롤러(NIC)는 컴퓨터를 네트워크에 연결하는 하드웨어 구성 요소이며, 다양한 네트워크 표준을 지원하고, 최근에는 성능 향상 기술과 가상 네트워크 인터페이스를 지원하기도 한다.
반송파 감지 다중 접속 및 충돌 탐지
개요
유형매체 접근 제어 방식
개발 시기1970년대
주요 사용처초기 이더넷
특징반송파 감지 다중 접속 기반
충돌 감지 기능 포함

2. 역사

반송파 감지 다중 접속 및 충돌 탐지(CSMA/CD)는 초기 동축 케이블 기반 이더넷에서 다중 접속을 구현하기 위해 사용된 핵심 통신 프로토콜이다. 이 방식은 공유 매체에서 데이터 충돌 발생 시 이를 감지하고 재전송하는 절차를 정의한다.

CSMA/CD의 개념은 1970년대 ALOHAnet에서 유래했으며, Xerox PARC의 로버트 메트칼프 박사가 이를 유선 환경에 맞게 발전시켰다. 1980년에는 DEC, 인텔, Xerox 3사가 협력하여 이더넷 표준으로 제안했다.

1990년대 트위스트 페어 케이블과 리피터 허브를 사용하는 반이중 통신 환경에서도 CSMA/CD는 계속 사용되었으나, 1999년 1000BASE-T 표준화 이후 스위칭 허브와 전이중 통신이 보편화되면서 충돌 발생 가능성이 현저히 줄어들었다. 이로 인해 CSMA/CD의 필요성이 감소하였고, 10기가비트 이더넷 등 이후 규격에서는 지원되지 않는다.

무선 LAN에서는 유사한 방식으로 충돌을 회피하는 CSMA/CA가 사용된다. 이는 충돌 감지 후 처리하는 CSMA/CD와 대비되는 특징이다.

2. 1. 이더넷의 발전과 CSMA/CD

10BASE5 및 10BASE2와 같이 초기의 동축 케이블을 사용한 이더넷 환경에서 통신 프로토콜로 널리 보급되었다. 이 방식은 공유된 전송 매체 상에서 여러 장치가 동시에 데이터를 전송하려 할 때 발생할 수 있는 충돌 상황을 관리하고, 충돌 발생 시 데이터를 다시 전송하는 절차를 정의한다. 이를 통해 이더넷 환경에서 다중 접속이 가능해졌다.

CSMA/CD의 기원은 1970년대 ALOHAnet이라는 UHF 대역을 활용한 무선 통신 네트워크에서 사용된 방식이다. 이 기술을 동축 케이블 기반의 유선 네트워크 환경에 적용할 수 있도록 개선한 것이 바로 CSMA/CD이다. Xerox 사의 Palo Alto Research Center(PARC)에 소속되어 있던 로버트 메트칼프 박사가 이 기술의 기초 이론을 정립했다. 이후 DEC, 인텔, Xerox 세 회사가 협력하여 'DIX 사양'이라는 이름으로 1980년에 이더넷의 표준 통신 절차로 제안했다.

1990년대에 들어 트위스트 페어 케이블을 사용하는 이더넷이 등장하고 리피터 허브를 통해 연결하는 반이중 통신 환경이 구축되면서도 CSMA/CD 방식은 계속 사용되었다. 하지만 1000BASE-T 규격이 표준화된 1999년 이후, 스위칭 허브를 이용한 전이중 통신 방식이 일반화되면서 통신 중 충돌이 발생하는 경우가 거의 없어졌다. 이에 따라 충돌을 감지하고 회피할 필요성이 크게 줄어들었고, 10기가비트 이더넷을 포함한 이후의 고속 이더넷 규격에서는 CSMA/CD 기능이 더 이상 지원되지 않는다.

한편, 무선 LAN 환경에서는 CSMA/CD와 유사한 충돌 회피 방식인 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)가 사용된다. CSMA/CD는 데이터를 전송하는 도중에 충돌이 감지되면 즉시 전송을 멈추고 임의의 시간 동안 기다린 후 재전송하는 반면, CSMA/CA는 데이터를 전송하기 전에 미리 채널 상태를 확인하고 일정 시간 동안 대기함으로써 충돌 가능성을 사전에 줄이려는 점이 가장 큰 차이점이다.

2. 2. 기술 발전과 CSMA/CD의 쇠퇴

이더넷은 초기에 CSMA/CD 방식을 적용하여 통신했으며, 특히 10BASE5나 10BASE2와 같이 동축 케이블을 사용하던 시절에 통신 프로토콜로 널리 보급되었다. 이 방식은 공유 통신 회선(버스) 상에서 여러 단말이 동시에 데이터를 보내 충돌이 발생했을 때, 데이터를 다시 보내는 절차를 정함으로써 다중 접속을 가능하게 했다.

CSMA/CD의 기원은 1970년대 ALOHAnet이라는 UHF 대역을 사용한 통신 네트워크에서 찾아볼 수 있다. 이를 동축 케이블 환경에 맞게 변경한 것이 CSMA/CD이다. Xerox 사의 Palo Alto Research Center(PARC) 소속이었던 로버트 메트칼프 박사가 기초 이론을 정립했으며, 이후 DEC, 인텔, Xerox 3사가 협력하여 1980년에 'DIX 사양'이라는 이름으로 이더넷의 통신 방식으로 제안했다.

1990년대에 들어 트위스트 페어 케이블을 이용한 이더넷이 등장하면서 리피터 허브를 통한 반이중 통신 환경에서도 CSMA/CD는 계속 사용되었다. 그러나 1999년 1000BASE-T(기가비트 이더넷)가 표준화된 이후, 스위칭 허브를 이용한 전이중 통신 방식이 일반화되면서 CSMA/CD의 필요성이 크게 줄어들었다. 전이중 통신에서는 데이터를 보내는 경로와 받는 경로가 분리되어 있고, 각 장치가 스위치에 직접 연결되기 때문에 데이터 충돌이 거의 발생하지 않기 때문이다.

이러한 기술 발전으로 인해, 기가비트 이더넷 규격에서는 반이중 통신 환경에서의 CSMA/CD 동작이 정의되어 있기는 하지만 실제로는 거의 사용되지 않는다. 또한, 10기가비트 이더넷 규격에서는 CSMA/CD 기능이 아예 지원되지 않는다. 이는 고속 통신 환경에서는 스위치를 통한 효율적인 데이터 전송 방식이 표준으로 자리 잡았음을 의미한다.

한편, 무선 LAN 환경에서는 CSMA/CD와 유사한 CSMA/CA(반송파 감지 다중 접속 및 충돌 회피) 방식이 사용된다. CSMA/CD는 데이터를 보내는 도중에 충돌이 감지되면 즉시 전송을 멈추고 일정 시간 대기 후 다시 시도하는 반면, CSMA/CA는 데이터를 보내기 전에 미리 채널 상태를 확인하고 일정 시간 대기하여 충돌 자체를 피하려는 점에서 차이가 있다.

3. 작동 원리

초기 이더넷 구성, 단말이 하나의 버스를 공유한다


CSMA/CD데이터 링크 계층에서 구현되는 MAC 기능 중 하나로, 여러 장치가 하나의 통신 채널을 공유하는 반이중 통신 환경에서 사용된다.

초기 이더넷동축 케이블을 이용한 버스형 구성을 많이 사용했는데, 이 방식에서는 여러 단말(컴퓨터 등)이 하나의 케이블에 연결된다. 이 케이블은 모든 단말이 공유하는 통신로 역할을 하므로, 한 단말이 데이터를 보내면 케이블에 연결된 모든 단말이 그 데이터를 받게 된다. 각 단말은 수신된 데이터의 목적지 MAC 주소를 확인하여 자신에게 온 것이 아니면 폐기한다. 이런 '1 대 다' 통신 방식 때문에 여러 단말이 동시에 데이터를 보내려고 하면 신호가 서로 부딪혀 깨지는 현상, 즉 '''충돌'''이 발생하여 통신이 실패할 수 있다. 리피터 허브를 사용하는 환경에서도 마찬가지로 충돌이 발생한다.

CSMA/CD는 이러한 충돌 문제를 관리하고 해결하기 위해 다음과 같은 세 가지 기본 원칙에 따라 작동한다.[16]

# 반송파 감지: 데이터를 보내기 전에, 다른 장치가 통신 채널을 사용하고 있는지(즉, '반송파' 신호가 있는지) 먼저 확인한다. 채널이 비어 있을 때만 전송을 시작한다.

# 다중 접속: 여러 단말이 동일한 통신 채널(매체)을 공유하여 사용할 수 있도록 허용한다.

# 충돌 탐지: 데이터를 전송하는 중에도 혹시 다른 단말과 충돌이 발생하지 않는지 계속 감시한다. 만약 충돌이 감지되면, 즉시 전송을 중단하고 정해진 절차에 따라 충돌 문제를 해결한다.

구체적인 작동 과정은 다음과 같다. 데이터를 보내려는 단말은 먼저 채널이 비어 있는지 확인(반송파 감지)한다. 비어 있다면 데이터 전송을 시작(다중 접속)하고, 동시에 충돌이 발생하는지 감시(충돌 탐지)한다. 만약 다른 단말과 거의 동시에 전송을 시작하여 충돌이 감지되면, 해당 단말들은 즉시 전송을 멈추고 '잼 신호'라는 특수한 신호를 보내 충돌 발생을 모든 단말에 알린다.[17] 그 후, 각 단말은 유사 난수를 이용해 계산된 서로 다른 시간 동안 기다렸다가 다시 채널 상태를 확인하고 전송을 시도한다. 이 대기 시간은 충돌이 반복될수록 길어지는 경향이 있는데, 이는 지수 백오프 알고리즘이라는 규칙에 따른다.[18] 이를 통해 충돌이 계속 반복되는 것을 막고 여러 단말이 통신 채널을 효율적으로 공유할 수 있도록 돕는다.

3. 1. 반송파 감지 (Carrier Sense)

CSMA/CD 방식에서 통신을 시작하기 위한 첫 번째 단계는 반송파 감지(Carrier Sense)이다. 이는 데이터를 전송하려는 단말이 먼저 통신 채널(전송 매체)을 다른 단말이 사용하고 있는지 확인하는 과정을 의미한다.[16] 데이터를 보내고자 하는 송신자는 수신자가 이미 다른 송신자와 통신 중임을 감지하면, 즉시 통신을 시도하지 않고 기다린다.

초기 이더넷 환경과 같이 여러 단말이 하나의 동축 케이블이나 리피터 허브를 공유하는 버스형 구성에서는, 모든 단말이 전기적으로 동일한 통신로에 연결되어 있다. 이러한 환경에서는 한 단말이 보낸 신호가 연결된 모든 단말에 전달되는 1대 다(Broadcast) 통신 방식으로 동작한다. 따라서 여러 단말이 동시에 데이터를 전송하려고 하면 신호가 충돌하여 데이터가 손상될 수 있다.

반송파 감지는 이러한 충돌을 사전에 방지하기 위한 중요한 기능이다. 통신을 원하는 단말은 먼저 통신로 상에 다른 신호(반송파)가 흐르고 있는지 지속적으로 확인한다. 버스 상의 모든 단말은 통신로의 모든 신호를 항상 수신할 수 있으므로, 다른 단말이 통신 중인지 여부를 파악할 수 있다. 만약 통신로가 사용 중이라고 감지되면, 해당 단말은 채널이 비워질 때까지 데이터 전송을 시도하지 않고 대기한다. 통신로가 비어있는 것이 확인된 후에야 비로소 자신의 데이터를 전송하기 시작한다. 이 과정을 통해 불필요한 전송 시도를 줄이고 네트워크의 혼잡을 완화할 수 있다.

반송파 감지는 CSMA/CD의 세 가지 주요 기능(반송파 감지, 다중 접속, 충돌 탐지) 중 가장 기본적인 첫 단계에 해당한다.[16]

3. 2. 다중 접속 (Multiple Access)



CSMA/CD 방식은 데이터 링크 계층에서 구현되는 MAC 기능으로, 반이중 통신 환경에서 동작한다. 이는 OSI 모형의 2계층에 해당하지만, OSI 7계층 모델의 공식 프로토콜은 아니다.

초기 이더넷에서는 동축 케이블을 이용한 버스형 구성을 사용했는데, 여러 단말이 하나의 동축 케이블에 연결되는 방식이다. 하나의 논리 버스 내 모든 단말은 전기적으로 동일하여 모든 을 수신하게 된다. 각 단말은 수신된 프레임 중 목적지 MAC 주소가 자신과 일치하는 것만 처리하고 나머지는 폐기한다. 이러한 구조적 특징으로 인해 다수의 단말이 연결된 경우, 특정 단말 A와 B 간의 "1대1" 배타적 통신은 불가능하며, 단말 A가 보낸 데이터는 동일 이더넷 배선에 연결된 모든 단말에 전달되는 "1대다" 통신 방식이 된다.

"1대다" 통신 방식에서는 이미 단말 A와 B가 통신 중일 때 다른 단말 C가 새롭게 데이터를 보내려면 전송로가 비워질 때까지 기다려야 한다. 만약 여러 단말이 거의 동시에 데이터를 전송하면 데이터가 손실되는 충돌(Collision)이 발생한다. 충돌은 동축 케이블뿐만 아니라 리피터 허브에서도 발생할 수 있다.

CSMA/CD는 이러한 충돌 문제를 해결하기 위해 통신 경로 상에서의 신호 전송 규칙을 정의하며, 다음 세 가지 핵심 요소를 포함한다[16]:

# Carrier Sense (반송파 감지): 통신을 시작하기 전에 다른 단말이 통신 중인지 확인한다.

# Multiple Access (다중 접속): 여러 단말이 동일한 통신 매체를 공유하여 사용할 수 있도록 한다.

# Collision Detection (충돌 탐지): 여러 단말이 동시에 데이터를 전송하여 충돌이 발생하면 이를 감지하고, 각 단말은 임의의 시간 동안 기다린 후 다시 전송을 시도한다.

각 요소의 동작 방식은 다음과 같다.

; 캐리어 검지 (반송파 감지)

: 버스 상의 모든 단말은 통신로의 신호를 항상 수신할 수 있으며, 이를 통해 통신로가 다른 단말에 의해 사용 중인지 확인할 수 있다.

; 다중 접근

: 단말은 캐리어 검지를 통해 통신로가 비어있음을 확인하면 데이터 전송을 시작한다. 전송이 완료되면 다시 캐리어 검지 상태로 돌아간다. 이 과정을 통해 여러 단말이 하나의 공유 버스를 이용하여 통신하는 것이 가능해진다.

; 충돌 검출 (콜리전 검출)

: 만약 여러 단말이 거의 동시에 전송을 시작하면 충돌이 발생한다. 물리 계층에서 충돌로 인한 전기 신호의 혼란을 감지하면, 수신 중이던 프레임은 폐기되고 잼 신호(Jam Signal)라는 특수한 신호를 통신로에 송출한다. 데이터를 전송하던 단말은 자신의 신호가 충돌로 인해 왜곡되거나 잼 신호를 감지하면 즉시 전송을 중단하고, 전송하려던 프레임은 전송 전 상태로 되돌린다[17]

; 충돌 후의 재전송

: 프레임 전송을 중단한 단말은 유사 난수를 이용하여 생성된 임의의 시간 동안 대기한다. 대기 시간이 끝나면 다시 캐리어 검지를 시도하여 통신로가 비어있으면 프레임 전송을 재시도한다. 만약 재전송 시도 중 다시 충돌이 발생하면, n번째의 충돌에 대해 2n개의 대기 시간 후보 중에서 무작위로 시간을 선택하여 대기한다. 이 방식을 TBEB(Truncated Binary Exponential Backoff) 알고리즘이라고 부른다[18]。 이 알고리즘은 충돌이 반복될수록 대기 시간의 범위를 넓혀 재충돌 가능성을 줄이도록 설계되었다.

3. 3. 충돌 감지 (Collision Detection)

데이터 링크 계층에서 구현되는 MAC 기능인 CSMA/CD는 반이중 통신 환경에서 동작한다. 초기 이더넷동축 케이블을 이용한 버스형 구성을 사용했는데, 여러 단말이 하나의 케이블을 공유했다. 이 방식에서는 특정 단말 간의 1:1 통신이 불가능하고, 한 단말이 보낸 데이터는 연결된 모든 단말에 전달되는 '1 대 다' 방식이었다. 따라서 여러 단말이 거의 동시에 데이터를 보내려고 하면 데이터가 손상되는 충돌(Collision)이 발생할 수 있었다.[16] 리피터 허브를 사용하는 환경에서도 마찬가지로 충돌이 발생한다.

CSMA/CD는 이러한 충돌 문제를 해결하기 위해 통신 경로상의 신호 전송 규칙을 정의하며, 주요 내용은 다음과 같다.[16]

# '''Carrier Sense(반송파 감지):''' 통신을 시작하기 전에 다른 단말이 통신 중인지 확인한다. 버스 상의 모든 단말은 항상 통신로의 신호를 감지하여 채널 사용 여부를 파악할 수 있다.

# '''Multiple Access(다중 접근):''' 여러 단말이 같은 통신로를 공유할 수 있다. 단말은 통신로가 비어 있음을 확인하면 송신을 시작하고, 완료 후 다시 반송파 감지 상태로 돌아간다. 이를 통해 여러 단말이 공유 버스를 사용하여 통신할 수 있게 된다.

# '''Collision Detection(충돌 감지):''' 여러 단말이 동시에 송신을 시작하여 충돌이 발생하면 이를 감지한다. 물리 계층에서 충돌로 인한 전기 신호의 혼란을 감지했을 경우, 수신 중이던 프레임은 폐기되고 잼 신호(Jam Signal)라는 특수한 신호를 전송로에 송신한다. 데이터를 보내던 단말은 자신의 신호가 충돌로 인해 왜곡되거나 잼 신호를 감지하면 즉시 송신을 중단하고, 보내려던 프레임은 송신 전 상태로 되돌린다.[17]

데이터를 보내고자 하는 송신자 'A'가 수신자 'B'가 이미 다른 송신자 'C'와 통신 중임을 감지하면, 즉시 통신을 중단하고 잼 신호를 보낸다. 이후 임의의 시간 동안 대기하며 재전송을 준비한다. 이 잼 신호는 송신자 'A'뿐만 아니라 네트워크상의 모든 노드에 전달되어 불필요한 전송 시도를 막아 트래픽을 줄이는 역할을 한다.

=== 잼 신호 (Jam Signal) ===

잼 신호는 신호의 한 종류로, 스테이션(단말)이 다른 스테이션에게 충돌이 발생했음을 알리고 전송을 중단하도록 지시하기 위해 보내는 32비트 바이너리 패턴이다.[10][11] 충돌을 감지한 스테이션은 1과 0이 반복되는 4~6바이트 길이의 패턴을 전송한다.[12] 이 신호의 목적은 프레임을 수신 중이던 다른 노드들이 정상적인 32비트 MAC CRC 대신 잼 신호를 받게 하여, CRC 오류로 해당 프레임을 폐기하도록 유도하는 것이다.

최대 잼 시간은 이더넷의 최대 허용 전파 지연 시간과 관련하여 계산된다. 이더넷 설치의 최대 허용 직경은 232비트 시간으로 제한되며, 이는 왕복 시간 464비트를 의미한다. 이더넷의 슬롯 시간이 512비트이므로, 슬롯 시간(512비트)과 왕복 시간(464비트)의 차이인 48비트(6바이트)가 최대 잼 시간이 된다.

=== 충돌 후 재전송 ===

프레임 송출을 중단한 단말은 유사 난수를 이용해 결정된 랜덤한 시간 동안 대기한 후, 다시 채널 상태를 확인(Carrier Sense)하고 비어 있으면 프레임 재송신을 시도한다. 만약 재송신 시 또다시 충돌이 발생하면, 충돌 횟수(n)에 따라 대기 시간 선택의 폭을 넓히는 방식을 사용한다. n번째 충돌 시에는 2n개의 대기 시간 후보 중에서 랜덤하게 시간을 선택하여 대기한다. 이 방식을 Truncated Binary Exponential Backoff (TBEB) 알고리즘이라고 부른다.[18]

TBEB 알고리즘은 충돌이 반복될수록 대기 시간의 평균값을 늘려 충돌 가능성을 점차 줄여나간다. 대기 시간 후보의 수는 최대 1024개(n=10일 때 210=1024)까지 증가하며, 10번 이상 충돌이 발생해도 후보 수는 1024개로 유지된다. 각 대기 시간 후보는 512비트 시간(하나의 슬롯 타임) 간격으로 나뉜다.

=== 충돌의 종류 ===

CSMA/CD 환경에서는 다음과 같은 특정 유형의 충돌이 발생할 수 있다.

  • '''후기 충돌 (Late Collision):''' 표준에서 허용하는 시간(첫 512비트 전송 시간) 이후에 발생하는 충돌이다.[13] 10Mbps 공유 매체 이더넷 환경에서 주로 언급된다. 후기 충돌이 발생하면 NIC는 프레임을 재전송하지 않으며, 데이터 손실 여부는 프로토콜 스택의 상위 계층에서 처리해야 한다. 정상적인 CSMA/CD 네트워크에서는 발생하지 않아야 하며, 주로 전이중/반이중 모드 불일치, 허용된 케이블 길이를 초과한 경우, 잘못된 케이블 연결, 규격에 맞지 않는 허브 사용, 또는 불량 NIC 등 하드웨어 문제로 인해 발생한다.
  • '''로컬 충돌 (Local Collision):''' 전송 매체가 아닌 NIC 자체에서 발생하는 충돌이다. NIC가 데이터를 전송하려고 시도할 때 감지될 수 있다. UTP 케이블 환경에서는 NIC가 반이중 모드로 작동할 때, 송신(TX) 쌍으로 데이터를 보내는 동시에 수신(RX) 쌍에서 신호를 감지하면 로컬 충돌로 인식된다. 전이중 모드에서는 송신과 수신이 동시에 가능하므로 로컬 충돌이 발생하지 않는다.
  • '''원격 충돌 (Remote Collision):''' 10BASE5나 10BASE2와 같은 동축 케이블 기반의 반이중 매체에서, 최소 프레임 길이보다 짧은 프레임(런트 프레임, runt frame)이 전송될 때 발생할 수 있는 충돌이다. 이 충돌은 주로 케이블의 원격 끝점에서 발생하며, 송신 측에서는 감지하기 어렵다. 따라서 물리 계층에서 프레임 재전송이 이루어지지 않고, 데이터 손상 및 FCS 오류로 이어져 상위 계층에서의 복구가 필요할 수 있다.

3. 4. 상세 절차

CSMA/CD데이터 링크 계층에서 구현되는 MAC 프로토콜 중 하나로, 여러 장치가 하나의 전송 매체를 공유하는 반이중 통신 환경, 특히 초기 이더넷에서 널리 사용되었다.

초기 이더넷과 같이 하나의 동축 케이블이나 허브를 통해 여러 장치가 연결된 환경에서는, 두 개 이상의 장치가 동시에 데이터를 전송하려고 시도하면 신호가 서로 겹쳐 깨지는 현상, 즉 충돌(Collision)이 발생할 수 있다. CSMA/CD는 이러한 공유 매체 환경에서 충돌 문제를 효과적으로 관리하고 해결하기 위해 고안된 일련의 절차이다.

CSMA/CD 방식의 핵심 원리는 다음과 같은 세 가지 요소로 요약될 수 있다.[16]

# '''캐리어 감지 (Carrier Sense)''': 데이터를 전송하기 전에, 현재 다른 장치가 통신 매체를 사용하고 있는지(즉, 캐리어 신호가 있는지) 먼저 확인한다. 매체가 비어 있을 때만 전송을 시도한다.

# '''다중 접속 (Multiple Access)''': 여러 장치가 동일한 통신 매체를 공유하여 접근하고 사용할 수 있다.

# '''충돌 감지 (Collision Detection)''': 데이터를 전송하는 중에도 혹시 다른 장치와 충돌이 발생하지 않는지 지속적으로 감시한다. 만약 충돌이 감지되면 즉시 전송을 중단하고, 충돌 해결 절차를 따른다.

충돌이 감지될 경우, 해당 장치들은 모든 장치에게 충돌 발생 사실을 알리기 위해 짧은 잼(jam) 신호를 전송한다.[17] 이후 각 장치는 백오프(backoff) 알고리즘에 따라 계산된 무작위 시간 동안 기다렸다가 다시 매체 상태를 확인하고 재전송을 시도한다.[18] 이 과정을 통해 여러 장치가 동시에 재전송하여 또다시 충돌하는 상황을 최소화한다.

이러한 CSMA/CD 절차는 공유 매체 환경에서 발생할 수 있는 데이터 충돌을 관리하고, 제한된 통신 자원을 여러 장치가 비교적 효율적으로 나누어 사용할 수 있도록 돕는다. 구체적인 전송 시작 절차와 충돌 발생 시의 상세한 처리 과정은 아래 하위 문단에서 자세히 설명한다.

3. 4. 1. 전송 절차

충돌 감지 및 재전송 로직을 포함한 CSMA/CD 알고리즘


CSMA/CD데이터 링크 계층에서 구현되는 MAC 기능으로, 주로 초기 이더넷과 같이 여러 장치가 하나의 전송 매체를 공유하는 반이중 통신 환경에서 사용된다. 전송 절차는 프레임이 성공적으로 전송되거나 전송 중 충돌이 감지되면 완료된다.[3]

'''전송 시작 절차'''

# 전송할 프레임이 준비되었는지 확인한다. 준비되지 않았다면 프레임이 준비될 때까지 기다린다.

# 매체(전송 경로)가 사용 가능한지(유휴 상태인지) 확인한다. 다른 장치가 사용 중(캐리어 신호 감지)이라면 준비될 때까지 기다린다.[4]

# 매체가 비어 있음을 확인하면 전송을 시작하고, 전송하는 동안 충돌이 발생하는지 지속적으로 감시한다.

# 충돌이 발생했는지 확인한다. 충돌이 발생했다면 아래의 '''충돌 감지 및 해결 절차'''로 이동한다.

# 충돌 없이 전송이 완료되면 재전송 카운터를 초기화하고 프레임 전송을 마친다.

'''충돌 감지 및 해결 절차'''

충돌이 감지되면 다음 절차를 따른다. 이 절차는 재전송이 시작되거나, 너무 많은 충돌로 인해 재전송이 중단될 때 완료된다.

# '''잼 신호 전송''': 최소 패킷 시간 동안 잼(jam) 신호라는 특수한 신호를 전송한다. 이는 프레임 헤더, 데이터, CRC 대신 전송되며, 충돌이 발생했음을 네트워크 상의 모든 장치가 알 수 있도록 한다. 송신 중이던 장치는 충돌을 감지하거나 잼 신호를 받으면 즉시 전송을 중단한다.[17]

# '''재전송 카운터 증가''': 충돌 횟수를 기록하는 재전송 카운터를 1 증가시킨다.

# '''최대 시도 확인''': 재전송 횟수가 미리 정해진 최대 시도 횟수(일반적으로 16회)에 도달했는지 확인한다. 만약 도달했다면, 해당 프레임의 전송을 포기하고 상위 계층에 오류를 보고하며 절차를 중단한다.

# '''백오프 대기''': 충돌 횟수를 기반으로 백오프(backoff) 알고리즘에 따라 무작위 대기 시간을 계산하고 그 시간만큼 기다린다. -- 충돌 횟수가 늘어날수록(n번째 충돌) 대기 시간의 선택 범위(0 ~ 2min(n, 10) - 1)가 지수적으로 증가하여, 반복적인 충돌 가능성을 줄인다. 이 방식은 '''TBEB 알고리즘''' (Truncated Binary Exponential Backoff algorithm)이라고 불린다.[18] 대기 시간은 슬롯 타임(slot time, 이더넷 표준에서 정의된 시간 단위)의 정수배로 계산된다.

# '''재시도''': 대기 시간이 끝나면, 위의 '''전송 시작 절차''' 1단계(매체 상태 확인부터)로 돌아가 프레임 재전송을 시도한다.

충돌 감지 방법은 사용되는 매체에 따라 다르다. 10BASE5나 10BASE2와 같은 공유 동축 케이블 버스 환경에서는 전송하는 데이터와 수신되는 데이터를 비교하거나, 평소보다 높은 신호 전압을 감지하여 충돌을 알아낼 수 있다.[5][6] 다른 종류의 매체(예: 꼬인 쌍선)에서는 전송 중인 채널에서 다른 신호(캐리어)가 동시에 감지되면 충돌로 간주한다.[7] 허브나 리피터 같은 장비는 스스로 충돌을 감지하고 연결된 모든 포트에 잼 신호를 전파하는 역할을 한다.[8][9]

CSMA/CD의 전송 절차는 다음 세 가지 기본 원칙에 기반한다.[16]

  • '''캐리어 감지 (Carrier Sense)''': 통신을 시작하기 전에 다른 장치가 통신 중인지(채널에 캐리어 신호가 있는지) 확인한다.
  • '''다중 접속 (Multiple Access)''': 여러 장치가 동일한 통신 매체를 공유하여 사용할 수 있다.
  • '''충돌 감지 (Collision Detection)''': 두 개 이상의 장치가 동시에 전송을 시작하여 충돌이 발생하면 이를 감지하고, 충돌 해결 절차(잼 신호 전송, 백오프 대기, 재전송)를 따른다.

3. 4. 2. 충돌 감지 시 절차

thumb

충돌을 감지하는 방법은 사용하는 매체에 따라 다르다. 10BASE5나 10BASE2와 같이 공유된 전기적 버스를 사용하는 초기 이더넷 환경에서는, 송신자가 보낸 데이터와 실제로 매체에 기록된 데이터를 비교하거나[5][6], 버스 상에서 평소보다 높은 신호 진폭을 감지하여 충돌을 판단할 수 있다.[5][6] 다른 종류의 매체에서는 전송 중에 다른 장치의 신호(캐리어)가 감지되면 충돌로 간주한다.[7] 허브나 리피터 같은 장비는 스스로 충돌을 감지하고, 충돌이 발생했음을 알리는 특별한 신호인 잼 신호(Jam Signal)를 네트워크 전체에 전파한다.[8][9]

프레임을 전송하는 도중에 충돌이 감지되면, 송신 장치는 즉시 전송을 중단하고 대신 잼 신호를 보낸다. 이 잼 신호는 네트워크 상의 다른 모든 장치들에게 충돌이 발생했음을 확실히 알리는 역할을 한다.

충돌이 감지된 후에는 다음 절차에 따라 문제를 해결하고 데이터를 다시 전송하려고 시도한다. 이 절차는 재전송이 성공적으로 시작되거나, 너무 많은 충돌로 인해 재전송 시도가 중단될 때까지 반복된다.

# 잼 신호 전송: 최소 패킷 전송 시간 동안 잼 신호를 계속 전송한다. 이는 충돌이 발생했음을 네트워크의 모든 수신 장치가 확실히 인지하도록 하기 위함이다. 이 동안에는 원래 보내려던 프레임 헤더, 데이터, CRC 대신 잼 신호가 전송된다.

# 재전송 카운터 증가: 충돌이 발생했으므로, 재전송 시도 횟수를 기록하는 내부 카운터를 1 증가시킨다.

# 최대 시도 횟수 확인: 재전송 카운터 값이 미리 정해진 최대 전송 시도 횟수(일반적으로 16회)에 도달했는지 확인한다. 만약 최대 횟수에 도달했다면, 더 이상의 재전송을 포기하고 전송을 중단한다.

# 백오프 대기: 충돌 횟수를 기반으로 무작위 대기 시간을 계산하고, 그 시간만큼 기다린다. 이 대기 시간은 충돌이 반복될수록 길어지는 경향이 있으며, 이를 통해 여러 장치가 동시에 재전송을 시도하여 또다시 충돌하는 상황을 피하고자 한다. (자세한 내용은 아래 설명 참조)

# 재전송 시도: 대기 시간이 끝나면, 다시 매체가 유휴 상태인지 확인하는 1단계(Carrier Sense)부터 전송 절차를 시작한다.[3]

이러한 충돌 복구 과정은 여러 사람이 동시에 대화하는 만찬 자리와 비유할 수 있다. 모든 사람이 하나의 공통된 매체(공기)를 통해 대화할 때, 말을 시작하기 전에 다른 사람이 말하고 있지 않은지 확인하고 기다린다. 만약 두 사람이 동시에 말을 시작하면(충돌 발생), 두 사람 모두 잠시 말을 멈추고 각자 짧은 시간 동안 무작위로 기다린 후 다시 말을 시도한다. 각자 다른 길이의 시간을 기다리기 때문에, 다시 동시에 말을 시작할 확률을 줄일 수 있다. 이더넷 환경에서는 이 대기 시간이 마이크로초 단위로 매우 짧게 이루어진다.

충돌로 인해 프레임 전송을 중단한 단말은, 유사 난수를 이용하여 계산된 랜덤한 시간 동안 대기한 후에 다시 통신로 상태를 확인한다. 통신로가 비어있으면 자신의 프레임을 다시 전송할 수 있다.[17]

만약 재전송 시도 중 또다시 충돌이 발생하면, 대기 시간은 이전보다 더 길어질 가능성이 높다. 구체적으로, n번째 충돌이 발생했을 때는 0부터 2n-1 사이의 정수 중 하나를 무작위로 선택하고, 이 값에 '슬롯 타임(Slot Time)'이라는 기본 시간 단위를 곱한 시간만큼 대기한다. 예를 들어, 첫 번째 충돌(n=1) 후에는 0 또는 1 중에서 무작위로 선택된 값에 슬롯 타임을 곱한 시간만큼, 두 번째 충돌(n=2) 후에는 0, 1, 2, 3 중에서 무작위로 선택된 값에 슬롯 타임을 곱한 시간만큼 기다리는 식이다. 이 대기 시간 후보의 범위(2n)는 최대 1024(n=10일 때 210)까지 증가하며, 10번째 충돌 이후부터는 계속해서 0부터 1023 사이의 값 중에서 무작위로 선택하여 대기 시간을 결정한다. 슬롯 타임은 이더넷 표준에서 정의된 값으로, 예를 들어 10 Mbps 이더넷에서는 51.2 마이크로초이다.

이 방식을 Truncated Binary Exponential Backoff (TBEB) 알고리즘이라고 부른다.[18] 충돌이 잦아질수록(네트워크가 혼잡할수록) 평균 대기 시간을 늘려서, 각 단말이 짧은 시간 안에 여러 번 충돌을 반복하는 것을 방지하고 네트워크 안정성을 높이도록 설계되었다. 이론적으로 최대 대기 시간 후보 수가 1024개인 것은, 이더넷 세그먼트 당 연결 가능한 최대 단말 수(1024개)와 관련이 있다. 만약 1024개의 모든 단말이 동시에 재전송을 시도한다면 충돌이 불가피하기 때문이다.

3. 5. 충돌 감지 방법

충돌을 감지하는 방법은 사용하는 통신 매체에 따라 달라진다. 이더넷 초기 버전처럼 공유된 전기적 버스를 사용하는 환경에서는, 송신하는 장치가 자신이 보낸 데이터와 실제로 매체에 실린 데이터를 비교하여 충돌을 감지할 수 있다. 만약 두 데이터가 다르다면, 다른 장치가 동시에 데이터를 보내 충돌이 발생했다고 판단한다.[5][6] 프레임을 전송하는 도중에 충돌이 감지되면, 해당 장치는 즉시 전송을 멈추고 대신 정체 신호(jam signal)라는 특수한 신호를 네트워크 상의 모든 노드에게 보내 충돌 발생 사실을 알린다.

충돌 감지 및 처리는 다음과 같은 절차를 따른다.

'''충돌 감지 및 초기 대응:'''

# 전송 중 충돌이 감지되면 즉시 데이터 전송을 중단한다.

# 최소 패킷 시간 동안 정체 신호(jam signal)를 전송하여 네트워크의 모든 장치가 충돌을 인지하도록 한다. 이는 충돌 사실을 확실히 전파하기 위함이다.

'''충돌 후 재전송 시도:'''[3]

# 재전송 시도 횟수를 기록하는 카운터를 1 증가시킨다.

# 미리 정해진 최대 재전송 시도 횟수에 도달했는지 확인한다. 만약 도달했다면, 해당 프레임의 전송을 포기하고 상위 계층에 오류를 보고한다.

# 충돌 횟수에 기반한 백오프 알고리즘에 따라 임의의 시간 동안 대기한다. 이 대기 시간은 충돌이 반복될수록 길어지는 경향이 있어, 반복적인 충돌을 피하는 데 도움을 준다.

# 대기 시간이 끝나면, 다시 매체가 유휴 상태인지 확인하는 첫 단계부터 전송을 시도한다.[4]

매체별 충돌 감지 방식은 다음과 같이 구체화될 수 있다.

  • 공유 전기 버스 (10BASE5, 10BASE2): 송신 데이터와 수신 데이터를 비교하거나, 버스 상의 전압 레벨이 비정상적으로 높아지는 것을 감지하여 충돌을 파악한다.[5][6]
  • 기타 매체 (예: 광섬유, 꼬임쌍선): 일반적으로 송신 중인 상태에서 동시에 수신 채널에서 신호(캐리어)가 감지되면 충돌로 간주한다.[7]
  • 리피터 또는 허브: 이 장치들은 연결된 포트 간의 신호를 증폭하고 전달하는 과정에서 자체적으로 충돌을 감지할 수 있으며, 충돌 감지 시 연결된 모든 포트로 정체 신호를 전파한다.[8][9]


CSMA/CD 방식에서 충돌 검출(Collision Detection)은 핵심적인 기능 중 하나이다[16]. 물리 계층에서 충돌로 인한 전기 신호의 혼란이 감지되면, 수신 중이던 프레임은 즉시 폐기되고 정체 신호가 전송된다. 데이터를 보내던 장치 역시 자신의 신호가 충돌로 인해 왜곡되거나 다른 장치로부터 정체 신호를 받으면 즉시 전송을 멈추고, 보내려던 프레임은 전송 전 상태로 되돌린다[17]. 이후 앞서 설명한 충돌 후 재전송 절차를 밟게 된다. 이 재전송 대기 시간 결정에는 주로 TBEB(Truncated Binary Exponential Backoff) 알고리즘이 사용된다[18].

이러한 충돌 감지 및 회피 과정은 여러 사람이 동시에 이야기하려고 할 때 발생하는 상황과 비유될 수 있다. 만찬 자리에서 모든 손님이 공통된 매체(공기)를 통해 대화한다고 가정해보자. 말을 시작하기 전에 각 손님은 다른 사람이 말하고 있지 않은지 확인하고 기다린다(Carrier Sense). 만약 두 손님이 동시에 말을 시작하면(Collision), 둘 다 즉시 말을 멈추고(Collision Detection), 각자 짧은 시간 동안 무작위로 기다린 후 다시 말을 시도한다. 무작위 시간을 기다림으로써 두 사람이 또다시 동시에 말을 시작할 확률을 낮추는 것이다.

3. 6. 잼 신호 (Jam Signal)

'''잼 신호'''(Jam Signal) 또는 '''재밍 신호'''는 신호의 한 종류이다. CSMA/CD 방식의 네트워크에서 데이터 전송 중 충돌이 발생했을 때, 충돌이 일어났음을 다른 모든 기기(스테이션)에 알리고 현재 진행 중인 데이터 전송을 중단시키기 위해 보내는 특별한 32비트 바이너리 패턴 신호이다.[10][11]

물리 계층에서 충돌로 인한 전기 신호의 혼란이 감지되면, 충돌을 감지한 기기는 즉시 잼 신호를 전송로에 내보낸다. 이때 충돌에 연관된 데이터 프레임은 폐기된다. 잼 신호가 전송되는 주된 이유는, 데이터를 수신하고 있던 다른 기기들이 정상적인 프레임 끝에 붙는 MAC CRC(순환 중복 검사) 값 대신 잼 신호를 받도록 하기 위함이다. 이렇게 되면 수신 기기들은 CRC 오류가 발생한 것으로 판단하고 해당 프레임을 폐기하게 된다. 데이터를 보내고 있던 기기 역시 충돌을 감지하거나 다른 기기가 보낸 잼 신호를 받으면 즉시 데이터 전송을 멈춘다.[17]

잼 신호는 보통 1과 0이 번갈아 나타나는 패턴(예: 10101010...)으로 구성되며, 길이는 4바이트에서 6바이트(32비트 ~ 48비트) 사이이다.[12]

이더넷 환경에서 최대로 허용되는 잼 신호 전송 시간, 즉 '최대 잼 시간'은 다음과 같이 계산될 수 있다. 이더넷 네트워크의 최대 허용 직경(신호 전파 거리)은 232비트 시간으로 제한된다. 이는 신호가 네트워크 양 끝을 왕복하는 데 걸리는 시간이 464비트 시간임을 의미한다. 이더넷 표준에서 충돌 감지를 위해 정의된 최소 프레임 전송 시간인 슬롯 시간은 512비트 시간이다. 이 슬롯 시간(512비트 시간)에서 신호 왕복 시간(464비트 시간)을 뺀 48비트 시간(6바이트)이 이론적인 최대 잼 시간이 된다. 이는 충돌 발생 후 다른 모든 기기들이 확실히 충돌을 인지할 수 있도록 충분한 시간 동안 잼 신호를 보내기 위함이다.

4. 이더넷 프레임 관련 사양

이더넷 프레임의 몇 가지 중요한 사양은 CSMA/CD 방식이 가지는 물리적인 제약에 기초하여 결정되었다.


  • 프레임 간격: 하나의 단말이 프레임을 전송한 후, 다음 프레임을 보내기 전까지 일정 시간(96비트 시간) 동안 기다려야 하는 규칙이다. 이는 전송 후 캐리어 감지 상태 전환을 위한 복귀 시간 확보를 위해 필요하다.[19]
  • 최소 프레임 길이: 신호 전송 중 발생하는 충돌을 전송 완료 전에 확실히 감지하기 위해 필요한 최소한의 프레임 크기(64옥텟)이다. 이는 네트워크의 최대 전파 지연 시간을 고려한 '슬롯 시간' 개념에 기반한다.[20][21]


또한, 1Gbps 이더넷의 반이중 통신 환경에서 CSMA/CD를 지원하기 위해 다음과 같은 사양이 선택적으로 추가되었다.

  • 캐리어 익스텐션(Carrier Extension): 빠른 전송 속도에서도 충분한 충돌 감지 시간을 확보하여 접속 가능 거리를 늘리기 위한 방법이다. 짧은 프레임 뒤에 더미 데이터를 추가하여 전송 시간을 인위적으로 늘린다.[22][23]
  • 버스트 모드(Burst mode): 짧은 프레임을 연속으로 보낼 때 발생하는 전송 효율 저하를 개선하기 위한 기능이다. 첫 프레임 외에는 더미 데이터 추가를 생략하고, 프레임 간 간격 동안에도 전송로를 점유하여 연속 전송을 가능하게 한다.[24][25]

4. 1. 프레임 간 간격 (Interframe Gap)

이더넷 프레임 전송 후, 하나의 단말은 다음 프레임을 보내기 전에 일정 시간 동안 기다려야 한다. 이 시간을 프레임 간격(Interframe Gap, IFG)이라고 하며, 최소 96비트 시간만큼 기다려야 한다. 예를 들어, 10Mbps 이더넷 환경에서는 9600 나노초(9.6 마이크로초)에 해당한다. 이 대기 시간 후에 통신 매체가 비어 있으면 다음 프레임을 전송하는 것이 허용된다. 이 간격은 전송 후 캐리어 감지 상태 전환을 위한 복귀 시간으로 마련되었다.[19]

4. 2. 최소 프레임 길이

이더넷 프레임의 사양 중 일부는 CSMA/CD 방식의 물리적 제약에 따라 결정되었다.
최소 프레임 길이 = 64옥텟동축 케이블을 통한 신호 전송에는 지연이 발생하므로, 데이터를 보내는 중에 충돌이 발생했는지 전송 완료 전에 확실히 알아내려면 일정 수준 이상의 전송 시간이 필요하다. 충돌 감지를 위해 최소한으로 필요한 시간을 '슬롯 시간'이라고 부른다.

슬롯 시간은 충돌 감지에 가장 오랜 시간이 걸리는 최악의 경우를 가정하여 계산된다. 이는 500m 길이의 동축 케이블이 리피터 5개로 연결된 최대 길이 2.5km 네트워크를 기준으로 한다.[20] 충돌 감지에 가장 긴 시간이 필요한 상황은, 네트워크 한쪽 끝(A)에서 신호를 보내기 시작한 직후 반대쪽 끝(B)에 있는 다른 단말이 동시에 신호를 보내기 시작하는 경우이다. 이때 A가 충돌을 감지하려면, A의 신호가 B까지 도달하고(전파 시간), B에서 발생한 충돌 신호가 다시 A까지 되돌아오는(전파 시간) 시간이 필요하다. 즉, 네트워크 전체 길이의 2배 거리에 해당하는 전파 시간이 소요된다.

5km(2.5km 왕복) 동축 케이블에서의 신호 전파 시간 약 26μSec와 리피터 및 트랜시버의 처리 시간 약 20μSec를 더해 약 46.38μSec가 필요하다고 추산되었다. 10Mbps 이더넷 환경에서는 이 시간이 464비트를 전송하는 시간과 비슷하므로, 충분한 여유를 두어 최소 프레임 크기를 512비트, 즉 64옥텟으로 정했다.[21] 만약 이더넷 프레임이 이 최소 길이보다 짧으면, 프레임 전송이 모두 끝난 후에야 충돌 신호가 송신 측에 도달하여 충돌 발생 사실을 감지하지 못하는 문제가 생길 수 있다.

CSMA/CD는 1기가비트 이더넷(Gbps)의 반이중 통신에서도 선택적으로 지원되며, 이때는 다음과 같은 두 가지 기능이 추가되었다.

  • 캐리어 익스텐션(Carrier Extension): 1Gbps 환경에서는 데이터 전송 속도가 매우 빨라져 64옥텟 길이의 프레임을 전송하는 시간이 극히 짧아진다. 기존의 슬롯 시간(64옥텟 전송 시간)으로는 충분한 네트워크 길이를 확보하며 충돌을 감지하기 어렵다. 따라서 1Gbps 반이중 통신에서는 충돌 감지를 위한 유효 슬롯 시간을 512옥텟(4096비트)에 해당하는 시간으로 늘렸다. 하지만 최소 프레임 길이 자체를 512옥텟으로 변경하는 대신, 전송하려는 프레임 길이가 512옥텟보다 짧을 경우, 프레임 뒤에 의미 없는 더미 데이터(패딩)를 덧붙여 강제로 프레임 길이를 512옥텟으로 맞추는 방식을 사용한다. 이 과정을 '캐리어 익스텐션'이라고 한다.[22] 이를 통해 10/100Mbps 환경과 같이 리피터 허브까지 최대 100m, 허브 양단 케이블 길이를 합쳐 최대 200m의 접속 거리를 확보할 수 있다.[23]

  • 버스트 모드(Burst mode): 짧은 프레임을 연속해서 보낼 때 발생하는 전송 효율 저하를 개선하기 위한 기능이다.[24] 여러 개의 짧은 프레임을 보내야 할 경우, 각 프레임 사이에 프레임 간격을 두어야 하고, 512옥텟 미만 프레임에는 캐리어 익스텐션으로 더미 데이터까지 추가해야 하므로 전송 효율이 낮아진다. 버스트 모드에서는 연속으로 보내는 프레임 묶음 중 첫 번째 프레임에만 캐리어 익스텐션을 적용하고, 이후 프레임들은 캐리어 익스텐션 없이 전송한다. 또한, 프레임 사이의 간격 시간 동안에도 계속해서 캐리어 신호를 내보내 다른 단말이 전송을 시작하지 못하도록 막고 전송 매체를 점유한다. 한 번에 전송할 수 있는 데이터의 총량(첫 프레임 전송 시작부터 마지막 프레임 전송 종료까지)은 최대 8192옥텟 시간으로 제한된다.[25]

4. 3. 1Gbps 이더넷에서의 확장

기가비트 이더넷 반이중 통신 환경에서도 CSMA/CD 방식이 지원된다. 하지만 1Gbps의 빠른 속도에서는 기존 방식만으로 안정적인 통신과 효율성을 확보하기 어려워, 다음과 같은 두 가지 기술이 옵션으로 추가되었다.[22][24]

  • '''캐리어 확장(Carrier Extension)''': 충돌 감지에 필요한 시간을 확보하여 네트워크 장비 간의 접속 가능 거리를 늘리기 위한 기술이다.[22][23]
  • '''버스트 모드(Burst Mode)''': 짧은 프레임을 연속으로 전송할 때 발생하는 전송 효율 저하 문제를 개선하기 위한 기술이다.[24][25]

4. 3. 1. 캐리어 확장 (Carrier Extension)

CSMA/CD는 1Gbps 반이중 통신에서도 지원되며, 이때 충돌 검출 시간을 확장하여 접속 가능 거리를 늘리기 위한 대책으로 캐리어 확장(Carrier Extension)이 도입되었다.[22]

1Gbps의 빠른 전송 속도에서는 기존의 최소 프레임 길이인 64옥텟만으로는 프레임 전송 중 충돌을 안정적으로 감지하기 위한 시간이 부족하여, 네트워크 장비 간의 접속 거리가 매우 짧게 제한되는 문제가 발생한다. 1Gbps 반이중 통신 환경에서 충돌 감지를 위해 필요한 최소 시간, 즉 '슬롯 시간'은 4096비트(512옥텟)에 해당한다.

캐리어 확장은 전송하려는 이더넷 프레임의 길이가 이 새로운 슬롯 시간 기준인 512옥텟보다 짧을 경우, 프레임 끝에 의미 없는 더미 데이터를 덧붙여 강제로 길이를 512옥텟으로 만드는 방식이다. 이렇게 프레임 길이를 늘림으로써 충돌 감지에 필요한 시간을 확보한다.[22] 이 방식을 통해, 기존의 10Mbps나 100Mbps 이더넷 환경과 같이 리피터 허브까지의 케이블 길이를 최대 100m로 하고, 허브 양단의 케이블 길이를 합쳐 최대 200m까지 연결할 수 있는 접속 거리를 확보하게 된다.[23]

4. 3. 2. 버스트 모드 (Burst Mode)

버스트 모드는 짧은 프레임을 연속해서 보낼 때 전송 효율이 떨어지는 문제를 개선하기 위한 대책이다.[24]

프레임을 대량으로 보내야 하는 경우, 각 프레임 사이에 존재하는 프레임 간격 때문에 전체 전송 시간이 길어지는 문제가 있다. 또한, 이 간격 시간 동안 다른 단말이 통신을 시작하면 전송로를 사용하기 위해 기다려야 하는 시간도 늘어난다. 특히, 1Gbps 반이중 통신 환경에서 512옥텟보다 작은 프레임이 많을 경우, 캐리어 익스텐션 기능 때문에 불필요한 데이터가 추가되어 전송 효율이 더욱 낮아진다.

이러한 문제를 해결하기 위해 버스트 모드에서는 연속으로 보내는 여러 프레임 중 첫 번째 프레임에만 캐리어 익스텐션을 적용한다. 이후의 프레임들은 캐리어 익스텐션 없이 전송된다. 또한, 프레임프레임 사이의 간격 시간에도 계속해서 캐리어 신호를 보내, 다른 단말이 끼어들지 못하도록 하여 전송로를 계속 점유한다. 이렇게 전송로를 점유할 수 있는 최대 시간(첫 번째 프레임 전송 시작부터 마지막 프레임 전송 종료까지)은 8192옥텟 시간으로 제한된다.[25]

5. 특징 및 한계

CSMA/CD는 충돌 발생 시 각 단말이 임의 시간 동안 대기 후 재전송하여 재충돌을 회피하는 원리를 기반으로 한다. 하지만 네트워크 이용률이 높거나 연결된 단말 수가 많아지면 충돌 빈도가 증가하여 대역폭 포화 및 통신 효율 저하라는 한계를 가진다.

5. 1. 장점

충돌이 발생했을 때, 각 단말은 임의의 시간 동안 기다린 후 데이터를 재전송한다. 각 단말이 기다리는 시간이 서로 동일할 확률은 매우 낮기 때문에, 이러한 방식은 재충돌을 효과적으로 방지할 수 있다.

5. 2. 단점 및 한계

CSMA/CD 방식은 몇 가지 단점과 한계를 가지고 있다.

'''채널 점유 효과'''(Capture Effect영어)는 공유 매체의 한 사용자가 상당 기간 동안 해당 매체를 "점유"하는 현상을 말한다. 이 기간 동안 다른 사용자들은 해당 매체를 사용할 수 없게 된다. 이 효과는 주로 이더넷에서 CSMA/CD를 사용하는 네트워크에서 나타나며, 데이터 전송량이 많은 연결이 다중 접속 무선 채널을 지배하게 되는 결과를 낳을 수 있다.[14] 이는 노드가 충돌 발생 시 링크에서 "후퇴(backoff)"하고 다시 접근을 시도하는 방식 때문에 발생한다. 이더넷 프로토콜에서는 통신 충돌이 발생하면 각 사용자는 링크에 다시 접근하기 전에 임의의 시간 동안 대기하는데, 이 대기 시간은 링크 접근에 연속적으로 실패한 횟수에 비례하여 길어진다. 채널 점유 효과는 한 사용자가 계속해서 충돌 후 재시도 경쟁에서 "승리"하여 채널을 독점하게 될 때 발생한다.

예를 들어, 사용자 A와 B가 동시에 조용한 링크에 접근하려다 충돌했다고 가정하자. 둘 다 0에서 1 단위 시간 사이의 임의의 시간을 기다린다. 만약 A가 더 짧은 시간을 기다려 링크 사용을 시작하면, B는 A의 데이터 프레임 전송이 끝날 때까지 기다려야 한다. 만약 A에게 전송할 데이터가 더 남아 있다면, 다음 시도에서 A와 B는 다시 충돌할 가능성이 높다. 이때 A는 다시 0에서 1 사이의 시간을 기다리지만, B는 두 번째 연속 충돌이므로 0에서 3 사이의 시간 동안 기다리게 된다. 따라서 A가 다시 "승리"할 확률이 높아진다. 이 과정이 반복되면 A는 대부분의 충돌에서 승리하게 되고, 특정 횟수(예: 16번)의 충돌 후에는 사실상 채널을 "점유"하게 될 수 있다.

하나의 노드가 전체 매체를 점유하는 능력은 네트워크에 연결된 노드 수가 증가함에 따라 감소한다. 노드 수가 많아지면, 점유 중인 노드보다 더 짧은 후퇴 시간을 갖는 다른 노드가 나타날 확률이 높아지기 때문이다.

채널 점유 효과는 한 스테이션이 계속 전송하는 동안 다른 스테이션들은 계속 후퇴해야 하는 상황을 만들어 단기적인 불공정성을 초래한다. 그러나 장기적으로는 모든 스테이션이 전송을 완료하면 매체를 "점유"할 기회를 갖기 때문에 공정하다고 볼 수도 있다. 채널의 효율성은 한 노드가 채널을 점유했을 때 증가하는 경향이 있다.

채널 점유 효과의 부정적인 부작용으로는 스테이션이 후퇴하면서 발생하는 유휴 시간이 있다. 한 스테이션이 매체에서 전송을 완료한 후, 다른 스테이션들이 지속적으로 후퇴해왔기 때문에 상당한 유휴 시간이 발생할 수 있다. 어떤 경우에는 후퇴 시간이 너무 길어져 일부 스테이션이 최대 재시도 횟수 제한에 도달하여 패킷을 폐기하게 될 수도 있다.

또한, 네트워크 사용률이 높은 환경에서는 충돌이 자주 발생하는 것을 피하기 어렵다. 버스 내에 접속된 단말 수가 너무 많을 경우 충돌 빈도는 기하급수적으로 증가하며, 특정 임계값을 넘어서면 급격하게 대역폭이 포화되는 단점이 있다. 혼잡 시 전송을 기다리는 단말이 많음에도 불구하고, 충돌 회피를 위한 대기 시간 때문에 통신로에 여유가 생겨 대역폭이 낭비되는 문제도 발생한다.

6. 현대적 응용

CSMA/CD는 초기의 공유 매체 이더넷 방식인 10BASE5, 10BASE2나 리피터 허브를 사용하던 초기 꼬임쌍선 이더넷 환경에서 주로 사용된 기술이다. 이러한 환경에서는 여러 장치가 하나의 통신 회선을 공유했기 때문에 데이터 전송 시 충돌이 발생할 수 있었고, CSMA/CD는 이를 감지하고 제어하는 중요한 역할을 수행했다.

하지만 이더넷 스위치와 전이중 통신 방식이 보편화된 현대의 이더넷 네트워크에서는 각 장치가 스위치와 직접 연결되어 독립적인 충돌 도메인을 형성한다. 또한, 전이중 통신은 송신과 수신을 동시에 할 수 있어 충돌 자체가 거의 발생하지 않으므로 CSMA/CD의 필요성은 크게 감소했다.

그럼에도 CSMA/CD 기술은 오래된 장비와의 하위 호환성을 유지하거나 반이중 통신 연결을 지원하기 위해 여전히 IEEE 802.3 표준의 일부로 남아 있다. 다만, 이 기술의 중요성이 과거에 비해 줄어든 것을 반영하여, IEEE 802.3 표준은 2008년 개정판 이후 "충돌 탐지(CSMA/CD) 액세스 방식 및 물리 계층 사양을 갖춘 반송파 감지 다중 접근"이라는 기존 명칭 대신 "이더넷에 대한 IEEE 표준"이라는 보다 포괄적인 이름으로 변경되었다.

6. 1. 이더넷 스위치와 전이중 통신

이더넷은 초기에 CSMA/CD 방식을 사용했다. 이는 공유 매체 이더넷 환경, 예를 들어 10BASE5, 10BASE2와 같은 동축 케이블 기반 네트워크나 리피터 허브를 사용한 초기 꼬임쌍선 이더넷에서 필수적이었다. 이러한 환경에서는 여러 장치가 하나의 통신 매체를 공유했기 때문에 데이터 충돌이 발생할 수 있었고, CSMA/CD는 이를 감지하고 해결하는 역할을 했다.

그러나 현대의 이더넷 네트워크는 대부분 이더넷 스위치와 전이중 통신 연결로 구성된다. 이더넷 스위치는 각 포트를 별도의 충돌 도메인으로 분리한다. 즉, 각 장치는 스위치와 직접 1:1로 연결되어 통신 매체를 공유하지 않게 된다. 또한, 전이중 통신 방식에서는 데이터의 송신과 수신이 동시에 별도의 채널로 이루어지므로 충돌 자체가 발생하지 않는다.

이러한 이유로 이더넷 스위치와 전이중 통신을 사용하는 현대 이더넷 환경에서는 더 이상 CSMA/CD 메커니즘이 필요하지 않다. 실제로 10기가비트 이더넷 규격에서는 CSMA/CD가 제외되었으며, 기가비트 이더넷에서도 전이중 모드에서는 실질적으로 적용되지 않는다. 다만, 구형 장비와의 하위 호환성이나 반이중 통신 연결을 지원하기 위해 CSMA/CD 기능은 여전히 이더넷 표준(IEEE 802.3)에 포함되어 있다.

6. 2. 무선 LAN (CSMA/CA)

무선 LAN에서는 CSMA/CD와 유사한 방식으로 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)가 사용된다. 두 방식의 가장 큰 차이점은 충돌 처리 방식에 있다. CSMA/CD는 데이터를 보내는 도중에 충돌이 감지되면 즉시 전송을 멈추고, 무작위 시간을 기다린 후 다시 전송한다. 반면, CSMA/CA는 데이터를 보내기 전에 매번 일정 시간을 기다려 충돌을 미리 피하려는 방식을 사용한다.

참조

[1] 웹사이트 Carrier Sense Multiple Access Collision Detect (CSMA/CD) Explained http://learn-network[...] 2011-07-29
[2] 간행물 IEEE 802.3-2012 Clauses 9, 27, 41
[3] 서적 Ethernet: Building a Communications Infrastructure https://archive.org/[...] Addison-Wesley 1993
[4] 문서 On Ethernet, stations must additionally wait the 96 bit [[interframe gap]] period.
[5] 간행물 IEEE 802.3 ''8.3.1.5 Collision detect thresholds''
[6] 간행물 IEEE 802.3 ''10.4.1.5 Collision detect thresholds''
[7] 간행물 IEEE 802.3 ''14.2.1.4 Collision Presence function requirements (half duplex mode only)''
[8] 간행물 IEEE 802.3 ''9.5.6 Collision handling''
[9] 간행물 IEEE 802.3 ''27.3.1.4 Collision handling functional requirements''
[10] 서적 TCP/IP protocol suite McGraw-Hill Higher Education 2010
[11] 간행물 IEEE 802.3 ''4.2.3.2.4 Collision detection and enforcement (half duplex mode only)''
[12] 문서 The size of this jam signal is clearly above the minimum allowed frame-size of 64 bytes.
[13] 웹사이트 802.3-2008 Section 1 https://web.archive.[...] IEEE
[14] 서적 Global Telecommunications Conference, 2002. GLOBECOM '02. IEEE
[15] 웹사이트 e-words「CSMA-CD」 http://e-words.jp/w/[...] 2016-09-29
[16] 간행물 IEEE 802.3-2018, 4.1.2
[17] 간행물 IEEE 802.3-2018, 4.2.3.2.4
[18] 간행물 IEEE 802.3-2018, 4.2.3.2.5
[19] 간행물 IEEE 802.3-2018, 4.2.3.2
[20] 간행물 IEEE 802.3-2018, 8.1.1.2
[21] 간행물 IEEE 802.3-2018, Annex B.1.2, B.1.3
[22] 간행물 IEEE 802.3-2018, Clause 4.2.3.4
[23] 간행물 IEEE 802.3-2018, Clause 42.3
[24] 간행물 IEEE 802.3-2018, Clause 4.2.3.2.7
[25] 간행물 IEEE 802.3-2018, Clause 4.4.2
[26] 웹인용 Carrier Sense Multiple Access Collision Detect (CSMA/CD) Explained http://learn-network[...] 2011-07-29



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com