태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
 

 
블로그 이미지
[www.netrain.co.kr]에서 네트워크/보안을 공부하시는 분들을 위해 서비스를 제공하는 블로그입니다 승진아빠
Follow silpir  on Twitter


TCP와 UDP는 무슨 차이가 있나요?

네트워크 기초 | 2010.04.28 08:08 | Posted by 승진아빠

SP CCIE 과정이 생각보다 호응이 좋더군요. 저희 교육센터에서는 CCNA도 4분이상 모시고 강의한 적이 없는데, 벌써 SP CCIE 과정을 신청하신 분이 3분, 갈등중인 분이 2분이세요. 노동부 신고 들어가지 않으려고 했는데, 한분이 부탁하셔서 노동부 신고과정으로 변경했거든요. 즉, 160만원에 50여만원 환급받으시는거죠.

계약직으로 능력개발카드가 있으신 분들은 100만원 환급받도록 했고요. 강의의 질을 높이기 위해 최대 인원은 6명까지만 받을 생각입니다.  수강생 분들이 너무 많으면 진도 빼기도 힘들고, 제가 다 챙겨드리기도 힘들거든요. ^^

자, 그럼 진도 나가볼까요? 많은 분들이 다 아시는 내용이겠지만, TCP와 UDP는 TCP/IP의 대표적인 Transport Layer Protocol입니다. 그려면, TCP하고 UDP는 무슨 차이가 있나요? 무엇인가 차이가 있으니까 다른 이름을 붙이지 않았겠습니까!

오늘은 그 차이를 좀 설명 드리려고 합니다.

1. Connection Oriented Protocol vs. Connectionless Protocol

TCP는 3-way handshaking을 통하여 Session을 수립 후에 통신을 하는 Connection Oriented (연결지향형) Protocol 입니다. 그에 반해 UDP는 상대방이 받던 받지 못하던 무작정 데이터를 전송하는 Connectionless (비연결형) Protocol 입니다. 그럼, 언제 UDP를 사용할까요?

예를 들어 DNS 같은 경우 예로 보세요. 누군가 DNS 서비스를 요청할 때마다 TCP처럼 Session을 맺고 통신을 한다면 속도도 느리고, 서버 리소스도 엄청나게 소모될 겁니다. 그런가 하면 NMS(Network Management Server)가 5분에 한번씩 장비 상태를 점검하기 위해 정보를 읽어오는데 수백, 수천대의 장비와 Session을 맺어야 한다면 이것도 마찬가지로 문제가 있겠죠? 그래서, SNMP(Simple Network Management Protocol)는 UDP를 사용하는 Protocol입니다.

2. Reliable vs. Best Effort

TCP는 데이터 전송에 문제가 발생했을 경우, 재전송 요청 등을 통해서 데이터가 정확하게 전송되는 것을 보장하는 Protocol인 반면, UDP는 에러가 생기든 말든... 보내는 놈이나 받는 놈이나 신경을 쓰지 않는 Protocol입니다. 이런, 이따위 Protocol을 어디에 쓸까요?

재전송을 하면 안되는 서비스들이 있습니다. 대표적인 예가 바로 Real-Time Protocol입니다. 전화를 하고 있다고 가정해 보세요. '여''보''세''요'라는 4개의 데이터를 전송했는데, '세'를 못 받았다고 다시 보내달라고 하면 '여보요세'가 될겁니다. 그냥 '여보X요'로 전달하는게 더 낫겠죠?

그런가 하면 Multicast 서비스가 UDP를 사용합니다. 1:N으로 통신하는 방식에서 한놈이 데이터를 받지 못했다고 재전송 요청을 한다고 생각해보세요. 제대로 받은 놈들도 해당 데이터를 다시 받아서 처리해야 한다는 문제가 발생할 수 있습니다. 그래서 UDP를 사용하는거죠!

그리고, UDP는 상대방이 잘 받았는지 못 받았는지 신경을 쓰지 않으니 Ack가 별도로 필요없겠죠? ^^

3. Sequence Number vs. Non-Sequencing

TCP는 데이터 유실 등을 확인하기 위하여 데이터마다 Sequence Number라는 번호를 붙여서 전송을 합니다. 하지만, UDP는 데이터 유실에 관심이 없기 때문에 Sequence Number가 없는 Non-Sequencing Protocol 입니다. 그럼, 데이터를 전송할 때 상이한 경로로 전송되서 나중에 보낸 데이터가 먼저 도착하게 되면 어떻게 되나요? 예를 들어 '여''보''세''요'를 전송했는데 '여''세''보''요' 순으로 도착을 한겁니다.

이렇게 데이터 전송 순서를 알아야 하는 서비스는 RTP(Real-time Protocol)과 같은 Sequence Number 기능을 가지고 있는 기술과 함께 쓰이거나 어플리케이션 수준에서 Sequencing을 수행합니다.
 
4. Half-duplex vs. Full-duplex

Layer 2에서의 duplex가 아니구요, 한개의 Port를 이용하여 [upload/download]가 가능한가에 대한 부분입니다. 원칙적으로 UDP는 Half-duplex이고 TCP는 Full-duplex 입니다. 하지만, UDP도 어플리케이션 개발 방식에 따라 Full-duplex 방식으로도 설계가 가능합니다. 그래서, TCP를 Full-dulpex 방식이라고 이야기하지만, UDP를 Half-duplex 또느 Full-duplex 방식이라고 정의하지는 않습니다.

5. Control vs. Don't care

TCP는 Error-Contol, Flow-Control 등 이것저것 제어를 많이 합니다. 하지만, UDP는 그런건 그냥 짜증스럽고 귀잖을 뿐입니다. 세상 참 편하게 사는 놈이죠! 저는 언제쯤 UDP같이 살 수 있을까요? ^^

오늘은 간단하게 UDP와 TCP의 차이점에 대해서 학습하였습니다. 내일은 RTP(Real-time Protocol)에 대해 간단하게 설명을 드리고, 드디어, 스위치 및 라우터 기술을 학습하도록 하겠습니다.
그리고, 금요일 저녁 19:00 ~ 20:00에는 실시간 온라인 강의를 시험운영해 보려고 합니다. 금요일 카페나 홈페이지 공지를 꼭 확인해 주세요.