3-way handshake는 TCP 프로토콜에서 연결 설정 과정을 수행하는 것이다. 이 과정에서 클라이언트와 서버는 서로 세 번의 메시지를 주고받는데, 이를 통해 연결이 설정되고 데이터를 주고받을 수 있는 상태가 된다.
: 클라이언트가 서버에게 연결을 요청하는 메시지를 보낸다. 이때, 클라이언트가 사용할 임시 포트번호도 함께 전송된다.
: 서버는 클라이언트의 요청을 받고 응답으로 클라이언트가 사용한 임시 포트번호에 +1을 한 포트번호를 사용하여 응답한다. 이때, 서버는 SYN과 ACK 비트를 모두 설정하여 응답하게 된다.
: 클라이언트는 서버의 응답을 받으면 ACK 비트를 설정하여 서버에게 응답한다. 이제부터 데이터를 주고받을 수 있는 연결이 설정되었다.
이러한 과정을 통해 클라이언트와 서버는 상호간에 정보를 주고받고, 데이터를 주고받을 수 있는 TCP 연결을 설정한다. 이와는 달리 UDP는 연결 설정 과정이 없고, 데이터를 전송할 때마다 각각의 패킷에 대한 정보를 새로 추가하여 전송한다. 따라서 UDP는 연결 설정에 걸리는 시간이 없어 더 빠르게 데이터를 전송할 수 있지만, 데이터의 신뢰성이 낮고 순서가 보장되지 않는 등의 단점이 있다.
연결형 프로토콜이다.
클라이언트와 서버 간에 3-way handshake를 통해 연결을 설정한다.
신뢰성이 높은 전송 방식을 사용한다. 데이터의 분실, 손상, 중복, 순서 등을 확인하고 재전송을 요청하여 신뢰성 있는 전송을 보장한다.
대표적인 예시로는 웹 브라우저를 이용한 웹 사이트 접속이 있다. 클라이언트는 서버와 3-way handshake를 통해 연결을 설정하고, 데이터를 주고받아 웹 사이트를 보여준다.
비연결형 프로토콜이다.
대표적인 예시로는 실시간 동영상 스트리밍이 있다. 데이터를 실시간으로 주고받아야 하기 때문에 신뢰성은 떨어지더라도 빠른 전송 속도가 필요하다.