TCP와 UDP의 비교

김승우·2021년 10월 29일
0

networkterm

목록 보기
2/5

TCP (Transmission Control Protocol)

TCP는 전송계층에 속하는 프로토콜로서, 연결 지향(Connection-oriented)적인 프로토콜입니다.

TCP의 대표적인 특징으로는 reliable, 즉 신뢰할 수 있다는 점입니다.

즉 네트워크에서 파일을 전송하고 나서 수신자가 누락없이, 순서에 맞춰 받을 수 있다는 점입니다. 이것이 TCP의 가장 큰 특징입니다.

TCP에서는 3-Way handshaking(가상 연결)을 이용하는데, 이것이 상대 컴퓨터와 연결을 하기 전 약속을 하는 것입니다.

클라이언트와 서버 사이의 통신을 예로 들어보겠습니다.

  • 클라이언트에서 서버로 통신을 위한 동기화 요청을 보냅니다.
  • 서버는 클라이언트에게 동기화를 하겠다는 ACK를 보내고 동기화를 진행합니다.
  • 클라이언트는 다시 서버가 확인했다는 ACK를 받고 자신도 알겠다는 ACK를 서버 측에 전송하게 됩니다.

이와 같이 3-Way handshaking을 진행하게 됩니다.

위에 언급했던 데이터 전달 보증과 순서의 보증으로 TCP는 신뢰할 수 있는 프로토콜이라고 말할 수 있습니다.

신뢰할 수 있는 통신을 하기 위해 TCP에서는 몇 가지 작업을 수행하는데, 이 때문에 UDP보다 상대적으로 속도가 느리게 됩니다.

TCP는 데이터의 손실이 없이 오는 것이 중요한 웹이나 SMTP(Simple Mail Transfer Protocol)와 같은 메일을 보낼 때 사용됩니다.

TCP의 헤더를 살펴보겠습니다.

위와 같이 데이터의 전달 보증과 순서 체크, 그리고 비트 에러를 체크하기 위한 체크섬 파트가 들어있습니다.

UDP (User Datagram Protocol)

UDP 또한 TCP와 마찬가지로 전송계층에 속하는 프로토콜입니다.

TCP와 대조되는 프로토콜이라고 말할 수 있는데, TCP와 반대로 연결 지향적이지 않은(Connectionless) 특징을 가지고 있습니다.

UDP의 대표적인 특징으로는 군더더기 없는(no frills) 통신을 한다는 것입니다. 항상 최선을 다하지만 데이터를 잃어버릴 수도 있으며 순서가 바뀌어서 도착할 수도 있습니다.

데이터가 제대로 전달된다는 것에 대해서는 보증을 하지 않으며 순서에 대해서도 보장하지 않습니다.

이렇게만 있다면 '왜 UDP를 사용하는가?'라는 질문이 나올 수 있는데, 신뢰할 수 있는 통신을 위해 TCP에서는 많은 작업을 수행되기 때문에 군더더기 없는 UDP가 속도가 더 빠르기 때문입니다.

UDP의 헤더 포맷을 한 번 살펴보겠습니다.

TCP의 헤더와 비교했을 때 매우 단순하다는 것을 알 수 있습니다. 소스 포트의 번호와 목적지 포트의 번호, 길이와 체크섬 정도가 되겠습니다.

UDP의 경우, 손실이 있어도 딜레이가 없이 오는 것이 중요한 비디오 스트리밍이나 스카이프와 같은 VoIP 등에서 사용됩니다.

제일 중요한 것은 TCP와 UDP의 각각은 신뢰할 수 있는 프로토콜과 신뢰할 수 없는 프로토콜이라는 것 입니다.

정리해 보았는데, 부족한 점이 있다면 댓글로써 알려주신다면 정말 감사드리겠습니다.

profile
인천대학교 임베디드시스템공학과 졸업 후 SSAFY 10기 과정을 이수하고 있습니다.

0개의 댓글