본문 바로가기
목차훔치기/하루 3분 네트워크 교실

윈도우 제어(하루 3분 네트워크 교실)

by 해삼2 2023. 7. 25.
728x90
반응형
윈도우 제어

 

윈도우 제어

윈도우 제어 (Windowing):
윈도우 제어는 흐름 제어와 밀접하게 관련되며, TCP 세션에서 전송되는 데이터 양을 결정하는 

메커니즘입니다. 

TCP에서는 수신자가 자신이 받을 수 있는 데이터 양을 결정하는데, 이를 수신 윈도우라고 합니다. 

수신자는 수신 윈도우 크기를 헤더에 포함하여 송신자에게 알려줍니다. 

송신자는 이 윈도우 크기를 고려하여 전송할 데이터 양을 조절하고, 수신자로부터 확인 응답(ACK)을 

받을 때까지 해당 윈도우 크기 내의 데이터를 전송합니다.

 

흐름 제어

흐름 제어 (Flow Control):
TCP는 신뢰성 있는 데이터 전송을 위해 흐름 제어 기능을 제공합니다. 

흐름 제어는 수신자와 송신자 간의 데이터 흐름을 조절하여 송신자가 수신자가 처리할 수 있는 속도로만 

데이터를 전송하도록 합니다. 

이를 통해 수신 측이 자신의 처리 능력을 초과하여 데이터를 버리거나 오버플로우를 방지하고 

데이터 손실을 줄이는데 도움을 줍니다.
TCP의 흐름 제어는 "슬라이딩 윈도우"라는 방식으로 동작합니다. 

수신자는 송신자에게 자신이 받을 수 있는 데이터의 양을 알려주는 윈도우 크기(Window Size)를 전송

합니다. 

송신자는 이 윈도우 크기를 고려하여 데이터를 보내고, 수신자는 자신의 처리 상태에 따라 윈도우 크기를 

조절하여 계속해서 데이터를 수용합니다.

 

에러복구

TCP의 에러 복구 기능은 데이터의 신뢰성을 보장하기 위해 사용되며, 주로 패킷 손실 및 순서 변경과 같은

문제를 다룹니다.

 

패킷 손실 감지:
TCP에서 데이터는 패킷 단위로 전송됩니다. 

송신자가 데이터 패킷을 보낸 후, 수신자는 해당 패킷을 받으면 확인 응답(ACK: Acknowledgment)을 

송신자에게 보냅니다. 

송신자는 확인 응답을 받지 못한 경우 패킷 손실로 판단하고, 해당 패킷을 재전송합니다. 

이때 RTT 값은 타임아웃 설정에 영향을 줍니다. 

RTT 값보다 오래 기다렸다가도 확인 응답을 받지 못하면, 패킷이 손실된 것으로 간주하고 

재전송을 시도합니다.

 

*RTT란

RTT는 특정 데이터 패킷이 출발지에서 목적지까지 전송되고 돌아오는 데 걸리는 시간을 측정하는 것

빠른 재전송 (Fast Retransmission):
TCP는 빠른 재전송이라는 기법을 사용하여 한 번의 패킷 손실에 대해 기다리지 않고 바로 해당 

패킷을 재전송합니다. 

즉, 확인 응답을 받지 않았지만 일부 패킷이 중복해서 수신되면 빠른 재전송으로 바로 해당 패킷을 

재전송합니다.

패킷 순서 변경 감지:
네트워크에서 데이터 패킷은 다양한 경로를 통해 도착할 수 있습니다. 

때때로 패킷들이 도착 순서와 다른 순서로 수신될 수 있습니다. 

수신자는 시퀀스 번호(Sequence Number)를 사용하여 패킷의 순서를 식별하고, 순서가 맞지 않는 

패킷은 순서 변경으로 판단합니다.

순서 변경 패킷 복구:
순서가 변경된 패킷이 수신되면, TCP는 해당 패킷의 재배치를 수행하여 올바른 순서로 데이터를 복구합니다.

이렇게 TCP는 패킷 손실, 중복, 순서 변경과 같은 에러를 감지하고 이에 대응하여 데이터의 신뢰성을 

유지합니다. 

RTT 값은 타임아웃 설정과 혼잡 제어에 영향을 미치며, TCP의 에러 복구와 전송 제어에 중요한 

역할을 합니다.

 

시퀀스

시퀀스 번호는 데이터 통신에서 패킷의 순서를 식별하는 데 사용되는 번호입니다.

데이터를 패킷 단위로 나누어 전송할 때, 이러한 패킷들은 목적지로 전달되는 동안 다양한 경로를

통과하거나 중간 라우터나 스위치에 의해 재배치될 수 있습니다.

이때, 패킷이 목적지에 도달할 때 올바른 순서로 재조립하기 위해 시퀀스 번호가 사용됩니다.

시퀀스 번호는 일련의 숫자로 구성되며, 보통 패킷의 헤더에 포함되어 전송됩니다. 

수신자는 시퀀스 번호를 사용하여 패킷들의 순서를 파악하고 필요한 경우 재정렬하여 원래의 

데이터를 복원합니다. 

시퀀스 번호를 사용함으로써 데이터 전달의 신뢰성을 높일 수 있으며, 데이터 손실이나 오류로 인해

발생하는 문제를 최소화할 수 있습니다.

시퀀스 번호는 일반적으로 순차적으로 증가하는 값으로 설정되며, 네트워크 프로토콜에 따라 

유니크한 값을 가져야 합니다. 

예를 들면 TCP(Transmission Control Protocol)에서는 각 패킷에 시퀀스 번호가 포함되어 있으며, 

이를 통해 패킷의 순서를 관리하고 데이터 전달의 신뢰성을 보장합니다.

 

4 계층에서의 시퀀스 번호

4 계층은 전송 계층(Transport Layer)으로, 데이터의 전송을 담당하는 계층입니다. 

이 계층에서 사용되는 시퀀스 번호는 세그먼트(Segment)에서 의미하는 것입니다.

세그먼트는 TCP(Transmission Control Protocol)에서 사용하는 단위로, 데이터를 패킷화 하여 

전송하기 위한 논리적인 조각입니다. 

TCP는 데이터를 세그먼트로 분할하여 네트워크를 통해 전송하고, 수신 측에서는 이 세그먼트들을 

다시 조립하여 원래의 데이터를 재구성합니다.

세그먼트에는 시퀀스 번호와 확인 응답 번호(Acknowledgement Number)가 포함됩니다. 

시퀀스 번호는 데이터의 바이트 순서를 지정하는 값으로, 세그먼트의 시작과 끝을 구분하는 

역할을 합니다. 

확인 응답 번호는 수신 측이 세그먼트를 정상적으로 수신했음을 보고하는 데 사용됩니다.

이렇게 시퀀스 번호와 확인 응답 번호를 통해 TCP는 전송 중에 발생할 수 있는 패킷 손실, 중복, 

순서 변경 등의 문제를 감지하고, 이를 처리하여 신뢰성 있는 데이터 전송을 보장합니다.

 

TCP의 송수신 과정

상대방의 버퍼 사이즈를 확인하고 송신하는 윈도우 사이즈(Window Size)는 TCP의 흐름 제어 기능과 

관련되어 있습니다. 

윈도우 제어는 TCP의 신뢰성 있는 데이터 전송을 위해 사용되며, 수신자가 송신자에게 데이터를 

받을 수 있는 양을 알려주는 역할을 합니다.

 

송신자 측:
송신자는 데이터를 패킷 단위로 분할하여 수신자에게 전송합니다.
송신자는 자신의 윈도우 사이즈를 정합니다. 

이 값은 송신자가 수신자로부터 확인 응답을 받지 않고도 연속해서 데이터를 전송할 수 있는 

최대 양을 나타냅니다.


수신자 측:
수신자는 송신자로부터 받은 데이터를 확인 응답(ACK: Acknowledgment)으로 응답합니다. 

확인 응답에는 수신자의 윈도우 사이즈도 포함됩니다. 

이 값은 수신자가 송신자로부터 데이터를 받을 수 있는 최대 양을 나타냅니다.
수신자는 자신의 윈도우 사이즈를 동적으로 조절하며, 자신이 수용할 수 있는 데이터 양에 따라 

윈도우 사이즈를 조절합니다. 

이를 통해 수신자는 자신의 버퍼 상태에 맞춰 송신자에게 데이터를 받을 수 있는 양을 알려줍니다.


송신자의 윈도우 사이즈 조절:
송신자는 수신자로부터 받은 윈도우 사이즈를 기반으로 자신의 윈도우 사이즈를 동적으로 조절합니다. 

수신자의 윈도우 사이즈가 작으면 송신자도 데이터를 송신할 수 있는 양을 줄이고, 

수신자의 윈도우 사이즈가 크면 데이터를 더 많이 송신할 수 있습니다.


이렇게 윈도우 제어 기능을 통해 송신자와 수신자는 데이터의 흐름을 조절하고, 

네트워크 상태에 따라 최적의 데이터 전송을 수행합니다. 

윈도우 사이즈는 네트워크의 혼잡 상태나 수신자의 처리 능력을 고려하여 동적으로 조절되며, 

데이터의 신뢰성과 효율적인 전송을 보장하는데 중요한 역할을 합니다.

 

 

 

 

*바쁜 사람을 위한 깜찍한 정리

윈도우 제어란 TCP세션에서 전송되는 데이터 양을 결정하는 것을 의미하고 이 데이터들은 세그먼트(패킷)의
순서를 식별하는데 사용되는 시퀀스 번호로 나뉘고 송신자와 수신자 간에 패킷이 순서대로 전달되도록 하기 위해 사용되며 해당하는 세그먼트가 전송도중 설정해둔 RTT값보다 오래 기다렸어도 확인 응답을 받지 못하면
ACK(응답)이 실패 했으니 패킷이 손실된것으로 감지해 빠른 재전송및 패킷 순서를 변경, 복구를 하여 에러를
복구해줍니다.
또한 상대방의 버퍼 사이즈를 확인하고 송신하는 윈도우 사이즈가 해당 데이터의 양을 알려주는 것을 윈도우 제어라고 합니다.
728x90
반응형