데이터링크 계층에서 이루어지는 중요한 기능 중 하나는 흐름제어(Flow Control)이다. 일반적으로 수신장치로 들어오는 데이터를 처리할 수 있는 속도와 데이터를 저장할 수 있는 메모리에는 제한이 있다. 그래서 수신장치는 전송장치에 자신의 제한 사항에 대한 정보를 알려 전송장치가 조절할 수 있도록 유도한다. 이러한 조절 및 제어 기능이 흐름제어이다. 전송 스테이션이 전송 데이터의 양을 제한하기 위해 사용하는 절차라 할 수 있다.
정지-대기 방식
정지-대기(Stop-and-wait) 방식은 전송지에서 데이터 프레임을 전송한 후 각 데이터 프레임에 대한 ACK 프레임이 도착하면 다음 데이터 프레임을 전송하는 것이다. EOT 프레임이 전송되면 데이터 전송이 종료된다. 정지-대기 방식은 구조가 간단하다는 장점은 있으나 하나의 프레임을 보낸 후 ACK 프레임이 수신되어야만 다음 프레임을 전송할 수 있기 때문에 효율성이 떨어져 활용도가 낮다.
슬라이딩 윈도우 방식
정지-대기 방식의 비효율성을 개선한 슬라이딩 윈도우(Sliding Window) 방식에서는 전송한 프레임에 대한 ACK 프레임을 수신하지 않더라도 여러 프레임을 연속으로 전송하도록 허용한다. 정상적으로 전송되었는지 확인 없이 여러 프레임을 연속적으로 전송하려면 이미 전송했으나 ACK 프레임을 받지 못한 전송 프레임을 보관할 필요가 있다. 이를 위해 윈도우(Window)라는 개념을 도입한다. 윈도우는 전송 및 수신 스테이션 양쪽에서 만들어진 버퍼(Buffer)의 크기에 해당하는 용어이다. 윈도우를 사용해 전송지와 수신지 양쪽에서 프레임을 보관하고 관리한다.
- 전송지 윈도우
전송되는 프레임의 관리를 위해 각 프레임에 0부터 (n-1)까지 번호를 부여한다. 그러므로 전송 초기의 전송지 윈도우(Sender Window)는 (n-1) 개의 프레임을 포함하고 있다. 프레임이 전송되면 윈도우의 왼쪽 경계가 오른쪽으로 이동해 결과적으로 윈도우의 크기가 줄어든다. ACK 프레임이 도착하면 전송지 원도우는 도착한 ACK 프레임의 수만큼 오른쪽 경계가 오른쪽으로 이동해 윈도우 크기가 다시 늘어난다.
- 수신지 윈도우
전송 초기의 수신지 윈도우(Receiver Window) 크기가 (n-1) 개라고 가정하자. 전송지로부터 프레임이 수신되면 윈도우의 크기는 줄어든다. 따라서 수신지의 윈도우는 수신된 프레임이 수가 아니라 ACK 프레임을 전송하기 전에 수신될 수 있는 프레임 수를 나타냄을 알 수 있다. 수신지 윈도우는 ACK 프레임을 전송한 후 오른쪽 경계가 오른쪽으로 이동해 윈도우 크기가 커진다.
댓글