하나의 클라이언트에서 다중 서버접속 시 문제

digilogstyle의 이미지

안녕하세요.

한 클라이언트에서 두 서버에 각각 TCP로 연결하여 메시지를 전달하였습니다. 두 서버의 포트는 동일하구요.
A서버소켓에 send를 하고, B서버소켓에 send를 하면 TCP Retransmission이 자주 발생합니다.
그래서 바로 못 보내고 여러번 시도 후에 보냅니다.
마찬가지로 반대의 경우에 TCP Retransmission이 발생하구요..
send 사이에 delay를 늘려보아도 마찬가지입니다.

혹시 이러한 내용에 대해 경험이나 아이디어 있으신 분들의 답변 부탁드립니다.

gilgil의 이미지

TCP는 packet loss에 대해 잘 처리해 줄 수 있도록 하는 스택(layer)입니다.
packet을 low level에서 잡는다면(wireshark에서) 당연히 retransmission이 일어날 수 있지만
application layer에서는 일어 나지 않습니다.
send()를 하는 부분과 recv()를 하는 부분에서
제대로 송수신이 일어날 수 있도록 코드가 되어 있는지 확인해 보세요.
(recv의 return값도 확인해 보세요)

digilogstyle의 이미지

답글 주셔서 감사드립니다.

서버와 클라이언트 1:1 연결로 송수신에 문제가 없는 걸로 봐서
send(), recv() 기본 코드는 정상 동작하는 것 같습니다.

그러나 1:1 연결에서 서버연결을 추가하고,
2번째 소켓에 send() 할때 매번은 아니고 자주 retransmission이 발생합니다.