(시스템 프로그래밍) 13-3 UDP 기반 프로그래밍

업데이트:
1 분 소요

시스템 프로그래밍 - UDP 기반 프로그래밍

1. UDP 기반 프로그래밍

1) 개념

  • 클라이언트로부터 사전에 연결 요청을 받지 않음
  • 클라이언트 : connect()함수 사용하지 않음
  • 서버 : bind() 함수 후 listen()함수 사용하지 않음
  • 서버 -> 클라이언트 : 클라이언트 주소가 구조체임

(1)

  • IP를 기반으로 데이터를 전송함 (TCP와 공통점)

(2)

  • 흐름제어(flow control)을 하지 않기 때문에 데이터 전송을 보장 받지 못함

(3)

  • 연결설정 및 연결 종료 과정도 존재하지 않음

(4)

  • 연결 상태가 존재하지 않음

2) 특징

  • 데이터 경계가 존재하는 UDP 소켓
  • UDP소켓은 데이터를 송 수신하는데 필요한 함수 호출의 수를 정확히 일치 시켜야함

alt

3) UDP의 역할

  • 포트 정보에 의한 프로세스의 구분
  • UDP 패킷 = 데이터 그램 (Datagram)

alt

  • 소켓을 생성하고 bind까지만 하면 바로 입출력함수를 사용하면 됨
  • socket~bind : 서버
  • socket : 클라이언트
  • 일반적으로 연결 설정 과정을 거치지 않음
  • 데이터를 주고 받기 위한 소켓은 하나만 생성해도 됨
  • UDP는 비연결 프로토콜이기 때문에 주소 정보를 알아야함

4) connect 함수 호출을 통한 성능의 향상

(1) TCP 소켓에서의 connect함수의 의미

  • IP와 포트의 할당
  • Three-way handshaking

(2) UDP 소켓에서의 connect함수의 의미

  • IP와 포트의 할당
  • connect함수가 없으면 sendto 함수가 제일 처음 호출되는 시점에 IP와 PORT가 할당됨
  • 클라이언트에서 IP와 PORT가 한번 할당되면 close()함수 호출시까지 변하지 않음

5) TCP/ UDP 소켓에서 공통적으로 가지는 connect의 의미

(1) connect함수의 의미

  • 커널과 소켓이 논리적으로 연결하고 그것을 유지함

alt

(2) connect함수를 호출하지 않을때 UDP 클라이언트의 데이터 송수신

alt

  • sendto, recvfrom 함수를 호출하면 커널과 소켓이 연결되고 소켓과 호스트와 통신할 준비를 함
  • 호출이 끝나면 커널과 소켓의 연결이 해제됨
  • 2과정을 반복하는데 많은 시간을 잡아먹고 커널과 소켓을 연결,해체하기 때문에 성능 효율이 떨어짐

(3) connect 함수 호출이 주는 이점

  • 데이터를 주고 받는 속도가 빨라짐
  • TCP 소켓 기반의 데이터 입출력 함수를 그대로 사용할 수 있음

6) 데이터 전송 함수

  int sendto(int sock,const void* msg, int len, unsigned flags,
                   const struct sockaddr *addr, int addrlen);
  int sendto(SOCKET s, const xhar FAR *buf, int len, int flags,
                   const struct sockaddr FAR*to,int tolen);
  • 1 ~ 4 번째 인자는 TCP send함수와 비슷
  • addr : 목적지 주소 정보
  • addrlen : 목적지 주소 정보 구조체 크기

7) 데이터 수신 함수

  int recvfrom(int sock, void *buf, int len, unsigned flags,
                  struct sockaddr * addr, int *addrlen);
  int recvfrom(SOCKET s, char FAR *buf,int len, int flags, struct sockaddr FAR *from,
                  int FAR *fromlen);
  • 1 ~ 4 번째 인자는 TCP recv함수와 비슷
  • addr : 목적지 주소 정보
  • addrlen : 목적지 주소 정보 구조체 크기

댓글남기기