본문 바로가기
웹 개발

TCP와 UDP

by xosoy 2024. 3. 12.

TCP(Transmission Control Protocol, 전송 제어 프로토콜)

인터넷 상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜. TCP/IP 프로토콜이라고 불린다.

패킷 전송을 제어하여 신뢰성을 보증한다.  IP가 데이터의 배달을 처리(목적지까지 배달)한다면 TCP는 패킷을 추적하고 관리(올바르게 도착했는지) 한다. 각 패킷에 번호를 부여함으로써 분실 여부를 확인하고 목적지에서 재조립한다. 

 

패킷은 데이터를 여러 개로 나눈 조각이다. 데이터를 보내기 위한 경로 배정(라우팅)을 효율적으로 하기 위해서 데이터를 나눈다. 

 

특징

  •  연결 지향 방식(패킷 교환 방식)
    • 패킷을 전송하기 위한 논리적 경로를 배정
    • 데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 유지한다. 
  • 3-way handshaking을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 
    • handshaking: 정보를 보내거나 받는다는 신호 절차
  • 흐름 제어(Flow Control) 및 혼잡 제어(Congestion Control)
    • 흐름 제어: 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우 방지
    • 혼잡 제어: 네트워크 내 패킷 수가 넘치게 증가하지 않도록 방지
  • 높은 신뢰성
  • 전이중(Full-Duplex), Point to Point 방식

메일 전송 같이 신뢰성있는 전송이 중요할 때 사용하는 것이 좋다.

 

UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜 )

데이터를 데이터그램 단위로 처리하는 프로토콜. 데이터그램은 독립적인 관계를 지니는 패킷이다. 

비연결형 프로토콜로 연결을 위해 할당되는 논리적인 경로가 없어서, 각각의 패킷은 다른 경로로 전송되고 독립적으로 처리된다.

 

특징

  • 비연결형 방
    • 연결을 설정하고 해제하는 과정이 존재하지 않는다.
  • 정보을 보내거나 받는다는 신호 절차를 거치지 않는다.
  • 흐름 제어 또는 혼잡 제어를 하지 못한다.
  • 낮은 신뢰성
  • TCP보다 빠른 속도

실시간 스트리밍 같은 연속성이 중요한 서비스에 자주 사용된다.

 

 

 

[참고]

https://mangkyu.tistory.com/15

https://inpa.tistory.com/entry/NW-%F0%9F%8C%90-%EC%95%84%EC%A7%81%EB%8F%84-%EB%AA%A8%ED%98%B8%ED%95%9C-TCP-UDP-%EA%B0%9C%EB%85%90-%E2%9D%93-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EC%9E%90