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
'데이터 통신' 카테고리의 다른 글
[데이터 통신과 네트워킹] TCP 창, 흐름 제어, 오류 제어 (0) | 2022.09.27 |
---|---|
[데이터 통신과 네트워킹] TCP 서비스와 특징, 세그먼트, TCP 연결 (1) | 2022.09.26 |
[데이터 통신과 네트워킹] 전송층 서비스, 전송층 프로토콜 (1) | 2022.09.17 |
데이터 통신과 네트워킹 6판 Chapter 7 기본 연습문제 풀이 (0) | 2022.06.08 |
데이터 통신과 네트워킹 6판 Chapter 6 기본 연습문제 풀이 (0) | 2022.06.06 |