컴퓨터 네트워크 4. 데이터 전송의 기초

2023. 4. 14. 18:59·개인 공부/컴퓨터 네트워크
반응형
이전 글을 보고 오시면 이해하기 편합니다! (이전글 보고 오기)

 

 

컴퓨터 네트워크의 장점

자원 공유, 병렬처리에 의한 성능 향상 및 중복 저장을 통한 신뢰성 향상 등의 효과를 얻을 수 있다.

 

전송과 교환

- 교환 : 라우터에서 데이터를 어느 방향으로 전달할지를 선택하는 기능

- 전송 : 1:1로 직접 연결된 두 시스템 간의 신뢰성 있는 데이터 전송을 보장

 

전송 방식의 종류

- 지리적 분포에 따른 분류 방식 (LAN, MAN, WAN등)

- 데이터 전송, 교환 기술의 분류 방식 (점대점, 브로드캐스팅 방식)


점대점 방식

- 교환 호스트가 송수신 호스트의 중간에 위치함 (스타형, 링형, 완전형, 불규칙형)

- 연결의 개수가 많아지면 성능은 유리하지만, 연결의 개수가 적어지면 전송 매체를 많이 공유해야 하므로, 네트워크의 혼잡도가 증가

 

 

스타형

- 하나의 중개 호스트 주위로 여러 호스트를 일대일로 연결하는 형태

- 중앙 호스트의 신뢰성과 성능이 네트워크에 영향을 미침

 

트리형

- 중앙에 있는 스타 구조 주변에 위치한 호스트들을 중심으로 새로운 스타 구조가 확장되는 형태

- 중개 과정이 간단하지만, 중앙호스트에 문제가 발생하면 전체 네트워크에 영향을 미친다.

트리형

 

링형

- 호스트의 연결이 순환고리 구조

- 모든 호스트가 데이터 전송과 교환 기능을 동시에 수행

- 토큰

호스트 사이의 데이터 송신 시점을 제어하는 기능, 데이터의 전송 권한을 의미하는 토큰을 확보, 데이터 전송이 완료되면 토큰을 다시 네트워크에 반환

- 하나의 호스트가 고장 나면 전체 네트워크가 동작하지 않을 수 있다.

완전형

- 모든 호스트가 다른 호스트와 1:1로 직접 연결하는 방식

- 호스트의 수가 증가할수록 전송매체의 수가 급격히 늘어남

 

불규칙형

- 연결 구조를 특정 패턴으로 분류할 수 없는 방식


브로드캐스팅 방식

- 특정 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전달

- LAN환경에서 사용 (중개를 위한 교환 호스트 불필요)

 

버스형 (우리가 사용하는 공유기)

- 전송 데이터를 모든 호스트에서 수신할 수 있음

- 충돌

둘 이상의 호스트에서 데이터를 동시에 전송할 때 충돌 발생

- 충돌 해결 방법

호스트의 전송 권한을 제한 (시간 할당 / 토큰 부여)

충돌 허용 (충돌 발생 시 재전송, 이더넷의  CSMA/CD)

 

CSMA/CD 동작 과정

- Carrier Sense : 회선의 상태에 따라 (통신이 일어나지 않고 있으면 데이터를 보내고 일어나고 있으면 기다린다)

- Multi Access : 동시에 접근이 가능하면서 (통신이 일어나고 있지 않아 두 서버가 동시에 보내면)

- Collision Detection : 충돌을 검사하여 제어 (충돌이 일어나게 되면 두 서버는 랜덤한 시간을 기다린 다음 다시 전송)

장점 

- 어느 한 기기가 고장 나더라도 다른 기기들의 통신에 영향을 미치지 않는다

 

단점

- 호스트가 많아지면 충돌이 많아지고 효율이 떨어진다. 임의대기시간으로 인한 지연시간 예측 불가

 

링형

- 호스트를 순환 구조로 연결

- 송신 호스트가 전송한 데이터는 링을 한 바퀴 순환한 후 송신 호스트에 되돌아옴

- 중간 호스트 중에서 수신 호스트로 지정된 호스트만 데이터를 내부에 저장

- 데이터를 전송하기 위해서는 토큰 확보가 선행돼야 한다.

 

멀티포인트 통신

- 하나의 송신 호스트를 기준으로

- 수신 호스트 하나와 연결 : 유니포인트 (1:1)

- 다수의 수신 호스트와 연결 : 멀티포인트 (1:N)

 

- 송신 호스트가 한 번의 전송으로

- 수신 호스트 하나에만 데이터 전송 : 유니 캐스팅 (1:N)

- 다수의 수신 호스트로 전송 : 멀티 캐스팅 (1:N)

 

멀티 포인트 유니 캐스팅

- 하나의 송신 호스트를 기준으로, 다수의 수신 호스트와 연결되고 (멀티 포인트)

- 송신 호스트가 한 번의 전송으로 하나의 수신 호스트에만 데이터 전송 (유니 캐스팅)

멀티 캐스팅

- 프로토콜 차원에서 지원하는 일대다 전송 기능

- 송신 호스트의 전송 요구 한 번으로 모든 수신 호스트에 데이터를 전달


오류 제어

전송 오류의 복구

- 수신 호스트의 응답 프레임

: 데이터 프레임의 일부가 깨지는 변형 오류에 대해, 수신 호스트는 재전송을 요구할 수 있다.

- 송신 호스트의 타이머 기능

: 데이터 프레임을 전송한 후에 일정 시간 이내에 수신 호스트로부터 회신이 없으면 타임아웃으로 간주하고, 프레임 재전송

- 순서번호 기능

:수신 호스트의 중복 데이터 프레임을 판별하기 위해 프레임 내부에 순서 번호를 붙여서 기록하여 전송한다.

 

정상적인 전송

- 송신 호스트가 전송한 데이터 프레임이 수신 호스트에 정상적으로 도착

- 수신 호스트는 송신 호스트에게 긍정 응답 프레임을 회신

오류

1. 프레임 변형 오류

- 프레임 변형을 탐지한 수신 호스트는 부정 응답 프레임을 전송

- 송신 호스트는 원래의 데이터 프레임을 재전송한다.

- 부정 응답이 없는 프로토콜에서는 타임아웃 기능에 따라 재전송을 수행한다.(응답이 없어도 재전송한다)

 

2. 프레임 분실 오류

- 송신 호스트는 데이터 프레임을 전송한 후에 특정 시간까지 수신 호스트의 긍정/부정 응답 프레임이 도착하지 않으면, 타임 아웃 기능에 따라 원래 프레임을 재전송

 

3. 중복 수신 문제

- 긍정 응답이 사라지는 오류 발생 시 타임아웃 기능에 따라 재전송이 진행

- 이때, 수신 호스트는 재전송된 프레임인지, 다음 프레임인지 구분할 수 없음

*프레임에 순서 번호를 부여하여 중복 여부를 판단할 수 있다.

 

흐름 제어

흐름제어는 이 글을 보고 오면 이해하기 편합니다.(글 보러 가기)

- 수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 데이터 프레임을 전송

- 너무 빨리 전송하는 경우

: 수신 호스트가 내부 버퍼에 보관하지 못할 수 있음 (프레임 분실과 동일한 문제를 야기함)

- 기본 원리

:수신 호스트가 송신 호스트의 전송 시점을 제어


프레임

 

프레임의 구조

- 프레임의 시작과 끝에 특수 문자 사용

: 시작 - DEL / STX

: 끝 - DEL / ETX

- 전송 데이터에 특수 문자가 포함되면 혼란이 발생할 수 있다.

 

문자 스터핑

- 문자 프레임의 전송 과정에서 제어 문자를 추가하는 기능

- 전송 데이터가 DLE 문자를 포함하면, 뒤에 DLE문자 하나를 강제 추가 

비트 프레임

– 프레임의 시간과 끝 위치에 플래그라는 특수하게 정의된 비트패턴을 사용하 여 프레임 단위를 구분 (01111110)

비트 스터핑

- 전송 데이터에 플래그 패턴이 포함되면 혼란이 발생할 수 있음(플래그 패턴이란 위에 나온 비트프레임의 양 끝 비트 패턴)

- 송신 측 : 전송 데이터에 1이 연속해서 5번 나오면, 강제로 0을 추가

- 수신 측 : 송신 과정에서 추가된 0을 제거하여 원래의 데이터를 복원


오류를 극복하는 방법

- 전송 프레임에 오류 검출 코드를 넣어 수신 호스트가 전송 과정의 오류를 검출

- 순방향 오류 복구

: 오류 복구 코드를 사용해 수신 호스트가 오류 복구 기능을 수행하는 방식

 

오류 검출 (최근에는 이 방법 사용)

- 역방향 오류 복구

: 재전송 방식을 이용하여 오류 복구

: 네트워크에서 일반적으로 사용된다.

 

패리티 비트 : 1비트 오류 검출을 위해 사용

- 1바이트 = 7비트 아스키코드 + 1 패리티 비드

- 짝수 패리티 : 데이터의 끝에 패리티 비트를 추가해, 전체 1의 개수를 짝수로

- 홀수 패리티 : 전체 1의 개수를 홀수로

송/수신 호스트는 동일한 패리티 방식을 사용해야 함

 

블록 검사

- 짝수개의 배트가 깨지는 오류를 검출

: 수평, 수직 방향에 모두 패리티 비트를 지정

 


다항코드는 통신 프로토콜에서 가장 많이 사용하는 오류 검출 기법이다.

 

생성 다항식

- 계수가 0과 1인 다항식 형태에 기반한다.

 

송신부

- 임의의 CRC코드를 선정

- CRC 발생코드의 최고차수만큼 원래 데이터의 뒤에 0을 붙임

- 확장데이터를 modulo-2 연산을 바탕으로 CRC코드로 나눈다.

- 나머지가 0이면 확장데이터를 그대로 전송

- 나머지가 0이 아니면, 원래 데이터에 나머지를 붙여서 전송

수신부

- 수신된 코드를 동일한 CRC로 나눔

- 나머지가 0이면 오류가 발생하지 않은 것이고, 나머지가 0이 아니면 오류가 발생한 것.

 

다항식이 X^5 + X^2 + 1이고, 전송 데이터가 101101001인 경우 다항식의 최고차항이 X^5이므로 뒤에 0 5개를 붙여야 한다. 그런 다음 나머지를 실시한다.

계산할 때는 위의 식으로 계산을 한다. 특이한 점으로는  0 - 1이 1인 것이다.

 

계산을 통해 얻는 나머지가 00010이므로 송신 데이터는 전송데이터에 00010을 붙인 "10110100100010"이 된다.

수신 호스트가 송신 데이터를 생성 다항식으로 나눴을때 0이 나오면 정상이고 0이 아니면 오류발생이다.

반응형
'개인 공부/컴퓨터 네트워크' 카테고리의 다른 글
  • 컴퓨터 네트워크 6. 데이터 링크 계층
  • 컴퓨터 네트워크 5. MAC 계층
  • 컴퓨터 네트워크 3. 네트워크 기술
  • 컴퓨터 네트워크 2. 네트워크 모델
코딩하는_대학생
코딩하는_대학생
Java Developer, Open Source Enthusiast, Proud Son
  • 코딩하는_대학생
    코딩하는 대학생에서 개발자까지
    코딩하는_대학생
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • Github
    • 분류 전체보기 (217)
      • 코딩하는 대학생의 책 추천 (8)
        • 클린코드 (5)
        • 헤드퍼스트 디자인패턴 (3)
      • Backend (7)
        • Spring (14)
        • AWS (3)
        • 회고 (4)
        • Redis (5)
        • 다양한 시각에서 바라본 백엔드 (3)
      • Python (35)
        • 개념 및 정리 (15)
        • 백준 문제풀이 (20)
      • JAVA (17)
        • 개념 및 정리 (14)
        • 백준 문제풀이 (2)
      • 왜? (7)
      • C언어 (42)
        • 개념 및 정리 (9)
        • 백준 문제풀이 (32)
      • 개인 공부 (27)
        • 대학 수학 (5)
        • 대학 영어 (10)
        • 시계열데이터 처리 및 분석 (5)
        • 컴퓨터 네트워크 (6)
        • 운영체제 (1)
      • 솔직 리뷰 (23)
        • 꿀팁 (6)
        • IT기기 (1)
        • 국내 여행 (7)
        • 맛집 (2)
        • 알바 리뷰 (2)
      • 대외활동 (17)
        • 체리피우미 3기 (4)
        • 꿀잠이들 6기 (13)
      • 음식 평가 (1)
      • 일상 & 근황 (2)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는_대학생
컴퓨터 네트워크 4. 데이터 전송의 기초
상단으로

티스토리툴바