TCP/UDP

Stormi·2022년 5월 22일
0

네트워크

목록 보기
13/37

인터넷(일반적인 TCP/IP 네트워크)은 애플리케이션에게 2개의 전송 프로토콜 즉, UDP(user datagram protocol)와 TCP(transmission control protocol)를 제공한다. 애플리케이션 개발자는 첫번째로 UDP, TCP 중에 무엇을 쓸 것인지 결정해야한다.

TCP 서비스

  • 연결 지향형 서비스라고 불린다. 왜냐면 애플리케이션 계층 메시지를 전송하기 전에 TCP는 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 한다.(3-way handshake)

  • 이 핸드셰이킹 과정이 클라이언트와 서버에 패킷이 곧 도달할 것이니 준비하라고 알려주는 역할을 한다. 핸드 셰이킹 단계를 지나면, TCP 연결이 두 프로세스의 소켓 사이에 존재한다고 얘기한다.

    이 연결은 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있기에 전이중(full-duplex) 연결이라고 한다.

  • 신뢰적인 데이터 전송 서비스 이다. 통신 프로세스는 모든 데이터를 오류없이 올바른 순서로 전달하기위해 TCP에 의존한다. TCP는 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달하면 그 바이트 스트림을 손실하거나 중복되지 않게 수신 소켓으로 전달한다.

TCP는 혼잡제어를 하면서 데이터의 속도를 조절하는데 UDP는 혼잡제어를 하지 않는다. 그러면 개발자는 TCP의 신뢰성만 사용하고 혼잡제어를 사용하지 않으면 데이터를 효율적으로 전송할 수 있을것이다!!--> 라고 생각하면 아주 틀린생각이다. 왜냐하면 앞의 게시물에서 말한것처럼 개발자는 트랜스포트 계층에대한 통제권이 상당히 제한적이다. 개발자는 UDP, TCP중에 둘이 선택만 가능하며 TCP를 쓰면 당연히 혼잡제어를 사용해야하니 이 생각은 틀린 생각이다.

UDP 서비스

  • UDP는 최소의 서비스 모델을 가진 간단한 전송 프로토콜이다.
  • UDP는 비연결형이므로 두 프로세스가 통신을 하기 전에 핸드 셰이킹을 하지 않는다. UDP는 비신뢰적인 데이터 전송서비스를 제공한다.
  • 즉, 하나의 프로세스가 UDP 소켓으로 메시지를 보내면 UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장하지 않는다.
  • 수신소켕세 도착하는 메시지들의 순서가 뒤바뀔 수도있다.
  • 혼잡제어 방식을 포함하지 않는다. UDP의 송신측은 데이터를 원하는 속도로 하위 계층에 보낼 수 있다.

0개의 댓글