中庸
article thumbnail

이전 포스팅에서는 링크계층에서의 흐름제어/오류제어 방법에 대해 알아보았습니다.

 

이번 포스팅에서는 오류제어를 하기 전, 매체 접근에 대한 제어 방법에 대해 알아보겠습니다.

 

다른 기기와 통신을 하기 위해서는 먼저 매체에 접근하여야 합니다. 왜냐하면 실제 데이터는 매체를 통해서 날아가기 때문입니다.

 

이렇게 매체 접근에 대한 제어 방법을 MAC 이라고 지칭하며 MAC 을 위한 프로토콜은 다음과 같습니다.

 

MAC Protocol

 

가장 초창기의 MAC Protocol, Aloha! 에 대해 알아봅시다.

 

Aloha!

Aloha! 프로토콜은 매우 단순합니다. 일단 데이터를 송신하고, 만약 다른 노드에서도 동시에 데이터를 송신하기 위해 매체에 접근하여 충돌이 발생하면, 재전송을 수행합니다.

 

Ethernet

Aloha 의 방법을 계승하여, Ethernet 방법이 탄생했습니다. Ethernet 프로토콜은 CSMA/CD 를 이용하여 MAC 을 수행합니다.

 

CSMA/CD

CSMA : Carrier Sensing Media Access

CD : Collision Detect

 

Carrier : 데이터를 실어서 이동시키는 매체를 의미합니다. 예를 들면, 5.4Ghz 와 같은 특정 주파수를 의미할 수 있습니다.

 

Aloha! 에서는 데이터를 그냥 보내고, 충돌이 일어나면 재전송을 수행한다고 하였습니다. CSMA/CD 에서는 Carrier 를 Sensing 하여 현재 캐리어에 지나가고 있는 데이터가 존재하는지 Monitoring 합니다.

 

Carrier 에 지나가는 데이터가 없다면, 그 때 데이터의 송신을 수행합니다. 물론 그렇다하더라도, 다른 노드에서 동시에 데이터의 송신을 수행하면 충돌이 발생할 수 있습니다. 이것을 해결하기 위해 Carrier 에 지나가는 데이터가 없는 순간을 발견하는 즉시 데이터를 송신하는 것이 아니라 p-persistent 를 이용하여 p 확률로 데이터를 보냅니다. (이 부분은 더 공부가 필요합니다..)

 

만약, 충돌이 발생한다면, 재전송을 수행합니다. 단, 이 때 도 충돌이 일어나는 것은 바람직하지 않으므로 임의의 시간을 대기하였다가 전송을 수행합니다. (Back Off)

 

이러한 CSMA 를 한 마디로 요약하자면 "Listen Before Talk" 입니다.

 

 

 

단, 여기서 재전송은 우리가 ARQ 에서 다뤘던 재전송과는 차이가 있습니다.

 

일단, CSMA/CD 는 매체에 접근할 때 충돌을 해결하기 위한 프로토콜이고, ARQ 는 송, 수신 과정에서 발생하는 오류를 해결하는 프로토콜입니다.

 

그리고, CSMA/CD 는 maxAttempt 보다 많은 횟수를 실패하면 재전송을 수행하지 않지만, ARQ 는 정상적으로 데이터 송,수신이 완료될 때까지 재전송을 무한히 수행합니다.

 

 

이더넷 사용 예

예전의 이더넷은 CSMA/CD 프로토콜을 사용하였으나, 요즘의 이더넷은 사용하지 않습니다.

 

왜냐하면, 스위치의 등장으로 각각의 노드는 각각의 매체를 갖게 되었기 때문에 충돌이 발생할 일이 없습니다.

 

 

따라서, 현재의 이더넷에서는 CSMA/CD 를 사용하지 않지만, Specification 에는 등록되어 있습니다. (IEEE 802.3)

802.11n 과 같은 무선랜 환경에서는 CSMA/CD 를 사용합니다.

 

Ethernet

이더넷에 대해 조금 더 자세히 살펴봅시다.

 

방금 말씀드린대로, Ethernet 프로토콜은 IEEE 802.3 에 명시되어 있으며 현대에는 사용되지 않지만, CSMA/CD 를 Implementation 하고, MAC Address 를 사용합니다.

 

그리고, 아래와 같은 Data Frame 형식을 갖습니다.

 

Octet = 8bits

 

네트워크 대역폭에 따라 이더넷 프레임은 최소 크기가 존재합니다. (CSMA/CD 방식을 이용할 때, 즉 이더넷 계층에서 충돌이 발생할 때)

 

데이터 프레임의 최소 크기

 

만약, 하나의 매체에 연결되어 있는 두 컴퓨터 A, B 가 존재한다고 합시다.

 

이 때, A 는 First Frame of A 을 전송한 뒤 Second Frame of A을 전송 중이고 동시에 B 가 First Frame of B 를 전송한다면 First Frame of A 와 First Frame of B 가 충돌이 발생합니다.

 

하지만, A 는 Second Frame 을 보내던 중이였으므로, Second Frame 을 보내면서 충돌이 발생한 것으로 인식하게 됩니다. 따라서 A 는 Second Frame 을 재전송을 하는 오류가 발생합니다.

 

이를 해결하기 위해서 데이터 프레임의 최소 크기를 설정합니다. 위 설명과 같이 64바이트로 설정하면, 2500m 이내의 충돌을 감지할 수 있습니다.

 

하지만 현재 이더넷 연결 형태에서는 충돌이 발생할 일이 없기 때문에 위의 내용 또한 의미가 없습니다.

 

Switch 로 인해 Full-Duplexed 되어 Collision Free 한 현대의 이더넷

 

 

profile

中庸

@짱일모

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!