뚝딱햄 탈출기

[인터넷공학] Chap4. 데이터 전송 본문

데이터 통신 & 컴퓨터 네트워크

[인터넷공학] Chap4. 데이터 전송

hyrmzz1 2023. 5. 4. 13:43

인터넷 공학(2) 수업에 사용되는

쉽게 배우는 데이터 통신과 컴퓨터 네트워크 [3판] / 박기현 / 한빛 아카데미

교재에 대한 연습문제를 정리한 내용이다.


전송과 라우팅

  • 송신 호스트가 수신 호스트에 데이터를 전달하려면 전송과 교환 과정 거쳐야 함.
  • 교환(라우팅)은 전달 경로가 둘 이상일 때 라우터에서 데이터를 어느 방향으로 전달할지 선택하는 기능.
  • 전송은 특정 물리 매체에 의해 일대일로 직접 연결된 두 시스템 간의 신뢰성 있는 데이터 전송을 보장하기 위한 것.
    전송에는 라우팅 개념 포함 X.
  • 라우터란 올바른 경로를 선택하기 위해 라우팅 기능을 수행하는 호스트. 경로 선택과 관련된 정보를 라우팅 테이블에 저장하여 관리함.

전송 방식

  • 각 호스트를 직접 연결하는 방식으로 네트워크를 구성하고 특정 수신 호스트에만 데이터를 전송하는 방식은 점대점 방식.
  • 점대점 방식은 원거리에 있는 호스트 사이의 통신 방식. WAN 환경에서 주로 사용.(근거리 호스트 연결시)
  • 네트워크에 연결된 모든 호스트에 데이터를 전송하는 방식은 브로드캐스팅 방식. 
    → 라우팅 기능 필요 X.
  • 브로드캐스팅 방식에서는 공유 전송 매체 하나에 여러 호스트를 연결하므로 네트워크에 연결된 모든 호스트에 데이터가 전송됨.
  • 브로드캐스팅 방식에서 자신을 목적지로 하지 않는 데이터를 받은 호스트는 받은 데이터를 버려 결국 하나의 수신 호스트만 데이터를 수신하도록 설계해야 함. LAN 환경에서 주로 사용.

점대점 방식

  • 라우팅 호스트가 송수신 호스트의 중간에 위치.
  • 대표적 점대점 방식으로는 스타형, 링형, 완전형, 불규칙형이 있음.
  • 통신하고자 하는 두 호스트가 직접 연결되어 있으면 별도의 라우팅 과정 없이 직접 데이터를 전송할 수 있음.
  • 네트워크 트래픽이 많이 발생하는 구간에서는 전송 매체의 수를 늘리고, 그렇지 않은 구간에서는 줄이는 방식으로 네트워크 확장 
    → 불규칙형 구조가 일반적.

링형 네트워크

  • 링형은 호스트의 연결이 순환 고리 구조. 모든 전송 데이터는 반드시 링을 한바퀴 순환하도록 설계 → 브로드캐스팅 방식
  • 특정 송신 호스트에서 전송한 데이터가 링을 한 바퀴 돈 후, 다시 송신 호스트로 되돌아오는 방식. → 브로드캐스팅 방식
  • 호스트가 일대일로 직접 연결 → 점대점 방식
  • 실제 환경에서 링형은 한 방향으로만 전달하도록 설계.
  • 연결된 여러 호스트가 데이터 동시 전송 → 데이터 충돌 발생 → 토큰(특수 제어 프레임)이 호스트 사이의 데이터 송신 시점을 제어하는 기능 수행.
  • 데이터를 전송하려는 호스트는 토큰이 도착하면 이를 내부에 보관한 후 데이터 전송 시작함.
  • 특정 호스트를 관리 호스트로 지정하여 네트워크가 정상적으로 동작하는지 점검함.

버스형 네트워크

  • 네트워크의 모든 호스트가 하나의 전송 매체 공유 
    → 임의의 송신 호스트에서 보낸 데이터가 네트워크 모든 호스트에 전달됨.
  • 데이터를 수신하도록 지정된 호스트는 해당 데이터를 수신하고 보관하나, 다른 호스트들은 수신 데이터를 버림.
    → 전송되는 데이터 내에 송수신 호스트의 주소를 표시하는 기능이 필요. (수신 호스트 주소로 데이터 수신 여부 결정, 송신 호스트 주소보고 누가 보냈나 확인.)
  • 둘 이상의 호스트에서 데이터 동시에 전송하면 데이터 충돌 발생 가능 → 충돌 감지하고 재전송하는 오류 복구 과정 필요.
  • 대표적인 공유 버스 방식인 이더넷에서 채택하는 방식이 충돌 허용의 예.

멀티포인트 통신

  • 컴퓨터 통신의 가장 기본적 형식은 두 호스트 사이의 데이터 전송을 의미하는 유니캐스팅 방식.
  • 하나의 송신 호스트 기준으로, 수신 호스트 하나와 연결되면 유니포인트, 다수의 수신 호스트와 연결되면 멀티포인트.
  • 송신 호스트가 한번의 전송으로 수신 호스트 하나에만 데이터 전송할 수 있으면 유니캐스팅, 다수의 수신 호스트에 전송할 수 있으면 멀티캐스팅.
  • 멀티캐스팅 방식은 프로토콜 자체에서 일대다 전송 기능 구현하므로 연결 설정 요구 한 번으로 지원 가능.
  • 멀티캐스트 유니캐스팅은 유니캐스팅 방식(두 호스트 사이의 일대일 통신)을 이용해 일대다 통신하므로 수신 호스트 수만큼 데이터 반복 전송해야 함. 멀티캐스팅 방식은 프로토콜 자체에서 일대다 전송 기능 구현하므로 송신 호스트의 전송 요구 한 번으로 모든 수신 호스트에 데이터 전달 가능함.

전송 오류 기능

  • 응답 프레임의 종류에는 데이터 프레임이 정상적으로 도착했을 때 회신하는 긍정 응답 프레임과 데이터 프레임이 변형되었을 때 회신하는 부정 응답 프레임이 있음.
  • 송신 호스트의 재전송 기능은 수신호스트의 부정 응답 프레임 회신에 의해 이루어짐.
  • 프레임 분실 오류 발생시 수신 호스트는 오류 발생 사실 인지 X → 송신 호스트 주도로 오류 복구 과정 진행.  → 데이터 프레임 전송 후 일정 시간 내에 ACK 회신 없으면 타임아웃 기능 동작시켜 재전송.
  • 수신 호스트가 중복 데이터 프레임을 가려내려면 각 프레임 내부에 프레임 구분자인 순서 번호를 기록해야 함.
  • 데이터 프레임은 원래의 전송 데이터 외에 오류 제어를 위한 코드 정보도 함께 제공.
  • → 오류 감지 기능 코드 & 오류 복구 기능 코드.
  • 일반적으로 컴퓨터 네트워크에서는 오류를 복구하는 코드 기능 사용 X.

프레임 변형 오류

  • 수신 호스트가 프레임 변형 오류 인지 → 송신호스트에 NAK 전송 → 원래의 데이터 프레임 재전송하는 오류 복구 과정 진행.
  • NAK 사용하지 않는 프로토콜에서는 송신 호스트의 타임아웃 기능에 따라 복구 과정 시작.
  • 수신 호스트에서 프레임 변형 오류에 관한 판단의 근거는 오류 검출 코드.
  • ACK나 NAK도 전송 과정에서 변형이나 분실과 같은 오류 발생 가능.

순서 번호 기능

  • 데이터링크 계층의 오류 복구 기능이 수행되는 과정에서 동일한 데이터 프레임이 수신 호스트에 중복해 도착할 수 있음. (수신 호스트가 보낸 ACK 분실시 프레임 재전송해 수신 호스트가 데이터 프레임 중복 수신.)
  • 오류 없이 수신된 중복 데이터 프레임 가려내기 위해 프레임 내부에 순서 번호(각 프레임의 고유 번호) 기록.
  • 순서 번호는 0부터 순차적으로 증가하는 일련번호의 성격을 띄며, 프레임 단위나 전송 데이터의 바이트 단위로 번호 부여.
  • ACK와 NAK에도 순서 번호 기능 있음.
  • 실제 프로토콜에서는 송신 호스트가 여러 데이터 프레임을 동시에 전송하고, 수신 호스트는 순서 번호를 활용해 동시에 여러 프레임에 대한 긍정 응답 기능을 수행.

흐름 제어

  • 송신 호스트는 수신 호스트가 감당 가능한 정도의 전송 속도를 유지하며 데이터 프레임 전송해야 함.
  • 흐름 제어 기능 제공 X → (전송 매체 통해 올바르게 도착한) 프레임 분실 → 재전송 통한 복구
  • 기본 원리: 수신 호스트가 다음에 수신할 데이터 프레임의 개수를 송신 호스트에 통지.
  • 송신 호스트가 전송할 수 있는 프레임의 개수는 수신 호스트의 버퍼 수에 직접적 영향을 받음.

문자 프레임

  • 프레임 → 데이터링크 계층에서의 전송 데이터 단위
  • 문자 프레임은 영상이나 그림 데이터 전송시 사용 불가 (프레임 내용이 문자임)
  • 하나의 프레임 단위 구분하기 위해 프레임 앞뒤에 아스키코드의 특수 코드 이용. 
    앞(각 프레임 시작 위치)→ 'DLE STX' , 뒤(끝나는 위치)→ 'DLE ETX' 추가
  • 문자 스터핑은 문자 프레임 내부 전송 데이터에 'DLE' 문자 포함되어 발생하는 혼란 예방.
    데이터 내부에 'DLE' 문자 있으면 'DLE' 문자 강제로 하나 더 추가.

비트 프레임

  • 문자 단위의 가정을 없애고,임의의 비트 패턴 데이터를 전송할 수 있음.
  • 프레임의 시작과 끝 위치에 '01111110'을 사용해 프레임 단위 구분.
  • 송신 호스트가 전송하고자 하는 데이터의 내용 중에 값이 '1'인 패턴이 연속 5번 발생하면 강제로 '0'을 추가해 전송. 
  • 수신 호스트는 강제로 추가된 '0' 제거해 원래의 데이터를 상위 계층에 전달.

패리티 비트

  • 1바이트 구조에서 7비트의 아스키 코드 제외한 나머지 1비트가 패리티 비트.
  • 전송 과정에서 1비트 오류를 검출하기 위한 것. 패리티 비트 포함 1의 개수가 짝수나 홀수 개가 되도록 함.
  • 홀수 패리티 방식 → 1의 개수를 홀수로 만드는 것. 수신 호스트도 1의 개수 홀수 개.
  • 송신 호스트와 수신 호스트는 짝수 패리티나 홀수 패리티 중 동일한 한가지 사용해야 함.
  • 짝수 개의 비트에서 오류 발생시 오류가 검출되지 않는다는 문제점 있음 → 이를 개선한 블록 검사가 있다.

블록 코드

  • 패리티 방식 개선. 다수의 비트에서 오류 발생 시 검출하는 방법.
  • 여러 개의 바이트를 하나의 블록으로 구성한 후 교차 검사 실시. 수평 수직 방향에 모두 패리티 비트 둬 짝수 개의 오류 검출 가능.
  • 수평과 수직 방향에서 모두 사각형 형태로 짝수 개의 데이터 오류 발생시 검출 불가하다는 문제점이 있음.

다항 코드

  • 다항 코드 방식(CRC)은 특정 위치에서 집중적으로 발생하는 버스트 에러를 검출하는 확률이 높음.
  • 생성 다항식 사용해 오류 검출 코드인 체크섬 생성하여 오류 제어 기능. 수행.
  • 송신 호스트는 원래 데이터와 체크섬을 전송 프레임에 추가해 수신 호스트에 전송.
  • 수신 호스트는 수신된 정보의 체크섬을 점검해 오류 발생 여부 확인.
  • 계수가 0과 1인 다항식 형태를 기반으로 함.

체크섬

  • 프레임을 전송받은 수신 호스트는 제일 먼저 체크섬 확인해 전송 중 프레임 변형 오류 발생했나 확인. 오류 발생시 NAK 회신 및 송신 호스트에 재전송 요구.
  • 송신 호스트는 원래 데이터를 CRC로 나누어 체크섬 정보를 얻음.
  • 나누기 연산 과정에서 원래 데이터 뒤에 나머지 보관할 공간(n비트) 미리 확보하고, 이 자리 모두 0으로 채운 후 나누기 연산 수행.
  • 체크섬 나누기 과정에서 발생하는 다항 연산은 모듈로-2 방식으로 이루어짐.
  • 덧셈과 뺄셈은 XOR(배타적 논리합) 연산과 동일. (자리 올림, 빌림 과정 없으므로)
  • 수신 호스트는 수신된 데이터를 CRC로 모듈로-2 나누기 연산 수행. 이 때 나머지 0이면 전송 오류 X, 0이 아니면 오류 발생.
Comments