TCP(Transmission Control Protocol) vs UDP(User Datagram Protocol)
TCP(전송 제어 프로토콜)와 UDP(사용자 데이터그램 프로토콜)는 인터넷 활동을 관리하는 규칙 집합인 인터넷 프로토콜(IP) 제품군에서 가장 널리 사용되는 두 가지 프로토콜이다.
TCP(전송 제어 프로토콜)
- 연결 지향: TCP는 연결 지향 프로토콜이다. 즉, 데이터를 전송하기 전에 발신자와 수신자 간에 연결을 설정한다. 이 설정은 안정적인 통신 채널을 보장한다.
- 신뢰성: 안정적인 데이터 전송을 제공하여 전송된 모든 패킷이 대상에서 올바르게 수신되도록 보장한다. 이는 ACK(승인) 및 손실된 패킷의 재전송을 통해 달성된다.
- 순서 및 데이터 무결성: TCP는 데이터 패킷의 순서를 유지하고 데이터에 오류가 있는지 확인한다. 패킷이 순서 없이 도착하면 TCP는 패킷의 순서를 변경한다. 또한 손상된 패킷을 감지하고 삭제하여 재전송을 요청한다.
- 흐름 제어: TCP는 흐름 제어를 구현하며, 송신자가 한 번에 너무 많은 데이터를 수신자에게 송신하지 않도록 보장한다.
- 혼잡 제어: 네트워크 상태에 따라 데이터 전송 속도를 조정하여 네트워크 혼잡을 방지한다.
- 사용 사례: 웹 탐색(HTTP/HTTPS), 이메일(SMTP, IMAP/POP) 및 파일 전송(FTP)과 같이 안정성이 중요한 애플리케이션에 이상적이다.
TCP 핸드셰이크❗️
클라이언트와 서버 간의 네트워크 연결을 설정하기 위해 TCP(전송 제어 프로토콜)에서 사용하는 표준 방법으로, 데이터 교환을 위한 안정적인 연결을 구성하고 보장하는 3단계 프로세스이다.
- SYN
- 클라이언트는 SYN(동기화) 제어 플래그가 설정된 세그먼트를 전송하여 핸드셰이크를 시작한다. 이 세그먼트는 연결을 설정하려는 클라이언트의 요구를 나타내며 클라이언트와 서버 간의 시퀀스 번호를 동기화하는 데 사용되는 초기 시퀀스 번호를 포함한다.
- SYN-ACK
- SYN 요청을 받으면 서버는 자체 세그먼트로 응답하는데, 이번에는 SYN 및 ACK(승인) 제어 플래그가 모두 설정되어 있다. ACK 플래그는 클라이언트의 초기 시퀀스 번호(클라이언트의 SYN)를 확인하고, SYN 플래그는 서버가 연결을 설정할 준비가 되었음을 나타내며 자체 초기 시퀀스 번호를 제공한다.
- ACK
- 마지막으로 클라이언트는 서버의 시퀀스 번호를 확인하는 ACK 플래그가 설정된 확인 세그먼트를 서버로 다시 보내며, 이로써 3방향 핸드셰이크가 완료되고 연결이 설정된다.
UDP(사용자 데이터그램 프로토콜)
- 연결 없음: UDP는 연결 없는 프로토콜이며, 수신기와 연결을 설정하지 않고 데이터를 전송하므로 신뢰성을 희생하면서 더 빠른 데이터 전송이 가능하다.
- 속도 및 효율성: 오버헤드가 최소화되므로(연결 설정 없음, 승인 없음) 특정 유형의 통신에 대해 더 빠르고 효율적이다.
- 수신 보장 없음: 전송된 패킷이 목적지에 도달한다는 보장이 없다. 승인이 없으며 손실된 패킷은 재전송되지 않는다.
- 순서 유지 관리 없음: UDP는 패킷 순서를 유지하지 않으며, 패킷은 순서 없이 도착할 수 있다.
- 사용 사례: 스트리밍 비디오 또는 온라인 게임과 같이 안정성보다 속도가 더 중요한 애플리케이션에 사용된다.