Zelon's Blog

Tcp 연결 중 랜선 뽑기 테스트

2022-08-15 20:05:00

일반적인 생각으로는 랜선을 뽑으면 당연히 연결된 tcp connection 도 끊어질거라고 마냥 생각하고 있었는데 아니라는 얘기를 들어서 직접 테스트를 해보았다.

간단히 C#으로 코드를 만들어본 결과(https://github.com/zelon/TestLanCableReconnect),

클라이언트측 랜선을 뽑았을 때 클라이언트의 send 는 계속 유지되고(아마 send buffer 용량만큼 계속 쌓기만 하는듯), 서버는 (당연하게도) receive 가 멈춘다. 다시 랜선을 연결했을 때 그동안 send 되었던 내용들이 한번에 서버측에서 receive 되었다. 접속 끊어짐은 발생하지 않았다

좀 신기한 것은 랜선을 뽑은채 계속 지켜보았는데(5분 이상), 계속 서버측에서는 접속 끊어짐이 발생하지 않았다. 이런 동작이 윈도우/리눅스의 차이가 있는지는 확인하지 못했지만, 서버 프로그래밍에서는 항상 ping test 등을 통해서 클라이언트가 정상적으로 연결되어 있는지를 꼭 확인해야 할 것 같다

ReconnectLanCable