CS/네트워크

3-way & 4-way Handshaking

이-프 2023. 8. 9. 15:45

TCP 3 - Way HandShaking

** 일반적인 공격들은 TCP 연결관리의 취약성을 악용한다.

TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정

💡
과정 요약

Client - TCP SYN → Server

Server - TCP SYN ACK → Client

Client - TCP ACK → Server

  • SYN(Synchronize Sequence Numbers)
  • ACK(Acknowledgment)

전반적인 설명

  1. 클라이언트 애플리케이션 프로세스 → 서버에 있는 프로세스와 연결하고 싶은 fact — tell → 클라이언트 TCP

[3-Way HandShaking]

1단계

  1. 클라이언트 TCP서버 TCP에게 세그먼트 송신 (애플리케이션 계층 데이터 포함 X)

    세그먼트 내부

    1. 세그먼트 헤더 : SYN (플래그비트) = 1
    1. 클라이언트 최초의 순서번호 : client_isn
  1. 해당 세그먼트는 IP 데이터그램 안에서 캡슐화 ⇒ 서버로 송신

2단계

  1. 서버는 전달받은 IP 데이터그램으로부터 TCP SYN 세그먼트를 뽑아냄
  1. 클라이언트 tcp로 연결 승인 세그먼트를 송신

    연결 승인 세그먼트 내부

    1. 세그먼트 헤더 : SYN (플래그비트) = 1
    1. 확인응답 필드(ack) : client_isn +1
    1. 서버 최초의 순서번호(seq) : server_isn

⇒ 클라이언트의 최초 순서번호 client_isn을 가지고 연결을 시작하기 위해서 SYN 패킷을 수신했다.

이 연결 설정에 동의한다.

서버 최초의 순서번호는 server_isn이다.

3단계

  1. 연결이 설정되었기 때문에 SYN = 0
  1. 확인응답 필드(ack) : server_isn +1
  1. seq : client_isn + 1

위의 3단계가 마무리 되면 클라이언트와 서버는 각각 서로에게 데이터를 포함하는 세그먼트를 보낼 수 있음 !

Q. 왜 초기호 순서번호가 필요한가?

Q. 왜 2방향이 아닌 3방향 핸드셰이크인가?

  1. 들려 ?
  1. 응 들려 ! 넌 어때 ?
  1. 나도 들려 ! 이제 말할게

TCP 4 - Way HandShaking

세션을 종료하기 위해 수행되는 과정

  1. 나 이제 전화 끊고 싶어
  1. 응, 나 이거 까지만 말하고 끊을게
  1. 이제 다 말했어 끊자!
  1. 응, 그래~

클라이언트 TCP 상태 전이 순서

서버 TCP 상태 전이 순서


Uploaded by N2T

'CS > 네트워크' 카테고리의 다른 글

HTTP/HTTPS/대칭키/비대칭키  (0) 2023.08.10
TCP/UDP  (0) 2023.08.09