슬라이딩 윈도우(Sliding window)란?
슬라이딩 윈도우(Sliding window)는 컴퓨터 네트워크에서 신뢰적 데이터 전송을 위한 흐름 제어 및 오류 제어 메커니즘 중 하나이다. 슬라이딩 윈도우 프로토콜은 데이터를 순차적으로 전송하면서 동시에 여러 프레임을 전송할 수 있는 능력을 제공한다. 이 메커니즘은 특히 네트워크의 대역폭을 최대한 활용하면서도 데이터의 손실이나 중복 전송을 방지하기 위해 사용된다.
슬라이딩 윈도우의 기본 원리
1. 윈도우 크기: 전송자와 수신자 모두 윈도우라는 버퍼를 가지고 있다. 이 윈도우의 크기는 동시에 전송하거나 수신할 수 있는 프레임의 최대 개수를 나타낸다.
2. 전송 윈도우: 전송자의 윈도우는 아직 확인 응답이 오지 않은 프레임들과 전송할 준비가 된 프레임들을 포함한다.
3. 수신 윈도우: 수신자의 윈도우는 아직 수신되지 않은 프레임의 순서를 기다리는 프레임들을 포함한다.
4. 확인 응답 (ACK): 수신자는 데이터 프레임을 제대로 받으면 해당 프레임에 대한 확인 응답을 전송자에게 보낸다.
5. 윈도우 이동: 전송자는 확인 응답을 받으면 해당 프레임을 윈도우에서 제거하고 윈도우를 "슬라이드" 시켜 다음 프레임을 전송할 준비를 한다.
6. 타임아웃: 만약 확인 응답이 일정 시간 내에 오지 않으면, 해당 프레임은 손실되었다고 판단하고 다시 전송한다.
슬라이딩 윈도우 프로토콜은 네트워크의 효율성과 신뢰성을 동시에 높이기 위해 설계되었다. Go-Back-N과 Selective Repeat은 슬라이딩 윈도우 프로토콜의 두 가지 주요 변형이다.
Go Back N 이란?
Go-Back-N (GBN)은 슬라이딩 윈도우 프로토콜의 한 형태로, 신뢰성 있는 데이터 전송을 위해 사용됩니다.
GBN 특징과 작동 방식
1. 윈도우 크기: GBN에서 전송 윈도우의 크기는 N이며, 이는 동시에 전송할 수 있는 프레임의 최대 개수를 나타낸다. 수신 윈도우의 크기는 항상 1이다.
2. 순차적 전송: GBN은 프레임을 순차적으로 전송한다. 수신자는 순서대로 프레임을 받고, 순서가 어긋나면 해당 프레임을 거부한다.
3. 확인 응답 (ACK): 수신자는 제대로 받은 프레임에 대해 확인 응답을 전송한다. 이 응답은 다음에 기대하는 프레임의 순서 번호를 포함한다.
4. 오류 처리: 만약 수신자가 순서가 어긋난 프레임을 받으면, 그 프레임과 그 이후의 프레임은 모두 무시된다. 수신자는 마지막으로 성공적으로 받은 프레임의 확인 응답만을 계속 전송한다.
5. 타임아웃과 재전송: 전송자는 각 프레임에 대한 타임아웃을 설정한다. 확인 응답이 타임아웃 내에 도착하지 않으면, 해당 프레임과 그 이후에 전송된 모든 프레임을 재전송한다.
6. 윈도우 이동: 확인 응답을 받으면 전송자는 윈도우를 "슬라이드"시켜 다음 프레임을 전송할 준비를 한다.
Go-Back-N의 장점은 구현이 비교적 단순하다는 것이다. 하지만, 한 프레임의 오류가 그 이후의 모든 프레임의 재전송을 초래할 수 있으므로 효율성이 떨어질 수 있다. 이러한 특성 때문에, GBN은 오류가 적은 환경에서 더 효과적으로 작동한다.
Selective Repeat란?
Selective Repeat (SR) 프로토콜은 슬라이딩 윈도우 프로토콜의 또 다른 변형으로, Go-Back-N과 비교했을 때 더 효율적인 오류 처리 방식을 제공한다.
Selective Repeat의 주요 특징과 작동 방식
1. 윈도우 크기: SR에서 전송 윈도우와 수신 윈도우의 크기는 동일하며, N이라고 표시한다. 이는 동시에 전송하거나 수신할 수 있는 프레임의 최대 개수를 나타낸다.
2. 개별 확인 응답 (ACK): 수신자는 각 프레임을 개별적으로 확인한다. 순서대로 받지 않은 프레임도 버퍼에 저장하고, 각 프레임에 대한 확인 응답을 전송한다.
3. 개별 재전송: 전송자는 각 프레임에 대한 확인 응답을 기다린다. 확인 응답이 타임아웃 내에 도착하지 않으면 해당 프레임만 재전송한다.
4. 윈도우 이동: 전송자와 수신자 모두 윈도우를 "슬라이드"시키면서 작업을 진행한다. 전송자는 확인 응답을 받은 프레임에 대해서만 윈도우를 이동시키고, 수신자는 순서대로 프레임을 받으면 윈도우를 이동시킨다.
5. 순서 재배열: 수신자는 순서대로 받지 않은 프레임을 버퍼에 저장한다. 모든 프레임이 도착하면 올바른 순서로 재배열하여 상위 계층에 전달한다.
Selective Repeat의 장점은 개별 프레임에 대한 오류 처리로 인해 네트워크의 효율성이 향상된다는 것이다. 하나의 프레임에 문제가 생겨도, 해당 프레임만 재전송하면 되므로 Go-Back-N보다 효율적으로 작동한다.
단점으로는 구현이 복잡하고, 수신자의 버퍼 관리와 순서 재배열 로직이 필요하다는 점이 있을 수 있다. 그럼에도 불구하고, Selective Repeat는 오류가 더 자주 발생하는 환경에서도 잘 작동하며, Go-Back-N보다 일반적으로 더 높은 성능을 제공한다.
Sliding window, Go Back N, Selective Repeat 차이점 (정리 & 요약본)
슬라이딩 윈도우, Go Back N (GBN), 그리고 Selective Repeat (SR)은 모두 데이터 통신에서 신뢰성 있는 전송을 위한 프로토콜이나, 각각의 작동 방식과 특징에는 차이점이 있다.
Sliding window (일반 개념)
슬라이딩 윈도우는 신뢰성 있는 데이터 전송을 위한 일반적인 메커니즘으로, 흐름 제어와 오류 제어를 제공한다.
윈도우 크기: 동시에 전송하거나 수신할 수 있는 프레임의 최대 개수를 정의한다.
확인 응답: 각 프레임의 수신을 확인한다.
재전송: 타임아웃이 발생하면 재전송을 수행한다.
Go Back N (GBN)
윈도우 크기: 전송 윈도우 크기는 N, 수신 윈도우 크기는 1이다.
오류 처리: 순서가 어긋난 프레임을 받으면 해당 프레임과 그 이후의 프레임을 모두 무시하고 재전송을 요청한다.
재전송: 확인되지 않은 프레임과 그 이후의 모든 프레임을 재전송한다.
효율성: 단순한 구조이지만, 하나의 프레임 오류가 모든 후속 프레임의 재전송을 초래할 수 있어 효율성이 떨어질 수 있다.
Selective Repeat (SR)
윈도우 크기: 전송 윈도우와 수신 윈도우의 크기는 동일하며, 일반적으로 N이다.
오류 처리: 순서가 어긋난 프레임도 버퍼에 저장하며, 각 프레임을 개별적으로 확인한다.
재전송: 확인되지 않은 특정 프레임만 재전송한다.
효율성: 개별 프레임에 대한 오류 처리로 인해 네트워크의 효율성이 향상되며, GBN보다 일반적으로 더 높은 성능을 제공한다.
구현 복잡성: 수신자의 버퍼 관리와 순서 재배열 로직이 필요하므로 구현이 복잡할 수 있다.
요약하면, GBN은 구현이 단순하지만 오류 시 전체 윈도우를 재전송해야 하며, SR은 개별 프레임만 재전송하므로 더 효율적이지만 구현이 복잡하다. 슬라이딩 윈도우는 이 두 프로토콜의 기본 개념을 제공하는 일반적인 메커니즘이다.
'Computer Network study' 카테고리의 다른 글
네트워크 레이어, IP 프로토콜 (0) | 2023.08.16 |
---|---|
TCP (Transmission Control Protocol) (0) | 2023.08.10 |
UDP & 신뢰적 데이터 전송의 원리 (0) | 2023.08.02 |
HTTPS & DNS (0) | 2023.08.02 |
HTTP 프로토콜 (0) | 2023.07.26 |