커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 네트워크(network) 도움말
검색 : 사이트 WHOIS 웹서버 종류

TCP/IP, 프로토콜, 포트 (11, 글 2, 자료 25)
인터넷 접속 (1, 글 3)
웹 서버(web, httpd, apache) (48, 글 42, 자료 31)
메일 서버(mail) (31, 글 42, 자료 23)
네임서버(name server, dns, bind) (15, 글 18, 자료 4)
FTP 서버 / rsync / 미러링 / CVSup (12, 글 13, 자료 9)
망관리 / SNMP / QoS (13, 자료 16)
삼바 (samba) (4, 글 1, 자료 5)
프락시 서버(프록시, proxy server) (6, 글 3, 자료 2)
네트워크 툴 (15, 글 1, 자료 11)
클러스터링(cluster) (6, 자료 1)
장비 / 라우터 / 스위칭 (8, 글 3, 자료 8)
IRC (Internet Relay Chat) / 메신저 (6)
ssh / telnet (10, 글 3, 자료 2)
NFS / SHFS (5, 자료 2)
VPN 서버, FreeS/WAN (4)
DHCP (1, 자료 1)
LDAP (3, 자료 1)
SAN / NAS / 스토리지 (4, 글 2, 자료 6)
음악방송 / icecast (3, 글 1)

  netstat의 TCP 연결 상태 의미 작성일 : 2003/08/31 00:56
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 31819
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2003.02.21
    수정일 : 2003.08.30(토)

    netstat의 State 필드에 표시되는 TCP 상태표시가 갖는 의미를 알아봅시다.
    RFC 793 문서에 있는 TCP 기본 연결, 종료 과정을 보면 이해가 더 빠를 거라 생각한다.
      
    -----------------------------------------------------------
    # netstat -atn
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address          Foreign Address       State
    ... 생략 ...
    tcp        0      0 0.0.0.0:25             0.0.0.0:*             LISTEN      <-- 포트가 열렸음
    tcp        0      0 192.168.123.10:32799   207.46.106.141:1863   ESTABLISHED <-- 서로 연결중
    tcp        0      0 192.168.123.10:32794   218.xxx.xx.xx:22      ESTABLISHED
    tcp        0      0 192.168.123.10:32802   207.46.108.46:1863    CLOSE_WAIT  <-- 종료 대기중
    tcp        0      0 192.168.123.10:33244   211.xxx.xx.x:80       ESTABLISHED
    ... 생략 ...
    -----------------------------------------------------------
      
    1) TCP 연결관련 상태
      
    * RFC 793문서에 나온 기본적인 TCP 연결 과정

          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

    LISTEN      : 데몬이 요청을 발을 수 있도록 연결 요구를 기다리는 상태
      즉, 포트가 열려있음을 의미. http(80), mail(25), ftp(21), telnet(23) 등
      위에서 포트 25(mail)이 메일을 받을 수 있도록 열려 있는 상태
      윈도우즈에서는 LISTENING으로 표시
    SYN_SENT    : 로컬에서 원격으로 연결 요청(SYN 신호를 보냄)을 시도한 상태
    SYN_RECV    : 원격으로 부터 연결 요청을 받은 상태
      요청을 받아 SYN+ACK 신호로 응답은 한 상태이지만 ACK는 받지 못했다.
      netstat로 확인할 때 SYN_RECV가 상당히 많다면 TCP SYN 플러딩(Flooding) 공격일
      가능성이 있다.
      윈도우즈와 솔라리스에서는 SYN_RECEIVED으로, FreeBSD는 SYN_RCVD으로 표시
    ESTABLISHED : 서로 연결이 되어 있는 상태
      위에서 192.168.123.10의 포트 32794과 218.xxx.xx.xx의 포트 22(ssh)이 서로
      연결되어 있는 상태

    2) TCP 종료관련 상태

    * 정상적인 연결 종료 과정

          TCP A                                                   TCP B

      1.  ESTABLISHED                                             ESTABLISHED
      2.  (Close)
          FIN-WAIT-1  --> < SEQ=100>< ACK=300>< CTL=FIN,ACK>  --> CLOSE-WAIT
      3.  FIN-WAIT-2  <-- < SEQ=300>< ACK=101>< CTL=ACK>      <-- CLOSE-WAIT
      4.                                                         (Close)
          TIME-WAIT   <-- < SEQ=300>< ACK=101>< CTL=FIN,ACK>  <-- LAST-ACK
      5.  TIME-WAIT   --> < SEQ=101>< ACK=301>< CTL=ACK>      --> CLOSED
      6.  (2 MSL)
          CLOSED                                                      

    FIN_WAIT1   : 소켓이 닫히고 연결이 종료되고 있는 상태. 원격의 응답은 받을 수 있다.
      솔라리스에서는 FIN_WAIT_1로 표시
    FIN_WAIT2   : 로컬이 원격으로 부터 연결 종료 요구를 기다리는 상태
      솔라리스에서는 FIN_WAIT_2로 표시
    CLOSE_WAIT  : 원격의 연결 요청을 받고 연결이 종료되기를 기다리는 상태
      원격으로 부터 FIN+ACK 신호를 받고 ACK 신호를 원격에 보냈다.
    TIME_WAIT   : 연결은 종료되었으나 원격의 수신 보장을 위해 기다리고 있는 상태
      이 상태를 특히 자주 보게되는 Apache에서 KeepAlive를 OFF로 해둔 경우,
      Tomcat 서버를 쓰는 경우 등
    LAST_ACK    : 연결은 종료되었고 승인을 기다리는 상태
    CLOSED      : 완전히 연결이 종료된 상태

    ※ 위의 FIN_WAIT1, FIN_WAIT2, CLOSE_WAIT 3개 상태는 연결 종료를 위해 서로간에
       신호를 주고받는 과정에 나타나는 상태로 이해하면 된다.
       종료 요청을 한 곳에서는 FIN_WAIT1, FIN_WAIT2, TIME_WAIT 상태가
       종료 요청을 받는 곳에서는 CLOSE_WAIT, LAST_ACK 상태가 표시된다.

    3) 기타

    CLOSING     : 연결은 종료되었으나 전송도중 데이타가 분실된 상태
    UNKNOWN     : 소켓의 상태를 알 수 없음

    솔라리스의 netstat 명령에서는 다음 2개의 상태를 더 표시한다.

    IDLE        : 소켓이 열렸지만 binding 되지 않은 상태
    BOUND       : listen이나 연결을 위한 준비 상태

    ※ 참고 문서  
    - netstat 맨페이지(linux, solaris)
    - RFC 793 ( http://www.ietf.org/rfc/rfc0793.txt )
      커피닉스 카페 최근 글
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
    [01/20] Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Mobile 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Web Front 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Server 개발 팀장을 모십니다.
    [12/21] 브라우저별 SHA1 퇴출 시점
    [09/15] [구인] 시스템엔지니어 (경력)
    [08/05] Re: 칼리리눅스 텔넷관련
    [08/04] 칼리리눅스 텔넷관련
    [06/29] 또 다른 무료 SSL 인증서, Let's Encrypt
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~