본 자료 정리는 '쉽게 배우는 데이터 통신과 컴퓨터 네트워크(개정판)' 원서에 출처합니다.
Copyright © 한빛 아카데미.
MAC 계층의 이해
LAN 환경에서 계층 2 기능을 MAC과 LLC 계층으로 분리
LLC 계층: 데이터 링크 계층의 기본 기능
MAC 계층: 물리 계층 기능 (물리적 전송선로의 특징과 매체간 연결방식에 따른 제어)
MAC 계층
MAC 계층: 물리적인 특성 반영
이더넷
공유 버스 방식 지원
데이터 전송 전에 다른 호스트가 데이터를 전송 중인지 여부를 확인해야 함
둘 이상의 호스트에서 동시에 데이터 프레임 전송을 시도하면 충돌 발생 -> 일정 시점 후 재전송
토큰 링 방식
링 구조를 지원
토큰이라는 특정 패턴의 제어 데이터가 링을 순환
토큰을 확보하여 전송 후 토큰은 링에 내려 놔야 함
각 호스트에 전송 우선순위를 부여할 수 있음
LLC 계층
WAN 환경의 데이터 링크 계층과 유사한 기능을 수행
LLC 계층도 LAN의 특성에 영향을 받으므로, 이더넷과 토큰 링에서 사용하는 LLC는 다를 수 있음
CSMA/CD (Carrier Sense Multiple Access/Collision Detection)
공유 매체에서의 충돌 문제 해결
충돌 허용 방식: CSMA/CD
충돌 회피 방식: 전송 시간대를 달리하는 타임 슬롯을 배정하는 방식
CSMA/CD
충돌 감지 기능이 필수적으로 요구됨
충돌 감지 후, 재전송 기능으로 오류 복구
공유 매체의 길이가 길수록 전송 지연이 증가하여 충돌 가능성이 높아짐
데이터 전송 원리
호스트 5가 호스트 1에게 데이터 전송
전송 프레임에 목적지 주소 1을 기록하여 수신 호스트를 지정함
토큰 버스 (Token Bus)
물리적인 버스 구조(점선)로 연결되지만 논리적인 프레임 전달은 링 구조(실선
토큰이라는 제어 프레임을 사용, 반드시 토큰을 확보해야 함
토큰 전달의 순서가 우선순위: 물리적 위치와 무관하게 결정
토큰 링
물리적으로 링 구조를 지원: 송신 호스트가 전송한 프레임이 한 바퀴 돈 후 송신 호스트에게 되돌아오게 설계
송신 호스트는 자신에게 되돌아온 프레임이 올바르게 전송되었음을 확인 후, 데이터 프레임을 회수하고, 토큰 프레임을 링에 반환함
호스트의 동작 방식: 대기 모드, 전송 모드
(e.g. 내가 보낸 데이터를 다시 받음 -> 전송이 제대로 됐구나!, 토큰을 다음 호스트에게 넘김)
대기 모드
입력단으로 들어온 데이터를 바로 출력단으로 보냄
(Buffer(input->output) 그대로 넘겨 보내줌)
호스트가 다운되거나 기타 장애가 발생해도 네트워크에 영향을 주지 않기 위함
(Buffer만 경유하기 때문에 CPU가 죽어도 통신에 영향 안줌)
전송 모드
토큰을 확보해 데이터를 전송할 수 있는 권한을 보유한 상태
호스트가 중개 기능을 수행하며, 출력단을 통해 데이터를 전송할 수 있음
송신 호스트가 전송한 프레임이 링을 한 바퀴 돈 후 송신 호스트에 되돌아옴
프레임이 올바르게 전송되면 데이터 프레임을 회수하고 토큰 프레임을 링에 반환
( 다음 호스트에게 전해줌(순서는 네트워크 관리자가 임의로 정함) -> 데이터를 가장 빈번하게 사용하는 호스트에 우선순위 부여)
이더넷과 신호 감지 기능
신호 감지 (Carrier Sense) 프로토콜
1-persistent CSMA: IEEE 802.3은 LAN 환경에 관해 규정한 표준
프레임을 전송하기 전에 채널 사용 여부를 확인
채널이 사용 중이면 유휴 상태가 될 때까지 대기
채널이 유휴 상태가 되면 확률 1의 조건으로 프레임을 전송: 두 호스트가 동시 가능(충돌 가능)
Non-persistent CSMA
p-persistent CSMA
슬롯 채널 방식에서 많이 사용
채널이 유휴 상태면 p의 확률로 프레임을 전송, 채널이 사용 중이면 다음 슬롯을 기다린 후 앞의 과정을 반복
CSMA/CD
둘 이상의 호스트에서 채널이 유휴 상태라고 판단할 수 있음
이런 경우 프레임 전송 과정에서 충돌이 발생
따라서 충돌 감지 기능이 필수적으로 요구됨
충돌이 감지되면 진행중인 프레임의 전송을 중지
IEEE 802.3 표준안에서 전송 케이블의 최대 길이, 한 케이블 내 호스트의 수, 호스트 간의 간격 등을 다룸
이더넷의 연결
굵고 긴 전송케이블로 된 전송 매체에 트랜시버(Transceiver = transmit + receive) 장비로 보조선을 연결해 각 호스트를 연결
트랜시버는 호스트를 전송 케이블에 연결하기 위한 송수신 장치
트랜시버는 충돌이 발생했음을 알려줌으로써 무의미한 프레임 전송을 억제
리피터 (Repeater)는 단순히 신호를 증폭하여 이웃하는 케이블로 넘겨주는 기능
왼쪽 케이블에서 전송되는 신호는 리피터를 통해 오른쪽으로 전달, 반대 방향으로도 신호를 증폭해 전달
프레임 구조
MAC 프레임: MAC 계층 프로토콜에 정의된 MAC 헤더와 트레일러 정보를 추가한 것
MAC 프레임은 LLC 계층에서 보낸 정보를 전송 데이터를 취급, 데이터 앞에는 헤더가 뒤에는 트레일러가 위치
이더넷 프레임 구조
필드의 단위는 바이트
Source Address와 Destination Address 필드: 6바이트의 MAC 주소를 사용
Data와 Padding 필드: 가변 길이를 지원
Data 필드 왼쪽에 위치한 필드들은 헤더, 오른쪽은 트레일러에 속함
헤더와 트레일러에서 정의한 필드의 의미
Preamble(프리엠블): 7바이트 크기로, 수신 호스트가 송신 호스트의 클록과 동기를 맞출 수 있도록 시간 여유를 제공하는 것이 목적(각 바이트: 10101010 패턴)
Start Delimiter(시작 구분자): 프레임이 시작된다는 의미로 사용, Preamble 필드와 구분하기 위해 10101011의 값을 가짐
Source Address/Destination Address(송신 호스트 주소/수신 호스트 주소): MAC 계층에서는 호스트를 구분하는 고유의 MAC 주소를 사용. MAC 주소 값은 보통 LAN 카드에 내장되어 제공됨
Length/Type: 필드 값이 1,500 이하이면 Data 필드의 데이터 크기를 의미하는 Length로 해석하고, 그렇지 않으면 Type으로 해석
Length(길이): Data 필드에 포함된 가변 길이의 전송 데이터 크기
(최대 1,500, 최소 46 바이트 (데이터+Padding))
Type(종류): 이더넷 프레임에 캡슐화된 상위 프로토콜의 패킷 종류를 구분
Checksum(체크섬): 데이터 전송 과정에서 데이터 변형 오류의 발생 여부를 수신 호스트가 확인할 수 있도록 호스트가 값을 기록
(Preamble, Start Delimeter, Checksum을 제외한 나머지 필드의 CRC 값)
LLC 프레임 캡슐화
이더넷 프레임에서 Data 필드를 제외한 필드들이 MAC 계층에서 추가하는 정보
LLC 프레임(LLC헤터+Data)은 MAC계층(Ethernet)에서의 Data 필드가 됨
허브와 스위치
허브: 박스 형태의 잭을 연결해서 이더넷 네트워크를 구성
스위치 허브: 허브의 성능을 향상시킨 장비 (연결 호스트간 연결을 스위칭 기능을 통해서 전송속도를 N배 높임)
허브
스위치
모든 호스트에게 프레임을 전송하지 않음: 중앙의 허브에 스위칭 기능이 있음
목적지로 지정된 호스트에게만 프레임 전송
따라서 동시에 여러 호스트가 데이터를 전송할 수 있음
장점
프레임 구조
LLC 계층에서 내려온 LLC 프레임을 수신호스트에 전달하려면 토큰 버스 프레임을 만들어야 함
토큰 버스 프레임의 구조: 단위 -> 바이트
헤더와 트레일러에 정의된 필드의 기능
Start Delimiter/End Delimiter(시작 구분자/ 끝 구분자)
Preamble/ Source Address/ Destination Address/ Checksum(프리엠블/ 송신호스트 주소/ 수신호스트 주소/ 체크섬)
Frame Control(프레임 제어)
데이터 프레임과 제어 프레임을 구분.
데이터 프레임 -> 프레임 우선순위와 수신 호스트의 응답 확인이 필요할 때 사용 / 제어 프레임 -> 토큰의 전달, 링 관리 용도로 사용
(예, TT=00 일때, 00001000이 토큰프레임, TT-01 일때, LLC계층에서 내려옴 데이터 프레임)
토큰 버스에서 우선순위는 값이 0,2,4,6 인 네 개의 클래스로 나누며, 숫자가 클수록 우선순위가 높다. 토큰 프레임은 우선순위 6
LLC 프레임 캡슐화
LLC 프레임의 좌우에 토큰 버스 프레임의 헤더와 트레일러 정보가 채워지면 물리 계층이 수신 호스트로 전송
수신 호스트의 MAC 계층은 토큰 버스 프레임의 헤더와 트레일러 정보를 떼어내고, 상위 계층인 LLC 프로토콜에는 LLC 프레임 정보만 올림
프레임 구조
토큰 프레임: SD, AC, ED 필드 (그림의 (a))
데이터 프레임 (그림의 (b))
모니터: 특별한 기능을 수행하는 관리 호스트 존재
-> 오류제어: 토큰 프레임 상실, 데이터 프레임의 무한 순환
LLC 프레임 캡슐화
프레임 필드의 의미: 토큰링 프레임 구조에서
프레임의 시작과 끝을 구분
End Delimiter 필드
우선순위 비트: 토큰의 우선순위보다 높은 프레을 전송할 수 있음
토큰 비트: 토큰 프레임과 일반 프레임을 구분, 토큰 프레임은 값이 0
모니터 비트: 오류 발생 시 링 주위를 무한정 순환을 막기 위해 특정 호스트를 모니터로 지정, 모니터 호스트는 이 프레임을 링에서 제거함
LLC 계층에서 목적지 호스트로 전송해줄 것을 요청한 LLC 프레임과 토큰 링 프로토콜에서 사용하는 제어용 프레임을 구분하는데 사용
TT 비트=00: 제어 기능을 수행하는 프레임을 위해 정의, CCCCCC 비트의 코드 값으로 제어 명령의 종류를 구분
TT 비트=01: 상위 계층인 LLC 계층에서 전송을 요구한 LLC 프레임을 의미
Frame Status
토큰 링 프레임의 맨 마지막에 위치, 프레임의 수신 호스트가 송신 호스트에 응답할 수 있도록 함
두 개의 플래그 비트 A,C 필드로 정의
A 비트: 목적지로 지정한 수신 호스트에서 데이터 프레임이 링 인터페이스를 통해 자신에게 전달되면 해당 프레임에 접근했다는 표시로 1 지정 (Access 의미)
C 비트: 입력된 데이터 프레임의 수신 호스트가 자신의 주소와 동일한 프레임이 지나가면 프레임을 내부 버퍼에 보관했다는 표시로 1 지정 (Copy 의미)
수정해야 될 부분이 있으면 댓글로 알려주세요 :)