TCP State   TCP 상태

(2022-07-20)

능동 개방, 수동 개방, 능동 종료, 수동 종료, SYN-SENT, SYN-RECEIVED, TIME-WAIT


1. TCP 상태도

  


2. TCP 상태 상의 특징TCP 연결은 양방향이므로, 양 측에서 각각 다르게 상태 변화를 관리할 수 있음
     - 즉, 다른 경로를 통해 `TCP 연결 설정` 및 `TCP 연결 종료`에 갈 수 있음

  ㅇ 서로다른 `TCP 연결 설정` 경로
     -  (능동 개방)  Closed -> Listen -> SYN-Received -> Establshed
        . 자발적으로 SYN 세그먼트를 보내며 연결 설정하는 경우
           .. 주로, 클라이언트 응용이 상대 서버에게 연결 요청
     -  (수동 개방)  Closed -> SYN-Sent -> Established
        . 수동적으로 SYN 세그먼트를 수신하며 연결 설정하는 경우
           .. 주로, 서버 응용이 TCP에게 상시적 연결 수용 및 대기

  ㅇ 서로다른 `TCP 연결 종료` 경로
     -  (수동 종료)  Eatablished -> Close-Wait -> Last-ACK -> Closed
        . 상대로부터 FIN 세그먼트를 받고, 이에대해 응답하며 종료하는 경로
     -  (능동 종료)  Eatablished -> FIN-Wait-1 -> FIN-Wait-2 -> Time-Wait -> Closed
              또는,  Eatablished -> FIN-Wait-1 -> Closing -> Time-Wait -> Closed 
        . 자발적으로 FIN 세그먼트를 보내고, 응답을 기다리며 종료하는 과정


3. TCP 연결 설정과 관련된 상태

  ㅇ CLOSED 
     - 무 연결 상태
        . 초기 시작 또는 원격 호스트가 ACK 수신 후 연결 닫음

  ㅇ SYN-SENT (능동 개방 요청)                      ☞ TCP 연결 설정 참조
     - 클라이언트가 능동적으로 SYN 세그먼트를 보내고, ACK를 기다리는 상태
        . 이때, 적정 TCP 세그먼트 크기를 상대에게 통보코자, 송신측 TCP MSS 옵션을 채워보냄

  ㅇ LISTEN   (수동 개방 대기)                      ☞ TCP 연결 설정 참조
     - SYN 세그먼트를 기다리며, 수동적으로 개방 대기중인 상태

     - 만일, 서버SYN 세그먼트를 수신하면, SYN+ACK 세그먼트를 송신하고는,
        . 이후, SYN-RECEIVED 상태로 전이됨

  ㅇ SYN-RECEIVED  (연결 준비)                      ☞ TCP 연결 설정 참조
     - 상대방에게, SYN 세그먼트(연결 요청)을 받고, 
     - 자신의 SYN(즉, SYN+ACK 세그먼트)으로 응답한 상태로써,
        . 이때부터, 상대방에서 ACK 세그먼트를 기다리는 상태 (ACK 세그먼트를 기다림)
     - 결국, 상대방의 ACK 세그먼트가 수신되어야,
        . 비로소 ESTABLISHED 상태로 전이됨


4. TCP 연결 성립 유지와 관련된 상태

  ㅇ ESTABLISHED
     - 양단간 연결 회선 성립 (데이터 교환)

     - 의미
        . 두 종단 간에 양방향 데이터 전송이 가능
        . 종단 각각 자신 및 상대 ISN(초기순서번호)를 알게 됨
        . 양단 간에 TCP 옵션에 의해 부가적인 정보가 전달됨


5. TCP 연결 종료와 관련된 상태

  ㅇ CLOSE-WAIT
     - TCP어플리케이션 종료를 기다림
        . 이 상태에서는, 계속 데이터를 상대에게 보낼 수 있음

  ㅇ LAST-ACK
     - 서버는 자신이 송신한 FIN 세그먼트에 대한 ACK 세그먼트를 기다림

  ㅇ FIN-WAIT-1
     - 자신이 보낸 FIN 세그먼트에 대한 ACK를 기다리고, 또한 상대측 FIN을 기다림
        . 이 상태에서 자신은 더이상 데이터를 보낼 수 없지만,
        . 상대측으로부터 오는 데이터는 계속 수신하게됨

  ㅇ FIN-WAIT-2
     - FIN 세그먼트를 송신하고, 상대측은 이에대한 ACK를 송신

  ㅇ Closing
     - 상대로부터 FIN 세그먼트를 받고 ACK를 보냈지만, 
       자신의 FIN 세그먼트에 대한 ACK는 받지못함

  ㅇ TIME-WAIT
     - 최대 세그먼트 수명(MSL,Maximum Segment Lifetime)의 2배를 기다림
     - 지정된 시간이 지나면, Closed 상태로 전이됨

  ㅇ CLOSED
     - 연결이 종료됨 (연결 없음)

TCP 연결관리
   1. TCP 연결   2. TCP 연결설정(3단계)   3. TCP 연결종료   4. TCP 상태   5. TCP 헤더 옵션   6. TCP MSS 옵션   7. path MTU  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"