하아찡

소켓통신 TCP 흐름제어 테스트 본문

C++/이것저것테스트

소켓통신 TCP 흐름제어 테스트

하아찡 2024. 11. 7. 15:53

이전에는 Boundary를 확인해보고 해결방법도 생각해봤는데

TCP에서 흐름을 자동으로 제어해준다? 라는게 사실 와닿지가 않음. 눈으로 볼 수 있으면 좋은데

보이면 어떻게 흐름이 제어가 되고있는지도 확인을 해볼까해서 이것저것테스트하는중.

 

테스트 과정은 이러합니다

클라이언트에서 SendBuffer 를 왕창 채워봅니다. -> 일정시간을 기다린다음 -> 서버측에서 리시브를 합니다 -> 서버측에서 리시브를 받는동안에도 클라이언트는 SendBuffer 에 왕창데이터를 채워봅니다. -> 이과정에서 클라이언트 쪽에서 Send가 멈추는지를 확인해봅니다.

왼쪽은 클라 / 오른쪽은 서버

 

위 gif를 보면 왼쪽은 클라이언트 / 오른쪽은 서버 입니다.(중간에 서버측 값이 100이상으로 변경된건 캡처를 잠시 멈췄다가 다시했습니다.)

왼쪽 클라이언트가 Send를 빠르게 하다가 일정수준으로 보낸뒤에 잠시 멈추고, 서버측에서 리시브를 어느정도 하니 다시 Send를 시작하는 모습을 볼 수 있습니다.

 

정확한 테스트 환경은 클라이언트 쪽은 반복문을돌려 딜레이없이 데이터를 보내고 있으며, 서버측은 50ms딜레이를 줬습니다.

서버측에 딜레이를 주지않으면 서로 계속 데이터를 주고 받고 하다보니 흐름제어를 확인하지 못하여서 서버측에 딜레이를 추가하여 관찰했습니다.

 

이렇게 보니 TCP통신에서 자동으로 흐름제어를 해주는 모습을 보았습니당. 

 

다음은 UDP는 어떨까?

반응형

'C++ > 이것저것테스트' 카테고리의 다른 글

소켓통신 UDP 테스트  (0) 2024.11.07
소켓통신 TCP Boundary 테스트  (0) 2024.11.07