netstat 에서 나오는 용어들을 알고 싶습니다.

cguy의 이미지

netstat -nap 쳤을때 State 탭에 나오는 용어를 알고 싶습니다.

ESTABLISHED , LISTEN , SYN_RECV , TIME_WAIT , FIN_WAIT2

검색을 해봐도 적합한 답을 얻지 못했습니다.

답변 주실분들께 미리 감사드립니다.

그럼 리눅스 선배님들의 지도 부탁합니다.

초코리의 이미지

man netstat
하니 쭉 나오네요..

제가 설명하는것 보다... man페이지가 나은듯 하네요..

처음에 리눅스 공부하면서 잘모르겠으면 man으로 참고해보세요..

정말 많은 정보가 있습니다.

그리고 스티븐 아저씨책 TCP/IP VOL 1책을 참고하셔셔 읽어보세요..

                 ESTABLISHED
                        The socket has an established connection.

                 SYN_SENT
                        The socket is actively attempting  to  establish  a
                        connection.

                 SYN_RECV
                        A  connection  request  has  been received from the
                        network.

                 FIN_WAIT1
                        The socket is closed, and the connection  is  shut-
                        ting down.

                 FIN_WAIT2
                        Connection is closed, and the socket is waiting for
                        a shutdown from the remote end.

                 TIME_WAIT
                        The socket is waiting after close to handle packets
                        still in the network.

                 CLOSED The socket is not being used.

                 CLOSE_WAIT
                        The  remote  end  has  shut  down,  waiting for the
                        socket to close.

                 LAST_ACK
                        The remote end has shut down,  and  the  socket  is
                        closed. Waiting for acknowledgement.

                 LISTEN The  socket  is listening for incoming connections.
                        Such sockets are not included in the output  unless
                        you  specify  the  --listening  (-l)  or --all (-a)
                        option.

                 CLOSING
                        Both sockets are shut down but we still don't  have
                        all our data sent.

                 UNKNOWN
                        The state of the socket is unknown.
cguy의 이미지

질문을 쓰기전에 man page 는 참고했으나 이해가 가지 않네요. 흑흑.

쉬운내용이라 귀찮으시겠지만 제가 질문드린 용어좀 이해하기 쉽게

설명해주시면 감사하겠습니다.

문재식의 이미지

      TCP A                                                TCP B

  1.  CLOSED                                               LISTEN

  2.  SYN-SENT    --> <SEQ=100><CTL=SYN>               --> SYN-RECEIVED

  3.  ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK>  <-- SYN-RECEIVED

  4.  ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK>       --> ESTABLISHED

  5.  ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED

          Basic 3-Way Handshake for Connection Synchronization

위의 내용을 보면 어느 정도 이해가 될 수 있으리라 생각됩니다.

1. CLOSED LISTEN

TCP A는 클라이언트 측이며, TCP B는 서버 측이라고 생각하면 되겠네요. 클라이언트는 연결을 위한 소켓이 사용중이지 않으며(closed), TCP B는 연결요청이 들어오면 응답하기 위해 대기중입니다.(listen) STATE 탭에서 listen은 서버에서 현재 서비스가 가능한 목록이라고 봐도 되겠네요.

2. SYN-SENT --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED

클라이언트가 서버에 접속하기 위해 어떤 일련번호(SEQuence number)로 된 SYN 메시지를 보냅니다. 서버에서는 이 메시지를 수신(SYN_RECV)하고 응답을 보내게 됩니다.

3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED

서버에서는 클라이언트가 보낸 SYN 메시지(SEQ=100)를 잘 받았다는 뜻으로 여기에 1을 더하여 ACK=101 과 자신의 SYN 메시지(SEQ=300)을 보내어 서버와 클라이언트 사이의 연결이 성립됩니다.(ESTABLISHED)

4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED

5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED

4번 과정은 3번의 역으로 생각하면 되겠고, 성공적으로 연결이 성립되어 5번에서 데이터를 전송하고 연결을 종료합니다. 막상 글로 적으려니 생각처럼 설명이 되지 않는군요. RFC 793에 나오는 내용입니다. 참고하시고요, 네트워크 책의 TCP Handshake에 관련된 부분을 참고하시면 도움이 될 것 같습니다.

맹고이의 이미지

Unix Network Programming Vol.1 의
앞부분을 보면 잘 나와있습니다. :D

댓글 달기

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