Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정처기
- join
- 스터디
- 알고리즘
- MySQL
- 기술면접
- 자바
- Til
- SQL
- 정보처리기사
- 안드로이드
- 인프런
- 오블완
- 자료구조
- 티스토리챌린지
- 카카오코테
- 안드로이드스튜디오
- 혼공파
- 코틀린
- 프로그래머스
- CS
- doitandroid
- Android
- 혼공단
- Kotlin
- java
- groupby
- 코테
- select
- 혼공챌린지
Archives
- Today
- Total
Welcome! Everything is fine.
[CS 발표_04] UDP의 특징과 UDP에서의 오류 검출 방법 본문
728x90
UDP의 특징과 UDP에서의 오류검출 방법에 대해 설명해보세요.
UDP란
UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 OSI 7계층 중 4계층 전송 계층에 해당하는 네트워크 프로토콜이다. 프로토콜 중 구조가 가장 간단하다. UDP는 송신부와 수신부 간 연결을 지원하지 않고 데이터그램 형태의 통신을 지원한다. 따라서 TCP와 달리 3-way 핸드셰이킹 같은 과정 없이 패킷을 바로 송수신하게 된다. → 신뢰성은 낮지만 속도는 빠름.
- 가상 회선 방식(Viryual Circuit) vs 데이터그램 방식(Datagram)
- 가상 회선 방식 : 모든 패킷의 경로를 일정하게 유지, 연결형 서비스 지원, 데이터를 패킷 단위로 나누어 전송, 패킷의 도착 순서가 일정, 목적지에서 패킷을 재조립할 필요가 없음, 비교적 긴 메시지 전송 시 효과적
- 데이터 그램 방식 : 서로 다른 경로를 이용, 비연결형 서비스 지원, 패킷을 독립적으로 전송, 짧은 메시지 전송시 효과적
UDP의 특징
The User Datagram Protocol (UDP) is called a connectionless, unreliable transport protocol.
- 송신부와 수신부의 연결이 보장되지 않는 비연결형 서비스이다.
- 패킷이 서로 다른 회선으로 교환될 수 있는 데이터그램 패킷 교환 방식이다.
- 패킷의 수신 여부를 확인하지 않는다.
- 1:1 통신, 1:N 통신, N:N 통신 모두 가능하다.
- 데이터의 신뢰성이 낮다.
- TCP보다 데이터의 전송 속도가 빠르다. → 데이터 전송 시간에 민감한 응용 환경에서는 UDP를 이용하는 것이 유리하다.
- 헤더와 전송 데이터에 대한 체크섬 기능을 제공한다.
- 흐름 제어 기능이 없어 버퍼 오버플로에 의한 데이터 분실 오류가 발생할 수 있다.
- 데이터의 순서 번호 기능이 없어 데이터그램을 분실하거나, 송신부에서 전달한 패킷 순서와 수신부에서 받은 패킷 순서가 다를 수 있다.
UDP의 오류검출
UDP는 최소한의 신뢰성을 보장하기 위해 체크섬(checksum) 방식으로 오류를 검출할 수 있다.
- Source Port / Destination Port : 송수신 프로세스에 할당된 네트워크 포트 번호
- Length : 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기
- Checksum : 프로토콜 헤더와 데이터에 대한 체크섬 값 제공
- 1의 보수 : 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 뺀 것
- 2의 보수 : 1의 보수에 1을 더한 값
송신자
- 송신하는 메시지를 정해진 길이의 데이터 단위로 나눈다.
- 모든 데이터 단위를 1의 보수 연산으로 더하여 합을 구한다.
- 합의 1의 보수를 체크섬으로 생성하고, 체크섬을 추가하여 메시지를 전송한다.
수신자
- 수신된 메시지를 체크섬을 포함하여 정해진 길이의 데이터 단위로 나눈다.
- 모든 데이터 단위를 1의 보수 연산으로 더하여 합을 구한다.
- 합이 0이면 성공적으로 수신한 것이고, 아니라면 오류가 발생한 것이다.
체크섬을 이용하면 데이터가 변형없이 정확하게 도착했다는 것을 알 수는 있지만 데이터가 순서대로 왔는지, 혹은 중간에 사라지지 않았는지는 알 수 없다.
정리
UDP에서 데이터 오류 검출을 위한 방법으로 체크섬이 있다. 체크섬은 송신부에서 데이터의 무결성을 확인할 수 있게 UDP 헤더, IP 헤더, 데이터 등의 값을 더한 뒤 보수를 취해 구하는 값이다. 송신부가 구한 체크섬을 UDP 헤더에 포함해 수신부로 보내면 수신부에서 체크섬을 이용해 데이터의 무결성을 확인한다. 하지만 체크섬을 이용하는 것은 선택 사항이고 체크섬을 이용해도 잘못된 데이터가 전송될 수도 있다는 점을 고려해야 한다.
'CS 스터디 > 발표' 카테고리의 다른 글
[CS 발표_06] 인덱스란? (0) | 2024.05.31 |
---|---|
[CS 발표_05] 데이터베이스에서 락이란? (0) | 2024.05.31 |
[CS 발표_03] HTTP Keep Alive vs TCP Keep Alive (0) | 2024.05.27 |
[CS 발표_02] OS의 메모리 관리 전략(페이징 & 세그멘테이션) (0) | 2024.05.09 |
[CS 발표_01] 메모리의 힙 영역과 스택 영역 (0) | 2024.05.06 |