너무너무 멋져 눈이눈이 부셔

TCP의 오류 제어, 흐름 제어, 혼잡 제어 본문

천재적인 CS/네트워크

TCP의 오류 제어, 흐름 제어, 혼잡 제어

강하다이녀석 2024. 9. 25. 21:46

오류 제어, 흐름 제어, 혼잡 제어

- TCP의 신뢰성을 보장하기 위한 기능.

- TCP는

  1. 연결 수립
  2. 데이터 송수신 
  3. 연결 종료

의 과정을 거치는데, 이떄 2. 데이터 송수신 과정에서 재전송을 통한 오류 제어, 흐름 제어, 혼잡제어를 사용한다.

 

오류 제어: 재전송 기법

- TCP는 잘못된 세그먼트를 재전송하여 오류를 제어한다.

 

오류 검출과 재전송

체크섬 : 세그먼트의 훼손 여부를 알려줌. 이 값이 잘못되면 호스트는 패킷 안 읽고 폐기. 전송 과정에 문제는 인지 x

 

  1. 송신 호스트가 송신한 세그먼트에 문제가 있음을 알아야 함
  2. 오류를 감지할 시 해당 세그먼트를 재전송할 수 있어야 함

 

1. 중복된 ACK 세그먼트를 수신했을 때

RTT) 메시지를 전송한 뒤 그에 대한 답변을 받는 데까지 걸리는 시간. 

 

2. 타임아웃으 발생했을 때.

tcp 세그먼트를 송신하는 호스트는 모두 재전송 타이머라는 값을 유지한다. 호스트가 세그먼트를 전송할때마다 재선송 타이머를 시작. 이 카운트 다운이 끝나면 타임아웃이라고 한다.

 

ARQ :재전송 기법

1. stop- and-wait ARQ

제대로 전달했음을 확인하기 전까지는 새로운 메세지를 보내지 않음.

 

단점 : 네트워크 이용 효율이 낮아짐. -> 성능 저하. 다음 전송을 할 수 있어도 하지 못하기 때문.

 

2. Go-back-N ARQ

파이프라이닝 : 연속해서 메시지를 전송할 수 있는 기술.

여러 세그먼트를 전송하고, 잘못된 세그먼트가 발생할 경우 해당 세그먼트부터 전부 다시 전송. 이후 올바르게 수신된 세그먼트 폐기.

누적 확인 응답 : Go-back-N ARQ의 ACK 세그먼트.

 

단점 : 한 세그먼트에만 문제가 발생해도, 이후 모든 세그먼트를 다시 재전송하는 비효율

 

3. Selective Repeat ARQ

선택적 재전송.수신 호스트 측에서 제대로 전송받은 각각의 패킷들에 대해 ACK 세그먼트를 보내는 방식.

개별 확인 응답

- 오늘날 대부분의 호스트는 이 방식을 지원. (이게 없으면 Go-back-N ARQ)

 

흐름 제어 : 슬라이딩 윈도우

파이프라이닝 기반의 Go-back-N ARQ, Selective Repeat ARQ는 흐름제어를 고려해야만 한다.(호스트가 한 번에 받아서 처리할 수 있는 세그먼트 양에는 한계가 있기 때문)

 

버퍼 오버플로(수신된 세그먼트가 애플리케이션 프로세스에 의해 읽히기 전에 임시 저장되는 공간인 수신 버퍼가 넘치는 상황)을 방지하기 위해, 송신 호스트가 수신 호스트의 처리 속도를 고려하며 송수신 속도를 균일하게 유지하는 것. 

 

슬라이딩 윈도우

윈도우 : 송신 호스트가 파이프라이닝할 수 있는 최대량

TCP 세그먼트 내에 있는 윈도우 필드 정보를 읽고, 그에 따라 슬라이딩 윈도우 방식으로 세그먼트를 전송.

먼저 윈도우에 포함되는 모든 세그먼트를 전송하고, 그 세그먼트들의 전달이 확인되는대로 이 윈도우를 옆으로 이동하면서 전송.

 

혼잡 제어

혼잡: 많은 트래픽으로 인해 패킷의 처리 속도가 늦어지거나 유실될 우려가 있는 네트워크 상황.

송신 호스트가 네트워크 혼잡도를 판단하고, 혼잡한 정도에 맞춰 유동적으로 전송량을 조절한다.

 

혼잡 윈도우 : 혼잡 없이 전송할 수 있을 법한 데이터 양.

 

Q. TCP의 오류 제어에 대해서 설명해주세요

 TCP는 데이터 송수신 과정에서 재전송을 통한 오류 제어를 사용하여 신뢰성을 확보합니다. 중복된 ACK 세그먼트나, 재전송 타이머의 카운트가 끝나서 타임 아웃이 되면 전송 과정에 오류를 감지하고 재전송을 합니다. 이때, 사용하는 기법은  stop- and-wait ARQ, Go-back-N ARQ, Selective Repeat ARQ 기법이 있습니다.

 먼저,   stop- and-wait ARQ은 하나씩 세그먼트를 보내고, 응답이 올때까지 새로운 전송을 보내지 않습니다. 그래서 네트워크 효율이 낮아 성능 저하의 문제가 있어 현재에는 잘 쓰이지 않습니다.

 다음으로 Go-back-N ARQ 방식은, 여러 세그먼트를 전송하고, 잘못된 세그먼트가 발생할 경우 해당 세그먼트부터 전부 다시 전송합니다.

 이 방식 또한 제대로 응답받은 세그먼트도 다시 재전송해야 하므로, 오늘날은 수신 호스트 측에서 제대로 전송받은 각각의 패킷들에 대해 ACK 세그먼트를 보내는 방식인 Selective Repeat ARQ를 자주 사용합니다.

 

Q. TCP의 흐름 제어에 대해서 설명해주세요

 호스트가 한 번에 받아서 처리할 수 있는 세그먼트 양에는 한계가 있기 때문에, 수신 세그먼트가 임시로 저장되는 공간인 수신 버퍼가 넘치는 상황을 방지하기 위해 송신 호스트가 수신 호스트의 처리 속도를 고려하며 송수신 속도를 균일하게 유지하는 것을 말합니다. 슬라이딩 윈도우 기법을 사용하여, 먼저 윈도우에 포함되는 모든 세그먼트를 전송하고, 그 세그먼트들의 전달이 확인되는대로 이 윈도우를 옆으로 이동하면서 전송합니다.

 

Q. TCP의 혼잡 제어에 대해서 설명해주세요.

송신 호스트가 네트워크 혼잡도를 판단하고, 혼잡한 정도에 맞춰 유동적으로 전송량을 조절하는 것을 말합니다. 그 정도를 파악하는 방법을 혼잡 제어 알고리즘이라고 부릅니다. 

 그 방법으로 AIMD가 있습니다. 혼잡이 감지되지 않는다면 혼잡 윈도우를 RTT) 메시지를 전송한 뒤 그에 대한 답변을 받는 데까지 걸리는 시간마다 1씩 증가시키고, 혼잡이 감지되면 혼잡 윈도우를 절반으로 떨어트립니다. 초기 전송 속도가 확보되지 않는다는 단점이 있습니다.

 이를 보완하기 위해 3가지의 알고리즘이 더 있습니다. 바로 느린 시작 알고리즘, 혼잡 회피 알고리즘, 빠른 회복 알고리즘입니다. 느린 회복 알고리즘은 혼잡 윈도우를 1부터 시작해서, 수시된 ACK 세그먼트 하나당 1씩 증가시켜, 지수적으로 증가시킵니다. 그리고, 혼잡 상황 별로 느린 시작을 재개하거나, 혼잡 회피를 수행하거나, 빠른 회복을 수행합니다.

 혼잡 회피 알고리즘은 RTT마다 혼잡 윈도우를 1MSS씩 증가시킵니다.

 빠른 회복 알고리즘은 세 번의 중복 ACK 세그먼트를 수신했을 때 느린 시작은 건너뛰고 혼잡회피를 수행하는 알고리즘으로, 빠르게 전송률을 회복하기 위한 알고리즘입니다.

 

'천재적인 CS > 네트워크' 카테고리의 다른 글

네트워크 TCP와 UDP  (1) 2024.09.23
네트워크 전송 계층이란  (0) 2024.09.23
네트워크 HTTP, HTTPS  (1) 2023.12.16
CS 네트워크 기기  (0) 2023.12.14
네트워크 분류  (0) 2023.11.29