[네트워크] 데이터 전송 - 오류 제어, 프레임
오류 제어
오류 복구 기능
- 수신 호스트의 응답 프레임 : 송신 호스트에 응답 프레임을 전송해 원래의 데이터 프레임을 재전송하도록 요구.(부정 응답 프레임 : 송신 호스트의 재전송 기능을 작동시킴)
- 송신 호스트의 타이머 기능 : 타임아웃(데이터 프레임을 전송한 후에 일정 시간 이내에 수신 호스트로부터 긍정 응답 프레임 회신이 없으면 데이터 프레임 재전송함.
- 순서 번호 기능 : 수신 호스트가 중복 프레임을 구분할 수 있도록 지원. 데이터 프레임 내에 프레임 구분을 위한 일련번호 부여.
정상적인 전송
- 송신 호스트가 전송한 데이터 프레임이 수신 호스트에 오류 없이 도착.
- 수신 호스트는 송신 호스트에게 긍정 응답 프레임을 회신.
프레임
프레임 변형
- 프레임 변형 오류를 인지한 수신 호스트는 송신 호스트에 부정 응답 프레임을 전송, 원래 데이터 프레임을 재전송.
- 부정 응답 프레임을 사용하지 않는 프로토콜에서는 송신 호스트의 타임아웃 기능에 따라 복구 과정을 시작.
프레임 분실
- 송신 호스트는 데이터 프레임을 전송한 후에 특정 시간까지 수신 호스트의 긍정 프레임이 도착하지 않으면 타임아웃 기능에 따라 원래의 프레임을 스스로 재전송.
순서 번호
- 중복 수신 문제를 해결하기 위해 데이터 프레임에게 부여되는 고유번호.
- 순서 번호의 필요성 : 긍정 응답 프레임이 사라지는 오류 발생 시 송신 호스트의 타임아웃 기능에 따라 재전송 과정이 진행됨 -> 동일한 프레임 중복 수신
- 수신 호스트가 긍정 응답 분실/도착을 구분할 수 있도록 데이터 프레임 별로 고유의 순서 번호를 부여하는 방식 필요.
- 순서 번호에 의한 프레임 구분 : 순서 번호에 의거하여 동일한 데이터 프레임이 중복 도착했는지 여부를 확인 가능.
흐름 제어
- 수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 데이터 프레임을 전송.
- 너무 빨리 전송하는 경우 : 수신 호스트가 내부 버퍼에 보관하지 못할 수 있음. 즉, 프레임 분실과 동일한 효과 야기.
- 기본 원리 : 수신 호스트가 송신 호스트의 전송 시점을 제어. ex) 슬라이딩 윈도우 프로토콜
- 데이터 링크 계층 : 전송 데이터를 프레임이라는 단위로 나누어 처리.
- 전송 프레임 : 체크섬, 송수신 호스트의 주소, 제어 코드 중 정보 포함.
- 내부 정보를 표현하는 방식에 따라 문자 프레임과 비트 프레임으로 구분.
문자 프레임
- 내용이 문자로 구성됨. 8비트 단위(혹은 아스키 문자 코드)의 고정 크기로 동작.
- 구조 : 프레임의 시작과 끝에 특수 문자를 사용. (시작: DLE/STX, 끝 : DLE/ETX)
- 전송 데이터에 특수 문자가 포함되면 혼선이 발생.
- 문자 스터핑 : 문자 프레임의 전송 과정에서 제어 문자를 추가하는 기능. 전송 데이터가 DLE 문자를 포함하면 뒤에 DLE 문자 하나를 강제로 추가. 데이터에 DLE 문자가 두 번 연속으로 있으면 하나의 DLE 문자 삭제.
비트 프레임
- 프레임의 시작과 끝에 위치한 플래그라는 특수하게 정의된 비트 패턴을 사용해 프레임 단위를 구분한다.
- 프레임의 구조 : 데이터 전송 전에 프레임의 좌우에 플래그를 추가, 수신 호스트는 이 플래그를 제거해 전송 데이터와 필요한 제어 정보만을 상위 계층에 전달.
- 비트 스터핑 : 전송 데이터에 플래그 패턴이 포함되면 혼선이 발생.
= 송신 호스트 : 전송 데이터가 1이 연속하여 5번 발생하면 강제로 0을 추가.
= 수신 호스트 : 송신 과정에 추가된 0을 제거하여 원래의 데이터를 상위 계층에 전달.