TCP State   TCP 상태

(2019-06-20)

능동 개방, 수동 개방, 능동 종료, 수동 종료

1. TCP 상태

  


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

  ㅇ 2가지 다른 TCP 연결 설정 경로
     -  (능동 개방)  Closed -> Listen -> SYN-Received -> Establshed
        . 자발적으로 SYN 세그먼트를 보내며 연결 설정하는 경우
     -  (수동 개방)  Closed -> SYN-Sent -> Established
        . 수동적으로 SYN 세그먼트를 수신하며 연결 설정하는 경우
           .. 주로, 서버 응용이 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 
     - 무 연결 상태

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

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

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

  ㅇ SYN-RECEIVED  (ACK 세그먼트를 기다림)
     - SYN 세그먼트(연결 요청)을 받고, 
     - 자신의 SYN(즉, SYN+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

 
        최근수정     요약목록     참고문헌