[네트워크] 06. 네트워크 전송의 기초

2025. 10. 20. 01:58·컴퓨터공학/네트워크

1. 전송과 교환

  • 전송(Transmission): 물리적으로 직접 연결된 두 시스템 간 1:1 데이터 전달
  • 교환(Switching): 전달 경로가 둘 이상일 때 어떤 포트로 데이터를 보낼지 선택 (라우터에서 수행)

2. 데이터 전송 방식

(1) 점대점 (P2P, Point to Point) - 1:1

  • 하나의 호스트가 다른 호스트와 1:1로 연결되는 방식
  • 통신하는 두 호스트가 직접 연결되거나(1-hop), 다른 호스트의 중개과정을 거쳐 간접 연결(multi-hop) 할 수 있음.
  • edge가 많으면 다른 호스트와 공유하는 부분이 적어 대역폭 성능 유리, but 비용 많이 들음
  • edge가 적으면 네트워크의 특정 영역을 많은 노드가 공유하게 되어 네트워크 혼잡도 증가

[점대점 연결 방식]

(a) 스타형

  • 하나의 중개 호스트 주위로 여러 호스트가 1:1로 연결하는 형태
  • 호스트는 반드시 중앙의 중개 호스트를 거쳐 데이터를 전송한다. 중앙의 호스트만 라우팅 기능을 수행한다.
  • 중앙호스트가 단일실패지점이 된다.

(b) 링형

  • 호스트 연결이 순환 고리 구조이다.
  • 물리적으로는 점대점연결이지만, 논리적으로는 브로드캐스팅방식으로 동작한다.
  • 토큰(전송권한 제어패킷)을 통해 충돌을 방지한다.
  • 모든 호스트가 단일실패지점이다.

(c) 완전형

  • 모든 호스트가 fully connected된 구조이다.
  • 호스트가 n개일 때, 회선 수는 n(n-1)/2개이다. (O(n^2)의 복잡도)

(d) 불규칙형

  • 그 외 특정 패턴으로 분류할 수 없는 구조로 임의 연결된 것을 불규칙형이라고 한다.

 

(2) 브로드캐스팅 - 1:ALL

  • 한 호스트가 전송한 데이터가 모든 네트워크에 연결된 호스트에 전달됨.
  • 메시지를 수신한 호스트는 헤더에 포함된 목적지 정보를 확인한 후, 자신이 목적지면 데이터를 수신하고 그렇지 않으면 버림.
  • 소규모 네트워크 LAN에서 주로 사용 (교환 호스트 불필요)

 

(a) 버스형: 물리적 브로드캐스팅

  • 모든 호스트가 하나의 물리적 전송 매체를 공유함.
  • 충돌: 두 개 이상의 호스트에서 데이터를 동시에 전송할 때 발생 → 신호가 중첩되어 해석 불가
  • [충돌해결방법]
    • (1) 사전제어방식: 스케쥴링을 통해 충돌 가능성 사전 차단
      • 1) 호스트별로 전송 시점 지정
      • 2) 토큰으로 전송권한을 순환적 제어
    • (2) 사후제어방식: 충돌을 허용하고, 충돌 발생시 충돌 알고리즘에 따라 해결 (이더넷에서 설명)

 

(b) 링형: 논리적으로 유니캐스팅을 반복함으로써 브로트캐스팅 구현

  • 토큰을 이용해 전송권한을 가진 호스트만 전송가능 → 충돌이 일어나지 않음.

 

(3) 멀티포인트 - 1:N

  • 한 개의 호스트가 한번의 전송으로 N개의 호스트로 전송
  • 하나의 공유된 전송회선에 여러 호스트를 접속할 수 있다.

[연결방식에 따른 분류]

  • 유니포인트: 수신호스트 하나와 연결
  • 멀티포인트: 다수의 수신호스트와 연결

[전송방식에 따른 분류]

  • 유니캐스팅: 하나의 수신호스트에만 데이터 전송
  • 멀티캐스팅: 다수의 수신호스트에 데이터 전송
  • 브로드캐스팅: 네트워크에 연결된 모든 호스트에 전송

* 멀티캐스팅 시 전송 방법

  • 네트워크에서 멀티캐스팅 지원시 sender는 한번만 보내고 갈림길에서 각각 복사되어 보내진다. (멀티포인트 멀티캐스팅)
  • 네트워크에서 멀티캐스팅을 지원하지 않으면 1:1 통신을 N번 반복 (멀티포인트 유니캐스팅)

3. 이더넷 (Ethernet)

  • LAN에서 가장 많이 활용되는 기술 규격(IEEE 802.3 표준: 유선랜)
  • 물리계층과 데이터링크 계층의 프로토콜을 정의
  • CSMA/CD(Carrier Sense Muliple Access/Collision Detection) 프로토콜을 사용.
    • Carrier Sense: 유선매체 신호감지, Multiple Access: 제한된 자원을 서로 쓰려고 하는것, Collision Detection: 충돌감지
    • [CSMA/CD 동작방식]
    • <Step 1> Carrier Sensing: 전송회선이 IDLE(유휴모드, 아무도 데이터 전송을 하고 있지 않는 상태)인지 확인
      • IF NO(전송회선이 BUSY): IDLE이 될 때까지 대기
      • IF YES(전송회선이 IDLE): <Step 2>로 이동
    • <Step 2> 데이터 전송 (+ 충돌 발생 확인)
      • Ethernet은 ACK를 사용하지 않고, 전송중에 충돌 감지: 충돌 발생시 collision signal을 감지함
      • 충돌 없이 데이터 전송 완료하면 전송 절차 종료
      • 충돌 발생 시 데이터 전송 중단 → 전송 jam signal을 브로드캐스팅 → 랜덤 신호 대기 후 <Step 1>으로 Return
      • * jam signal: 현재 진행 중인 전송을 모두 무효화하는 신호. 다른 호스트에게 충돌 발생을 알리고 전송하지 말도록 알림. 

4. 오류 제어

(1) 오류 유형

  • 프레임 변형: 데이터가 손상됨 → NACK 또는 Timeout으로 재전송 (리시버가 실패를 알림)
  • 프레임 분실: 전송된 데이터가 도착하지 않음 → Timeout 후 재전송 (나 받은적 없어)
    • 라우터의 버퍼오버플로우 때문에 자주 발생

(2) 기본 메커니즘

  • ACK / NACK: 수신 측의 긍정/부정 응답
  • Timeout: 일정 시간 내 ACK 없으면 재전송
  • 순서 번호(Sequence Number): 중복 프레임 구분용 
    • ACK 신호가 분실될 경우 중복으로 보낼 수 있다.

5. ARQ (Automatic Repeat reQuest, 송신측에 재전송 요청)

(1) Stop and Wait(SW) ARQ

  • 한 번에 프레임 1개만 보내고, ACK/NACK 또는 타임아웃을 기다린 뒤 다음 프레임을 보냄.
  • 매우 단순하지만 대기시간이 많아 비효율적이다.
  • [동작절차]
    • 송신자: 프레임 1개 전송 후 ACK/NACK/Timeout 대기
    • 수신자: 오류 검사 → ACK(정상) / NACK(오류) 회신
    • 송신자: ACK면 다음 프레임, NACK 또는 Timeout이면 재전송

 

(2) Go Back N(GBN) ARQ 

  • SW ARQ는 ACK를 기다리기 때문에 느리다. → 슬라이딩 윈도우로 여러 프레임을 연속 전송하여 속도를 개선 한다.

[슬라이딩 윈도우 기반 프로토콜]

  • 슬라이딩 윈도우: ACK 없이 전송 가능한 최대 프레임 수를 의미한다.
  • ACK 수신시에만 슬라이딩 윈도우를 수신한 ACK 수만큼 오른쪽으로 이동시킬 수 있다. 
  • 위 그림은 0, 1 두 개의 ACK를 받았을 때 7, 0 두 개의 프레임을 보낼 수 있게 된다.

[누적 ACK 방식]

  • ACK에는 다음에 기대하는 순서 번호를 보냄(누적 ACK). 예: 1번 수신 후 ACK-2 전송 → “2를 기다림” 뜻. 일부 ACK가 유실되어도 이후 큰 번호의 ACK가 도착하면 그 이전 프레임들은 정상 수신으로 간주.
  • 순서 어긋난 프레임은 폐기. (누적 ACK의 단점: Receiver가 0, 1, 3을 수신하면 3을 버리고 ACK-2를 보낸다. 3이 버려짐)
  • NACK 없이도 누적 ACK만으로 오류 위치를 암시(예: 수신한 3번 프레임에서 오류 발생시, ACK-3을 계속 전송).

[Timeout & 재전송]

  • 송신자는 전송한 각 프레임에 타이머를 둠. 타이머 만료(해당 프레임 미승인) 시 오류가 난 프레임부터 윈도우 끝까지를 한꺼번에 재전송 → 그래서 이름이 Go-Back-N. 수신자는 순차 수신만 허용.

 

[예제]

 

[ACK의 역할 2가지]

(1) 긍정 응답의 기능

(2) 너 하나 더 보내도 돼 (전송 허가권)

 

[흐름제어]

  • 전송 속도가 너무 빠르면 수신호스트 내부 버퍼 오버플로우가 발생해 프레임이 분실된다.
  • 수신호스트가 송신호스트의 전송시점을 제어하는 방식으로 이루어짐
    • 슬라이딩 윈도우 크기로 결정 (수신자가 ACK를 보내줘야 더 보낼 수 있다.)

6. 프레임

  • 데이터링크 계층에서의 전송 데이터를 프레임이라고 한다.
  • 전송 프레임은 [header + payload + trailer] 구조로 이루어진다.

(1) 문자 프레임

  • 8bit(1byte) 단위의 ASCII 코드 크기의 고정크기로 동작한다. 전송 데이터 내용이 ASCII 코드로 되어있다.
  • 프레임의 시작에 [DLE, STX], 끝에 [DLE, ETX]를 써서 시작과 끝을 명시한다.
  • 실제 전송 데이터(payload)에 [DLE STX] 또는 [DLE ETX]를 쓰고 싶으면 제어문자 DLE를 한 번 더 써서 [DLE DLE STX] 또는 [DLE DLE ETX]로 쓴다. 이를 문자 스터핑이라고 한다.

(2) 비트 프레임

  • \(8 \times N\)의 고정 크기 비트가 아니라 35bit처럼 안떨어지게도 전송할 수 있다. (좀 더 효율적)
  • 시작과 끝을 구분하는 flag 비트패턴 [01111110]을 사용한다. (1이 6개)
  • 마찬가지로 payload에 1이 5번 연속해서 발생하면 강제로 뒤에 0을 추가한다.


7. 오류 검출 방식

  • 컴퓨터 네트워크에서는 일반적으로 [오류검출 → 재전송] 방식의 BEC(역방향 오류 복구) 기법을 사용
  • 수신자가 오류 검출/탐지할 수 있도록 송신자는 오류검출코드를 데이터와 함께 전송
  • 오류검출코드는 패리티비트, 블록검사, 다항코드(CRC) 등을 이용해 생성할 수 있다.

(1) 패리티 비트 (Parity Bit)

  • 1byte(8bit) 프레임 구조를 [7bit ASCII코드 + 1bit Parity Bit]로 구성
  • 목적: 한 바이트내의 1의 개수가 짝수인지 홀수인지 판단해 홀수개의 bit flip을 탐지
    • 짝수 패리티: 한 바이트 내의 1의 개수를 짝수로 만듦
    • 홀수 패리티: 한 바이트 내의 1의 개수를 홀수로 만듦
  • 한계: (1) 짝수 개의 bit flip 발생시 탐지 불가 (2) 어느 비트가 flip되었는지 알 수 없어 수정 불가능

(2) 블록 검사 (Block Check)

  • 데이터를 행렬로 구성해서 행, 열마다 패리티비트 추가
  • 장점: (1) 짝수개 오류 탐지 가능, (2) 행렬 교차점으로 대략적 위치 추정 가능
  • 단점: (1) 패리티비트 오버헤드 증가, (2) 사각형의 꼭짓점 형태로 에러 발생시 검출 불가능

(3) 순환 중복 검사 (CRC, Cyclic Redundancy Check)

  • 장점: 다수의 오류가 집중적으로 발생하는 burst error 형태에 강하다.
  • 한계: 어디가 잘못되었는지 알 수 없어 수정은 불가하다.(검출 전용), 이론적 100% 에러 검출은 아니다.

* 생성 다항식

  • 다항코드 100101 = \(x^5 + x^2 + 1 (1x^5 + 0x^4 + 0x^3 + 1x^2 + 0x^1 + 1x^0\)을 의미함

 

* 이진 다항식 나눗셈

  • 이진 다항식의 나눗셈에서 뺄셈은 XOR로 해야한다.

 

[동작방식]

  • n+1개의 비트로 구성된 \(G(x)\)를 생성다항식으로 사용
  • [Sender] 전송데이터: m비트로 구성된 프레임 \(M(x)\)를 전송하려할 때
    • \(M(x)\) 뒤에 n개의 이진수 0을 덧붙여 \(M(x)'\)을 생성
    • \(M(x)'\)을 \(G(x)\)로 나눈 나머지(=n비트 길이의 체크섬)를 \(M(x)'\)의 마지막 n개 비트에 덮어쓰기
    • \(M(x)'\)을 전송
  • [Receiver]
    • 수신한 프레임 전체를 \(G(x)\)로 나누고, 나머지를 계산
    • IF (나머지 == 0)  → 전송오류가 없음.
    • IF (나머지 != 0) → 전송 오류가 있음.

 

[실제 예제]

  • [Sender]
    • 생성다항식 \(G(x)=x^5 + x^2 + 1 = 100101\)
    • 전송 데이터: 101101001
    • 체크섬: 계산을 통해 나온 나머지: 00010
    • 송신데이터: 10110100100010
  • [Receiver]
    • 송신데이터: 10110100100010
    • 송신데이터를 \(G(x)\)로 나눈 나머지 == 0 → 수신데이터에 오류가 없다!

 


8. 오류율 계산

  • BER (Bit Error Rate): 한 개의 비트 전송시 오류가 발생할 확률
  • PER (Packet Error Rate): 한 개의 패킷 전송시 오류가 발생할 확률

[PER - BER 관계식]

  • 패킷을 구성하는 비트 수를 \(L\)이라 할 때 다음의 관계를 갖는다.

$$PER = 1 - (1-BER)^{L}$$

  • \( (1-BER)^{L} \)은 모든 비트에서 오류가 발생하지 않을 확률이고, 이를 1에서 빼면 한 개의 비트라도 오류가 발생할 확률 즉, PER이 된다. 

 

[한 개의 패킷을 오류 없이 전송하기 위한 최소 전송 횟수 구하기]

  • 전송 성공률 = \(1-PER\)
  • 기댓값:

$$E[패킷 한개를 오류없이 전송하기 위한 최소 전송 횟수] = \frac{1}{1-PER} = \frac{1}{(1-BER)^{L}}$$

 

'컴퓨터공학 > 네트워크' 카테고리의 다른 글

[네트워크] 08. 데이터 링크 계층  (0) 2025.10.21
[네트워크] 07. MAC 계층  (0) 2025.10.21
[네트워크] 05. 네트워크 기술  (0) 2025.10.19
[네트워크] 04. VBox 가상 네트워킹  (0) 2025.10.19
[네트워크] 03. 리눅스, 네트워크 도구 활용  (0) 2025.10.18
'컴퓨터공학/네트워크' 카테고리의 다른 글
  • [네트워크] 08. 데이터 링크 계층
  • [네트워크] 07. MAC 계층
  • [네트워크] 05. 네트워크 기술
  • [네트워크] 04. VBox 가상 네트워킹
sophon
sophon
sophon 님의 블로그 입니다.
  • sophon
    sophon 님의 블로그
    sophon
    • 카테고리 (172) N
      • 컴퓨터공학 (36)
        • 데이터베이스 (19)
        • 네트워크 (15)
        • 기타 이슈 (2)
      • 프로젝트 (16)
        • Java (8)
        • Spring (4)
        • Docker (4)
      • 코딩테스트 (95) N
        • BOJ (74)
        • 프로그래머스 (7)
        • 프로그래머스 SQL (12) N
        • PS Snippets (2)
      • 🌱 잡담 (22)
        • 자격증 (7)
        • 좋은 시 모음 (12)
        • 책과 영화 (3)
        • 기록 (0)
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sophon
[네트워크] 06. 네트워크 전송의 기초
상단으로

티스토리툴바