반응형
TCP (Transmission Control Protocol)에서 재전송을 기반으로 한 오류 제어, 흐름 제어, 혼잡 제어는 네트워크 통신의 안정성을 유지하는 핵심 요소입니다.
1. 오류 제어와 재전송 기법
- 오류 감지와 재전송: TCP는 신뢰성을 보장하기 위해 두 가지 작업이 필요합니다.
- 송신된 세그먼트에 문제가 발생했는지 감지하는 것,
- 문제가 있는 세그먼트를 재전송하는 것입니다.
- 중복된 ACK를 통한 오류 감지: 세그먼트를 전송하고 ACK를 받은 후, 다음 세그먼트를 전송하는데, 만약 누락된 세그먼트가 있다면 수신 측에서 중복된 ACK를 송신 측에 전달합니다. 이를 통해 송신 측은 문제가 있음을 인지하고 빠르게 세그먼트를 재전송할 수 있습니다.
- 타임아웃을 통한 오류 감지: 송신 측에서 세그먼트를 보낸 후 일정 시간이 지나도 ACK를 받지 못하면 타임아웃이 발생하고, 송신 측은 세그먼트를 재전송합니다.
2. ARQ(Automatic Repeat reQuest) 재전송 기법
- Stop-and-Wait ARQ: 가장 단순한 방식으로, 송신 측이 한 번에 하나의 세그먼트를 전송하고, 그 세그먼트의 ACK를 받을 때까지 다음 세그먼트를 전송하지 않습니다. 이 방식은 간단하지만 네트워크의 대역폭 효율성이 떨어질 수 있습니다.
- Go-Back-N ARQ: 여러 세그먼트를 연속적으로 전송할 수 있지만, 오류가 발생하면 오류가 난 세그먼트부터 이후 모든 세그먼트를 다시 전송합니다. 이때 누적 확인 응답 방식을 사용하며, 중간에 오류가 발생한 경우, 해당 세그먼트 이후의 모든 데이터를 다시 전송해야 하므로 효율성이 떨어질 수 있습니다.
- Selective Repeat ARQ: Go-Back-N ARQ의 단점을 보완한 기법으로, 손실된 세그먼트만을 선택적으로 재전송합니다. 이는 개별 확인 응답 방식으로, 각 세그먼트의 ACK를 별도로 관리하며, 효율성이 높습니다.
3. 흐름 제어
- 슬라이딩 윈도우 기법: 송신 측이 여러 세그먼트를 동시에 보내고 ACK를 받으면 창을 움직여 다음 세그먼트를 전송하는 방식입니다. 슬라이딩 윈도우는 네트워크 대역폭을 최대한 활용하면서도 수신 측의 수신 버퍼가 넘치지 않도록 조절합니다. 윈도우 크기는 송신 측이 한 번에 보낼 수 있는 데이터의 양을 결정하며, TCP 세그먼트 내에 윈도우 필드가 있어 수신 측의 윈도우 크기를 송신 측이 확인할 수 있습니다.
- 수신 측 버퍼 관리: 송신 측에서 데이터를 너무 많이 보내 수신 측의 버퍼가 넘치면 버퍼 오버플로가 발생할 수 있습니다. 이를 방지하기 위해 수신 측은 자신의 버퍼 상태에 맞춰 윈도우 크기를 조정하며, 송신 측이 그에 맞게 데이터 전송량을 조절하도록 합니다.
반응형
4. 혼잡 제어
- 혼잡 윈도우: 혼잡 없이 네트워크를 통해 전송할 수 있는 데이터의 양을 의미합니다. 혼잡 제어는 네트워크가 과부하 상태에 빠지지 않도록 제어하는 중요한 메커니즘입니다.
- AIMD(증가-감소 제어 알고리즘): 송신 측은 네트워크가 안정적일 때 RTT(왕복 지연 시간)마다 혼잡 윈도우 크기를 선형적으로 증가시키고, 혼잡이 감지되면 절반으로 줄입니다. 이 과정에서 윈도우 크기는 톱니 모양의 패턴을 보이며, 혼잡 상황에서도 네트워크 성능을 유지하려는 특징이 있습니다.
- 느린 시작(Slow Start): 작은 혼잡 윈도우 크기(일반적으로 1 MSS)로 시작하여, RTT마다 두 배씩 증가시킵니다. 느린 시작 임계치(SSThresh)에 도달하면 혼잡 회피 알고리즘으로 전환되며, 타임아웃이 발생하면 윈도우 크기를 다시 1로 설정합니다. 중복 ACK가 세 번 발생하면 빠른 회복을 수행합니다.
- 혼잡 회피: 혼잡 임계치 이후에는 혼잡 윈도우 크기를 더 신중하게 1 MSS씩 증가시킵니다. 타임아웃이나 혼잡이 감지되면 윈도우 크기를 1로 줄이거나 절반으로 감소시킵니다.
- 빠른 회복(Fast Recovery): 세 번의 중복된 ACK가 발생하면 느린 시작 대신 혼잡 회피를 수행하며, 네트워크 혼잡 상태를 빠르게 복구합니다. 타임아웃 발생 시에는 느린 시작을 다시 시작합니다.
5. ECN(Explicit Congestion Notification)
- ECN 필드: 혼잡이 발생했을 때 네트워크가 송신 측에 이를 알리기 위해 사용됩니다. IP 헤더의 서비스 필드에 두 비트가 할당되며, TCP 헤더의 제어 비트에는 CWR(Congestion Window Reduced)과 ECE(ECN-Echo)가 사용됩니다.
- CWR(Congestion Window Reduced): 송신 측이 혼잡을 감지하고 윈도우 크기를 줄였음을 수신 측에 알리는 역할을 합니다.
- ECE(ECN-Echo): 수신 측이 혼잡을 감지하고 이를 송신 측에 알릴 때 사용됩니다. 혼잡이 발생하면 수신 측은 ECE 비트를 설정해 송신 측이 혼잡 상태를 인지하게 합니다.
추가할 부분 요약:
- 빠른 재전송에 대한 설명에서 중복된 ACK 3번 발생 시 즉각적인 재전송 기능을 명확히 보충.
- 흐름 제어에서 슬라이딩 윈도우의 구체적인 동작 방식을 추가 설명.
- 혼잡 제어 부분에 AIMD 알고리즘, 느린 시작, 빠른 회복의 관계를 명확히 보충.
- ECN 관련 CWR, ECE 비트의 역할에 대한 보충 설명.
반응형
'개발자 일상 > 혼자 공부하는 네트워크' 카테고리의 다른 글
혼자 공부하는 네트워크 5-2 HTTP (1) | 2024.10.06 |
---|---|
혼자 공부하는 네트워크 5-1 DNS와 자원 공부기록 (1) | 2024.10.01 |
혼자 공부하는 네트워크 4-2 공부 기록 (2) | 2024.09.26 |
혼자 공부하는 네트워크 4-1 공부 기록 (2) | 2024.09.22 |
혼자 공부하는 네트워크 3-3 공부 기록 (0) | 2024.09.10 |
댓글