네트워크

[컴퓨터네트워크] week3 - 2 (네트워크 인터페이스 계층)

haerangssa 2024. 11. 29. 01:33

1. 네트워크 인터페이스 계층의 필요성

1) 아날로그 세상과 디지털 세상의 연결. 세상 모든 것을 디지털로 표현할 순 없음.

ex) 샘플링(음성 등) > 10진수 숫자표기(양자화, 촘촘히 하면 고품질) > 0과 1 신호로 변경. 

 

2) 전송매체 특성, 네트워크 혼잡, 전자기 간섭, 노이즈(가변적)에 의해 발생하는 전송 오류 대응 

신호와 송신 데이터가 0인데, 노이즈가 많아 비트오류 발생.

 

3) 송수신 호스트 간의 데이터 처리 능력차이 극복

병목 현상이나 클라이언트 측에서 수신 데이터를 처리 못 하는 경우가 존재한다.(느림)

 

4) 전송매체 통해 네트워크 장치 간 데이터를 송수신 하기 위한 신호처리와 통신 제어 역할.

물리적 신호를 전송한다. 수신을 위한 규칙임.

- 데이터링크 계층(osi 2계층 연결)

프레임 단위로 데이터 송수신.

신뢰 가능한 통신이 가능하도록 매체 접근 제어를 할 때, 오류정정, 순서제어, 흐름제어를 함.

- 물리계층(osi 1계층 연결)

비트단위로 데이터를 송수신.

전자기적 신호와 비트열 데이터간 신호 변환 및 처리를 함. (노이즈때문에 신호에러 자주 발생)

- 네트워크 인터페이스 계층에 속한 네트워크 장비

랜카드, 스위치, 무선AP

네트워크 인터페이스 계층은 

osi 7계층의 데이터링크+물리 계층임.

 

송신 시 데이터링크 > 물리 계층으로 비트열의 데이터를 보내고

전송 매체로 가기 전 비트열의 데이터를 전자기적 신호로 변환한다.(Adapter)

전송매체를 통해 전자기적 신호를 비트열의 데이터로 복원한 후 

수신 시 복원된 물리 계층의 비트 열을 데이터 링크 계층으로 보낸다.

 

 

2. 랜카드 (Network Interface Card, NIC)

- 컴퓨터를 네트워크에 연결하려면 반드시 하나이상의 랜카드가 필요. (유선/무선)

- 컴퓨터가 만든 디지털 데이터를 전기신호나 전파같은 물리적 신호로 변환하여 네트워크로 보내거나(TX),

네트워크로부터 받은 물리적 신호를 디지털 데이터로 변환하여 받는(RX) 기능.

즉, 랜카드는 컴퓨터(디지털)와 네트워크(아날로그) 간에 전송매체를 통해 상호작용이 가능토록 하는 "네트워크 인터페이스"

- 랜카드 장치 드라이버 = 네트워크 하드웨어 장치인 "랜카드"를 제어하는 소프트웨어 (펌웨어)

- OS가 랜카드 제어하기 위한 장치 드라이버(펌웨어)가 설치되어야 컴퓨터가 네트워크 하드웨어 장치를 구동시킬 수 있다.

 

3. 네트워크 인터페이스 계층 프로토콜

- 유선랜 표준: 이더넷 프로토콜 (IEEE 802.3)

- 무선랜 표준: 와이파이 프로토콜 (IEEE 802.11) - wi-fi

IEEE: 미국 전기전자학회, 아이 트리플 이

전기전자 공학 및 통신 네트워크에 관한 기술 표준화 비영리 단체

 

- LLC(Logical Link control) 부계층(IEEE 802.2)

매체접속제어 방식 간의 차이를 보완.(SW)

네트워크 토폴로지와 동작 방식과 관계없이 통신 가능하도록 함

 

- MAC(Medium Access Control) 부계층

통신 방식에 의존적인 매체접속제어 기능 구현(HW)

고속 신호 처리하는 물리 계층 데이터를 HW기술로 버퍼링 하고 데이터를 가공하여 상위 계층으로 전달. 

 

 

4. 네트워크 인터페이스 계층의 토폴로지와 연결 구조

1) 토큰 버스

- 물리적으로 보면 공유 버스 구조(점선)로 연결되지만, 논리적 프레임 전달은 링 구조(실선)을 동작.

- 프레임을 전송하기 전에 버스 신호를 감지하는 CMSA/CD 방식과 다른 방식의 전송 매커니즘 사용.

- 데이터 프레임 전송이 호스트 사이에 순차적으로 이뤄지도록 토큰 기반의 제어 프레임 사용

 

* 토큰이 있는 곳만 data 전송이 가능함

* 순서가 있어 비효율적임. 전송할 것이 생겨도 순서를 기다려야함 = 보낼 게 없어도 순서 오면 일단 이동)

* 가상의 링 구조

 

2) 토큰 링

- 순환 구조의 전송 매체와 점 대 점(P2P) 방식으로 연결되어, 대기/전송 모드로 구분되어 동작

- 대기모드: 입력단으로 들어온 신호를 출력단으로 즉시 내보냄

- 전송모드: 호스트가 토큰을 획득하여 데이터 프레임을 전송할 수 있는 권한을 보유한 상태

 

* 실제 물리적으로 링이 존재. 점 대 점으로 연결

* 토큰이 없으면 다음 순서로 넘김

 

 

5. 네트워크 인터페이스 계층의 매체 접근 제어

- 하나의 전송 매체(공유 버스)에 호스트가 5개 연결된 랜 환경 가정

5번 호스트가 1번에게 데이터 전송할 때, 2~4번 호스트는 프레임 헤더의 수신지 MAC주소(1번)와 자신의 MAC주소가 일치하는지 확인. 불일치하니 무시하고 1번 호스트만 수신. 

 

* 송신 프레임의 헤더에 어디로 보내는지 적음. / 맥주소 , 1번

* ADC를 통해 디지털화 > 1계층은 헤더로 빼버리고 2계층으로 올려줌. ..> 3계층까지

* 내 것만 처리하면 되어서 효율적 (헤더) 흠냐

 

- 이더넷에서 여러 호스트가 동시 프레임 전송 시 충돌 발생 문제

컴퓨터 A가 C에게 파일 전송을 할 때, 컴퓨터 H가 동시에 다른 파일을 전송하면 충돌이 발생함. 

>> 전송매체를 공유하고 있기에 같이 공유하면 에너지 충돌로 정보 손실이 발생. 

이런 충돌은 공유매체 방식에서는 항상 존재한다. (이더넷,와이파이 등)

 

6.  네트워크에서 충돌 문제를 해결하는 방법

1) 충돌을 허용한 후 문제를 해결

네트워크 안의 다수의 호스트가 전송매체를 공유할 때, 충돌을 허용(동시수신 가능)하고, 효과적으로 회피하는 방법

> 회피방법: 각 송신 호스트에서 서로 다른 전송 시간대를 지정! 랜덤시간을 뽑아서 기다리도록 한다.

> 예시: IEEE 802.3 표준에서 사용하는 CSMA/CD(Carrier Sense Multiple Access/ Collision Detection).

운반 신호를 감지, 공유하며 접근하는 방법. / 에너지를 감지하면 회피

>> 현재 대부분의 네트워크가 이용하는 방법

 

2) 충돌 발생을 원천적으로 차단하는 방법 (토큰)

토큰을 가진 호스트만 송신할 수 있도록 함.

> 예시: IEEE 802.5 표준에서 사용하는 토큰 링

 

 

7. 네트워크 인터페이스 계층의 매체 접근 제어

1) CSMA/CD == 눈치게임

- 충돌 방지를 위해, 전류 강도를 확인해 전송매체가 사용 중인지 확인.

- 송신 전에 확인(캐리어 센싱)하여 충돌을 탐지(콜리젼 디텍팅)하고, 전류 강도가 일정 수준 미만이면 전송 매체를 사용하는 호스트가 없다고 판단하여 데이터를 전송(멀티플 엑세스)

* 그래도 만약 동시에 전송하게 된다면 충돌이 발생한다.

 

1-1) 눈치게임 방법의 종류

- 1-persistent

전송매체가 사용 중인지, 전송 매체 상태를 캐리어센싱 하다가 아무도 사용하지 않는 상태면 바로 전송. 

>> 충돌이 발생해도 일단 바로 보냄

 

- non-persistent

누구도 전송 매체를 사용하고 있지 않다면 데이터를 바로 보내고, 누군가 사용 중이면 임의의 시간을 기다렸다가 다시 상태를 확인

>> 일정 시간 후 채널이 idle이면 전송

 

- p-persistent

전송매체가 사용 중이면 기다렸다가 다시 상태를 확인하고, 아무도 사용하고 있지 않다면 P확률로 데이터 전송

>> 정의된 지연시간 지나고, 다음 번 슬랏타임 기준으로 P의 확률을 가지고 전송. ex) 짝 나오면 전송O, 홀 나오면 전송 X

 

 

8. 네트워크 인터페이스 계층의 프레임 전송

- 노드: 유무선 전송매체로 데이터를 송수신 할 수 있는 네트워크 주소가 할당된 데이터 송수신 장치. (컴퓨터, 폰, 프린터, 라우터, 공유기)

/ 네트워크에 연결된 모든 장치

- 노드의 네트워크 주소 = MAC주소 (물리계층 주소)

- 호스트: 노드 중 애플리케이션을 실행할 수 있는 네트워크 장치. 사용자 작업을 처리함.

- 호스트의 네트워크 주소 = IP주소 & 포트번호

- 예: pc, 노트북, 스마트폰은 호스트 & 노드 / 그러나 스위치, 라우터는 노드이지만 호스트는 아님. (애플리케이션 실행 불가. 2계층)

- 서버: 서비스를 제공하는 호스트

- 클라이언트: 서비스를 요청하고 사용하는 호스트

- 일반적인 컴퓨터나 서버는 서버/클라이언트 모두 될 수 있는 호스트임.

 

더보기

Q. 다음 중 호스트가 아닌 것은?

 a) 데스크톱 컴퓨터

 b) 스마트폰

 c) 라우터

 d) 공유기

 e) 서버

 

정답: c, d

 

아래 사물인터넷 장치 중 호스트로 분류될 수 있는 것을 모두 고르세요.

 a) 스마트 TV

 b) 스마트 냉장고

 c) 네트워크 스위치

 d) IoT 전구

 e) 프린터

 

정답: a, b, d, e

 

기업 네트워크 구성 요소 중 호스트가 아닌 것을 모두 고르세요.

 a) 방화벽(Firewall)

 b) 이메일 서버

 c) 클라이언트 PC

 d) 네트워크 스위치

 e) 무선 AP(Access Point)

 

정답: a, d, e

 

데이터센터에서 사용되는 장비 중 호스트가 아닌 것을 모두 고르세요.

 a) 스토리지 서버

 b) 클라우드 VM(가상머신)

 c) 라우터: 패킷 목적지로 전달하는 네트워크 장치. 데이터 송수신은 하지 않는다

 d) 로드 밸런서: 여러 서버로 요청을 분산시키는 장치. 데이터 생성이나 소비는 하지 않음. 

 e) 데이터베이스 서버

 

정답: c, d

 

아래 항목 중 호스트에 해당하는 것을 고르세요.

 a) 스마트워치

 b) IP 카메라

 c) 라우터

 d) 방화벽 장비

 e) 태블릿 PC

 

정답: a, b, e

 

다음 중 네트워크에서 클라이언트 또는 서버로 동작하며 호스트로 간주될 수 있는 것은?

 a) 이메일 클라이언트: 이메일 송수신 장치로, 네트워크에서 데이터를 처리 > 호스트

 b) 웹 서버

 c) 프록시 서버: 클라이언트와 서버 사이에서 데이터를 중계하면서도, 자체적으로 데이터 처리가 가능 > 호스트

 d) 스위치: 데이터를 전달. 생성하거나 소비는 하지 않음 

 e) IoT 센서: 데이터를 수집해 네트워크로 전송 > 호스트

 

정답: a, b, c, e

 

아래 장치 중 IP 주소를 가지며 호스트로 동작할 수 없는 것을 고르세요.

 a) 데스크톱 컴퓨터

 b) 공유기: IP주소를 가지며 라우팅 역할을 함. 

 c) 스마트 냉장고: IoT장치. 네트워크에서 데이터 송수신하여 서비스 제공 > 호스트

 d) 파일 서버: 데이터 저장하고 클라이언트 요청에 따라 데이터 전송 > 호스트

 e) 네트워크 허브: 허브는 단순히 데이터를 수동적으로 전달하는 장치.  IP주소 갖지 않고 데이터 처리를 하지 않음. 

 

정답: e

ㅇㅇ

더보기

다음 중 노드이지만 호스트가 아닌 장치를 모두 고르세요.

a) 스위치

b) 라우터

c) 스마트폰

d) 데스크톱 컴퓨터

e) 방화벽 장치

 

정답: a, b, e

 

설명:

노드(Node): 네트워크에 연결된 모든 장치를 포괄적으로 지칭. 데이터를 송수신하거나 전송만 해도 노드로 간주됨.

호스트(Host): 데이터를 직접 송수신하거나 처리하는 노드. 스마트폰과 데스크톱 컴퓨터는 호스트이자 노드입니다. 하지만 스위치, 라우터, 방화벽은 데이터를 전달하거나 관리만 하므로 호스트가 아닙니다.

 

다음 장치 중 호스트로 간주되는 것을 모두 고르세요.

a) 스마트 TV

b) IP 카메라

c) 라우터

d) IoT 센서

e) 허브

 

정답: a, b, d

설명:

호스트: 스마트 TV(a), IP 카메라(b), IoT 센서(d)는 데이터를 송수신하거나 처리하므로 호스트입니다.

노드지만 호스트가 아닌 장치: 라우터(c)는 데이터를 라우팅만 하고, 허브(e)는 단순히 데이터를 전달하는 역할만 하므로 호스트가 아닙니다.

 

네트워크 상에서 데이터를 처리하거나 송수신하지 않고 단순히 전달하는 역할만 하는 장치를 모두 고르세요.

a) 네트워크 허브

b) 방화벽

c) IoT 전구

d) 스위치

e) 공유기

 

정답: a, d, e

설명:

노드: 네트워크 허브(a), 스위치(d), 공유기(e)는 데이터를 전달하는 역할만 합니다.

호스트: IoT 전구(c)는 데이터를 송수신하여 기능을 수행하므로 호스트입니다. 방화벽(b)은 데이터의 보안을 관리하며 직접적인 처리 역할은 수행하지 않으므로 호스트가 아닙니다.

 

다음 중 노드의 정의에 해당하지 않는 것을 고르세요.

a) 네트워크에 연결된 장치

b) 데이터를 생성하거나 소비하는 장치

c) 데이터를 전달하는 장치

d) 물리적으로 네트워크에 연결되지 않은 장치

e) 데이터를 처리하지 않는 장치

 

정답: d

설명:

노드(Node): 네트워크에 연결된 모든 장치를 의미하며, 데이터를 생성, 소비, 전달 여부와 상관없이 포함됩니다. 물리적으로 네트워크에 연결되지 않은 장치(d)는 노드가 될 수 없습니다.

 

다음 장치들이 노드인지 호스트인지 분류하세요.

1. 스마트폰

2. 스위치

3. IP 카메라

4. 방화벽 장비

5. 데스크톱 컴퓨터

 

정답:

노드이자 호스트: 스마트폰, IP 카메라, 데스크톱 컴퓨터

노드지만 호스트가 아님: 스위치, 방화벽 장비

 

설명:

호스트는 데이터를 송수신하거나 처리하는 장치에 한정되며, 스위치와 방화벽은 단순히 데이터 전달 또는 관리 기능을 수행하므로 호스트가 아닙니다.

 

9. 네트워크 인터페이스 계층의 프레임 전송

1) 네트워크 인터페이스 계층 프로토콜: MAC 프로토콜 = 네트워크 계층

(물리 계층 위의 데이터링크 계층 중 하나. 그 위에 LLC존재)

- 전송매체에 대한 접근을 제어하는 프로토콜. 

- 송수신 노드 간 데이터가 효율적으로 전송되도록 제어.

- 전송 도중 발생한 오류를 정정.

 

2) 데이터 전송 제어 (순서&흐름)

- 데이터에 번호 부여하여 전송 순서를 제어

- 수신 노드와 수신 성능(속도와 오류) 확인하여 데이터 전송 흐름을 제어.

 

3) 프레임(TCP/IP 1계층의 데이터 전송 단위) 전송 방법

- 프레임 헤더에 송신지/수신지의 MAC주소가 있음

- 수신 노드는 자신의 MAC주소와 수신한 프레임 헤더의 수신지 MAC주소가 일치하는지 확인함.

일치하면 수신하여 데이터를 처리하고, 불일치하면 무시함.

- 수신 노드에서 프레임을 성공적으로 수신하면, 성공적인 결과를 송신지에 알리기 위해 응답 프레임인 ACK를 생성하여,

수신했던 프레임에 적힌 송신지의 MAC주소로 ACK를 보냄(응답).

 

4) MAC 주소 = 물리적 주소 = 하드웨어 주소

- 총 12개의 16진수로 구성: 앞쪽 6개는 네트워크 카드 제작 회사 식별자/ 뒤쪽 6개는 호스트 식별자. 임의로 붙이는 고유번호 

- 하나의 호스트에 여러 개의 네트워크 인터페이스가 있으면 여러개 MAC주소 할당 가능. / 스마트폰도 mac주소 ㅇ

명령프롬프트에서 ipconfig/all 명령어로 각종 정보와 MAC주소(물리적 주소) 확인 가능함.

 

5) 프레임 구조

- 인터넷 계층이 네트워크 인터페이스 계층으로 보내는 패킷(데이터)의 앞에 헤더를 붙이고, 뒤에는 트레일러 붙여 프레임을 완성.

- 트레일러: FCS(Frame Check Sequence) 방법으로 데이터 오류(무결성) 확인.

> 오류가 난 데이터를 수식에 넣으면 다른 값이 나옴. > 무결성 확인


중요내용 (9번 내용인데 중요해서 빼둠)

 

1) 유선 전송

- 송/수신지의 MAC주소를 포함한 이더넷 헤더를 붙인 이더넷 프레임을 수신지로 전송. 

- 수신 호스트: 자신의 MAC 주소와 받은 프레임의 수신지 MAC 주소가 일치하는지 비교(랜카드 NIC에서)> 일치하면 수신 

 

2) 무선 전송

- 송수신지의 MAC주소와 무선 AP의 MAC주소를 포함이더넷 헤더를 붙인 이더넷 프레임을 수신지로 전송.

>> 수신 호스트가 ACK 하기 위해선 무선 AP와 송신지의 MAC주소가 필요함.

*무선 전송도 이더넷 헤더임을 잊지말거라.. 왜냐면 이더넷으로 연결해서 무선 AP 만드니가

송/수신지 모두 무선일땐 무선AP의 MAC주소 존재

 

3) 데이터(프레임) 전송 오류의 유형

3-1) 프레임 변형 오류

- 데이터 프레임이 수신 호스트에 도착했지만, 전송 중 노이즈나 간섭에 의헤 데이터가 변형되는 경우.(비트오류)

- 원인: 전송 매체의 잡음, 신호감쇠, 간섭 / 노이즈: 열잡음에 의한 자연적 노이즈, ADC노이즈, 간섭

 

* 데이터 전송이 정상적일 때

1. 송신>수신 데이터 보냄

2. 수신은 받은 데이터를 FCS에 넣어봄.

3. 2번의 값이 같다면 ACK 보냄

 

* 프레임 변형으로 전송 데이터에 오류가 발생한 경우

1. 송신>수신 데이터 보냄

2. 수신은 받은 데이터를 FCS에 넣어봄.

3. 데이터에 비트 오류(값이 다름)가 있으면 부정응답 NACK 보냄

4. 송신>수신 데이터 재전송

>> NACK은 아무것도 안 보내는 것(Time Out)보다 효율적이다.

왜 오류가 났는지 이유가 적힌 응답이기 때문에, 어느 부분을 수정할지 알 수 있기 때문. 

 

 

3-2) 프레임 분실 오류

- 송신한 데이터 프레임이 전송 과정에서 사라지는 오류

- 원인: 네트워크 혼잡, 라우터 과부하, 전송 매체 결함 등

 

* 데이터 전송이 정상적일 때

1. 송신>수신 데이터 보냄

2. 수신은 받은 데이터를 FCS에 넣어봄.

3. 2번의 값이 같다면 ACK 보냄

>> 만약 이 과정에서 데이터가 들어오지도 않았다?

그럼 타임아웃 동안 아무것도 보낼 수 없음. 부정응답도 보내지 못하는 한계가 존재.

 

* 프레임 분실로 전송 데이터에 오류가 발생한 경우

1. 송신>수신 데이터 보냄

2. 데이터 분실

3. 타임아웃 후 데이터 송신>수신 데이터 재전송

4. 잘 들어왔다면 ACK

>> 재전송 횟수는 정해져있고, 일정 횟수를 넘으면 데이터는 버려짐.( 화질 저하, 버퍼링 등 )

 

4) 순서번호: 프레임 재전송 판단과 중복 전송을 방지하는 방법

- 오류 없이 수신된 중복 데이터 프레임을 판별하기 위해, 프레임 순서 번호를 기록하고 검사함. 

- 0부터 순차적으로 증가하는 일련번호(대기번호표)

- 임의의 값 넘어가면 0으로 순환하므로, 흐름 제어 기능을 고려해서 최댓값을 설계해야함.

>> 재전송과 새 데이터 구분 가능

 

5) 타임아웃과 재전송

- 데이터 프레임의 ACK가 정해진 시간 동안 수신되지 않으면(타임아웃), 프레임 "분실" 판단 후 재전송.

(동일한 순서 번호의 데이터 프레임을 전송한다.)

- 데이터 프레임의 ACK가 수신되면, 다음 데이터(다음 대기번호)를 전송한다.

 

6) 흐름제어

- 수신 호스트가 수신 가능한 전송 속도를 유지하며 데이터 프레임 전송하는 기능. 

- 송신 호스트가 수신 호스트보다 매우 빠르게 데이터를 전송하는 경우에 필요.

- 수신 호스트의 수신 버퍼 상태 정보를 이용한 흐름제어

>> FIFO에서 in과 out의 속도차가 크면 데이터 손실임.

이를 방지하기 위해 흐름제어가 존재 ! >> 데이터 전송 임계치에 도달하면 속도를 늦춤. (더 보내면 손실이니까)

 

7) 프레임 전송 과정 중 데이터 오류 탐지 및 복구하는 방법

- 방법 1: 오류 검출 코딩(error detection coding)-forward

- 방법 2: 오류 복구 코딩(error correction coding)-forward

- 방법 3: 재전송(Retransmission=Automatic Repeat Request)-backward

 

 챗GPT가 알려주는 3가지 방법의 차이
더보기

1. 데이터 전송 과정에서 오류가 생길 수 있다 !

  • 데이터를 보낼 때 중간에 **채널(전송매체)**를 지나가는데, 여기서 **노이즈(잡음)**가 끼어들어요.
    → 그래서 데이터가 손상되거나 잘못될 수 있어요!

2. 그럼 오류를 어떻게 해결할까요?

3가지 방법이 있어요:

  1. 오류 검출 (Error Detection)
    → 오류가 있는지 확인만 해요. ("어? 데이터가 이상해!")
  2. 오류 복구 (Error Correction)
    → 오류를 바로 고쳐요. ("여기 데이터 틀렸네, 고쳐야지!")
  3. 재전송 (Retransmission)
    → 오류가 있으면 다시 보내요. ("이 데이터 틀렸어! 다시 보내줘~")

3. 이를 위해 코딩(Encoding) 이 필요해요!

  • 인코딩(Encoding): 데이터를 보낼 때 에러를 찾고 고칠 수 있는 정보를 추가해서 보내요.
    예: "데이터 뒤에 '에러체크 번호'를 추가!"
  • 디코딩(Decoding): 데이터를 받을 때 추가된 정보를 사용해서 오류를 찾고 고쳐요.
    예: "오! 번호가 안 맞네? 오류가 있구나. 바로 수정!"

4. 특별히 피드백 루프(Feedback Loop) 란?

  • 데이터를 보낸 쪽과 받은 쪽이 서로 확인하며 진행해요.
    1. 받은 쪽이 "오케이, 잘 받았어!"라고 ACK(긍정 응답) 을 보내요.
    2. 만약 ACK가 안 오면?
      → 보낸 쪽이 "다시 보낼게!" 하고 데이터를 재전송해요.

결론: 데이터 전송 = 오류를 찾고, 고치고, 필요하면 다시 보내기!

 

.

.

.


1. 오류 검출 코딩은 "오류만 찾아내는 방법"이야!

  • 데이터를 보낼 때, 에러를 찾아낼 수 있는 정보를 추가해서 보내.
    예: 데이터를 보내기 전에 체크표(checksum) 같은 걸 붙이는 거야.
    "데이터(ABC123) + 검사 정보(456)"

2. 받는 쪽에서 오류가 있는지 확인해!

  • 받은 데이터랑 검사 정보를 비교해서 오류가 있는지 없는지 판단해.
    예:
    • 보낸 데이터: "ABC123 + 검사 정보 456"
    • 받은 데이터: "ABX123 + 검사 정보 456"
      → "어? 데이터가 다르네? 오류 발생!"

3. 하지만, 고치지는 못해!

  • 오류 검출 코딩은 "오류를 발견"하는 데까지만 가능해.
    • 오류가 발견되면, "오류가 있어요! 다시 보내주세요!"라고 요청해.
    • 이런 경우, **피드백(재전송)**을 통해 데이터를 다시 받아야 해.

4. 오류 검출 코딩의 장점과 단점

➡ 장점:

  • 추가 정보가 적어도 돼서 효율적이야!
    → 데이터 크기가 작음.

➡ 단점:

  • 오류가 있어도 혼자 고칠 수 없어.
    • "다시 보내줘!" 하면서 재전송 요청을 해야 함.

5. 오류 검출 코딩의 예시:

  1. 패리티 비트 (Parity Bit):
    • 데이터를 보낼 때, 0과 1의 개수가 짝수/홀수인지 검사 정보로 추가.
      예: "데이터: 1011 → 검사 정보: 1 (짝수로 맞추려고 추가!)"
  2. 체크섬 (Checksum):
    • 데이터를 더해서 나온 값을 검사 정보로 보냄.
      예: "데이터: 12, 34 → 합: 46 → 검사 정보로 46을 추가!"
  3. CRC (순환 중복 검사):
    • 데이터를 특정 수식으로 나눠서 나온 나머지 값을 추가.
      → 데이터에 오류가 생기면, 나머지가 달라져서 오류를 발견할 수 있음!

결론: 오류 검출 코딩은 "오류를 찾아내는 데 초점"!

  • 오류가 없는 데이터는 그대로 통과.
  • 오류가 있으면 "에러 있어요!" 하고 재전송 요청.
  • 그래서 오류 복구 코딩이나 피드백과 함께 쓰이는 경우가 많아!

.

.

.


1. 인코딩만으로 에러를 정정할 수 있는 경우

  • 데이터를 보낼 때 추가 정보를 충분히 포함하면, 받은 쪽에서 오류를 찾아서 혼자서 고칠 수 있어!
    • 예: "데이터+검사번호"가 있다면, 잘못된 부분을 보고 바로 수정 가능.
    • 이런 방식은 오류 복구 코딩 (Error Correction Coding) 을 사용하는 거야.

➡ 장점:

  • 피드백 없이도 데이터를 한 번만 보내면 끝!
     전송 속도가 빨라짐.

➡ 단점:

  • 추가 정보를 많이 넣어야 해서 데이터 크기가 커짐.
    → 네트워크 자원을 많이 사용함.

2. 피드백(재전송)을 쓰는 이유

인코딩만으로 해결이 어려운 상황에서도 데이터를 안전하게 보내기 위해 피드백을 사용해.

  • 데이터를 보낼 때 오류가 너무 많아서 정정 불가능한 상황이 생길 수 있어.
  • 이런 경우, 받은 쪽에서 "이건 못 고치겠어. 다시 보내줘!"라고 요청(NACK 또는 응답 없음)하면,
    보내는 쪽이 다시 데이터를 보내서 해결하는 거야.
    → 이 방식이 바로 재전송 기법 (ARQ) 이야!

➡ 장점:

  • **추가 정보(인코딩)**를 최소화할 수 있어서 데이터 크기가 작아짐.
  • 데이터 전송 과정에서 심각한 오류가 있어도 다시 보낼 수 있음.

➡ 단점:

  • 응답과 재전송 때문에 속도가 느려짐.

정리: 인코딩 vs 피드백

방법 장점 단점

인코딩만 사용 빠르고, 응답 불필요 데이터 크기가 커짐
피드백 사용 오류가 많아도 복구 가능 느려지고, 응답이 필요함

결론: 언제 피드백을 써야 할까?

  • 오류가 드물고, 네트워크 상태가 좋을 때:
    → 인코딩만 써도 충분!
  • 오류가 자주 발생하거나, 네트워크 상태가 불안정할 때:
    → 피드백을 추가로 써서 안정성을 높여야 해!

즉, 피드백은 안전성을 더 높이기 위해 쓰는 거야. 네트워크 상황에 따라 둘 중 적절한 방법을 고르면 돼!

 

8) 오류 검출 코딩 기법의 예시

 

8-1) 패리티 비트: 데이터 전송 과정에서 오류가 발생했는지 검사하기 위해 추가되는 비트.

- 1 비트 패리티 = 전송 데이터에 1 비트를 추가하여 전송

- 전송 데이터 비트에서 1의 개수를 체크하여 패리티 규칙(짝/ 홀)에 맞춰 패리티 비트를 추가하고, 수신 노드는 받은 데이터를 정해진 패리티 규칙에 맞는지 검사하며 데이터 오류 여부를 체크한다.

- 오류 발생 여부만 체크 가능 / 오류 수정 불가

- 단점: 다수 비트 오류 발생할 때 오류 검출이 불가하다. only 한 비트 에러 탐지

 

8-2) 패리티 규칙

- 짝수 패리티 비트: 전체 전송 비트의 1 개수가 짝수가 되도록 패리티 비트를 정하는 방법

- 홀수 패리티 비트: 전체 전송 비트의 1 개수가 홀수가 되도록 패리티 비트를 정하는 방법

 

 

8-3) CRC란?

다항 코드 기반의 오류 정정 기법 = 순환 중복 검사 = 프레임 체크 시퀀스(FCS) = 체크섬

- 네트워크 통해 데이터 전송 시, 전송 데이터에 오류가 있는지 확인하기 위한 체크섬을 결정하는 방식

- 송신 노드에서 CRC 값을 데이터에 붙여 전송하고, 수신 노드에서 CRC값을 검사하여 에러를 검출한다

>> 다항식에 넣은 데이터의 나머지를 끝에 붙여줌 (FCS 구현 방법 중 하나)

- 연산 과정 복잡하지만, 높은 오류 검출율간단한 하드웨어 구현이 가능하다

 

8-4) CRC기법 단계별 동작

단계 기능
송신 & 인코딩 (CRC 추가) - ( 데이터 워드 + n 비트로 구성된 데이터 )를
n+1 bit divisor로 나누어 CRC 정보 생성.
- 데이터 워드 + CRC로 이루어진 코드워드 생성.
- divisor는 다항식 표현
정보 전송 (Data + CRC) - 코드워드(데이터 워드 + CRC)를 네트워크 통해 수신측에 전송
- 노이즈와 간섭에 의해 에러가 발생
수신 & 디코딩 (CRC 검사) - 수신된 코드워드를 Divisor 이용하여 나눔
- 나머지가 0인 경우 데이터 정상 수신
- 나머지 발생 시 에러 발생 >> 데이터 재전송

 

8-5) CRC 예시

송신. 인코딩

초기 CRC도 데이터 크기와 맞추어 8bit로 설정

 

수신. 디코딩

 

패리티 비트는 1 비트 에러만 찾을 수 있지만

CRC는 8비트이 >> n bit 가 커질수록 여러 개의 비트 에러 탐지가 가능하다!

+ 에러가 났음을 다항식을 이용하여 판단하는 것이 패리티와의 차이이다.

 

9) 오류 복구 코딩 기법의 예시

 

9-1) 해밍코드

- 패리티 비트의 한계점(: 에러 탐지만 가능하고 복구 불가능) 을 해결

- 리처드 웨슬리 해밍이 발명

- 오류 위치를 발견하고 정정하는 것이 가능

 

9-2) 해밍코드에서의 패리티

- 2의 거듭제곱 번째 위치의 비트를 패리티로 사용(1,2,4,8,16,32,,, 번째 비트는 패리티, 나머지는 데이터)

- P1 패리티: 1,3,5,7,9,11,,, 번째 비트의 오류 검사

- P2 패리티: 2,3,6,7,10,11,,, 번째 비트의 오류 검사

- P4 패리티: 4,5,6,7,12,13,14,15,,, 번째 비트의 오류 검사

- P8 패리티: 8,9,10,11,12,13,14,15,24,25,,, 번째 비트의 오류 검사

 

9-3) 패리티 비트 체크 범위

 

 

9-4) 해밍코드 수정 과정

 

9-5) 한 비트 에러 정정

 

10) 네트워크의 신뢰 통신 방법 

순방향 에러 정정 (Forward Error Correction, FEC)

+ 역방향 에러 정정(Backward Error Correction, BEC) + 재전송(ARQ)

 


10. 네트워크 전송 데이터 구조

- 헤더: 데이터 종류, 길이, 페이로드를 수신하는 방법(전송 기법)에 관한 정보. 

>> 헤더 데이터도 자체 CRC로 오류를 검사

- 페이로드: 송신 호스트가 전송하는 데이터(오류 정정 인코딩 된 송신할 최종 데이터)

- 트레일러: 페이로드 오류를 확인하기 위한 체크섬(FCS==CRC)