Skip to content

Latest commit

 

History

History
104 lines (85 loc) · 3.56 KB

TCP&UDP.md

File metadata and controls

104 lines (85 loc) · 3.56 KB

TCP & UDP

TCP

Transmission Control Protocol

  • 인터넷 기본 프로토콜 중 하나로 TCP/IP 모델의 하위 게층에 관계없이 응용 프로그램이 신뢰성 있는 통신을 할 수 있다.
    • 송/수신 호스트 내 프로세스 상호 간에 신뢰적인 연결 지향성 서스를 제공
      (데이터가 온전하게 전달될 것이라는 보장이 있음)
  • IP의 비신뢰적인 최선형 서비스에다가 신뢰적인 연결지향성 서비스를 제공
  • 신뢰적인 전송을 보장함으로써, 어플리케이션 구현이 한층 쉬워지게 됨

특징

신뢰성이 있음 (Reliable)

  • 패킷 손실/중복/순서 바뀜 등이 없도록 보장한다.
  • TCP 하위 계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성을 제공한다.

연결지향적 (Connection-oriented)

  • 같은 전송계층의 UDP가 비연결성(connectionless) 인 것과 달리, TCP는 연결지향적이다.
    • 느슨한 연결(Loosly Connected)을 가지므로 강한 연결을 의미하는 가상회선이라는 표현보다는 오히려 연결지향적이라고 말한다.
  • 연결 관리를 위한 연결 설정 및 연결 해제가 필요하다.
  • 양단간 어플리케이션/프로세스는 TCP가 제공하는 연결성 회선을 통해 서로 통신한다.

데이터 전송 방법

  • TCP는 많은 수의 응용 프로그램 계층 프로토콜을 제공하기 때문에 데이터(세크먼트)가 수신자에게 올바르게 도달해야 한다.
  • 오류없이 순서대로 세그먼트를 전송할 때 세그먼트가 손상되거나 손실되면 자동으로 TCP 프로토콜 재전송을 시작한다.
  • 어플리케이션 계층의 개입없이 모든 유형의 문제를 해결할 책임이 있기에, 데이터가 오류 없이 수신자에게 도달할 수 있게 된다.

MSS (Maximum Segment Size)

  • TCP가 단일 세그먼트에서 수신할 수 있는 최대 크기(바이트) 이며, MTU와 비슷하지만 MSS는 전송 계층 수준에 있다.
  • 최상의 성능을 얻으려면 MSS가 IP 조각화를 피할 수 있을 정도로 작아야 한다.
  • MSS는 일반적으로 TCP 헤더 자체를 통해 통신 채널의 양쪽에 보급된다.
  • 일반적인 크기는
MTU(일반적으로 1500byte) - TCP 헤더(가변 길이 20byte 이상) - IP헤더(가변 길이 20byte 이상)



UDP

User Definition Protocol

  • 전송 계층의 통신 프로토콜의 하나로 TCP와 대비된다.
  • 신뢰성이 낮은 프로토콜로써 완전성을 보증하지 않으나, 가상회선을 굳이 확립할 필요가 없고, 유연하며, 효율적 응용의 데이터 전송에 사용된다.

특징

비연결성 / 신뢰성 없음 / 순서화 되지 않은 Datagram

  • 확인 응답 X
    • 메세지가 제대로 도착했는지 확인하지 않음
  • 순서 제어 X
    • 수신된 메세지의 순서를 맞추지 않음
  • 흐름 제어 X
    • 흐름 제어를 위한 피드백을 제공하지 않음
  • 오류 제어 거의 X
    • 검사합을 제외한 특별한 오류 검출 및 제어 없음
    • UDP를 사용하는 프로그램 쪽에서 오류 제어 기능을 스스로 갖추어야 한다.
  • 논리적인 가상회선 연결이 필요 X
    • 비연결접속 상태 하에서 통신

실시간 응용 및 멀티 캐스팅 기능

  • 빠른 요청과 응답이 필요한 경우에 적합
  • 1 : 다수 전송이 가능하다.

헤더가 단순

  • TCP 처럼 16비트의 포트 번호를 사용하지만, 헤더는 고정 크기 8yte만 사용한다.
    • 즉, 헤더 처리에 많은 시간/노력을 요하지 않는다.
    • (TCP는 20btye)



비교

비교 TCP UDP
신뢰성 O X
연결성 X O
송수신자 간의 연결 여부 연결되어야 통신 가능 연결 없이도 통신 가능
- TCP는 신뢰성이 있고 연결지향적이지만, UDP는 신뢰성이 없고 비연결적이다.
- TCP는 송신-수신자 연결이 되어있어야 통신이 가능하지만, UDP는 연결되어있지 않아도 가능하다.



사용 예시

  • TCP

    • 순서를 보장하고 신뢰도가 높다는 점에서 HTTP 통신, 이메일, 파일전송 등 순서대로 도착해야 하는 상황에 사용된다.
  • UDP

    • 순서는 보장해주지 못하지만 실시간으로 반응해야하는 실시간 방송이나 게임 등에서 사용된다.

Q. 채팅 구현 시 TCP를 사용하는 이유는??

  • 연결된 상태에서 순서대로 송신자와 숫니자가 보낸 메세지를 그대로 전송할 수 있기 때문이다. -> 따라서 양방향 통신에 유리하다. (UDP는 그 순서를 보장해주지 못하기 때문.)
참고링크