📒 TCP / UDP 비교
📌 TCP / UDP 비교
- 네트워크 통신은 택배를 보내는 것과 유사하다.
- 택배 : 상품 포장 - 배송 정책 결정 - 주소 기입 - 단지 경로 - 택배 운송
- 네트워크 : 피지컬 - 데이터 링크 - 네트워크 - 트랜스포트 - 애플리케이션
- 데이터를 전송할 때 단순히 데이터만 전송되는 것이 아닌 위 정보들이 추가되어 같이 전송되게 된다.
- TCP / UDP의 차이는 '트랜스포트' 단계의 정책이다.
- 패킷이 전송될 때 어떤 정책으로 전송할 것이며 분실됐을 때 어떻게 책임질 것이냐 등의 차이가 있다.
📌 TCP / UDP 차이점(면접에서 자주 출제)
TCP
UDP
📌 TCP / UDP 연결 지향성
TCP (연결형 서비스 - 전화)
- 연결을 위해 할당되는 논리적인 경로가 있다.
- 전송 순서가 보장된다.
UDP (비연결형 서비스 - 이메일)
- 연결이라는 개념이 없다.
- 전송 순서 보장되지 않는다.
- 경계(Boundary)의 개념이 있다.
📌 TCP / UDP 속도와 신뢰성
TCP
- 분실이 일어나면 책임지고 다시 전송 - 신뢰성이 높다.
- 물건을 주고받을 상항이 아니면 일부만 보냄 - 흐름 / 혼잡 제어
- 고려할 것이 많기 때문에 속도가 느리다.
UDP
- 분실에 대한 책임이 없음 - 신뢰성이 낮다.
- 일단 보내고 생각한다.
- 단순하기 때문에 속도가 빠르다.
📌 TCP / UDP 데이터 경계(Boundary)
TCP (컨베이어 벨트)
- 경계(Boundary)의 개념이 없다.
- 데이터 사이에 경계가 없기 때문에 데이터를 나누어 보내도 어떤 식으로 나누어지거나 합쳐져서 받게 될지 알 수 없지만 순서가 보장된다.
UDP (택배)
- 경계(Boundary)의 개념이 있다.
- 전송한 대로 데이터를 받지만, 순서가 보장되지 않는다.
📌 TCP / UDP 차이점 요약
TCP
- 1) 연결을 위해 할당되는 논리적인 경로가 있다.
- 2) 데이터 경계(Boundary) 없다.
- 3) 전송 순서가 보장된다.
- 4) 분실이 일어나면 책임지고 다시 전송 - 신뢰성이 높다.
- 5) 데이터를 주고받을 상황이 아니면 일부만 보냄 - 흐름 / 혼잡 제어
- ex) 커널의
SendBuffer
가 가득 찼을 때 블로킹이 걸리는 것
- 6) 고려할 것이 많기 때문에 속도가 상대적으로 느리다.
UPD
- 1) 연결이라는 개념이 없다.
- 2) 데이터의 경계(Boundary) 있다.
- 3) 전송 순서가 보장되지 않는다.
- 4) 분실에 대한 책임이 없음 - 신뢰성이 낮다.
- 5) 일단 보내고 생각한다.
- 커널의
RecvBuffer
가 가득 찼다고 해도, 데이터를 전송하게 되면 데이터가 유실된다.
- 데이터를 못 받는 상황인데도 전송하게 되어, 네트워크 회선만 낭비하게 된다.
- 6) 단순하기 때문에 속도가 상대적으로 빠르다.
파란색 글은 서버를 만들 때 개발자 입장에서 편리한 부분이고, 빨간색은 불편한 부분이다.