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  


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