TCP Handshake

paduck·2023년 3월 30일
0

CS/네트워크

목록 보기
3/3

TCP Handshake?

TCP 프로토콜을 사용하여 통신하는 두 호스트 간에 연결을 설정하는 과정을 의미한다.

TCP Handshake 과정

연결시 3Way

  1. 클라이언트는 서버에게 SYN(Synchronize Sequence Number) 패킷을 보낸다.
    SYN 패킷은 초기 순차 번호(Initial Sequence Number, ISN)를 포함
  2. 서버는 클라이언트로부터 받은 SYN 패킷에 대해
    ACK(Acknowledgment) 패킷을 보내고, 자신의 ISN을 포함
  3. 클라이언트는 서버로부터 받은 SYN/ACK 패킷에 대해
    ACK 패킷을 보내고, 서버와의 연결을 수립한다.

Why?

  • 신뢰성 확보
    클라이언트와 서버 간에 데이터를 주고받기 전에, 연결을 설정하는 과정에서 상대방의 응답을 확인함으로써 신뢰성을 확보하기 위해

  • 중복 연결 방지
    SYN 패킷을 받은 서버는 클라이언트에 SYN/ACK 패킷을 보내고, 클라이언트의 ACK 패킷을 받으면 ESTABLISHED 상태가 된다.
    이 때, 클라이언트가 보내는 SYN 패킷이 중복되어 도착하거나, 서버에서 보내는 SYN/ACK 패킷이 중복되어 도착하는 경우에도, 상대방은 이미 연결을 설정한 상태이므로 중복된 연결을 방지할 있다고 한다

  • 연결 종료 처리
    3-way Handshake를 통해 연결 설정이 이루어지면, 연결 종료 시에도 4-way Handshake를 통해 신뢰성을 확보하며, 연결을 안전하게 종료할 수 있다

해제시 4Way

  1. 클라이언트는 서버에게 FIN(Finish) 패킷 전송
    이 패킷에는 더 이상 데이터를 전송하지 않겠다는 것을 명시
  2. 서버는 클라이언트로부터 받은 FIN 패킷에 대해
    ACK 패킷을 보내고, 더 이상 데이터를 보내지 않겠다는 것을 명시
  3. 서버는 클라이언트에게 FIN 패킷 전송
    이 패킷에는 서버 측에서의 데이터 전송이 완료되었음을 명시
  4. 클라이언트는 서버로부터 받은 FIN 패킷에 대해
    ACK 패킷을 보내고, 연결 해제 과정이 완료되었음을 명시

Why?

  • 독립성 보장
    연결 설정 과정에서 초기 순차 번호를 교환하고, 연결 설정 과정에서 사용된 순차 번호와 확인 응답 번호를 이용하여 연결을 확립하지만,
    연결 해제 과정에서는 두 호스트 간에 데이터 전송이 끝난 시점이 서로 다를 수 있기 때문

  • 대기 상태 방지
    양쪽 호스트가 동시에 연결 종료시, 서로 간에 데이터 전송이 명확하게 완료되었는지 확인하기 어렵기 때문

profile
끈질기게 들러붙기

0개의 댓글