TCP 연결 종료

(2021-09-11)

TCP 4-way Handshaking, TCP의 4단계 핸드세이킹, FIN 세그먼트, FIN+ACK 세그먼트


1. TCP 연결종료TCP는 안정적이고 연결지향적트랜스포트 계층프로토콜로써,
     - 3단계 핸드세이킹 과정을 밟고 회선을 개설한 후, (ESTABLISHED)
     - 해당 세션에서 데이터 전송을 완료한 후, 
     - 보통, 4번(3번도 가능)의 패킷 교환으로 회선 연결을 정상적으로 끊게됨

     * [참고용어] ☞ TCP 헤더, TCP 연결 설정, TCP 제어 플래그


2. TCP 연결종료 특징TCP 연결 종료는, TCP 연결 설정 보다는 복잡
     - 여러 종료 상황이 있을 수 있음
     - 한 방향 연결이 종료되어도, 다른 방향은 계속 오픈 상태일 수 있는 등

  ㅇ 정상 종료인 경우에, TCP 연결 종료는, 양방향 2개 연결을 각 측이 독립적으로 닫게 됨
     - `FIN 및 그에대한 FIN-ACK`의 2 쌍(4개 세그먼트)으로써,
     - 즉, 4-way 핸드세이크로써 종료함


3. TCP 연결 종료 구분

  ㅇ 정상 종료 (Normal Close)
     - `4단계 핸드세이킹`에 의해 양방향 모두 종료되는 것
        . 실제로는 자주 있는 경우가 아니고 반 종료 등이 오히려 일상적임

  ㅇ 반 종료 (Half Close)
     - 양측이 동시에 회선 종료 않고, 한쪽 연결이 열린채로 놔두고 종료하는 것
        . 즉, 송신은 가능하지만 수신은 불가능 또는 수신은 가능하지만 송신은 불가능

  ㅇ 동시 종료 (Simultaneous Close)
     - 거의 동시에 양측에서 FIN 세그먼트를 보내는 경우

  ㅇ 강제 종료
     - TCP Reset 요구(RESET 세그먼트) 기능


4. TCP 연결종료 : 4단계 핸드세이킹 (정상 종료인 경우)

   

  ㅇ FIN 세그먼트      : (클라이언트측의 연결 종료 요청) (능동 종료 요청측에서 발송)
     - TCP 제어 플래그 : FIN 제어 비트 => `1`
     - 순서번호        : `K` (연결된 상태에서 마지막 순서번호 보다 하나 높은 값 임)
     - 확인응답 번호   : `-`

  ㅇ ACK 세그먼트      : (연결 종료 요청에 대한 서버측의 응답)
     - TCP 제어 플래그 : FIN 제어 비트 => `1`, ACK 제어 비트 => `1`
     - 순서번호        : `L`
     - 확인응답 번호   : `K+1` (이전 FIN 세그먼트순서번호 보다 하나 높은 값임)

  ㅇ FIN+ACK 세그먼트  : (서버측의 종료 알림)
     - TCP 제어 플래그 : FIN 제어 비트 => `1`, ACK 제어 비트 => `1`
     - 순서번호        : `L`
     - 확인응답 번호   : `K+1`

  ㅇ ACK 세그먼트      : (클라이언트측의 최종 종료 알림)
     - TCP 제어 플래그 : ACK 제어 비트 => `1`
     - 순서번호        : `K` 
     - 확인응답 번호   : `L+1`

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


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"