TCP 3-way Handshaking   TCP 연결 설정, TCP의 3단계 핸드세이킹

(2019-11-28)

SYN 세그먼트, SYN+ACK 세그먼트, ACK 세그먼트, TCP 3-way Handshake, TCP three way Handshake


1. TCP 연결 3단계 핸드세이킹TCP는 안정적이고 연결지향적트랜스포트 계층프로토콜로써, 
  ㅇ 연결 세션 설정을 위해 3단계의 핸드세이킹 과정을 밟음
 

2. TCP의 3-way Handshaking 흐름도

   

  ※ [참고] ☞ TCP 세그먼트, 능동개방/수동개방, 초기 순서번호, TCP 제어플래그 등 참조


3. TCP의 3-way Handshaking의 각 단계세그먼트 1 (SYN 세그먼트)     : 연결 요청 (`초기 동기화 패킷` 라고도 불리움)
     - TCP 제어 플래그  : 클라이언트가 SYN 플래그 = 1로 설정
     - TCP 헤더 필드
        . 순서번호 = ISN (클라이언트측)
        . (확인응답 번호,윈도우 크기 필드는 미정의됨)
     - `데이터전송` 그러나, `하나의 순서번호`는 소비함
     - TCP 옵션         : MSS 포함시킴
     - TCP 상태 천이    : 클라이언트는 `SYN-SENT` TCP상태로 전이 

  ㅇ 세그먼트 2 (SYN+ACK 세그먼트) : 연결 허락
     - TCP 제어 플래그  : SYN 플래그 = 1 및 ACK 플래그 = 1로 설정 
     - TCP 헤더 필드    
        . 순서번호 = ISN (서버측), 
        . 확인응답 번호 = (수신된 순서번호 + 1)
          .. 클라이언트로부터 수신을 기대하는 다음 순서번호확인응답/승인하며 전송
        . (윈도우 크기 필드는 정의됨)
     - `데이터전송` 그러나, `하나의 순서번호`는 소비함
     - TCP 옵션         : MSS 포함시킴
     - TCP 상태 천이    : 서버는 `LISTEN` → `SYN-RECEIVED` TCP상태로 전이
        . 이를 절반 개방(Half Open)이라고도 함

  ㅇ 세그먼트 3 (ACK 세그먼트)     : 연결 설정
     - 단순히 ACK 전송 만을 위함
     - TCP 제어 플래그 : 클라이언트가 ACK 플래그 = 1로 설정
        . 이때, 회선 설정이 이미 이뤄진 상태이므로 굳이 SYN 플래그를 설정 안해도 됨
     - TCP 헤더 필드
        . 승인번호 = (수신된 순서번호 + 1),
        . 확인응답 번호 : (SYN+ACK 세그먼트)의 확인응답 번호를 그대로 복사 사용
     - 일반적으로, 데이터전송하며, 어떠한 순서번호도 소비하지 않음
     - TCP 옵션        : 통상, 이 세그먼트에서는 비어 있게 됨
     - TCP 상태 천이   : 양단 모두 `ESTABLISHED` TCP상태로 들어감 
        . (`SYN-SENT` → `ESTABLISHED` 및 `SYN-RECEIVED` → `ESTABLISHED`)

  ※ 여기서, 초기 순서번호(ISN) 이란?
     - 랜덤 수를 선택한 후 상대에게 전송 
        . 순서번호 초기화 직후 상대와의 순서번호 동기화 목적
     - TCP는 양방향이므로 각 방향 마다 다른 ISN 번호가 사용됨 

  ※ [참고] ☞ TCP 헤더, TCP 제어 플래그, TCP 연결 종료 등 참조


4. TCP의 3-way Handshaking의 주요 목적 둘

  ㅇ 연결이 시작됨과 옵션이 교환됐음을 알림
  ㅇ ISN(랜덤초기 순서번호)를 생성하고 교환했음을 알림


5. TCP 연결과정에서 교환되는 주요 정보(유형) 셋ISN (초기 순서번호)
     - 연결된 두 장비 간에 각 방향 마다 초기 순서번호를 서로 교환함 
  ㅇ 수신 기본 윈도우 크기 (rwnd)
  ㅇ 옵션 정보TCP 옵션 참조
     - MSS 옵션
     - 추가 윈도우 크기 스케일 옵션
     - SACK 옵션 허용
     - SACK 옵션 데이터

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


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