본문 바로가기

Programming diary

25. November 20, 2020

 

TCP와 UDP의 개념과 특징 그리고 차이점

 

 

TCP와 UDP는 전송계층에서 사용하는 프로토콜로써, 목적지 장비까지 전송한 패킷을 상위의 특정 응용 프로토콜에게 전달하는 것을 목적으로 한다.

 

프로토콜

 

 

 

 

 

 

 

TCP(Transmission Control Protocol)

장치들 사이에 논리적인 접속을 가능케 하기위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. TCP는 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트라는 블록 단위)를 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. 인터넷 환경에서 기본으로 사용하며 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜. 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리를 담당한다.

 

 

특징

  • 연결형 서비스로 가상 회성 방식을 제공한다.
    연결설정 : 3-way handshaking
    연결해제 : 4-way handshaking
  • 데이터의 경계를 구분하지 않는다.
    데이터는 바이트 스트림으로 읽혀지며 신호 메시지 (세그먼트) 경계로 구분된 표시가 전송되지 않는다.
  • 데이터의 전송 순서를 보장한다.
    흐름제어(Flow control) : 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지한다.
    혼잡제어(Congestion control) : 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지한다.
  • 신뢰성있는 데이터를 전송한다.
    Dupack-based retransmission : 정상적인 상황에서는 ACK 값이 연속적으로 전송되나 ACK 값이 중복으로 올 경우 패킷 이상을 감지하고 재선송을 요청한다.
    Timeout-based retransmission : 일정시간동안 ACK 값을 수신하지 못할 경우 재전송을 요청한다.
  • 전이중(Full-Duplex) 및 점대점(Point to Point) 방식을 제공한다.
    전이중방식 : 전송이 양방향으로 동시에 일어날 수 있다.
    점대점방식 : 각 연결이 정확히 2개의 종단점을 가지고 있다.
  • UDP보다 전송속도가 느리다.

 

 

UDP (User Datagram Protocol)

사용자 데이터그램형 프로토콜. 비연결형 서비스를 지원하는 전송계층 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고, 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다. 즉 보내는 쪽에서는 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없으며 확인할 필요도 없도록 만들어진 프로토콜이다.

 

특징

  • 비연결형 서비스로 데이터그램 방식을 제공한다.
    데이터그램 : 독립적인 관계를 지니는 패킷
  • 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • 신뢰성 없는 데이터를 전송한다.
    전송 된 메시지 또는 패킷이 무조건 도착할 것이라는 보장은 없다.
    오류검사를 진행하지만, 오류가 있을 경우 단순히 해당 패킷을 버리는 정도이며 오류 복구가 시도되지 않는다.
  • 데이터의 경계를 구분한다.
    패킷이 도착할 때만 무결성을 검사하며, 패킷은 수신시 명확한 경계를 가진다. 이는 수신 소켓에서 읽기 작업이 원래 모낸 것처럼 전체 메시지를 생성함을 의미한다.
  • TCP보다 전송속도가 빠르다.

 

 

공통점

TCP(Transfer Control Protocol)와 UDP(User Datagram Protocol) 모두 포트 번호를 이용하여 주소를 지정하고 데이터 오류 검사를 위한 체크섬이 존재한다.

 

결론

TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜이지만 전송시간은 상대적으로 떨어진다.

UDP는 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만, 신뢰성있는 데이터 전송을 보장하지 않는다. 그렇기 때문에 신뢰성보다는 연속성이 중요한 서비스, 즉 게임과 같이 빠르고 효율적인 전송이 필요한 응용 프로그램에 적합하다. UDP의 무 상태 속성은 수많은 클라이언트의 작은 쿼리에 응답하는 서버에도 유용하다.

 



 

 


참고

 

velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4

ko.wikipedia.org/wiki/%ED%86%B5%EC%8B%A0_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

choseongho93.tistory.com/3

hahahoho5915.tistory.com/13

juni5184.tistory.com/10

'Programming diary' 카테고리의 다른 글

27. November 23, 2020  (0) 2020.11.23
26. November 23, 2020  (0) 2020.11.23
Java Developer RoadMap! Study with yuni  (0) 2020.11.19
24. November 04, 2020  (0) 2020.11.04
23. October 27, 2020  (0) 2020.10.27