본문 바로가기

카테고리 없음

tcp/ip - 06 / UDP

728x90
반응형

tcp와는 다른 성격을 가진 전송계층 프로토콜인 udp 

신뢰성을 보장하지 않는 대신 빠른 전송을 보장한다는 특징이 있다. 

 

흐름제어를 하지 않기 때문에 빠른 전송이 가능하다. 

udp 소켓은 seq, ack 와 같은 메시지 전달을 하지 않고, 연결의 설정과 해제의 과정도 존재하지 않기 때문에 빠른 전송이 가능한 것이다. 

 

데이터를 보내고 나서 확인 과정이 존재하지 않기 때문에 데이터의 분실, 혹은 손실 위험이 존재한다. 

때문에 안정성 보다 성능이 중요시 될 때 udp를 사용한다. 

 

 

블로그를 쓰다보니 티켓팅하는 서버들은 udp를 쓸거 같다는 생각이 드네.. 

 

 

udp 소켓은 연결의 개념이 존재하지 않기 때문에, 서버 - 클라이언트 소켓의 구분이 없다. 

-> 따라서 1:1 연결이 아니라 하나의 소켓으로 여러 소켓과 데이터 송수신이 가능하다. 

 

udp 소켓은 연결의 개념이 존재하지 않기 때문에 데이터를 전송할 때 목적지에 대한 정보를 전달해야 한다. 

 

udp는 데이터의 경계가 존재하기 때문에 한 번의 recvfrom 함수 호출을 통해서 하나의 메시지를 완전히 읽어들인다. 4

-> 데이터를 보내는 sendto 함수의 호출 횟수와, 데이터를 읽어들이는 recvfrom 함수의 호출 횟수가 일치해야한다.

 

 

sendto 함수 호출 시 ip와 port 번호가 자동으로 할당 된다. 

-> 일반 적으로 udp 클라이언트 프로그램에서는 주소 정보를 할당하는 별도의 과정이 불필요하다. 

 

 

기본적으로 udp 소켓은 unconnected 소켓이다.

따라서 목적지의 정보를 등록한 connected 소켓으로 만들고 싶으면,

1.소켓을 생성할 때 목적지 정보를 등록하고. 

2. 데이터 전송을 완료.

3. upd 소켓에 등록된 목적지 정보를 삭제

 

하는 방식으로 tcp와 유사한 connected 소켓으로 사용할 수 있다. 

 

 

 

728x90
반응형