혼잡 제어의 원리

2024. 10. 3. 22:52·전공 공부/컴퓨터네트워크
728x90

혼잡 제어란 무엇인가?

혼잡 제어는 네트워크에서 다수의 송신자가 동시에 많은 데이터를 빠르게 전송할 때 발생하는 혼잡을 해결하기 위한 메커니즘입니다. 혼잡이 발생하면 패킷 지연이나 패킷 손실이 생기며, 네트워크 성능이 저하됩니다.

 

혼잡 제어와 흐름 제어의 차이

혼잡 제어는 다수의 송신자가 네트워크에 과도한 데이터를 보내는 상황을 관리하는 것이며, 흐름 제어는 단일 송신자가 수신자의 처리 능력을 초과하지 않도록 전송 속도를 조절하는 메커니즘입니다.

<details> <summary>흐름 제어와의 차이점</summary> - **혼잡 제어**: 네트워크 전체의 혼잡을 관리. - **흐름 제어**: 수신자의 처리 능력을 고려해 데이터를 전송. </details>

더보기

✅ 흐름 제어와의 차이점

혼잡 제어: 네트워크 전체의 혼잡을 관리.
흐름 제어: 수신자의 처리 능력을 고려해 데이터를 전송.


혼잡 제어 시나리오 1: 무한대 버퍼를 가진 라우터

  • 가정: 무한대 크기의 버퍼를 가진 라우터가 있으며, 입출력 링크의 용량은 R입니다.
  • 전송률 lin이 R/2에 근접하면 패킷 지연이 발생하며, lin이 R에 가까워지면 더 큰 지연이 발생합니다.
더보기

✅ 버퍼의 역할

버퍼는 패킷이 라우터에 도착했을 때 이를 임시로 저장하는 공간입니다. 하지만 버퍼가 꽉 차면 패킷은 지연되거나 손실될 수 있습니다.


혼잡 제어 시나리오 2: 유한한 버퍼를 가진 라우터

  • 가정: 유한한 크기의 버퍼를 가진 라우터에서 패킷이 전송됩니다.
  • 송신자는 타임아웃이 발생한 패킷을 재전송하며, 재전송된 데이터로 인해 전송된 데이터 양이 증가합니다.
  • 만약 라우터의 버퍼가 가득 차면 패킷 손실이 발생하고, 송신자는 해당 패킷을 다시 전송해야 합니다.
더보기

✅ 타임아웃과 재전송

타임아웃이 발생하면 송신자는 수신자가 패킷을 받지 못했다고 판단하여 해당 패킷을 재전송합니다. 하지만 재전송이 불필요한 경우도 발생할 수 있습니다.

 

혼잡 제어의 비용

혼잡 제어의 비용에는 불필요한 재전송과 전송 성능 저하가 포함됩니다.

  • 송신자는 패킷 손실을 감지하면 이를 재전송하지만, 중복된 패킷이 재전송되어 네트워크 자원이 낭비될 수 있습니다.
  • 혼잡이 발생하면 전송 성능이 저하되며, 실질 전송률이 감소합니다.

혼잡 제어 시나리오 3: 멀티홉 경로에서의 혼잡

  • 멀티홉 경로를 통해 여러 송수신자가 데이터를 전송할 때, 혼잡이 발생하면 특정 패킷이 버려질 수 있으며, 이미 전송된 패킷에 할당된 네트워크 용량도 낭비됩니다.
  • 송신자가 전송한 패킷이 도착하기 전에 혼잡으로 인해 손실될 경우, 해당 패킷을 재전송해야 합니다.

혼잡 제어 방법: 종단 간 혼잡 제어

TCP는 종단 간 혼잡 제어 방식을 사용하여 네트워크의 혼잡을 관리합니다. 네트워크는 송신자와 수신자에게 명시적인 혼잡 정보를 제공하지 않지만, 패킷 손실과 지연을 통해 혼잡을 추정할 수 있습니다.

더보기

✅ 종단 간 혼잡 제어란?

종단 간 혼잡 제어는 네트워크 장치가 명시적인 혼잡 신호를 제공하지 않아도, 송신자가 패킷 손실이나 지연을 감지하여 전송 속도를 조절하는 방식입니다.


TCP 혼잡 제어 방식

TCP는 혼잡을 감지하여 전송 속도를 조절하는 방식으로 혼잡 제어를 수행합니다. 또한, 혼잡한 라우터에서 명시적인 혼잡 신호를 제공하는 프로토콜도 있습니다. 예를 들어, TCP ECN, ATM, DECbit와 같은 프로토콜은 네트워크 혼잡 정보를 송수신자에게 전달해 전송 속도를 조절할 수 있습니다.

더보기

✅ TCP ECN, ATM, DECbit 프로토콜이란?

이들 프로토콜은 네트워크 장치가 혼잡을 감지하면 이를 송수신자에게 알려, 송신자가 전송 속도를 조절할 수 있게 합니다.


혼잡 제어는 네트워크에서 혼잡으로 인한 성능 저하를 방지하는 중요한 메커니즘입니다. TCP는 패킷 손실과 지연을 감지해 전송 속도를 조절하며, 불필요한 재전송을 방지하기 위해 다양한 혼잡 제어 방식을 사용합니다. 또한, 명시적인 혼잡 신호를 제공하는 프로토콜을 통해 네트워크 혼잡을 효과적으로 관리할 수 있습니다.

728x90

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

TCP: 연결지향형 트랜스포트  (0) 2024.10.29
TCP 혼잡 제어  (1) 2024.10.03
TCP 흐름 제어  (1) 2024.10.03
연결지향형 트랜스포트 : TCP  (2) 2024.10.03
신뢰기반 데이터 전송의 원리  (1) 2024.10.03
'전공 공부/컴퓨터네트워크' 카테고리의 다른 글
  • TCP: 연결지향형 트랜스포트
  • TCP 혼잡 제어
  • TCP 흐름 제어
  • 연결지향형 트랜스포트 : TCP
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드개발
    프로그래밍
    웹개발
    JS
    github
    코딩
    네트워크
    자바스크립트
    NextJs
    상태관리
    react
    리액트
    데이터전송
    ui컴포넌트
    트랜스포트계층
    JavaScript
    tailwind
    componique
    프론트엔드
    TCP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
혼잡 제어의 원리
상단으로

티스토리툴바