본문 바로가기
데이터 통신

[데이터 통신과 네트워킹] 사용자 데이터그램 프로토콜(UDP)

by IT 정복가 2022. 9. 23.
728x90

사용자 데이터그램 프로토콜(User Datagram Protocol: UDP)

비연결형이고, 신뢰성이 없는 전송 프로토콜

UDP

1. UDP는 호스트 간 통신 대신에 프로세스 간 통신을 제공하는 것을 제외하고는 IP 서비스에 어떠한 것도 추가하지 않는다.

2. UDP는 최소한의 오버헤드를 가진 매우 간단한 프로토콜이다.
- 만약 프로세스가 작은 메세지를 송신하기를 원하고, 신뢰성에 관하여 그다지 신경을 쓰지 않는다면 UDP를 사용
- UDP를 사용하여 작은 메세지를 송신하는 것은 TCP보다 송신자와 수신자 사이에 상호작용이 훨씬 적음

사용자 데이터그램

사용자 데이터그램이라고 부르는 UDP 패킷은 각각 2바이트인 4개의 필드로 만들어진 고정된 크기의 8바이트 헤더를 보유하고 있다.

사용자 데이터그램 패킷 형식

- 처음 두 필드는 발신지와 목적지 포트 번호를 정의

- 세 번째 필드는 헤더에 데이터를 더한 사용자 데이터그램의 전체 길이를 정의

- 16비트는 전체 길이 0부터 65,536바이트를 정의할 수 있으나, 하나의 UDP 사용자 데이터그램은 65,535바이트의 총 길이를 가지는 IP 데이터그램에 저장되기 때문에 사용자 데이터그램의 총 길이는 더 작아야 한다.

- 마지막 필드는 선택적 검사합

UDP 서비스

1. 프로세스-대-프로세스 통신

UDP는 IP 주소와 포트 번호의 조합인 소켓 주소를 사용하여 프로세스간 통신을 제공

2. 비연결형 서비스

- UDP는 비연결형 서비스를 제공

- UDP에 의해 보내지는 각 사용자 데이터그램은 독립된 데이터그램이라는 것을 의미

- 동일한 발신지 프로세스로부터 들어와서 동일한 목적지 프로그램으로 간다고 할지라도 사용자 데이터그램은 서로 무관

- 사용자 데이터그램은 번호가 없음

- TCP 경우와는 달리 연결 설정이나 연결 종료가 없으며, 이것은 각 사용자 데이터그램은 서로 다른 경로로 이동할 수 있다는 의미

- 비연결형이 되기 위한 결과 중 하나는 UDP를 사용하는 프로세스는 스트림 데이터를 보낼 수 없고, 서로 다른 사용자 데이터그램으로 잘게 자르는 것만을 가능

- 각 메세지는 하나의 사용자 데이터그램으로 채워질 정도로 작아야 함

- 단문메시지를 보내는 프로세스들은 65,507 바이트보다 작은 메시지(65,535 바이트에서 UDP 헤더를 위한 8바이트와 IP 헤더를 위한 20바이트를 뺀 것)UDP를 사용해야 함

3. 흐름 제어

- UDP는 매우 단순한 프로토콜임

- 흐름제어 기능이 없으므로 윈도우 메커니즘도 없음

- 수신자는 들어오는 메세지로 인하여 오버플로우가 발생할 수 있음

- 흐름 제어 기능이 없다는 것은 UDP를 사용하는 응용층 프로세스가 필요한 경우 흐름 서비스를 별도로 제공해야 함을 의미

4. 오류 제어

- 검사합을 제외하고 UDP에는 오류 제어 메커니즘이 없어서 보낸 사람은 메세지가 손실되었거나 중복되었는지 알 수 없음

- 수신자가 검사합을 통해 오류를 감지하면 사용자 데이터그램은 자동으로 폐기

- 오류 제어 기능이 없다는 것은 UDP를 사용하는 프로세스가 필요한 경우 이 서비스를 별도로 제공해야 함을 의미 

5. 검사합

- UDP 검사합 계산은 의사헤더, UDP 헤더 그리고 응용층으로부터 들어오는 데이터의 세 영역이 포함

- 의사헤더는 0으로 채워진 일부 필드들로 캡슐화되는 사용자 데이터그램에 있는 IP 패킷 헤더의 일부분임

- 프로토콜 필드는 다른 전송층 프로토콜이 아닌 UDP에 속한다는 것을 확신시키기 위해 추가됨

- UDP를 위한 프로토콜 필드 값은 17임. 이 값이 전송되는 도중에 변경된다면 수신측에서 검사합 계산이 이 값을 검출할 것이고, UDP는 그 패킷을 제거

6. 검사합 선택적 사용

- UDP 패킷의 송신자는 검사합 계산을 하지 않는 것을 선택 가능

- 이 경우 해당 필드는 전송되기 전에 모두 0으로 채워짐

7. 혼잡 제어

- UDP는 비연결형 프로토콜이므로 혼잡제어를 제공하지 않음

- 이유는 전송된 패킷이 작고 산발적이며, 네트워크에 혼잡을 만들 수 없다고 가정

8. 캡슐화와 역캡슐화

- 한 프로세스에서 다른 프로세스로 메세지를 보내기위해 UDP 프로토콜은 메세지를 캡슐화하고 역캡슐화를 수행

9. 큐잉(Queuing)

- UDP에서 큐들은 포트와 연관 됨

- 클라이언트 사이트에서 프로세스가 시작할 때 프로세스는 운영체제로 부터 포트 번호를 요청

- 각 프로세스와 관련된 입력과 출력 큐를 둘 다 생성하거나 입력 큐만을 생성

10. 다중화와 역다중화

- 호스트에는 UDP가 하나만 있지만, UDP 서비스를 사용하려는 프로세스는 여러 개 일 수 있으며, 이러한 상황을 처리하기 위해 UDP는 다중화 및 역 다중화가 필요

11. UDP와 일반 단순 프로토콜 사이의 비교

- 단지 차이는 UDP가 수신 사이트에서 오류 있는 패킷을 검출하기 위해 선택적 검사합을 제공한다는 것

- 만약 검사합이 패킷에 추가되면, 수신 UDP는 패킷을 검사하고 만약 패킷에 오류가 있으면 패킷을 폐기

- 궤환(feedback: 결과에 대한 대응)이 송신측으로 전송되지 않음

- UDP는 오류 검출을 위해 패킷에 추가된 선택적 검사합을 제외하고는 앞에서 설명한 비연결형 단순 프로토콜과 같음

모든 내용은 '데이터 통신과 네트워킹 6판' 책을 공부하여 작성 하였습니다.

728x90