[Q] ethereal 에서 보다보면 tcp 패킷중에요

wolfhound의 이미지

원래 tcp가
sequence number 와 ack num를
1) 항시 일대일 대응으로 보내고 응답하고의 관계로 아는데요

2) 어떤때에 여러 패킷을 보내고 마지막 패킷에 대한 응답을 한번 보내고

인 상황은 어떤때에 생기는 건가요?
tcp 헤더를 봐도 둘의 차이는 잘 모르겠습니다.
:oops:

kuaaan의 이미지

TCP Interactive Flow와 TCP Bulk Flow는 알고리즘이 틀리답니다.
TCP/IP Illurstrated Volume 1을 보세요.

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

익명 사용자의 이미지

TCP Delayed ACk을 말씀하신거 아닌지요?

kuaaan의 이미지

1. Interactive TCP (Telnet 등)의 경우 모든 패킷마다 ACK가 전달되는 것이 원칙이나, Nagle알고리즘에 따라 Delayed ACK가 발생할 수 있습니다. (NO Delay옵션이 설정되지 않은 경우)

2. Bulk Flow TCP (FTP 등)은 ACK패킷에 전달되는 윈도우 사이즈 정보에 따라 Data가 Bulk로 전송됩니다. (Flow Control by Sliding Window)

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

ysch0i의 이미지

wolfhound wrote:
원래 tcp가
sequence number 와 ack num를
1) 항시 일대일 대응으로 보내고 응답하고의 관계로 아는데요

일대일 대응이라는게 무슨뜻인지 잘 모르겠습니다. 짐작하건데

데이타를 보내고 ACK를 받아야 다음 데이타를 보내고하는 식으로 이해하셨다면 이건 Stop & wait라는 방식이구요...

TCP는 window라는 개념이 있어서 ACK를 받지 않아도 어느정도 데이타를 전송할 수 있습니다.

wolfhound wrote:

2) 어떤때에 여러 패킷을 보내고 마지막 패킷에 대한 응답을 한번 보내고 인 상황은 어떤때에 생기는 건가요?
tcp 헤더를 봐도 둘의 차이는 잘 모르겠습니다.
:oops:

TCP의 ACK는요 cumulative ACK입니다. 즉, 수신원이 ACK 10이렇게 보냈다면 패킷 1,2,3,4,5,6,7,8,9는 자기가 제대로 받았다는 뜻입니다.

수신원은 Delayed ACK를 쓰는 경우 대충 패킷 2개당 ACK하나를 보낸다고 생각하시면 됩니다.

즉, 패킷 1,2,3,4,5,6을 보냈다면

수신원이 패킷 2를 받은 경우 ACK3, 4를 받은 경우 ACK5, 6을 받은 경우 ACK 7을 전송하겠죠.

물론 패킷을 받을때마다 ACK를 보내는 것또한 가능합니다.

패킷 캡처를 하셨을때 패킷 1,2,3,4를 보냈는데 ACK5만 잡혔다는 것은 가장 먼저 유추해볼 수 있는 것이 ACK 2,3,4,5중에서 ACK234가 오는 과정에서 손실되었다고 볼 수 있겠습니다.

서명없어요.

wolfhound의 이미지

답변들 감사합니다.

그럼 socket을 생성할때
Interactive 로 연결할지 , bulk flow 로 연결할지는 어떻게 구별을 하나요?

또한, ethereal 로 보았을때
현재의 접속이 bulk flow인지, interactive 구별은 어떻게 할수 있나요? ( 제가 처음에 물으려 했던 것이 이 둘을 filter로 구분할수 있을까 해서 올렸었거든요 )

도움을 주셔서 감사합니다.

ysch0i의 이미지

제가 알기로 소켓에서 interactive인지 bulk인지를 구별하는건 없는것으로 알고있습니다(이건 확실하지 않습니다. 다른분이 알려주시면 감사하겠습니다.)

TCP/IP vol.1 책에서는 비록 2개의 장으로 나누어서 설명을 하고 있지만 TCP는 interactive/bulk를 구분해서 동작하거나 하지는 않습니다.

TCP위에서 동작하는 응용의 특성에 따라 같은 TCP라도 관찰할 수 있는 패킷 캡쳐 패턴(혹은 TCP가 주로 사용하는 알고리즘이)이 다르게 보인다고 보시면 될 것 같습니다. TCP입장에선 상위에 응용이 뭔지조차 신경을 쓰지 않으니까요.

예를 들어 telnet같은 응용을 쓰는 중에 패킷을 캡쳐한다면 당연히 슬라이딩 윈도우를 설명하기엔 힘들 것입니다.

wolfhound wrote:

또한, ethereal 로 보았을때
현재의 접속이 bulk flow인지, interactive 구별은 어떻게 할수 있나요? ( 제가 처음에 물으려 했던 것이 이 둘을 filter로 구분할수 있을까 해서 올렸었거든요 )

엄밀하게 말하면 FTP라고 해서 bulk라고 볼 수는 없을것 같습니다. 보통 bulk라고 하면 보내고자 하는 데이타가 항상있으며, 그 크기가 충분히 크다고 가정하는데요, FTP를 사용하더라도 굉장히 작은 파일을 전송하면 ... 이건 벌크 특성을 보인다!라고 말하기 힘들것입니다.

interactive냐 bulk냐 이것은 TCP가 아닌 응용 계층 관점에서 말해야 되는 것이 아닌가...라고 생각합니다. 그리고 응답 시간이 얼마 이내를 요구하면 interactive..아니면 bulk이런게 딱히 정해지지 않은 이상, 이 응용은 무조건 벌크 이건 무조건 인터엑티브 이렇게 말하기도 좀 어려운것 같구요.

보통 일반적으론 ftp/telnet등이면 각각 bulk/interactive가 된다고 생각하시면 될 것 같습니다만.

서명없어요.

wolfhound의 이미지

많은 도움 거듭 감사드립니다

샛길로 빠지는지 모르겠는데
마지막 질문 하나만 더할께요 :oops:

display filter 의 data 에 해당하는
capture filter 가 있나요?

ysch0i의 이미지

제가 etherreal을 써보지 않아서 잘 모르겠습니다.

서명없어요.

댓글 달기

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