이론

3 Way Handshake

월러비 2024. 4. 17. 22:26

3 Way Handshake 란?

  • TCP에서의 연결 설정을 3단계 핸드셰이크(3 Way Handshake)라고 부른다.
  • 이 절차에서 클라이언트라고 하는 응용 프로그램은 ‘서버’라고 하는 또 다른 응용프로그램과 전송 계층 프로토콜인 TCP를 이용하여 연결을 설정하고자 한다.

3 Way Handshake 특징

  • 3단계 핸드셰이크 절차는 서버에서부터 시작한다.
  • ‘서버 프로그램’은 자신의 TCP에게 연결을 수락할 준비가 되어 있다는 것을 알린다.
    • 이러한 요청을 수동 개방(Passive Open)이라고 한다.
  • ‘클라이언트 프로그램’은 능동 개방(active open)을 위한 요청을 실행한다.

3 Way Handshake 절차

  1. 클라이언트는 첫 번쨰 세그먼트로서 SYN 플래그가 1로 설정된 SYN 세그먼트를 전송한다.
    1. 이 세그먼트는 순서 번호의 동기화가 목적이다.
    2. SYN 세그먼트는 단지 하나의 제어 세그먼트이며 어떠한 데이터도 전달하지 않는다.
    3. 데이터 전송이 시작되면 순서 번호는 1만큼 증가한다.
    4. 결론 : SYN 세그먼트는 데이터를 전달하지는 않지만 하나의 순서 번호를 소비한다.
  2. 서버는 두 번째 세그먼트로서 SYN와 ACK 플래그 비트가 각각 1로 설정된 SYN + ACK 세그먼트를 전송한다.
    1. 서버는 서버로부터 클라이언트로 전송되는 바이트의 순서화를 위한 순차 번호를 초기화하기 위하여 이 세그먼트를 사용한다.
    2. 이 세그먼트는 확인 응답 번호를 포함하고 있으며, 흐름 제어 절에서 살펴볼 (클라이언트에 의해서 사용되는) 수신 윈도우 크기인 rwnd를 포함한다.
    3. 결론 : SYN + ACK 세그먼트는 데이터를 전달하지는 않지만 하나의 순서 번호를 소비한다.
  3. 클라이언트는 세 번째 세그먼트를 전송한다.
    1. 이것은 단순히 ACK 세그먼트이다.
    2. 이 세그먼트에 있는 순서 번호는 SYN 세그먼트에 있는 것과 동일한 값으로 설정된다.
      1. ACK 세그먼트는 어떤 순서 번호도 소비하지 않기 때문이다.
      2. 클라이언트는 또한 서버의 윈도우 크기를 결정해야 한다.
      3. 어떤 구현에서는 연결 단계에 있는 이러한 세 번쨰 세그먼트에 클라이언트로부터 들어온 데이터들을 포함하여 전달할 수 있다.
      4. 결론 : ACK 세그먼트는 데이터를 전달하지 않는 경우에는 순서 번호를 소비하지 않는다.

'이론' 카테고리의 다른 글

Shader  (0) 2024.04.22
CPU - PC, IR  (1) 2024.04.20
지연된 함수  (0) 2024.04.17
덕 타이핑  (0) 2024.04.15
CPU ALU  (0) 2024.04.13