TCP/IP 통신상에서 수신측이 congention 상태에서 보내는 패킷은???

trymp의 이미지

TCP 나 UDP 를 네트웍상에서 대량으로 송신할 때,

수신측에서 너무 많아 더이상 받기 어려운 경우

송신측으로 보내는 메시지 같은 것이 있다고 들었습니다.

이게 어떤 패킷인지 궁금합니다. 이게 IP 상에서만 되는 것인지, 아니면 TCP 패킷인지??

수신측이 flow 를 처리 못해 송신측으로 보내는 패킷이 무었인지 좀 알려주세요..

고수님들의 많은 도움 부탁드립니다.

익명 사용자의 이미지

익명 사용자의 이미지

윗분이 링크해 주신 부분도 RFC 를 참고해 보면 흥미있을 것 같군요


이 말씀을 먼저 드리고 싶군요 미국넘들 중 극소수 지식인들은 우리 사회에서는 발견하기 힘든 사고의 유연성을 갖고 있는 것 같습니다. 인터넷 표준인 TCP/IP 같은 경우 RFC 에서 규정하는데 뭐랄까 한국사람 체질로 이 RFC 를 읽으면 도대체가 '지키라는 말인지 말란 말인지' 아리송하거나 어정쩡한 부분이 자주 보입니다. 물론 제가 영어를 못하니까 그런 탓도 있겠지만 RFC 자체가 6000개 넘는 규정 중 최고 엄격한 표준이랄 수 있는 STD 번호를 획득한 문서가 현재 71개밖에 안됩니다. 나머지는 Draft Standards(STD 아래 단계로 STD의 초안표준이란 말인데 이 자체가 한글로 하면 '제안표준'과 헷갈리므로 저는 준표준으로 해석)이거나 Proposed Standards(제안표준)

그럼 최소한 STD 는 모든 TCP/IP 시스템이 완벽히 구현할 것 아닌가?
그럴 것 같지만 꼭 그런건 아닙니다.
우리 사고방식으로는
어떤 규정을 문서로 만들고 그걸 표준으로 정했다면 그 규정을 모든 행정력이 미치는 범위까지 한날 한시에
문맹자든,286을 가진 자든,장애인이든 관계없이 일괄적으로 적용하도록 하는 것을 최선으로 여기는 경향이 강하지요
복지는 규정을 적용한 경우의 수에 따른 보상의 문제일 뿐입니다.

미국넘들은 적어도 인터넷 규정을 만드는 IETF 에 있는 넘들은 하위 호환성과 자유도,그것을 포기했을 때 따를 수
있는 상대적 약자에 대한 고려를 매우 많이 한다는 느낌을 때때로 받게 됩니다.



그래서 하고픈 말이 뭐냐

IP 계층 : 혼잡제어를 다룰 수 있는 필드는 준표준이며 서버와 클라이언트를 내가 만들지 않는 한 다른 프로그램이
어케 동작할 지는 예측할 수 없으므로 결론은 혼잡제어를 다룰 수는 있되 구현하든가 말든가 입니다.
전송계층 : TCP 는 강제표준으로 ACK(확인)-PSH(PUSH,실제 데이타 전송) 매커니즘으로 하나하나의 동작을 할 때마다 ACK 를 기다리는게 가장 대표적인 개념입니다.큰그림으로 봤을 때 이외의 모든 혼잡제어 규정과 UDP 에서의 적용 또한
구현하든가 말든가의 준표준이거나 제안표준입니다.

사실 커널 이더넷 버퍼에서 유저 fd 까지 데이타가 완전히 복사되고 커널버퍼가 비었을 때를 1구간으로 보고
응용이 이 데이타를 뭐 버리거나 모니터에 출력했거나 어쨌든 처리하고 응용버퍼를 비웠을 때를 2구간으로 보면

1구간이 완성되지 않았을 경우 TCP/IP 와 관계없이
이더넷 계층(이건 IEEE) 에서 PAUSE 제어전압이 활성화됩니다.따라서 혼잡제어가 그리 엄격하지 않아도 됨
1구간이 완성되면 커널은 다시 이더넷으로부터 데이타를 받아 적재하고 버퍼가 차면 랜카드는 다시 포즈상태 들어가지만 시스템이 매우바빠 응용에서 버퍼를 빨리빨리 못비울 경우 TCP 의 STD 구현만으로도 송신측은 ACK 를 받지 못하므로 다음 데이타를 보내지 않음
즉 1구간을 지나는 과정에서 원활하지 않을 경우 우선 랜카드 자체 버퍼 풀로 포즈 발생 하므로 커널은 여유가 있음
2구간을 지나는 과정에서 원활하지 않을 경우 ACK 를 보내지 못하므로 상대의 응용이 더이상 PUSH 를 하지 않기 때문에
응용이 여유가 있음

거꾸로 된 발상을 하면
순전히 선의의 목적으로 동작하는 시스템이라면
바빠 죽겠는 넘에게
"나 지금 바쁘니 기다려 달라"
는 메세지를 생성해 송신자에게 답변하는 알고리즘을 모든 시스템에 강제화하는 것은 비효율적일 수 있다는 고려가 깔려 있습니다.
미국넘들은 이런 사고방식을 갖고 있기 때문에 함부로 STD 화하지 않는 것이 아닐까요?

익명으로 글쓰기가 되니 맘놓고 떠들어서 좋군요

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.