코드네임 :
📡 데이터통신네트워크 12 - Link Layer : Error Detection/Correction 본문
📡 데이터통신네트워크 12 - Link Layer : Error Detection/Correction
비엔 Vien 2024. 5. 29. 11:38Link Layer
- 사물인터넷 덕분에 관심 up
- 링크레이어는 LAN 카드 (Network Interface card)에 내장되어있음
Link Layer : services
- 프레이밍 (데이터그램을 프레임으로 바꿈)
- channel 접근 권한
- 노드간 신뢰성 있는 전송
- 흐름제어
- 에러 감지
- 에러 수정(correction)
- half-duplex(단방향) & ful-duplex(양방향)
[ Error detection ]
: 네트워크 계층에서 보내는 datagram에 EDC (Error Detection and Correction bits) 라는 추가 정보를 만들어서 보냄
- EDC(Error detection and correction bits) 와 D(Data protected by error checking)
- 이 EDC를 가지고 오류를 감지해 낼 수 있음
- 100% 신뢰 보장은 아니나 EDC가 커질수록 성능 up
< Parity checking >
: 가장 단순하게 오류를 감지하는 방법은 패리티 체크 방식
- 데이터의 끝에 패리티 비트 (parity bit)를 추가함
1. Single bit parity
: 1비트의 패리티 비트를 사용
- 전체 데이터 비트의 1 개수를 확인 후, 0 또는 1을 추가하여 전체 1의 개수를 짝수 개로 만듦
- 만약 전송하는 과정에서 비트가 변해서 홀수 개가 되었다면 오류가 발생한 것이라고 판정
<단점>
- 어느 비트가 바뀌었는지 알 수 없음
- 짝수 개의 비트가 바뀌는 오류가 발생했다면 오류를 감지할 수 없음
2. two-dimensional bit parity
: two dimensional, 2차원 패리티 비트를 사용하는 방법
- 각 row, column별로 각각 패리티 비트를 붙여 오류를 검증
- 이 방식은 single bit error 에서 어느 비트가 바뀌었는지도 알 수 있다.
- 만약 2행과 2열이 동시에 패리티 에러가 발생하면 2행 2열에 해당하는 비트가 반전되어 있다는 뜻
<단점>
- single bit parity와 비슷하게, 같은 행/열에 여러 에러가 발생한 경우 에러 감지를 할 수 없다.
[ Cyclic Redudancy Check (CRC) ]
: 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식
- 원래 데이터의 값에 따라 CRC 값을 계산하여 데이터에 붙여 전송 후,
데이터 전송이 끝난 후 받은 데이터의 값으로 다시 CRC 값을 계산한다.
- 두 값을 비교했을 때 두 값이 다르면 데이터에 오류가 발생했다는 것을 알 수 있다.
R : CRC 비트의 길이
- 길면 길수록 오류 검증 성능이 강력함
D : 보내야 하는 원본 데이터
- 위 예시에서는 101110 이다.
G : 송수신자 모두 알고 있는, 사전에 정의된 값
- 원본 데이터를 나눗셈 하는 데 사용됨
- CRC 값보다 1비트만큼 길다.
먼저 원본 데이터에 2^r을 곱하여 r비트만큼 공간을 마련해 준다.
그리고 G로 XOR 연산을 반복하여 수행한다.
그러면 더이상 연산을 할 수 없는 나머지가 발생할 것이다. (물론 나머지가 없을 수도 있음) 여기서 발생한 나머지 (위 그림에선 011 )이 CRC 값이다.
나머지만큼 원본 데이터에 2^r을 곱한 수에다가 더해주면 나머지가 없게 된다.
그리고 CRC 값을 원본 데이터 앞에 붙인 값인 101110011 을 보낸다. 즉 나머지가 0이 되게끔 하여 보낸다.
수신자는 받은 데이터와 1001을 가지고 XOR 연산을 수행한다.
그 결과가 딱 맞아 떨어지지 않으면 에러가 발생했다는 것을 알 수 있다.
'🛜Network > 데이터통신네트워크' 카테고리의 다른 글
📡 데이터통신네트워크 14 - LANs(switches, VLANs), data center networking (0) | 2024.06.09 |
---|---|
📡 데이터통신네트워크 13 - MAC, LANs(Addressing, ARP, Ethernet) (0) | 2024.06.08 |
📡 데이터통신네트워크 12 - SDN, ICMP, Link Layer (외부 블로그 그림) (0) | 2024.05.28 |
📡 데이터통신네트워크 11 - Per-router algorithm : Link State(Dijkstra) & Distance Vector(Bellman-Ford) (0) | 2024.05.14 |
📡 데통네 과제 📚 - Wireshark로 IP fragmentation 분석하기 (0) | 2024.05.10 |