홍카나의 공부방

[컴퓨터 네트워크] 13. UDP 간단 정리 본문

Computer Network

[컴퓨터 네트워크] 13. UDP 간단 정리

홍문관카페나무 2023. 4. 22. 22:08

User Datagram Protocol(UDP)

  • 통신에서 신뢰성보다는 속도에 우선순위를 둘 때, 사용하는 프로토콜이다.
  • TCP와 다르게 신뢰성 서비스를 제공하지 않고, 비연결성 서비스이기 때문에 비교적 속도가 빠르다는 장점이 있다.
  • UDP에서는 단위 데이터를 User Datagram이라고 지칭한다. (IP에서는 IP Packet이라고 하는 그것 맞다.)
  • UDP의 헤더는 총 8바이트로, 간단하다. Source, Destination, Total Length, Checksum 으로 구성되어 있다.

UDP datagram과 Header의 포맷

 


 

UDP의 usecase

  • DNS 통신에서 UDP를 사용하기도 한다.
  • DNS 통신(요청과 응답)은 패킷이 많이 필요하지도 않으며, 통신할 내용도 많지 않다.
  • 2개의 패킷(요청, 응답)을 주고 받으려고 연결 설정을 하는 것은 어떻게 보면 낭비다.
  • 그래서 UDP를 사용하는데, 신뢰성의 경우 응용 측에서 Timer를 사용하면서 보장한다.
  • 이메일로 Media를 주고받을 수도 있는데, 이런 경우에는 첨부파일에 오류가 발생하면 안 되므로 TCP가 적절하다.
  • 실시간 멀티미디어 서비스 같은 경우, 경우에 따라서 속도가 중요할 가능성이 높으므로 UDP 통신이 적절하다.

 

Control-Block

  • UDP에서는 Control-block module을 이용하여 상태, ProcessID, 포트 번호, 수신 큐 번호 등을 관리한다.
  • Control block은 보통 다음과 같은 Pseudo Code를 가지고 구현된다.
UDP_Control_Block_Module (process ID, port number)
{
    Search the table for a FREE entry.
    if (not found)
    	Delete one entry using a predefined strategy.
    Create a new entry with the state IN-USE
    Enter the process ID and the port number.
    Return
} // End Module

 

수신쪽 Control-Block Table의 예시

 

  • 위 수도 코드를 해석해보자.

1. 새로운 프로세스가 running 되면 Control Block 테이블에 등록되기 위해 빈 엔트리 공간을 찾는다.

1-1. 만약 빈 엔트리가 없다면, 정해진 전략에 의해 한 엔트리를 지운다.

(보통 여기서 정해진 전략이란, 운영체제에서 배운 FIFO나 LRU 같은 페이지 교체 알고리즘을 생각해도 좋다.)
2. 새로운 엔트리를 만들고, state는 IN-USE로 설정한다.

3. 프로세스 ID와 번호를 입력한다. 이는 운영체제에 요청해서 번호를 받아오는 것이다.

4. 리턴.

 

만약 위 그림에서 User Datagram이 52,011번으로 들어왔다면

인풋 모듈이 테이블을 체크하며, 52,011번 포트에 대한 ingoing queue가 할당되지 않았음을 체크할 것이다.

그러면 인풋 모듈이 새로운 큐를 해당 엔트리에 할당할 것이다.

 

마지막으로 Datagram이 들어왔는데 일치하는 포트 번호를 엔트리에서 찾을 수 없다면,

Control Block에 새로운 엔트리를 만들지 않고, ( 물론 설계에 따라서 다를 순 있겠지만, 만들지 않는다고 가정. )

송신 측에 "unreachable port"라는 에러 메시지를 ICMP 요청을 통해 보내고, user datagram은 버린다.

 

반응형