다양한 기록

Link layer - error detection, correction 본문

네트워크

Link layer - error detection, correction

라구넹 2024. 6. 7. 16:56

프레임 구조

Ethernet II

Preamble Dst addr Src addr Type Data FCS

 

IEEE 802.3

Preamble SFD Dst addr Src addr Length DSAP SSAP Ctrl. Data FCS

 

링크 레이어는 프로토콜이 많고, 각 구조마다 가지는게 다름

그래도 비슷하게 가지는 속성들은 존재

 

Peamble: 데이터 동기화를 위한 제어 신호. 프레임의 속도를 맞추고 실제 데이터의 시작을 알려 제대로 인식할 수 있도록 도와줌

SFD: 데이터의 시작을 알림

Dst addr: 목적지의 맥 어드레스

Src addr: 출발지의 맥 어드레스

Type: 상위 계층의 프로토콜 정보

Length: 0x0600보다 작으면 IEEE 802.3 Frame, 크면 Ether Type

DSAP: 목적지 3계층 프로토콜 (어떤 프로토콜로 전달 된다)

SSAP: 출발지 3계층 프로토콜 (어떤 프로토콜에서 전달된다)

FCS: Frame Check Sequence .. 오류 검출을 위한 필드


Error detection, correction

에러가 있는 프레임은 링크에서 처리

중간에 에러 있는 거 알았는데 굳이 계속 보내면 트래픽 낭비임

 

EDC = Error Detection and Correction bits

데이터 발견과 수정을 위해 추가적인 데이터 추가

정확히는 FCS가 EDC 안에 포함되는 개념임

100% 정확하지 않음, EDC가 길 수록 감지 및 수정이 좋지만 문제는 전송 시간이 길어짐

 

패리티 체킹

간단하지만 비효율적인 EDC 방법

 

싱글 비트 패리티

1001 | 0

이 경우 에러 감지만 가능

 

2차원 비트 패리티

1 0 1 0 1 1
1 0 1 1 0 0
0 1 1 1 0 1
0 0 1 0 1 0

 

행으로 한 번, 열로 한 번 패리티 비트를 만들고 체트

문제가 생긴 패리티의 교차 지점이 문제가 생긴 비트 -> 수정

 

* Internet checksum

트랜스포트 레이어(TCP, UDP)에서 사용

전송받은 패킷의 에러 감지가 목적

세그먼트를 16비트 단위로 나누어 더하고 1의 보수를 취하는 방법

수신측은 재계산하고 체크섬 값을 비교해서 다르면 에러 감지

 

CRC (Cyclic rebundancy check)

강력한 에러 검사 방법

데이터 비트: D

특정한 비트 패턴: G

r는 G의 비트길이 - 1

D의 2^r승을 G로 나눈 나머지 = R

** 주의할 건 나눌 때 XOR 연산을 함

 

R = remainder[ D*2^r / G ]

 

송신자는 [D, R]을 보냄

수신자는 [D, R] / G가 0으로 나누어 떨어지지 않으면 에러가 발생한 것으로 판단하고 버리거나 재전송 요구

 

예시

D: 101110

G: 1001

D*2^3 = 101110000

=> R = 011

 

[D, R] = 101110011

101110011 % 1001 = 0

=> 문제 없음

 

Error Correction

Forward error correction (FEC), 채널 코딩, 해밍 코드 등의 방법이 존재

 

 

'네트워크' 카테고리의 다른 글

Multiple access protocols/ Random access  (0) 2024.06.07
Multiple access protocols/ 채널 분할, taking turns  (0) 2024.06.07
Link layer - introduction  (0) 2024.06.07
멀티캐스팅  (0) 2024.06.07
네트워크 매니지먼트와 SNMP  (0) 2024.06.07