TCP 흐름 제어 (Flow Control)
TCP의 흐름 제어는 송신자가 수신자의 버퍼 여유 공간을 초과하지 않도록 데이터 전송을 관리하는 기능입니다. 네트워크와 응용 계층 사이에서 데이터 전송 속도의 불균형을 해결하기 위해 사용됩니다.
흐름 제어의 원리:
- Receive Window (rwnd): 수신자가 수용할 수 있는 데이터의 양을 TCP 헤더에 포함하여 송신자에게 전달합니다.
- 송신자는 수신자가 지정한 rwnd 값보다 적은 양의 데이터를 전송하여 오버플로우를 방지합니다.
- 운영체제에 따라 RcvBuffer(수신 버퍼)의 크기를 조정하여 네트워크 성능을 최적화합니다.
문제 상황:
- 만약 네트워크 계층에서 소켓 버퍼로의 데이터 전달 속도가 응용 계층에서 가져가는 속도보다 빠르면 버퍼 오버플로우가 발생할 수 있습니다. 이때 TCP는 흐름 제어를 통해 데이터 속도를 조정합니다.
TCP 연결 관리와 핸드셰이크
TCP는 데이터 교환을 시작하기 전, 송신자와 수신자 간의 핸드셰이크 과정을 통해 연결을 설정합니다. 이는 데이터가 정확하게 도착할 수 있도록 하는 3-Way Handshake 메커니즘입니다.
3-Way Handshake 절차:
- SYN: 클라이언트가 서버에 연결 요청을 보냅니다.
- SYN-ACK: 서버가 요청을 수락하고 응답합니다.
- ACK: 클라이언트가 서버의 응답을 확인하면서 연결이 설정됩니다.
문제 해결:
핸드셰이크 과정에서 문제가 발생할 경우, 재전송을 통해 정상적으로 연결이 설정되도록 합니다.
TCP 연결 종료
TCP 연결 종료는 4단계 절차를 따릅니다:
- FIN: 한쪽에서 연결 종료를 요청합니다.
- ACK: 상대방은 이를 확인하고 응답합니다.
- 상대방도 FIN 메시지를 보내면서 연결을 종료합니다.
- ACK로 종료 요청을 확인한 뒤, 모든 전송이 완료됩니다.
타이머(Timed Wait):
연결 종료 후, 일정 시간 동안 재전송된 패킷을 처리하기 위해 Timed-Wait 상태로 유지됩니다. 이는 데이터 손실을 방지하기 위함입니다.
서술형 시험 예상 문제와 답안
1. TCP의 흐름 제어에서 Receive Window(rwnd)의 역할은 무엇인가요?
답: Receive Window(rwnd)는 수신자가 수용할 수 있는 최대 데이터 양을 지정하는 값입니다. 이 값은 송신자가 수신자의 버퍼를 초과하지 않도록 전송량을 조절하는 데 사용됩니다. 이를 통해 데이터 오버플로우를 방지합니다.
2. 3-Way Handshake의 과정과 그 중요성은 무엇인가요?
답: 3-Way Handshake는 TCP 연결을 설정하기 위한 절차입니다. 클라이언트가 SYN 메시지를 보내고, 서버가 SYN-ACK로 응답한 뒤, 클라이언트가 ACK를 보내면서 연결이 성립됩니다. 이 과정은 데이터의 정확한 전송을 보장하며, 네트워크 상태를 동기화하는 역할을 합니다.
3. TCP 연결 종료 과정에서 FIN과 ACK의 역할을 설명하세요.
답: TCP 연결 종료 시 한쪽이 FIN 메시지를 보내고, 상대방은 이를 ACK로 확인합니다. 이후 상대방도 FIN 메시지를 전송하여 양쪽 모두 연결을 종료합니다. ACK는 FIN 메시지의 수신을 확인하고, 모든 데이터가 정확히 전달되었음을 보장합니다.
4. 네트워크 계층과 응용 계층 간 데이터 속도 불균형을 해결하는 방법은 무엇인가요?
답: TCP는 흐름 제어를 통해 소켓 버퍼에 쌓이는 데이터 속도를 조절합니다. 네트워크 계층에서 전달되는 데이터가 응용 계층에서 소비되는 속도보다 빠를 경우, 송신자는 Receive Window(rwnd) 값을 보고 전송 속도를 줄입니다. 이를 통해 오버플로우를 방지하고 데이터 손실을 최소화합니다.
'전공 공부 > 컴퓨터네트워크' 카테고리의 다른 글
TCP: 연결지향형 트랜스포트 (0) | 2024.10.29 |
---|---|
TCP 혼잡 제어 (1) | 2024.10.03 |
혼잡 제어의 원리 (1) | 2024.10.03 |
TCP 흐름 제어 (1) | 2024.10.03 |
연결지향형 트랜스포트 : TCP (2) | 2024.10.03 |