TCP Window size와 Buffer size에 관련 해서요

jhkim3624의 이미지

1. ack에 실려온 window size가 수신자의 buffer size인가요? 발신가능한 flight size 인가요?

2. 하나의 서버에 여러 클라이언트가 연결되어 있는 환경이라면, 서버의 receive buffer는 공유 되는 건가요? 클라이언트 마다 개별로 할당 되는 건가요?

:)

jw8704의 이미지

window size 는 늘어나기도 하고 줄어들기도합니다. 이때 어떤변수에의해 늘어나는지, 줄어드는지 찾아보시면
답을 아실수있을것입니다.

윈도우 사이즈는 송신시에 수신자로부터 확인응답을 받지않고 보낼수있는 size 를 말하는것이므로..

답변에 대해 굳이 답하자면 , 윈도우 사이즈는 송신측에서 관리합니다. 수신측에서는 송신측 윈도우 사이즈가 몇인지

알지못합니다. 그냥 수신측에서 응답을 주거나 안주거나 할뿐이고 , 송신측은 그것에따라서 윈도우 사이즈를 조절합니다.

그렇다면 윈도우 사이즈는 어떤측면에서 봤을때 성능상에 영향을 주냐 하고 묻는다면

하나의 패킷을 보내고 응답을 받고 또하나의 패킷을 보내고 응답을 받는다 라고할때 패킷크기에 상관없이 1회 전송을 의미하
는 시간을 RTT/2 라고 합니다. 그래서 결과적으로 RTT 가 줄어들게됩니다.

왜 RTT는 패킷의 사이즈에 상관없는가? 는 데이터의 크기가 왠만큼 크지않아서는 한번의 Modulation 으로 전송을 할수있고 또 한번의 Modulation 으로 전송된전기적신호는 데이터의 크기를 변수로 갖지않는 그냥 전기적신호 입니다.(자세한것은 좀더 찾아보시길바랍니다.) 두번째로 송수신단에서만 윈도우사이즈를 정하는것이라고했지만 사실은 중간에 있는 CORE(router) 들도 결과적으로는 관여하는 변수에 포함됩니다. 송수신단의 컴퓨터 대역폭이 아무리 원활하더라도 core 단에 라우터에서 패킷이 폐기되면 , 결과적으로는 수신측은 응답메시지를 받지못하게되고 , 윈도우사이즈는 줄어듭니다.

혹시 제 답변에 이상이있거나 보충해주실분이있으시다면 추가 조언 부탁드립니다.

두번째 질문은 좀더 연구해보시기바랍니다. 어렵지않은 내용입니다.

jhkim3624의 이미지

윈도우 사이즈는 송신시에 수신자로부터 확인응답을 받지않고 보낼수있는 size 를 말하는것이므로..

답변에 대해 굳이 답하자면 , 윈도우 사이즈는 송신측에서 관리합니다. 수신측에서는 송신측 윈도우 사이즈가 몇인지

알지못합니다. 그냥 수신측에서 응답을 주거나 안주거나 할뿐이고 , 송신측은 그것에따라서 윈도우 사이즈를 조절합니다.

=> 윈도우 사이즈는 송신자가 보낼수 있는 size 이긴 한데.... 송신측에서 관리한다는 말은 잘 모르겠습니다.
flow control 에서 recv window size는 수신자의 가용 buffer size를 ack에 실어서 송신자에게 알려준다는 걸로 알고 있는데요.(이 size가 ack 패킷의 win에 해당하는 것이구요.)

송신측에서 그것에 따라 윈도우 사이즈가 조절한다는 말씀은, congestion control에서 송신자의 window size 관리에 대해 말씀해 주신것 같아서요.

그 밑에 써주신 내용은 경로 MTU에 관련된 데이터 사이즈와 congestion control에서 중간 네트워크 상태에 따른 RTT 값과 송신자의 혼잡 윈도우 제어에 관련된 말씀인 것 같네요.

제가 궁금한 것은
1. ack 패킷의 win 필드(recv buffer size)가 segment 단위인지? byte 단위인지?
2. 1개의 서버가 recv buffer를 각 클라이언트 마다 할당 하는지? 하나의 recv buffer를 공유 하는지?
입니다.
두번째 질문이 더 궁금하긴 합니다.
혹시 실험 방법도 알려주시면 감사 하겠습니다.

twinwings의 이미지

질문은 질문 게시판에 하는게 어떨까요

jhkim3624의 이미지

KLDP가 처음이라 자게 성질을 잘 몰랐네요

댓글 달기

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