TCP 통신 질문 드려요 ~!
글쓴이: zzang3757 / 작성시간: 일, 2012/05/06 - 9:32오후
TCP 를 흔히 신뢰성을 보장하는 프로토콜이라 하는데요..
TCP 통신을 하면서 write /read (send /recv) 과정에서
몇바이트 보냈는지,, 몇바이트 수신됬는지,,와 같은 리턴 값만 가지고 상대방에게 정상적으로 데이터가
전달이 됬다고 봐도 무방한가요..??
예를들어,, 나는 상대에게 20바이트를 전송했고, 리턴 값으로 20이 리턴되었지만,, 상대가 20바이트를 받지 못한 경우는 없을까요..?
데이터 전송을 보장하려고,, 패킷을 보낸후,, 상대방이 저에게 다시 패킷에 대한 응답을 전송하도록 하였는데,,
TCP스스로도 전송이 실패하면 재전송하는 기능을 갖고 있는 것으로 알고 있습니다..
TCP가 어느 정도까지를 보장해주는지가 궁금합니다ㅜ ㅎ
과연,, 리턴값만 가지고 전송 결과를 확신해도 되는 것인지.. 고수님들의 의견 부탁드립니다.
Forums:
리턴 값으로 20이 리턴되었다면
blocking 모드로 전송하신 것 같군요.
상대가 20 바이트 받은 거로 보시면 됩니다.
TCP는 말씀하신대로 전송 실패시 재전송합니다.
TCP가 어느정도까지 보장해주는지 궁금하다고 하셨는데, 그 "어느정도"가 어느정도인지는 모르겠지만
위에 말씀하신 부분은 사실상 "완벽"하게 전송된걸로 보셔도 될 것 같습니다.
우선답변 감사드립니다. 블로킹 모드 외에 논블로킹
우선답변 감사드립니다.
블로킹 모드 외에 논블로킹 모드에서도 20바이트를 전송해서 20이 리턴되면 정상적으로 상대방 버퍼에 저장됬다고 봐도 무방하겠죠 ..?
혹시 몰라서 상대방에게 데이터를 전송하면, 응답 데이터를 수신하려고 합니다..
응답데이터에 오류가 있으면 데이터를 재전송 해주려하는데요..
보통 재전송하기 위해서 한번 전송한 패킷을 큐 같은데 담아 놓나요..??
재전송 관련 기능은 어떤식으로 구현을 해야 할지 알려주실수 있으신가요..ㅠ
큐에다가 데이터들을 담아놓으려면,, 패킷들을 메모리 복사해서 계속 담아 놔야 하는건지..;
댓글 달기