CS/network

TCP 3 way handshake

superbono 2021. 5. 2. 19:29

* TCP 3 way handshake?

TCP/IP 네트워크에서 서버와 클라이언트를 연결하는데 사용되는 프로세스이다. 실제 데이터 통신 프로세스가 시작되기 전에 클라이언트와 서버가 동기화 및 승인 패킷을 교환해야하는 3단계 프로세스이다. TCP는 UDP와 달리 정확한 전송을 보장하는데 이를 위해 상대방 컴퓨터와 사전에 세션을 수립해야 함.

 

* TCP 메세지 유형 & 포트 상태 유형

-TCP 메세지 유형

메세지 사용
SYN 연결을 시작하고 설정하는데 사용된다. 장치간에 시퀀스 번호를 동기화하는데 쓰인다.
ACK 상대방이 SYN을 수신했는지 확인할 때
SYN-ACK 로컬 장치의 SYN 메세지 및 이전 패킷의 ACK
FIN 연결을 종료

 

- 포트 상태 유형

Closed 포트가 닫힘
Listen 포트가 열린 상태로 연결 요청 대기 중
SYN-SENT SYN 요청을 한 상태
SYN-RECEIVED SYN 요청을 받고 상대방의 응답을 기다리는 중
ESTABLISHED 연결 확인

 

* TCP 3 way handshake process

1단계: 클라이언트가 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이 때 클라이언트는 SYN 패킷을 보낸 뒤 SYN-ACK 응답을 기다리는 SYN-SENT 상태가 된다.

2단계: SYN 요청을 받은 서버는 답장으로 클라이언트에게 접속을 수락하는 SYN-ACK 패킷을 보낸다. ACK는 수신된 세그먼트의 응답을 나타내며, SYN은 세그먼트로 시작하는 시퀀스 번호이다.

3단계: 클라이언트는 서버에게 ACK를 전송하고 이후로는 안정적인 연결이 이루어지며 실제 데이터 전송 프로세스가 시작된다. 

 

* 예시

 

1. 호스트는 TCP SYN 패킷을 서버 대상으로 전송하여 연결을 시작한다. 패킷에는 호스트 X가 전송해야 하는 데이터의 시퀀스 번호 시작을 나타내는 시퀀스 번호(4321)이 있다. 

2. 패킷을 수신한 서버는 시퀀스 번호로 응답(ACK)한다. 이때 ACK는 SYN + 1의 값을 가진다. 

3. SYN-ACK를 수신한 클라이언트는 받은 SYN에 역시 1을 더해 서버로 보낸다. 

 

위 방식을 통해서 TCP는 연결 지향적인 특성과 오류 처리 기능, 데이터의 신뢰도 보장을 할 수 있다. 

출처 - www.guru99.com/tcp-3-way-handshake.html

'CS > network' 카테고리의 다른 글

URI와 URL, URN  (0) 2021.05.08
TCP vs UDP  (0) 2021.05.07
IPv6 (Internet Protocol version 6)  (0) 2021.04.25
반 이중(Half Duplex) 방식 vs 전 이중(Full Duplex) 방식  (0) 2021.04.23
라우터와 스위치에 대하여  (0) 2021.04.22