ehdhkwntpdy19
154
2019-05-16 11:07:46
4
122

tcp 통신시 데이터를 못받는 현상이 일어납니다..


리눅스 환경의 client 와 윈도우 환경의 server를 구동중인데요, client 측에서 send하는 데이터가 굉장히 많습니다. 보내는 주기가 약 10ms 단위로 보내고요, 약 10분에 10000번 보내는 정도 입니다. 패킷 크기는 그렇게 크지 않습니다.. 

client 측의 send 로그와 server측의 receive 로그를 비교하여 잘 보내고 받는지를 확인 하는 중인데요, client send 로그는 이상 없습니다만, server 측에서 잘 받지를 못합니다. 예를 들어 10000개를 client측에서 보냈다고 하면 server측에서도 10000개를 받아야 하는데 약 9000개 정도 10%정도를 받지 못합니다. 

tcp 관련하여 지식이 얇다보니 많이 찾아보았는데요, window size, tcp connection 개수 그외 여러가지 등등 을 조치해 봐도 계속 똑같은 현상이 일어납니다.

제가 예상하는 원인으로는 너무 짧은 주기(ms) 단위로 보내다 보면 패킷이 무시되는 현상이 발생할 수 있거나, 송 수신 쪽의 대역폭이 서로 맞지 않아서 그럴 수 있다고 하는데 그럴 확률이 높을런지요??


혹시 비슷한 상황을 겪어보신 선배님들의 많은 조언 부탁드립니다..

0
0
  • 답변 4

  • 배우고싶은이
    732
    2019-05-16 11:32:16

    TCP는 네트웍 레이어에서 전송을 보장해주는것으로 아는데요.

    제가 아는게 맞다면 클라이언트에서 보낼때 실패 났지만 로그는 정상으로 쓰고 있는게 아닐까 싶습니다.

    0
  • ehdhkwntpdy19
    154
    2019-05-16 14:29:57

    @배우고싶은이

    저도 그럴 경우를 생각해서 보낼때 예외처리를 주었는데요, 오류는 안보이더군요... 참고로 python으로 되어있고 twisted를 사용하여 구현되어 있습니다.

    0
  • ehdhkwntpdy19
    154
    2019-05-16 14:38:12
    아 추가로 윈도우 server측에 wireshark로 들어오는 패킷 측정해보았는데요 server receive 로그와 wireshark의 데이터 개수가 거의 일치하였습니다. 네트워크로 들어오는건 다 받는다는 뜻 아닌가요? 이는 client 측 send에 문제가 있다고 보면 되는건지요?
    0
  • 배우고싶은이
    732
    2019-05-16 15:05:24

    비슷한 유형에서 대체로 클라이언트에서 예외처리가 안되는 경우가 대부분 이었습니다.

    저는 java만 해서 python은 어떻게 예외처리하는지 모르겠네요.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.