TCP vs UDP
Created 2024-06-19
Last Modified 2024-06-19
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 주요 통신 프로토콜로, 각각 다른 방식으로 데이터를 전송한다.
TCP (Transmission Control Protocol)
특징
- 연결 지향(Connection-oriented)
TCP는 통신을 시작하기 전에 연결을 설정한다. 이 연결은 3-way handshake 과정을 통해 이루어진다. - 신뢰성(Reliability)
데이터 전송의 신뢰성을 보장한다. 데이터 패킷이 손실되거나 손상되면 재전송한다. - 순서 보장(Ordering)
패킷이 순서대로 도착하도록 보장한다. 수신자는 전송된 데이터가 원래의 순서대로 도착하는 것을 확인할 수 있다. - 흐름 제어(Flow control)
송신자와 수신자 간의 데이터 전송 속도를 조절하여 수신자가 데이터를 처리할 수 있도록 한다. - 혼잡 제어(Congestion control)
네트워크 혼잡을 피하기 위해 송신 속도를 조절한다.
용도
- 웹 브라우징(HTTP/HTTPS)
- 이메일(SMTP, IMAP, POP3)
- 파일 전송(FTP)
- 원격 서버 접속(SSH, Telnet)
UDP (User Datagram Protocol)
특징
- 비연결 지향(Connectionless)
UDP는 연결 설정 없이 데이터를 전송한다. - 비신뢰성(Unreliable)
데이터 전송의 신뢰성을 보장하지 않는다. 데이터 패킷이 손실되거나 손상되어도 재전송하지 않는다. - 순서 미보장(No ordering)
패킷의 순서를 보장하지 않는다. 수신자는 패킷이 순서대로 도착하지 않을 수 있다. - 단순한 헤더 구조(Simple header)
TCP에 비해 UDP의 헤더 구조가 단순하여 오버헤드가 적다. - 빠른 속도(Low latency)
TCP보다 전송 속도가 빠르고 지연 시간이 적다.
용도
- 실시간 스트리밍(Media streaming)
- 온라인 게임
- VoIP(Voice over IP)
- 방송(Broadcast)
- DNS(Domain Name System) 조회
3-way Handshake는 TCP(Transmission Control Protocol)에서 연결을 설정하기 위해 사용하는 절차이다. 이 과정은 세 개의 단계로 이루어지며, 클라이언트와 서버 간의 신뢰할 수 있는 통신을 보장하기 위한 중요한 메커니즘이다. 3-way Handshake 과정은 다음과 같다.
- SYN (Synchronize)
클라이언트가 서버에 연결 요청을 보낸다.
이 요청에는 클라이언트의 초기 시퀀스 번호(ISN, Initial Sequence Number)가 포함된다.
패킷의 플래그 필드에 SYN(Synchronize) 플래그가 설정되어 있다. - SYN-ACK (Synchronize-Acknowledge)
서버는 클라이언트의 SYN 요청을 수신하고, 이를 확인하는 응답을 보낸다.
응답에는 서버의 초기 시퀀스 번호(ISN, Initial Sequence Number)와 클라이언트의 시퀀스 번호에 대한 확인 응답(ACK, Acknowledgment)이 포함된다.
패킷의 플래그 필드에 SYN 및 ACK 플래그가 설정되어 있다. - ACK (Acknowledge)
클라이언트는 서버의 SYN-ACK 응답을 수신하고, 이를 확인하는 응답을 보낸다.
이 응답에는 클라이언트의 시퀀스 번호와 서버의 시퀀스 번호에 대한 확인 응답(ACK, Acknowledgment)이 포함된다.
패킷의 플래그 필드에 ACK 플래그가 설정되어 있다.