네트워크/혼자 공부하는 네트워크

04-03 TCP의 오류,흐름,혼잡 제어

공부를하자 2024. 8. 4. 14:19

아래의 상기 내용은

"혼자 공부하는 네트워크" 도서 내용과 인터넷의 내용을 실습 정리한 글입니다.

 

1.오류제어: 재전송 기법

 1)정의

 -TCP 데이터의 신뢰성을 보장하기 위해 오류를 제어하는 방법

 2)오류 검출과 재전송

 -TCP 세그먼트에 오류 검출을 위한 체크섬이 존재하지만 체크섬은  세그먼트의 훼손여부만

 나타낼 체크섬 값이 잘못 되었다면 패킷을 그냥 폐기해버린다. 결국 체크섬을 이용한다 해도

 송신 호스트가 세그먼트 전송과정에서 문제가 있다는 것을 없다.

 -TCP 신뢰성을 보장하기 위해서는 송신 호스트가 송신한 세그먼트에 문제가 발생했다는 것을

 알릴 있어야 하고, 오류를 감지하면 해당 세그먼트를 재전송 있어야 한다.

 -TCP 오류를 검출하고 세그먼트를 재전송하는 상황은 크게 두가지로 중복된 ACK세그먼트를

 수신했을 , 타임아웃이 발생했을 때이다.

3) 중복된 ACK세그먼트 수신 : 오류 검출

 -호스트간의 송수신은 n번의 세그먼트를 받으면 n+1번의 세그먼트를 수신 호스트가 요청(ACK)하고

 송신 호스트가 n+1 세그먼트를 보내게 된다.

 -수신 호스트 측이 받는 세그먼트의 순서 번호 중에서 일부가 누락되면 중복된 ACK 세그먼트를

  보내게 된다.

 4)타임 아웃이 발생했을 :오류 검출

 -TCP  세그먼트를 송신하는 호스트는  재전송 타이머(retransmission timer)라는 값을 유지한다.

 -호스트가 세그먼트를 전송할 때마다 재전송 타이머를 시작하고, 타이머의 카운트 다운이 끝나면

 타임아웃(timeout)상태가 된다.

 -타임아웃이 발생할 때까지 ACK 세그먼트를 받지 못하면 상대 호스트에게 정상적으로 도착하지 않은

 것으로 간주하여 세그먼트를 재전송한다.

5)RTT(Round Trip Time)

 -메시지를 전송한 그에 대한 답변을 받는 걸리는 시간.

2.ARQ(Automatic Repeat Request): 재전송기법

1)정의

 -수신지 호스트의 답변(ACK) 타임 아웃의 발생을 토대로 문제를 진단, 문제가 생긴 메시지를

  재전송함으로써 신뢰성을 확보하는 방식. 대표적으로 3가지 방식이 있다.

2)STOP-and-Wait ARQ

 -제대로 전달했음을 확인하기 전까지는 새로운 메시지를 보내지 않은 방식.

 -메시지를 다시 송신하고 이에 대한 확인응답을 받는 것을 반복한다.

 -신뢰성이 높지만 네트워크 효율이 낮다.

3)GO-Back-N ARQ

 -여러 세그먼트를 전송하고, 도중에 잘못 전송된 세그먼트가 발생한 경우  해당 세그먼트부터

  다시 전송하는 방식 잘못 전송된 세그먼트부터 다시 전송하기에 미리 전송 해놨던 세그멘트는

 전부 폐기된다.

 -누적 확인 응답(CACK :Cumulative Acknowledgment)라고도 한다.

 4)Selective Repeat ARQ

 -여러 세그먼트를 전송하고, 도중에 잘못 전송된 세그먼트만을 재전송하는 방식.

 -개별확인 응답(Selective Acknowledgment)라고 한다.

 

3.흐름 제어(flow control) : 슬라이딩 윈도우

 1)개요

 -호스트가 세그먼트를 받아서 한번에 처리할 있는 양은 한계가 있다.

 -수신 호스트에는 수신된 세그먼트가 처리되기전에 임시로 저장되는 수신 버퍼가 있고 버퍼가 넘치는

 현상을 버퍼 오버플로(buffer overflow) 발생될 있다.

 -TCP 흐름 제어란 송신 호스트가 수신 호스트의 처리 속도를 고려하여 송수신 속도를 조절하는 .

 2)슬라이딩 윈도우(sliding window)

 -윈도우(window) 송신 호스트가  여러 세그먼트를 전송할 보낼 있는 최대량이다

 -윈도우 크기만큼 확인 응답을  받지 않고도 한번에 전송 가능한 양이기도 하다.

-윈도우에 포함된 1,23,4 세그먼트를 전송했고, 1 세그먼트에 대한 ACK 받았다면 위의 그림은 이동

하게 된다.

-슬라이딩 윈도우란 연속된 데이터에서 일정 크기의 윈도우를 설정하고, 이 윈도우를 하나씩 이동시키면서  데이터를 처리하는 기법이다.

4.혼잡 제어(congestion control)

 1)개요

 - 네트워크 상에 여러 호스트의 데이터 처리로 인해 패킷 속도가 늦어지거나 유실될 있는 상황을

 혼잡이라 한다.

 -혼잡 제어는 송신 호스트 쪽에서  이러한 혼잡 상태를 제어하기 위해 전송량을 조절하는 기능이다.

 -혼잡 윈도우(congestion window) 혼잡 없이 전송할 있는 데이터 양을 의미한다.

 -적절한 혼잡 원도우 크기를 아는데 사용하는 혼잡 제어 알고리즘(congestion control algorithm) 있다.

 2)AIMD(Additive Increase/Multiplicative Decrease)

 -혼잡 제어 알고리즘의 기본으로 RTT(보낸 메시지에 대한 답변이 오는 시간) 따라 혼잡 윈도우를

  선형적으로 증가시키고, 혼잡이 감지 되면 혼잡 윈도우를 절반으로 떨어뜨리는 방식이다.

 -기본적인 알고리즘으로 이것만으로는 혼잡제어가 이루어지지 않고 추가적인 알고리즘이 필요하다.

3)느린 시작(Slow Start) 알고리즘

 -느린 시작 알고리즘은 혼잡 윈도우를 1부터 시작해 문제 없이 수신된 ACK 세그먼트 하나당 1 증가

 시키는 방식

 -기존 AIMD 초기 전송속도가 느린 비해 느린시작 알고리즘을 사용하여 지수적으로 증가시켜

 전송속도가 빨라진다.

 -혼잡 윈도우를 계속 지수적으로 증가하다보면 결국 혼잡상황으로 이어진다.

 -느린 시작 임계치(slow start therehold)라는 값이 설정되어 이상이 되거나,타임아웃이 발생하거나,

  번의 중복된 ACK 발생시 세가지 방법으로 혼잡 상황을 제어한다.

2)혼잡 회피(congestion avoidance) 알고리즘

-혼잡 회피 알고리즘은 RTT마다 혼잡 윈도우를  1MSS(Maximum Segment Size) 증가시키는 방식.

 -느린 시작 임계치 값을 넘어섰을   느린시작을 종료하고, 혼잡 윈도우를 절반으로 초기화

  혼잡회피를 수행

3)빠른 회복(fast recovery) 알고리즘

 -빠른회복 알고리즘은 번의 중복 ACK 세그먼트를 수신했을 느린 시작은 건너 뛰고

  혼잡 회피를 수행하는 방식으로 빠르게 전송률을 회복하기 위한 알고리즘.

'네트워크 > 혼자 공부하는 네트워크' 카테고리의 다른 글

05-02 HTTP  (0) 2024.08.13
05-01 DNS와 자원  (0) 2024.08.06
04-02 TCP와 UDP  (0) 2024.08.04
04-01 전송 계층 개요: IP의 한계와 포트  (0) 2024.08.01
03-03 라우팅(Routing)  (0) 2024.07.30