
아래의 상기 내용은
"혼자 공부하는 네트워크"의 도서 내용과 인터넷의 내용을 실습 및 정리한 글입니다.
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 |