🧐TCP & UDP
TCP란??
Transmission Control Protocol는 연결지향 프로토콜로 컴퓨터가 인터넷과 소통하는 방식중에 하나이다. TCP는 packet이 에러를 확인하고 data를 안전하게 전송한다.(일반적으로 TCP와 IP를 같이 씁니다.)
TCP가 packet을 추적하고 관리한다. TCP는 packet이 잘 도착 했는지, IP는 최단경로로 정확한 목적지에 갔는지 주요목표가 조금 다릅니다.
ex) TCP는 택배기사, IP는 트럭 네비게이션
UDP란??
User Datagram Protocol로 비연결형 프로토콜이다. TCP와 유사하지만, 에러를 확인하고 서비스를 복구하는 기능이 없다. 대신에, UDP는 지속적으로 데이터를 받는다는 장점이 있다.
각각의 packet이 독립적으로 경로를 설정하여 전송된다.
⭕️ 공통점
- packet을 인터넷으로 보내기위한 보편적인 프로토콜이다.
❗️ 차이점
1️⃣ 연결성
-
TCP는 매우 연결 지향적이다.
즉, data통신 이전에 연결이 되어있어야 하고, 통신이 끝나면 연결을 끊어야 한다.
- 3way handshake로 연결하고 4way handshake로 해제한다.
-
UDP는 효율적이게 통신을 처리한다.
TCP와는 다르게, 통신을 열고 진행하고 닫기 위한 Overhead가 없다.
- overhead : 어떠한 처리를 위해 들어가는 간접적 처리시간.
문맥상 안정성 처리를위해 추가시간이 없다로 이해하면 좋을 것 같다.
2️⃣ 신뢰성
- TCP는 신뢰도가 높다.
발신자와 수신자를 3way-handshake로 수신자가 연결 가능한 상태인지 확인한 후 data전송을 하여 보다 신뢰성을 높인다.
-> 데이터의 흐름을 제어한다.
- 연속성이나 시간보다 신뢰성이 중요할때 사용하는 프로토콜이다.
🧾 사용예
- world wide web(HTTP,HTTPS)
- secure shell (SSH)
- File Transfer Protocol (FTP)
- Email (SMTP,IMAP/POP)
- UDP는 데이터 전송에 대한 신뢰를 확신할 수 없다.
- 신뢰도보다 연속성, 속도에 적합한 통신방식
🧾 사용예
- VPN tunneling
- 비디오 스트리밍
- online game
- Live 방송
- DNS (Domain Naming System)
3️⃣ 정확성
- TCP는 error를 확인하는 메커니즘이 포함되어 있다.
(왜냐? flow-control을 하니까)
- UDP는 checksum같은 기본적인 error check만 제공한다.
- checksum은 중복검사이며, 송신된 자료의 무결성을 보호하는 단순한 방법이다.
즉, 전송된 값이 변경 되었는지 정도만 확인함
4️⃣ 순서 정렬
- TCP는 packet을 순서대로 보내고 순서대로 받는다.
- UDP는 packet을 받는데 순서가 없다.
요청이 오면 오는 순서대로 application layer순서대로 처리한다.
5️⃣ 속도
- TCP는 상대적으로 느리다.🐢
- UDP는 상대적으로 빠르고 효율적이다. 🐇
6️⃣ 재전송
- TCP는 잃어버린 packet에 대해 재전송이 가능하다.
예를들어, 3way handshake중 SYN에 대한 ACK를 받지 못하면 다시 SYN를 보낸다.
- UDP는 잃어버린 packet에 대해 재전송이 불가하다.
7️⃣ 용량
- TCP Header의 용량은 20-60bytes (참고로, 1byte === 8bit)
- UDP Header의 용량은 8bytes
- Header 에 담기는 정보들
- source port, destination port
- Sequence Number
- Ack Number
- Data offset
- reserved
- Flags
- window size
- checksum
예시
🔎 상황 : 편지를 전달해 주어야 하는데, 전달할 집이 강 건너에 있다. 어떻게 전달해야 할까??
1️⃣ 다리를 만들어 직접 전달한다 (TCP)
2️⃣ 비둘기로 보낸다 (UDP)
References