본문 바로가기
보안/학교,기관

사용자 데이터그램 프로토콜(UDP)(네트워크보안)(Wireshark로 배우는 컴퓨터 네트워크)

by 지트리아 2022. 11. 25.

용어정리

 

 

본문정리

개요

UDP는 비연결형, 신뢰성 없는 전송 프로토콜이다. 최소한의 오버헤드만 사용하는 매우 간단한 프로토콜이다. 따라서 작은 메시지를 보내거나 또한 신뢰성을 고려하지 않는 프로세스이다.

 

사용자 데이터그램

사용자 데이터그램이라는 UDP 패킷은 8바이트의 고정 길이 헤더를 가진다. 발신지 포트 번호, 목적지 포트 번호, 길이, 검사합 모두 16비트이다.

발신지 포트 번호 : 발신지 호스트가 클라이언트라면 UDP 소프트웨어가 선택한 임시 포트 번호이며, 서버라면 대부분 잘 알려진 포트번호이다.

목적지 포트 번호 : 목적지 호스트가 클라이언트의 요청을 받는 서버라면 대부분의 경우 잘 알려진 포트 번호이며, 서버가 보낸 응답을 받는 클라이언트라면 임시 포트 번호이다. 이 경우 서버는 수신한 요청 패킷에 있는 임시 포트 번호를 복사한다.

길이 : 헤더와 데이터를 합한 사용자 데이터그램의 전체 길이이다. 16비트는 0~2^16-1 사이의 전체 길이를 지정할 수 있는데 이는 IP 데이터그램의 길이이다. IP 데이터그램에 의해 캡슐화되기 때문에 UDP 사용자 데이터그램의 길이 필드는 훨씬 짧다. IP 데이터그램에는 전체 길이를 정의하는 필드와 헤더의 길이가 있는데 전체 길이에서 헤더를 빼면 IP 데이터그램에 의해 캡슐화된 UDP 데이터그램의 길이를 알 수 있다.

검사합 : 헤더와 데이터를 모두 포함한 사용자 데이터그램 전체에 대해 오류를 탐지하기 위해 사용한다.

 

UDP 서비스

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

UDP는 포트 번호를 이용하여 PC의 프로세스 간을 연결하는데 이것을 '프로세스-대-프로세스 통신'이다. 포트 번호는 2바이트 주소로 전송층의 식별자를 나타내며 PC의 프로세스를 식별하는 번호이다. 서버 측에서 동작하는 애플리케이션은 "서비스", "데몬"등으로 불린다.

UDP는 소켓을 이용하여 프로세스-대-프로세스 통신을 제공한다.

 

비연결형 서비스

사용자 데이터그램은 서로 독립적이라는 것을 의미한다. 사용자 데이터그램에는 번호가 붙지 않으며, TCP 프로토콜의 경우에 볼 수 있는 연결 설정과 연결 종료의 과정이 없다. 즉 다른 경로를 통하여 전달 될 수 있다. 따라서 긴 데이터 스트림을 보내야 하기 때문에 UDP헤더 8바이트와 IP 헤더 20바이트를 제외한 65,507바이트보다 작은 메시지만 UDP를 사용할 수 있다.

 

흐름 제어

흐름제어와 창 메커니즘도 없다. 수신 측에서는 들어오는 메시지로 인해 오버플로우가 발생 할 수 있다.

 

오류 제어

검사합을 제외한 오류 제어 메커니즘이 없다.(메시지 손실, 중복을 송신자는 알 수 없음) UDP를 이용하는 프로세스가 오류 제어가 필요하면 자체적으로 서비스를 제공해야한다. 

IP와 다르게 UDP에서 검사합은 의사 헤더, UDP헤더, 응용 계층에서 온 데이터를 포함한다. 특이한 것은 프로토콜 필드가 의사 헤더에 포함되어 있는데 UDP의 값은 17이다. IP에 데이터그램이 전달될 때 패딩과 의사 헤더는 제거된다. 

UDP 패킷의 송신자는 검사합을 계산하지 않을 수 있는데 이때는 0으로 채워진 후 UDP 패킷에 전송된다. 검사합을 계산하기로 하였는데 모두 0이면 모두 1로 바꾸고 UDP 패킷은 전송된다.

 

혼잡 제어

혼잡 제어를 UDP는 제공하지 않는다. 

 

캡슐화와 역캡슐화

캡슐화는 프로세스는 UDP로 메시지와 한 쌍의 소켓 주소 그리고 데이터의 길이를 보낸다. 데이터를 받으면 UDP헤더를 UDP가 추가한다. IP는 해당 데이터에 자신의 헤더를 추가하는데 이 헤더에서 프로토콜 필드의 값을 17로 설정한다.(UDP로부터 왔음을 알리기 위해)

역캡슐화는 데이터링크층에서 오류가 없으면 IP로, IP에서 오류가 없으면 UDP로 보낸다.

 

큐잉

UDP에서 큐는 포트와 연계 되어있다. 

클라이언트 측에서 프로세스가 시작되면 운영체제에게 포트 번호를 요청하는데 이 때 입력 큐와 출력 큐가 같이 생길 수도 있고, 입력 큐만 생성 될 수도 있다. 클라이언트가 획득한 큐는 임시 포트 번호로 식별된다. 프로세스가 종료되면 큐는 제거된다.

클라이언트 프로세스는 요청에 명시된 발신지 포트 번호를 이용하여 출력 큐에 메시지를 보낸다. 출력큐에는 오버플로우가 발생할 수 있는데 이때 운영체제는 클라이언트 프로세스에게 더 보내지 말라고 요청한다. 도착하면 UDP는 데이터그램의 목적지 포트 번호에 지정된 포트 번호에 대한 입력 큐가 생성되었는지 확인한다. 있다면 수신된 데이터그램을 큐의 끝에 추가하며, 없다면 데이터그램을 폐기하고 메시지를 보낸다.

서버의 큐에서 중요한 것은 특정한 하나의 서비스로 수신된 모든 메시지는 동일한 큐로 전송된다. 여기선 출력 큐에 오버플로우가 발생할 수 있다.

 

다중화와 역다중화

호스트에서는 UDP는 하나지만 해당 서비스를 원하는 프로세스는 여러개 있을 수 있다.

다중화는 송신 측에서 사용된다. 즉 다-대-일 관계이다. UDP는 헤더를 추가한 후 IP로 사용자 데이터그램을 보낸다.

역다중화는 수신 측에서 사용된다. 즉 일-대-다 관계이다. 오류를 점검하고 헤더를 없앤 후 UDP는 포트 번호에 따라 각 메시지를 적절한 프로세스로 보낸다.

 

UDP와 일반 단순 프로토콜과 비교

UDP도 비연결형 단순 프로토콜과 다르게 수신측에서 패킷의 훼손을 감지하기 위하여 부가적인 검사합을 사용한다는 것이다. 수신 측은 훼손된 패킷을 폐기하지만 송신측으로 어떠한 피드백도 보내지 않는다.

 

UDP 응용

최적화를 위해 주로 사용된다.

 

UDP 특징

비연결형인데 이는 장·단점 둘 다 될 수 있다. 요청과 응답이 각각 하나의 단일 데이터그램일 때 좋다. 만약 연결형이라면 최소한 9개의 패킷이 클라이언틑와 서버 간에 교환 되어야 하지만, 비연결형은 두 개의 패킷이 교환된다. 

오류 제어를 제공하지 않는데 따라서 신뢰성 없는 서비스를 제공한다. 이 또한 장점이 될 수도 있다. 훼손된 부분을 즉시 응용에게 전달하지 못해 생기는 지연을 해결할 수 있다는 것이다.

혼잡 제어의 미제공도 특징인데 이 또한 여러 번 재전송하여 혼잡을 유발하는 것을 막을 수 있다.

 

대표적인 응용

단순한 요청-응답 통신을 필요로 하고 흐름 제어와 오류 제어에는 관심이 없는 프로세스에 적절하다.

내부에 흐름 제어와 오류 제어 메커니즘을 가지고 있는 프로세스에 적합하다.(TFTP)

멀티캐스팅에 적합한 전송 프로토콜

SNMP와 같은 관리 프로세스에 사용

라우팅 정보 프로토콜과 같은 경로 갱신 프로토콜에 사용

수신된 메시지의 단편들 간의 지연이 일정한 실시간 응용에서 사용

 

UDP 패키지

해당 패키지는 제어 블록 테이블, 입력 큐, 제어 블록 모듈, 입력 모듈, 출력 모듈이라는 구성 요소를 갖는다.

 

제어 블록 테이블

열린 포트를 추적하기 위해 가지고 있다. 프로세스 ID, 포트 번호, 상응하는 큐 번호, FREE·IN-USE 이렇게 총 4개의 필드를 지닌다.

 

입력 큐

각 프로세스 당 하나씩 배정되는 입력 큐의 집합을 사용한다. 출력 큐는 사용하지 않는다.

 

제어-블록 모듈

제어-블록 테이블의 관리를 담당한다. 프로세스가 시작될 때 운영체제로부터 포트 번호를 요청한다. 프로세스는 프로세스 ID와 포트 번호를 제어-블록 모듈에 보내어 프로세스를 위한 엔트리를 테이블에 생성한다. 이 모듈은 큐를 생성하지 않는다. 큐 번호의 필드는 0의 값을 가진다. 테이블이 꽉 찬 경우에 대해서는 대응책을 마련하지 않았다.

 

입력 모듈

IP로부터 사용자 데이터그램을 수신한다. 해당 모듈은 제어 블록 테이블을 탐색하여 이 사용자 데이터그램과 같은 포트 번호를 갖는 엔트리를 찾는다. 만약 에트리가 있다면 엔트리 내의 정보를 사용하여 데이터를 큐에 집어 넣는다.

 

출력 모듈

사용자 데이터그램을 생성하고 보내는 임무를 담당한다.

 

본문제

Q1. UDP는 ---전송 프로토콜이라고 한다.

비연결형, 신뢰성 없는

 

Q2. UDP는 ---통신을 제공하는 것을 제외하고는 IP 서비스에 추가로 제공하는 기능은 없다.

프로세스-대-프로세스

 

Q3. UDP는 ---의 약자이다.

User Datagram Protocol

 

Q4. 로컬 호스트와 원격지 호스트는 IP 호스트로 정의된다. 프로세스를 정의하기 위해서는 ---라는 식별자가 필요하다.

포트 주소

 

Q5. 0에서 1,023까지 범위를 갖는 포트는 ICANN에 의해서 할당되고 관리된다. 이런 포트를 --- 포트라고 한다.

잘 알려진

 

Q6. 1,024에서 49,141 사이의 범위를 갖는 포트를 --- 포트라고 한다.

등록된

 

Q7. 49,152에서 65,535 사이의 범위를 갖는 포트는 임시 또는 사설 포트 번호로 사용된다. 이러한 포트를 --- 포트라고 한다.

동적

 

Q8. 송신 컴퓨터에서, UDP는 ---계층으로부터 데이터를 수신한다.

응용

 

Q9. 수신 컴퓨터에서, UDP는 ---계층으로부터 데이터를 전송한다.

IP

 

Q10. UDP와 TCP는 모두 ---계층 프로토콜이다.

전송

 

Q11. 다음 중 UDP가 수행하는 기능은 어떤 것인가?

프로세스-대-프로세스

 

Q12. 수신 호스트의 IP 계층이 데이터그램을 수신하면, ---.

전송층 프로토콜이 임무를 수행한다

 

Q13. UDP는 올바른 응용 프로세스로 사용자 데이터그램을 배달하기 위하여 --- 주소가 필요하다.

포트

 

Q14. UDP 포트 주소는 --- 비트 길이이다.

 

Q15. 다음 중 UDP가 제공하는 기능은?

정답 없음(흐름 제어, 연결형 전달, 혼잡 제어 모두 안함)

 

Q16. UDP 사용자 데이터그램 헤더의 발신지 포트 주소는 ---를 나타낸다.

송신 컴퓨터에서 구동되는 프로세스

 

Q17. IP주소와 포트 번호의 결합을 ---라고 한다.

소켓 주소

 

Q18. UDP 서비스를 이용하기 위해서 ---개의 소켓 주소가 필요하다.

2

 

Q19. UDP 패킷을 ---라고 한다.

사용자 데이터그램

 

Q20. UDP 패킷은 ---바이트의 고정 크기 헤더를 갖는다.

8

 

Q21. UDP 패킷은 ---에 캡슐화된다.

IP 데이터그램

 

Q22. UDP는 하나의 호스트에 있는 여러 개의 프로세스로부터 전송되는 사용자 데이터그램을 처리하기 위하여 ---를 이용한다.

다중화

 

Q23. UDP는 동일한 호스트에 있는 서로 다른 프로세스로 사용자 데이터그램을 전달하기 위하여 ---를 이용한다.

역다중화

 

 

댓글