TCP 통신 질문 드려요 ~!

zzang3757의 이미지

TCP 를 흔히 신뢰성을 보장하는 프로토콜이라 하는데요..

TCP 통신을 하면서 write /read (send /recv) 과정에서

몇바이트 보냈는지,, 몇바이트 수신됬는지,,와 같은 리턴 값만 가지고 상대방에게 정상적으로 데이터가
전달이 됬다고 봐도 무방한가요..??

예를들어,, 나는 상대에게 20바이트를 전송했고, 리턴 값으로 20이 리턴되었지만,, 상대가 20바이트를 받지 못한 경우는 없을까요..?

데이터 전송을 보장하려고,, 패킷을 보낸후,, 상대방이 저에게 다시 패킷에 대한 응답을 전송하도록 하였는데,,

TCP스스로도 전송이 실패하면 재전송하는 기능을 갖고 있는 것으로 알고 있습니다..

TCP가 어느 정도까지를 보장해주는지가 궁금합니다ㅜ ㅎ

과연,, 리턴값만 가지고 전송 결과를 확신해도 되는 것인지.. 고수님들의 의견 부탁드립니다.

upriser의 이미지

blocking 모드로 전송하신 것 같군요.

상대가 20 바이트 받은 거로 보시면 됩니다.

TCP는 말씀하신대로 전송 실패시 재전송합니다.

TCP가 어느정도까지 보장해주는지 궁금하다고 하셨는데, 그 "어느정도"가 어느정도인지는 모르겠지만

위에 말씀하신 부분은 사실상 "완벽"하게 전송된걸로 보셔도 될 것 같습니다.

zzang3757의 이미지

우선답변 감사드립니다.

블로킹 모드 외에 논블로킹 모드에서도 20바이트를 전송해서 20이 리턴되면 정상적으로 상대방 버퍼에 저장됬다고 봐도 무방하겠죠 ..?

혹시 몰라서 상대방에게 데이터를 전송하면, 응답 데이터를 수신하려고 합니다..

응답데이터에 오류가 있으면 데이터를 재전송 해주려하는데요..

보통 재전송하기 위해서 한번 전송한 패킷을 큐 같은데 담아 놓나요..??

재전송 관련 기능은 어떤식으로 구현을 해야 할지 알려주실수 있으신가요..ㅠ

큐에다가 데이터들을 담아놓으려면,, 패킷들을 메모리 복사해서 계속 담아 놔야 하는건지..;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.