데이터 전송 방식
컴퓨터 네트워크를 통하여 자원 공유, 병렬 처리에 의한 성능 향상 및 중복 저장을 통한 신뢰성 향상 등의 효과를 얻을 수 있다.
- 자원 공유
: 컴퓨터 하드웨어, 소프트웨어 등의 모든 물리적, 논리적 자원을 공유
- 자원 활용의 극대화
: 성능 향상 하나의 공유 시스템 버스에 메인 프로세서를 장착
: I/O장치의 처리 속도를 향상시키기 위해 I/O 전용 프로세서를 설치
- 신뢰성 향상
: 중요한 정보를 여러 시스템에 중복 저장하므로 데이터 복구가 용이
: 신뢰성의 향상 정도에 따라 시스템 성능이 저하될 수 있음
전송과 교환
- 교환 : 라우터에서 데이터를 어느 방향으로 전달할지를 선택하는 기능
- 전송 : 1:1로 직접 연결된 두 시스템 간의 신뢰성 있는 데이터 전송을 보장
전송 방식의 종류
- 지리적 분포에 따른 분류 방식
: LAN (근거리 통신망), MAN (도시규모의 통신망), WAN (원거리 통신망) 등
- 데이터 전송, 교환 기술의 분류 방식
: 점대점, 브로드캐스팅 방식
데이터 전송 방식 : 점대점 방식
점대점 방식
- 교환 호스트가 송수신 호스트의 중간에 위치함 (스타형, 링형, 완전형, 불규칙형)
- 연결의 개수가 많아지면 성능은 유리하지만, 연결의 개수가 적어지면 전송 매체를 많이 공유해야 하므로, 네트워크의 혼잡도가 증가.
스타형
- 하나의 중개 호스트 주위로 여러 호스트를 일대일로 연결하는 형태
- 중앙 호스트의 신뢰성과 성능이 네트워크에 영향을 미침
트리형
- 중앙에 있는 스타 구조 주변에 위치한 호스트들을 중심으로 새로운 스타 구조가 확장되는 형태
- 중개 과정이 간단하지만, 중앙호스트에 문제가 발생하면 전체 네트워크에 영향을 미친다.
링형
- 호스트의 연결이 순환고리 구조
- 모든 호스트가 데이터 전송과 교환 기능을 동시에 수행
- 토큰 (Token)
: 호스트 사이의 데이터 송신 시점을 제어하는 기능
: 데이터의 전송 권한을 의미하는 토큰을 확보,
: 데이터 전송이 완료되면 토큰을 다시 네트워크에 반환
- 하나의 호스트가 고장나면 전체 네트워크가 동작하지 않을 수 있음
완전형
– 모든 호스트가 다른 모든 호스트와 1:1로 직접 연결하는 방식
– 호스트의 수가 증가할수록 전송 매체의 수가 급격히 늘어남
불규칙형
– 연결 구조를 특정 패턴으로 분류할 수 없는 방식
데이터 전송 방식: 브로드캐스팅 방식
브로드캐스팅 방식
- 특정 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전달
- LAN 환경에서 사용 (중개를 위한 교환 호스트 불필요)
버스형
-
전송 데이터를 모든 호스트에서 수신할 수 있음
-
충돌 (Collision)
: 둘 이상의 호스트에서 데이터를 동시에 전송할 때 충돌 발생
-
충돌 해결 방법
: 호스트의 전송 권한을 제한 (시간 할당 / 토큰 부여)
: 충돌 허용 (충돌 발생시 재전송, 이더넷의 CSMA/CD)
-
CSMA/CD 동작 과정(Carrier Sense Multi Access/Collision Detection)
-
Carrier Sense : 회선의 상태에 따라
-
Multi Access : 동시에 접근이 가능하면서
-
Collision Detection : 충돌을 검사하여 제어
-
장점
: 어느 한 기기가 고장 나더라도 다른 기기들의 통신에 영향을 미치지 않는다.
-
단점
: 호스트가 많아지면 충돌이 많아지고 효율이 떨어진다. 임의대기시간으로 인한 지연시간 예측 불가
링형
- 호스트를 순환 구조로 연결
- 송신 호스트가 전송한 데이터는 링을 한바퀴 순환한 후 송신 호스트에 되돌아옴
- 중간의 호스트 중에서 수신 호스트로 지정된 호스트만 데이터를 내부에 저장
- 데이터를 전송하기 위해서는 토큰 확보가 선행되어야 한다.
멀티포인트 통신
-
하나의 송신 호스트를 기준으로
: 수신 호스트 하나와 연결 : 유니포인트
: 다수의 수신 호스트와 연결 : 멀티포인트
-
송신 호스트가 한 번의 전송으로
: 수신 호스트 하나에만 데이터 전송 : 유니 캐스팅
: 다수의 수신 호스트로 전송 : 멀티 캐스팅
-
멀티 포인트 유니 캐스팅
: 하나의 송신 호스트를 기준으로, 다수의 수신 호스트와 연결되었고 (멀티 포인트)
: 송신 호스트가 한 번의 전송으로 하나의 수신 호스트에만 데이터 전송 (유니 캐스팅)
-
멀티 캐스팅
: 프로토콜 차원에서 지원하는 일대다 전송 기능
: 송신 호스트의 전송 요구 한번으로 모든 수신 호스트에 데이터를 전달
오류 제어
전송 오류의 복구
- 수신 호스트의 응답 프레임
: 데이터 프레임의 일부가 깨지는 변형 오류에 대해, 수신 호스트는 재전송을 요구할 수 있다.
- 송신 호스트의 타이머 기능
: 데이터 프레임을 전송한 후에 일정 시간 이내에 수신 호스트로 부터 회신이 없으면 타임아웃으로 간주하고, 프레임을 재전송한다.
- 순서 번호 기능
: 수신 호스트의 중복 데이터 프레임을 판별하기 위해 프레임 내부에 순서 번호를 기록하여 전송한다.
정상적 전송
: 송신 호스트가 전송한 데이터 프레임이 수신 호스트에 정상적으로 도착
:수신 호스트는 송신 호스트에게 긍정 응답 프레임을 회신
프레임 변형 오류
:프레임 변형을 탐지한 수신 호스트는 부정 응답 프레임을 전송
:송신 호스트는 원래의 데이터 프레임을 재전송한다.
:부정 응답이 없는 프로토콜에서는 타임아웃 기능에 따라 재전송을 수행한다.
프레임 분실 오류
: 송신 호스트는 데이터 프레임을 전송한 후에 특정 시간까지 수신 호스트의 긍정/부정 응답 프레임이 도착하지 않으면, 타임 아웃 기능에 따라 원래 프레임을 재전송
중복 수신 문제
: 긍정 응답이 사라지는 오류 발생시 타임아웃 기능에 따라 재전송이 진행
: 이 때, 수신 호스트는 재전송된 프레임인지, 다음 프레임인지 구분할 수 없음
- 프레임에 순서 번호를 부여하여 중복 여부를 판단할 수 있다.
흐름제어
-
수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 데이터
프레임을 전송
-
너무 빨리 전송하는 경우
: 수신 호스트가 내부 버퍼에 보관하지 못할 수 있음
: 프레임 분실과 동일한 문제를 야기함
-
기본 원리
: 수신 호스트가 송신 호스트의 전송 시점을 제어
ex) 슬라이딩 윈도우 프로토콜
프레임
구조
-
프레임의 시작과 끝에 특수 문자 사용
: 시작 – DEL / STX
: 끝 – DLE / ETX
전송 데이터에 특수 문자가 포함되면 혼란이 발생할 수 있다.
문자 스터핑 (Character Stuffing)
-
문자 프레임의 전송 과정에서 제어 문자를 추가하는 기능
-
전송 데이터가 DLE 문자를 포함하면, 뒤에 DLE문자 하나를 강제 추가
비트 프레임
- 프레임의 시간과 끝 위치에 플래그라는 특수하게 정의된 비트패턴을 사용하여 프레임 단위를 구분 (01111110)
비트 스터핑 (Bit Stuffing)
-
전송 데이터에 플래그 패턴이 포함되면 혼란이 발생할 수 있음
-
송신 측 : 전송 데이터에 1이 연속해서 5번 나오면, 강제로 0을 추가
-
수신 측 : 송신 과정에서 추가된 0을 제거하여 원래의 데이터를 복원
다항 코드
-
오류를 극복하는 방법
전송 프레임에 오류 검출 코드를 넣어 수신 호스트가 전송 과정의 오류를 검출
순방향 오류 복구(Forward Error Correction)
: 오류 복구 코드를 사용해 수신 호스트가 오류 복구 기능을 수행하는 방식
-
오류 검출
역방향 오류 복구(Backward Error Correction, ARQ 방식)
: 재전송 방식을 이용하여 오류 복구
: 네트워크에서 일반적으로 사용된다.
패리티비트
- 1비트 오류 검출을 위해 사용
- 1바이트 (8비트) = 7비트 아스키코드 + 1패리티 비드
- 짝수 패리티 : 데이터의 끝에 패리티 비트를 추가해, 전체 1의 개수를 짝수
- 홀수 패리티 : 전체 1의 개수를 홀수로
- 송신/수신 호스트는 동일한 패리티 방식을 사용해야 함
블록 검사
- 짝수 개의 비트가 깨지는 오류를 검출
- 수평, 수직 방향에 모두 패리티 비트를 지정
다항 코드 (Polynomial Code, CRC)
- 생성 다항식
: 계수가 0과 1인 다항식 형태에 기반
- 다항 코드 100101
: 1x^5 + 0x^4 + 0x^3 + 1x^2 + 0x^1 + 1x^0
: x^5 + x^2 + 1
송신부
- 임의의 CRC 코드를 선정
- CRC 발생코드의 최고차수만큼 원래 데이터의 뒤에 0을 붙임 (=확장데이터)
- 확장데이터를 modulo-2 연산을 바탕으로 CRC코드로 나눈다.
- 나머지가 0이면 확장데이터를 그대로 전송
- 나머지가 0이 아니면, 원래 데이터에 나머지를 붙여서 전송
수신부
- 수신된 코드를 동일한 CRC로 나눔
- 나머지가 0이면 오류가 발생하지 않은 것이고, 나머지가 0이 아니면 오류가 발
생한 것
예시
- 다항식 : x^5 + x^2 + 1
- 전송 데이터 : 101101001
- 나머지 (체크섬) : 00010
- 송신데이터 : 10110100100010