TCP 패킷의 Urgent bit와 Urgent Pointer의 의미를 아시는 분 계

Necromancer의 이미지

TCP RFC문서를 보고 이것을 분해하는 프로그램을 짜고 있는데,

그곳에 설명되어 있는 내용 중에 Urgent (URG) bit와 Urgent 포인터 부분이

도저히 머리에 안 들어오네요.

다행히도 제가 덤프 떠본 패킷에서는 이 비트가 set된 패킷이 없어서 어느정도

분석이 가능했습니다만(URG=0, URG PTR=0) 이들의 의미가 궁금합니다,

그리고 Push Function Bit (PSH)도 어떤의미인지 궁금하네요.

덤프 떠서 분석해본 패킷에서는 데이터 날리는 것 같은데, 이 비트 없이

데이터가 날라간 것도 없고, 이 비트가 set 된 채로 날라간 것도 있습니다.

RFC 문서 읽기 정말 어렵네요. :cry:

errai의 이미지

Urgent flag는 클라이언트가 서버에게 (혹은 그 반대의 경우) 현재의 TCP
flow와는 상관없는 일을 시키고 싶을때 사용하는것입니다. 예를 들자면
클라이언트가 Urgent flag를 설정해서 패킷을 "A"라고 전송하게 되면
서버는 SIGUSR Signal을 받게 됩니다. 핸들러를 설정해 놓았다면 잠시
다른 작업을 수행하고 다시 원래의 Flow로 돌아올 수 있는 것입니다.
소켓에서 사용할때는 옵션으로 MSG_OOB를 설정하시면 됩니다.

그리고 Push flag는 빈번하게 사용됩니다. 예를 들어서 MTU가 1500인데
3500byte를 전송했다. 그러면 1500, 1500, 500 이렇게 세번으로
나누어서 전송하겠죠? 그러면 마지막 500byte를 전송할때 Push flag를
설정해서 여기가 끝이니까 이제 묶어서 버퍼로 올려 보내라~
뭐 이렇게 서버에게 가르쳐 주는 겁니다. 소켓 프로그래밍을 하신다면 이런
flag는 socket layer 에서 알아서 해주니까 신경 쓰실 필요 없습니다.

errai의 이미지

아 그리고 Urgent pointer는 전송한 데이터의 맨 마지막 바이트를
가리키므로 신경 쓰실 필요 없습니다. 1500byte를 MSG_OOB로
전송했다면 마지막 1500번째 바이트를 가리키는 것입니다.
(OOB는 Out of band의 약자입니다.)

Necromancer의 이미지

감사합니다.

Written By the Black Knight of Destruction

댓글 달기

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