05-17 04:01
Recent Posts
Recent Comments
관리 메뉴

miinsun

[Network] TCP와 UDP의 차이 본문

Infra/Network

[Network] TCP와 UDP의 차이

miinsun 2021. 12. 3. 18:24

 

- 개요

 

TCP와 UDP는 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용되는 프로토콜이다

 

TCP(Transmission Control Protocol) 연결형 서비스로 UDP에 비해 높은 신뢰성을 보장하며, 데이터의 흐름이 연속적이다. TCP는 데이터의 흐름제어나 혼잡제어와 같은 기능도 하기 때문에 UDP보다 속도가 느리다는 단점이 있다.

TCP서버는 클라이언트와 1대 1로 연결되며, 스트림 전송으로 전송 데이터의 크기에 제한이 없다. 또, 패킷에 대한 응답을 해야하기 때문에 성능이 좋지 않다.

 

UDP(User Datagram Protocol) TCP와 달리 비연결형 프로토콜이다. 즉, 연결을 위해 할당되는 할당되는 경로가 없어, 각각의 패킷은 제각각의 경로로 수신된다. UDP는 수신자가 패킷을 전달 받았는지에 대한 유무를 알 수 없고, 중요하지도 않다. 그래서 TCP에 비해 신뢰성이 낮고, 네트워크 부하가 적어 속도가 빠르다. 이런 특징을 가진 UDP는 주로 실시간 스트리밍 서비스에 사용된다.

UDP서버는 클라이언트와 1대 1, 1대 N, N대 N등의 관계로 연결될 수 있고, 전송되는 데이터의 순서가 바뀔 수도 있다. 또, 클라이언트 서버 간에 연결이 없어 소켓의 구분이 없다.

 

서버/클라이언트 구조

 

- 데이터 흐름도

 

출처: webnautes.tistory.com

크게 몇가지 흐름을 정리해보았다

  • 서버 측
서버는 리스닝 소켓을 만들어, 클라이언트의 응답을 기다린다.
서버와 클라이언트가 연결되면 accept()에서 새로운 소켓을 리턴받아 클라이언트와의 통신에서 사용한다.
  • 클라이언트 측
클라이언트 측에선 connect 함수를 호출하여 서버와 연결하도록한다.
연결이 완료되면, send, recv 함수를 호출하여 데이터를 주고 받는다.
클라이언트가 소켓을 닫아 연결을 종료하면, 서버도 클라이언트와 사용하였던 소켓을 닫는다.

 

참고 - https://webnautes.tistory.com/1381

'Infra > Network' 카테고리의 다른 글

[Network] TCP TimeOut, TCP 재전송  (0) 2022.07.12
[Network] TCP의 이해  (0) 2022.07.12
[Network/Java] 자바 소켓 통신  (0) 2021.12.03
[Network/Python]파이썬 소켓 통신  (0) 2021.12.02
[Network] 네트워크 기본 용어  (0) 2021.11.25
Comments