소켓의 생성(3)
socket 함수의 두 번째 인자로 "SOCK_DGRAM"을 전달하면 비 연결 지향형(UDP) 소켓이 생성된다.
socket(PF_INET, SOCK_DGRAM,?);
PF_INET : IPv4 프로토콜 체계를 사용한다.
SOCK_DGRAM : UDP 전송방식을 사용한다.
? : 기본 설정으로 0을 전달해야 하지만, 나중에 설명하기 위해 '?'로 채웠다.
비 연결지향형(UDP) 소켓은 빠른 속도로 데이터를 전달한다.
그러면 이제 비 연결지향형(UDP) 소켓의 특징은 뭐가 있을지 아래의 사진을 봐보자.
-
-
비 연결지향형(UDP) 소켓은 연결지향형(TCP) 소켓과 다르게
상대 소켓이 데이터를 받았든 안 받았든 무조건 빠르게 전송하는데에 초점이 맞춰져 있다.
그리고 보낼 수 있는 데이터의 크기도 제한되어있다.
그래서 큰 데이터는 여러번에 걸쳐서 전송해야 하는데,
-
이전에 배웠던 연결 지향형(TCP) 소켓은
데이터를 한 번에 보내서 여러 번에 걸쳐서 받든,
여러 번 보내서 한번에 받든 데이터의 경계가 존재하지 않았는데
-
비 연결 지향형(UDP) 소켓은
데이터를 3번에 걸쳐서 보내면
받을 때도 3번에 걸쳐서 받아야 한다.
즉, 데이터를 전송한 수만큼, 받을 때도 전송한 수랑 같게 여러 번에 걸쳐서 받아야 한다.
더러 데이터가 송수신될 때 손상될 수 있다.
그렇다고 비 연결 지향형(UDP) 소켓이 연결 지향형(TCP) 소켓처럼 데이터를 재 전송해주진 않는다.
-
그래서 비 연결 지향형(UDP) 소켓의 특성은 다음과 같이 한마디로 정리할 수 있다.
" 신뢰성과 순차적 데이터 전송을 보장하지 않는, 고속의 데이터 전송방식 소켓 "
신뢰성과 순차적 데이터 전송을 보장하지 않는 : 데이터가 손상되어도 재 전송해주지 않는다.
그리고 데이터가 전송될 때 순서가 섞여서 전송될 수 있다.
고속의 데이터 전송방식 소켓 : 신뢰성과 순차적 데이터 전송을 보장하지는 않지만,
연결 지향형(TCP) 소켓보다 데이터의 이동 속도가 빠르다.
-
추가로 비 연결 지향형(UDP) 소켓은 연결 지향형(TCP) 소켓과 달리 연결이라는 개념이 존재하지 않는다.
연결은 서로 통신을 하고 있다는 의미인데,
비 연결 지향형(UDP) 소켓은 상대 소켓의 상황이 어떻든 데이터를 전송한다.
'시작하지 말았어야 했던 것 > (Unix, Linux) C Socket' 카테고리의 다른 글
(리눅스) 소켓의 생성(4-1) TCP 클라이언트(client) 프로그램 구현 (0) | 2021.02.02 |
---|---|
(리눅스) 소켓의 생성(4) 프로토콜의 마지막 정보 전달 (0) | 2021.02.02 |
(리눅스)소켓의 생성(2-1) 소켓에 존재하는 버퍼 내의 데이터 (0) | 2021.02.02 |
(리눅스) 소켓의 생성(2) 연결지향형 소켓(TCP 소켓)(SOCK_STRAM) (0) | 2021.02.02 |
(리눅스) 소켓의 생성 (0) | 2021.02.02 |