TCP와 UDP는 인터넷 프로토콜 스위트의 두 가지 주요 전송 계층 프로토콜입니다.
TCP(Transmission Control Protocol)
TCP는 신뢰성이 높은 전송 프로토콜로, 데이터의 정확한 전달을 보장합니다.
TCP의 특징
1. 연결 지향(Connection-oriented)
통신을 시작하기 전에 송신자와 수신자 간에 연결을 설정합니다.
이 과정을 TCP 핸드셰이크 라고 합니다.
3-way handshake: SYN, SYN-ACK, ACK 패킷을 교환하여 연결을 설정하는 것
1. 한 컴퓨터(발신자)가 수신 컴퓨터에게 초기 메시지를 보내 연결 설정을 공식적으로 요청합니다.
이를 SYN 메세지(동기화)라고 합니다.
2. 그 후 수신 컴퓨터는 SYN에 대한 승인(SYN-ACK 메시지)를 보냅니다.
3. 마지막으로 발신자가 수신 확인을 해야합니다.(수신 확인 메시지)
이 세단계 과정을 완료하면 데이터 전송을 시작할 수 있습니다.
2. 데이터의 순서 보장(Ordered Delivery)
데이터 패킷이 전송된 순서대로 도착하도록 보장합니다.
각 패킷에는 순서 번호가 부여되며, 수신자는 이를 통해 데이터의 순서를 복구할 수 있습니다.
3. 오류 검출 및 수정(Error Detection and Correction)
전송된 데이터의 무결성을 확인하고, 오류가 발생한 패킷은 재전송을 통해 복구합니다.
4. 흐름 제어(Flow Control)
송신자가 수신자의 수신 속도를 초과하지 않도록 제어합니다.
이는 송신자가 수신자로부터의 확인 응답(ACK)을 기반으로 전송 속도를 조절하는 방식으로 이루어집니다.
5. 혼잡 제어(Congestion Control)
네트워크 혼잡을 감지하고, 이를 완화하기 위해 전송 속도를 조절합니다.
사용 사례
웹 브라우징(HTTP/HTTPS) : 정확한 데이터 전달이 필요
파일 전송(FTP, SFTP) : 데이터 무결성이 중요
이메일(SMTP) : 데이터가 손실되지 않도록 보장
UDP(User Datagram Protocol)
UDP는 간단한 전송 프로토콜로, 빠른 데이터 전송이 필요하지만 신뢰성이 덜 중요한 경우에 사용됩니다.
UDP 특징
1. 비연결 지향(Connectionless)
송신자와 수신자 간의 연결 설정 과정이 없습니다.
패킷은 독립적으로 전송되며, 각각의 패킷은 목적자에 도착할 때까지 별도로 처리됩니다.
2. 데이터의 순서 비보장(Unordered Delivery)
패킷이 순서대로 도착할 것을 보장하지 않습니다.
패킷은 독립적으로 전송되므로, 전송 순서와 도착 순서가 다를 수 있습니다.
3. 오류 검출만(Error Detection only)
오류 검출은 하지만 오류 수정은 하지 않습니다.
수신자가 오류를 감지하면, 그 패킷을 단순히 폐기합니다.
4. 흐름 제어 및 혼잡 제어 없음
UDP는 흐름 제어 및 혼잡제어 기능이 없습니다.
따라서 매우 간단하고 빠르지만, 네트워크 상태에 따른 조정이 없습니다.
사용 사례
실시간 애플리케이션
스트리밍 서비스(Video, Audio)
일정 수준의 패킷 손실을 허용할 수 있으며, 지연 시간이 중요합니다.
온라인 게임
빠른 응답이 중요하며, 일부 패킷 손실을 허용할 수 있습니다.
VoIP(Voice over IP)
음성 통신에서는 지연 시간보다 신뢰성이 덜 중요합니다.
TCP와 UDP의 비교
특성 | TCP | UDP |
연결 설정 | 연결 지향(3-way-handshake) | 비연결 지향(연결 설정 없음) |
데이터 전송 보장 | 신뢰성 보장(재전송, 순서 보장) | 신뢰성 보장 없음(순서 비보장) |
오류 처리 | 오류 검출 및 수정 | 오류 검출만 |
흐름 제어 | 있음 | 없음 |
혼잡 제어 | 있음 | 없음 |
전송 속도 | 상대적으로 느림 | 상대적으로 빠름 |
패킷 오버헤드 | 큼 | 작음 |
사용 사례 | 웹 브라우징, 파일 전송, 이메일 등 | 스트리밍, 온라인 게임, VoIP 등 |
결론
TCP와 UDP는 각각의 용도와 특성에 맞게 설계된 전송 프로토콜입니다.
TCP는 신뢰성과 데이터 무결성이 중요한 애플리케이션에 적합하며,
UDP는 빠른 전송과 낮은 지연 시간이 중요한 애플리케이션에 적합합니다.
네트워크 프로토콜을 선택할 때는 애플리케이션의 요구 사항에 따라 적절한 프로토콜을 사용하는 것이 중요합니다.
'Network' 카테고리의 다른 글
Network | 서브넷(Subnet)이란? (0) | 2024.07.31 |
---|---|
Network | Public IP와 Private IP란? (0) | 2024.07.08 |
Network | IPv4와 IPv6란? (0) | 2024.07.08 |
Network | TCP/IP 모델 (0) | 2024.05.28 |
Network | 방화벽(Firewall) (0) | 2024.05.28 |