Computer Science/네트워크(Network)

TCP UDP 비교 완벽 정리

student513 2021. 3. 12. 11:02

Transport Layer Protocol

  • TCP, UDP는 5 layer 중 Transport Layer의 통신 프로토콜입니다.
  • Transport Layer는 logical connection을 기반으로 프로세스 간의 통신이 일어나는 레이어입니다.
  • End point간 신뢰성 있는 데이터 전송을 담당하는 계층입니다.
    • 신뢰성: 데이터를 순차적이고 안정적으로 전달
    • 전송: 포트번호에 해당하는 프로세스에 데이터를 전달
  • flow control을 담당
  • congestion control을 담당

TCP: 연결기반, 신뢰성

Application으로부터 받은 Message에 header를 붙여 encapsulation하여 세그먼트로 만들어 logical channel로 전송합니다.

데이터 전송단위: Segment

신뢰성있는 데이터 통신을 가능하게 해주는 프로토콜입니다.

  • 3 way-handshake connection - 양방향 통신

  1. (Client) SYN bit를 1로 설정해 패킷 송신
  2. (Server) SYN, ACK bit를 1로 설정해 패킷 송신
  3. (Client) ACK bit를 1로 설정해 패킷 송신

TCP의 데이터 전송 방식

 

  1. Client가 패킷 송신
  2. Server에서 ACK 송신
  3. ACK를 수신하지 못하면 재전송

TCP의 역할

  • 순차전송
  • Flow control
    • 패킷을 생성하는 샌더와 패킷을 처리하는 리시버 간에 Date rate의 균형을 맞춰야 합니다.
    • 리시버의 Date rate가 낮으면 오버플로우가 발생합니다.
  • Congestion control
    • Flow control을 보장하기 위해 Congestion Window를 이용합니다. 윈도우에 패킷을 담아서 보냅니다.
    • 네트워크에서 혼잡 상황이 발생하면 샌더에게 윈도우의 사이즈 조절을 요청합니다. 보통 샌더가 전송하는 데이터가 너무 클 때 혼잡상황이 발생하므로 낮추기를 요청합니다
  • Error detection

단점

  • 3 way-handshake connenction은 매 번 통신할 때마다 일어나기 때문에 시간 손실
  • 패킷을 조금만 손실해도 재전송

UDP: 연결없음, 신뢰안함

Application layer로부터 받은 Message를 세그먼트 단위로 쪼개지 않고, UDP 헤더만 붙여 데이터그램 단위로 처리합니다.

전송 단위: Datagram

UDP의 데이터 전송방식

  • Connectionless: Client는 패킷을 확인 안하고 무조건 송신. Server는 소캣 무조건 열어두고 있음

특징

  • 순차전송 ❌
  • Flow Control ❌
  • Congestion Control ❌
  • Error detection: UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 비교적 데이터의 신뢰성이 중요하지 않을 때 사용(ex. 영상 스트리밍)

TCP UDP 비교

중요한 점

  • TCP, UDP의 특성을 파악하고, 상황에 따라 적절한 프로토콜을 이용할 수 있다.
  • TCP, UDP의 헤더를 파악하고 성능개선에 이용할 수 있다.

 


추가

TCP/IP 5계층 모델

  • osi 7 layer(수업에서 중요하게 다룬 부분은 아닙니다. 추가된 두 레이어가 있다는 것 정도만 알아두세요.)
    • Application
    • Presentation
    • Session
    • Transport
    • Network
    • Datalink
    • Physical