TCP(Transmission Control Protocol)
TCP 통신을 하려면 먼저 네트워크 연결 설정이 필요합니다. TCP 연결 수립 과정은 3-Way 핸드셰이크 과정을
TCP 연결을 생성할 때는 3-Way 핸드셰이크를 이용해요.
- SYN: 클라이언트가 서버에게 SYN(synchronize) 플래그가 설정된 메시지를 보냅니다. 이때 SYN은 클라이언트의 임의 시퀀스 번호 A를 포함합니다.
- SYN-ACK: 서버는 클라이언트의 SYN에 응답하여 SYN-ACK 메시지를 보냅니다. 서버는 자신만의 새로운 시퀀스 번호 B를 포함한 SYN을 전송하고, 클라이언트의 시퀀스 번호 A에 1을 더한 ACK(acknowledgment)를 함께 보냅니다(A+1).
- ACK: 클라이언트는 서버로부터 받은 SYN에 대해 ACK 메시지를 전송합니다. 이때 ACK는 서버의 시퀀스 번호 B에 1을 더한 값(B+1)을 포함합니다.
1-2번 과정은 클라이언트와 서버 간의 연결을 확인하고, 2-3번 과정은 반대로 서버가 클라이언트의 연결 요청을 승인하는 과정입니다. Handshake로 안정적인 연결이 확보되면 안전한 데이터 통신을 시작할 수 있어요.
핸드셰이크 과정에서 클라이언트와 서버는 시퀀스 번호를 설정하고, 윈도우 크기를 협상해 데이터 흐름을 제어하기 때문에 신뢰성 있는 데이터 전송이 가능해요. 또, 패킷 손실이 발생해도 재전송 메커니즘을 통해 데이터를 정확하게 전달할 수 있어요.
클라이언트와 서버 사이에 데이터 통신이 완료되면 4-Way 핸드셰이크로 연결이 해제돼요. 클라이언트와 서버는 FIN 및 ACK 메시지를 교환하여 세션을 안전하게 종료합니다.
UDP(User Datagram Protocol)
UDP 특징
- 비연결형 서비스로 데이터그램 방식을 제공한다
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
- UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 신뢰성이 낮다
- TCP보다 속도가 빠르다