CS/🖥 네트워크

🖥 TCP 와 UDP의 차이

늦은산책 2023. 9. 16. 18:17
OSI 7계층과 TCP/IP 모델의 전송계층에서 사용되고 있는 프로토콜인 TCP 와 UDP는 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하고 있는 계층이다.

이해를 위한 간단한 모델 별 계층 구조의 사진

💬 TCP

데이터를 중요하게 생각하며 확실하게 주고 받고 싶은 경우 TCP 를 사용하게 된다. 통신을 하게된다면 서로의 컴퓨터끼리 '보냈습니다' 와 '받았습니다' 라고 서로 확인을 하면서 데이터를 주고 받으며 통신의 신뢰성을 가지게 된다.

 

TCP 를 사용하는 예 ) 웹, 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스는 TCP를 사용한다.

 

특징

  • 연결 지향 방식으로 패킷 교환 방식을 사용한다.
  • 3-way-handshake, 4-way-handshake 과정을 통해 연결을 하고 끊는다.
  • 흐름 제어와 혼잡 제어 그리고 오류제어를 제공한다.
  • UDP 보다 속도가 느리다
  • 전 이중 (Full-Duplex), 점대점(Point to Point)
    • 전 이중(Full - Duplex) : 전송이 양방향으로 동시에 일어날 수 있다.
    • 점대점(Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있다

 

TCP 헤더 정보

필드 크기 내용
Source Port, Destination Port 16 TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당되는 포트 주소
Sequence number 32 송신자가 지정하는 순서 번호, 전송되는 바이트 수를 기준으로 증가
SYN = 1 : 초기 시퀀스 번호, ACK 번호는 이 값에 1을 더한다
SYN = 0 : 현재 세션의 이 세그먼트 데이터의 최초 바이트 값의 누적 시퀀스 번호
ACK Number 32 수신 프로세스가 제대로 수신한 바이트 수를 응답하기 위해 사용된다
Data Offset(Header Length) 4 TCP 세그먼트의 시작 위치를 기준으로 데이터의 시작 위치를 표현한다
Reserved 6 사용을 하지는 않지만 나중을 위한 예약 필드이며 0으로 채워진다
Flag Bit 6 SYN, FIN, ACK 등의 제어 번호
Window 16 수신 윈도우의 버퍼 크기를 지정할 때 사용, 0 이면 송신 프로세스의 전송 중지
Checksum 16 TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터에 대한 오류 검출 용도
Urgent Pointer 16 긴급 데이터를 처리하기 위함, URG 플래그 비트가 지정된 경우에만 유효하다

 

 

TCP의 흐름 제어와 오류제어

수신자와 송신자의 메세지 처리 속도 차이를 해결하기 위한 방법으로는 데이터 전송 보장을 위해 다양한 방식의 프로토콜을 사용하고 있다.

흐름을 제어하는 방법으로는 크게 Stop-And-Wait, Go-Back-N, Selective Repeat이 있다.

자세한 내용은 여기서 확인해보자

 

🖥TCP의 흐름제어, 오류제어(Stop-And-Wait, Go-Back-N, Selective Repeat)

전송계층에 해당하는 프로토콜인 TCP는 흐름제어, 오류제어, 혼잡제어를 제공하는데 흐름제어를 하는 방법을 알아보자 💬 Stop - And - Wait 컴퓨터 네트워크 설정에서 재전송을 기반으로 하는 신뢰

latewalk.tistory.com

 

TCP의 혼잡제어

네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡이라고 한다. 이를 방지하고 제거하는 기능이다.

https://latewalk.tistory.com/158

 

🖥 TCP 혼잡 제어(AIMD, Slow Start, Fast Recovery, Fast Retransmit)

TCP의 혼잡 제어는 흐름 제어나 오류 제어와는 다르게 라우터를 포함한 넓은 범위의 전송 문제를 다루게 된다 💬 AIMD(Additive Increase / Multiplicative Decrease) 처음엔 패킷을 하나씩 보내고 문제가 발생

latewalk.tistory.com

 

TCP의 3-way-handshake, 4-way-handshake

TCP는 Sender와 Receive 와 연결하는 방식에 신뢰적인 전송방식을 위해

연결 시 : 3 -way-handshake를 사용한다
연결 해제 시 : 4-way-handshake를 사용한다

자세한 내용은 여기서 확인해보자

 

🖥 3-way Handshake / 4-way Handshake

💬 TCP 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 특징 신뢰적이고 연결 지향성 서비스를 제공하며 패킷의 추적 및 관리를 하는 역할이다. 연결형

latewalk.tistory.com

 

 

💬 UDP

전송계층의 비연결 지향적 프로토콜이다. 비연결 지향적이한 데이터를 주고 받을때 연결 절차를 거티지 않고 발싱자가 일방적으로 데이터를 발신하는 방식을 의미한다. 연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어진다. UDP는 발신자가 데이터 패킷을 순타적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있다. 먼저 보낸 패킷이 느린 선로를 통해 전송 될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 최악의 경우 잘못된 서놀로 전송되어서 유실의 우려가 존재한다. 이럴 경우 TCP와는 다르게 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송이 없다.

 

UDP의 특징

  • 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다
  • 데이터 경계를 구분한다.
  • 정보를 주고 받을때 정보를 보내거나 받는다는 신호 정차를 거치지 않는다.
  • 신뢰성 없는 데이터를 전송하게 된다 때문에 데이터 재전송과 데이터 순서 유지를 위한 작업이 없다
  • 의미있는 서버 구축을 위해서는 패킷 관리를 따로 해주어야 한다
  • 패킷 오버헤드는 적어서 네트워크 부하가 감소된다
  • 상대적을 TCP보다 전송속도가 빠르다

 

💬 TCP 와 UDP의 비교

공통점

  • 포트 번호를 이용해서 주소를 지정
  • 데이터 오류 검사를 위해 체크섬이 존재한다

 

차이점

  TCP UDP
연결 방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서가 바뀔 수 있다
수신 여부 확인 수신 여부를 확인한다. 수신 여부를 확인하지 않는다
통신 방식 1:1 통신에 이용한다 1:1 / N:N / 1:N 모두 사용 가능
신뢰성 높다 낮다
속도 느리다 빠르다