




MAC 계층과 LLC 계층에 대해서 알아보자.
LAN 환경에서는 네트워크 자원을 효율적으로 활용하기 위해 데이터 링크 계층의 기능을 MAC과 LLC 계층으로 나누어서 처리한다.
LAN 환경과 WAN 환경을 비교해보면
WAN의 데이터 링크 계층과 LAN의 LLC 계층의 역할이 비슷하기에 LAN 환경에 MAC 계층이 추가된 것으로 이해하면 된다.
이렇게 나눈 이유는 다음과 같다.
10명으로 구성된 팀 보다는 5명으로 구성된 팀이 더 소규모지만 작은 만큼 10명의 팀보다 더 효율적으로 일할 수 있는 확률이 높지 않을까 하여 나누어 처리하게 되었다.
즉 규모가 작으니 일을 효율적으로 진행하기 위해서 나눈 것이 MAC과 LLC 계층임.
데이터 링크 계층의 일은 오류 제어와 흐름 제어, 물리 계층의 역할의 일부를 담당하였다.
LLC와 MAC은 이를 나눠서 진행한다.
LLC는 오류 제어, MAC은 물리 계층이 하는 일을 커버하는 역할

MAC 계층은 물리적인 특성을 반영
MAC 계층은 LAN의 종류에 따라서 특성이 구분됨.
ex)
= 공유 버스를 지원하는 형태의 경우엔 데이터 전송을 CSMA/CD 방식으로 제어,
= 링 구조의 경우 데이터 전송을 토큰 링 방식으로 제어
CSMA/CD에서 발전된 것이 이더넷임.
이더넷 = 공유 버스를 이용해서 호스트를 연결하는 CSMA/CD 방식을 지원하는 네트워크
토큰링 방식 = 점대점 연결의 순환 구조를 지원, 토큰이라는 패턴의 제어 프레임이 링을 순환
이더넷, CSMA/CD 방식 = 공유 버스
토큰링 방식 = 링 형태
그래서 어떤 네트워크 형태냐에 따라서 이더넷, 토큰링 방식으로 제어하는 부분이 MAC 계층이다.

LLC 계층은 WAN 환경의 데이터 링크 계층과 기능이 유사함
송수신 호스트 사이의 프레임 전송 과정에서 물리적인 오류가 발생하면 이를 복구하는 작업을 진행함.
CSMA/CD인 경우와 토큰 링 방식인 경우에 따라 LLC(오류 제어 방식)가 달라질 수 있음.

IEEE = 아이 트리플 E 라고 발음.
IEEE에서 데이터 링크 계층과 관련된 다양한 LAN 표준안 연구 결과를 IEEE 802 시리즈로 발표함.

CSMA/CD 방식은 충돌을 허용하는 방식으로 충돌이 발생한 후 문제를 해결
토큰 링 방식은 원천적으로 충돌을 차단하는 방식

위 내용은 CSMA/CD의 내용으로 호스트 5개에 대해서 LAN 환경을 가정하여 CSMA/CD 방식으로 데이터를 전송하는 원리를 보여준다.
충돌이 발생하는 과정


토큰 버스 = 물리적으로는 위와 같이 버스의 형태를 취하고 있지만 동작하는 방식은 링 형태의 동작 방식을 따른다.
공유 버스의 경우 데이터를 모두에게 전달하는 방식이었지만
토큰 버스의 경우 시계 혹은 반 시계 방향으로 데이터 전달이 진행되어 9번이 1번에게 데이터를 전달하고자 하면 9 -> 7 -> 6 -> 5 -> 1 이렇게 전달이 진행됨.
그렇기 때문에 토큰 버스 방식은 충돌 문제를 해결할 때도 링에서 해결하는 방식을 따라감.
CSMA/CD가 충돌이 발생하고 해결하는 방식이었다면
토큰 버스 방식은 데이터 프레임 전송이 호스트 사이에 순차적으로 이루어지도록 토큰이라는 제어 프레임을 사용함.

토큰 링 방식의 경우엔 토큰이 계속해서 네트워크를 순회함.
토큰 링 방식의 경우 대기 모드와 전송 모드라는 모드가 존재한다.
각 호스트들이 평상시에는 일반적으로 대기 모드로 동작을 한다.
이때는 토큰이 순회하면 호스트를 그냥 지나치게 된다.
다만 어느 순간에 특정 호스트가 전송 모드로 동작하게 되면 토큰이 호스트를 지나치지 않고 호스트가 토큰을 킵하는 상태가 된다.
이때 호스트는 토큰 대신에 내가 내보내고자 하는 데이터를 내보내게 된다.
이후 데이터가 한 바퀴를 돌아서 다시 호스트로 들어오게 되면 이때 토큰을 다시 내보내게 되는 것이다.
그래서 크게 대기 모드와 전송 모드로 나뉘어서 작동하게 된다.


CSMA/CD 방식에는 종류가 몇 가지 존재한다.
CSMA/CD 방식은 신호 감지 프로토콜을 따라서 신호를 감지한다.
이때 감지하는 신호는 공유 버스를 누가 사용하고 있는지를 확인한다.
이때 아무도 사용하고 있지 않으면 공유 버스에 데이터를 흘려보내고 아니면 보내지 않는다.
1-persistent CSMA은 내가 데이터를 전송하고 싶어서 공유버스를 확인해 봤는데 현재 누군가가 사용 중임을 확인했다.
그러면 나는 데이터 전송을 위해 아무도 공유버스를 사용하지 않을 때까지, 공유버스가 유휴 상태가 될 때까지 계속해서 대기하는 방식을 의미한다.
이후 공유버스가 유휴 상태가 되면 100%의 확률로 프레임을 무조건 전송하는 방식을 말한다.
간단히 말하면 감시를 하다가 비어있으면 바로 전송하는 방식을 말한다.
1-persistent CSMA 방식의 경우 충돌이 발생할 확률이 높다.
이유
= 다른 호스트들도 모두 공유 버스를 감시하고 있기 때문에 1-persistent CSMA는 비어있으면 바로 전송하여 다른 호스트들과 충돌할 가능성이 높은 것이다.

Non-persistent CSMA은 내가 데이터를 전송하고자 할 때 공유버스를 확인해 봤는데 현재 누군가 사용중임을 확인하면 1-persistent CSMA와는 다르게 계속해서 공유버스의 유휴 상태를 확인하지 않고 일정 시간이 지나면 그때 다시 확인하도록 하는 방식이다.
Non-persistent CSMA 방식은 1-persistent CSMA보다 충돌 확률이 적다.
p-persistent CSMA도 1-persistent CSMA와 마찬가지로 데이터를 전송하고자 할 때 공유 버스를 계속해서 기다린다.
하지만 1-persistent CSMA와 다른 점은 공유버스가 비어있음을 확인하면 이때 p라는 퍼센트의 확률로 데이터를 전송할지 혹은 하지 않을지를 결정하게 된다.
예를들어 p가 0.5이면 나는 50%의 확률로 데이터를 보내고 50%의 확률로 데이터를 보내지 않게 되는 것이다.
이 p의 확률은 그때 네트워크 상황에 따라서 확률이 정해지며
확률이 낮아지면 대기하는 애들이 많아지지만 충돌 확률은 줄어들고
확률이 높아지면 대기하는 애들은 적어지지만 충돌 확률이 증가한다.

CSMA 방식은 기본적으로 둘 이상의 호스트가 공유버스의 유휴 상태를 확인할 가능성이 높다.
만약 공유 버스에서 충돌이 발생하게 되면 해당 프레임의 내용이 깨지고 변형되기에 더 이상 해당 프레임을 전송하는 것에는 의미가 없다.
따라서 CSMA/CD에서는 충돌 감지 기능을 사용해 전송 과정에서 충돌 여부를 확인하고
호스트가 충돌을 감지하면 진행 중인 프레임의 전송을 중지한다.
간단히 정리하면 아래와 같다.


위 공유 버스를 보면 각각의 호스트들은 트랜시버라는 장치에 연결이 되고 트랜시버는 호스트들을 전송 케이블에 연결하는 송수신 장치의 역할과 전송 선로의 신호를 감지해서 충돌 현상을 감지하는 기능을 한다.
트랜시버 = 중간에 공유 버스에서 충돌이 발생하는지 아닌지를 감시해 주는 역할, 충돌하면 각각의 호스트들에게 알림.
데이터 전달 과정
호스트 -> 트랜시버 -> 공유버스
공유버스 -> 트랜시버 -> 호스트
또한 버스 네트워크가 하나가 아니라 2개가 있을 때 이 둘을 연결하고자 할 때 리피터를 사용해 이 둘을 연결시켜준다.
리피터는 버스와 버스 간의 거리가 멀수록 물리적인 거리가 멀수록 우리가 보내는 신호가 약해지기 때문에 이를 증폭시키기 위해 활용된다.
버스 형태를 구성할 때 각각의 호스트들 간에 거리가 너무 좁아지지 않도록 일정한 거리 이상으로 규정함.
또한 이 케이블의 길이도 너무 길어지면 신호가 약해지기 때문에 공유버스의 길이도 너무 길지 않도록 규정함.