TCP와 UDP의 특징과 차이

2023. 6. 21. 17:29ETC/Network

오늘은 OSI 7 Layer 중 4계층인 전송 계층에서 TCP와 UDP에 대해 정리해보고자 한다.

 

TCP

 

TCP(Transmission Control Protocol) 은 전송 제어 프로토콜 이라고도 불린다. 컴퓨터가 다른 컴퓨터와 통신을 위기 위한 프로토콜의 일종이다.

TCP 의 특징

기존에 IP Protocol을 이용해서 데이터를 전달할 때는 비연결성 (패킷을 받을 대상이 없거나 대상이 서비스 불능 상태여도 패킷을 전달하는 문제)와 비신뢰성 (데이터 소실, 순서 보장 불가의 문제)가 있었다. 이러한 문제를 해결하기 위해서 등장한 것이 TCP이다.

연결지향 - Three way Hand Shaking

Three way Hand Shaking은 TCP 통신에서 정확한 전송을 보장하기 위해 상대방 컴퓨터와의 초기 환경을 수립하는 과정이다.

  1. 클라이언트는 서버에 연결 요청을 위한 SYN(synchronization) 데이터를 보낸다.
  2. 서버가 데이터 수신이 가능하다면 받은 SYN과 함께 요청을 정상적으로 받았다는 ACK(acknowledgement) 데이터를 다시 클라이언트에 보낸다.
  3. 클라이언트도 마찬가지로 요청을 정상적으로 잘 받았다는 ACK 데이터를 서버에 보냄으로 써 정확한 전송을 보장하기 위한 초기 환경이 수립이 된다.
  4. 데이터 전송 (최근에는 ACK를 보낼 때 데이터도 같이 전송을 한다고 한다.)

이러한 과정을 통해 클라이언트도 서버를 신뢰할 수 있고 서버도 클라이언트르 신뢰할 수 있다. 또한 앞서 말한 비연결성의 문제를 해결할 수 있다.

데이터 전달 보증

클라이언트가 서버에 데이터를 전달했는데 데이터가 잘 전송되지 않았다면 클라이언트는 데이터가 전달되지 않았다는 것을 알 수 있다.

클라이언트가 데이터를 전송하면 서버는 데이터를 잘 받았다고 다시 전달을 해준다. 이때 잘 받았다는 정보를 RTT (Round Trip Time) 보다 조금 긴 Timeout Value 가 지나도 받지 못한다면 데이터를 재전송 (retransmission) 한다. 그래서 데이터의 전달 보증이 되며 신뢰할 수 있게 된다.

데이터 전달 순서 보장

TCP sement에는 sequnece number가 들어간다. 이를 통해 데이터의 전달 순서를 가지고 있다. 클라이언트에서 서버로 패킷을 순서대로 보내지 않는다면 서버는 클라이언트에 순서가 바뀐 패킷부터 다시 보내라고 한다. 이런 식으로 하여 데이터 전달의 순서가 보증된다.

 

TCP segment 구조

UDP

UDP(User Datagram Protocol)는 비연결 지향적 프로토콜이다. TCP와 다르게 3 way hand shaking 없이 연결 절차를 거치지 않고 일방적으로 데이터를 발신한다. 이에 TCP에 비해서 데이터의 전달 속도는 훨씬 빠르지만 데이터 전달의 신뢰성은 떨어진다.

UDP 의 특징

  1. 비연결지향적 -> 3 way handshaking이 없다.
  2. 데이터 전달 보증 불가
  3. 순서 보장 불가
  4. 단순하고 전송 속도가 빠름

IP와 거의 같지만 PORT와 checksum 정도가 추가된다.

* checksum : 비트 단위 데이터 유효성 검사

UDP segment 구조

TCP / UDP 의 공통점과 차이점

  TCP UDP
공통점 PORT 번호를 이용하여 주소 지정
데이터 유효성 검사를 위한 checksum 존재
연결 방식 연결지향적 비연결지향적
데이터 전송 순서 순서에 맞게 보낸다 순서가 바뀔 수 있다.
데이터 전달 보증 보장한다 보장 하지 않는다
통신 방식 일대일 일대일 / 일대다 / 다대다
신뢰성 높음 낮음
속도 느림 빠름