본문 바로가기
공부/네트워크

네트워크 공부 - Transport Layer - UDP

by 라이티아 2024. 10. 19.

순서

전송층 개요

사용자 데이터그램

UDP 서비스

UDP 응용

 

개요

전송층

네트워크층과 응용층 사이에 위치

응용층에게 서비스를 제공할 의무가 있음

네트워크로부터 서비스를 제공받음

 

 

전송층 서비스

프로세스 대 프로세스 통신 제공

프로세스는 전송층 서비스를 사용하는 응용층 개체

메시지를 적절한 프로세스에 전달 책임

 

주소 체계 = 포트 번호

프로세스 대 프로세스 통신 방법 : 클라이언트 / 서버

클라이언트와 서버 프로세스는 같은 이름을 가짐

원격 컴퓨터는 여러 개의 서버 프로그램 실행

로컬 컴퓨터로 여러 개의 클라이언트 프로그램 수행

 

프로세스 통신을 위해 필요한 사항

로컬 호스트

로컬 프로세스

원격 호스트

원격 프로세스

 

프로세스 통신에서 포트 번호의 역할

로컬 호스트와 원격 호스트 : IP 주소

프로세스 : 포트 번호

포트 번호 범위 : 0 ~ 65,535 사이 정수

잘 알려진 포트 번호 well known port number

임시 포트 번호 ephemeral port number

 

ICANN 범위

internet corporation for assigned names and numbers

잘 알려진 포트 : 0 ~ 1023

등록된 포트 : 1024 ~ 49151

동적 포트 : 49152 ~ 65535

 

소켓 주소

각 종단점에서 연결을 만들기 위해 필요한 주소

IP address + port number = socket address

00.0.0.0 + 00 => 00.0.0.0:00

 

비연결형과 연결형 서비스

비연결형 서비스

메시지를 전송 가능한 작은 단편으로 나누어 전송

각각의 조각을 독립적인 단위로 간주

선서에 어긋나서 도착하는 경우 발생

UDP

 

연결형 서비스

먼저 서버와 클라이언트간 연결 설정

데이터 교환 완료 후 연결 해제

TCP

 

 

UDP 개요

UDP 전송 프로토콜의 임무

프로세스 대 프로세스 통신 생성 : 포트번호 이용

최소한의 오류 제어 메커니즘 수행

프로세스로부터 데이터 단위를 받아 신뢰성 없는 전달 제공

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

최소한의 오버헤드만 사용하는 간단한 프로토콜

(오버헤드 : 데이터를 전달할 때 패킷에 추가되는 메타데이터프로세스의 부가적인 작업 )

 

사용자 데이터그램 형식

8byte의 고정 크기 헤더

발신지 포트 번호(source port number) = 16bit

목적지 포트 번호(destination port number) = 16bit

길이(length) : 헤더와 데이터를 합한 전체 길이 = 16bit

검사합(checksum) : 오류 탐지에 사용 = 16bit

 

사용자 데이터그램의 header 크기 = 8byte

4개의 영역이 사용됨, 1개 영역당 2byte = 16bit

 

예제 1

다음은 16진수의 형식으로 UDP헤더를 덤프한것이다

CB84000D001C001C

 

a. 발신지 포트 번호는 얼마인가?

CB84 = source port number

c = 12 b = 11 8 = 8 4 = 4

12 * 16^3 + 11 * 16^2 + 8 * 16^1 + 4 * 16^0 = 52100 = port number

 

b. 목적지 포트 번호는 얼마인가?

000D = destination port number

D = 13

13 * 16^0 = 13 = port number

 

c. 사용자 데이터그램의 총 길이는 얼마인가?

001C = length

1 = 1 C = 12

1 * 16^1 + 12 * 16^0 = 16 + 12 = 28byte = length

 

d. 데이터의 길이는 얼마인가?

header = 8byte

length - header = 28 - 8 = 20byte = data length

 

e. 데이터의 전송 방향이 클라이언트에서 서버쪽으로 가는 것인가? 아니면 반대의 방향인가?

발신지 포트 = 52100 수신지 포트 = 13

현재 동적 포트에서 well known port로 가고 있기에 클라이언트에서 서버로 간다고 생각할 수 있다

 

 

IP header field 예시

 

45 00 00 22 6D 8B 00 00 80 11 00 00 7F 00 00 01 7F 00 00 01 F9 0C 1F 90 00 0E A4 E2 68 65 6C 6C 6F 7E\

 

4 ver 5 hlen 00 tos 00 22 total length

6D 8B fragmentation 00 00 flags, framatation offset 

80 ttl 11protocol 00 00 header checksum

7F 00 00 01 source IP

7F 00 00 01 destination IP

F9 0C source port number

1F 90 destination port number

00 0E length

A4 E2 checksum

이후 전부 data

 

UDP 서비스

프로세스 대 프로세스 통신

IP 주소와 포트 번호로 구성된 소켓 이용

 

비연결혈 서비스

각 사용자 데이터그램은 독립적

 

흐름 제어

기능이 없고 윈도우 매커니즘도 없음

 

오류 제어

검사합을 제외한 기능 없음

 

혼잡 제어

기능 없음

 

 

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

비연결형 단순 프로토콜의 한 예

오류 감지를 위하여 부가적인 검사합을 패킷에 포함한다는 것만 차이

수신 UDP는 만일 패킷이 훼손되면 폐기

어떠한 피드백도 송신 측으로 전송되지않음

 

UDP 특징

비연결형 서비스 = 각 UDP 패킷은 서로 독립적

클라이언트 응용이 서버에 짧은 요층을 전송하고 짧은 응답을 수신하는 경우에 장점

응용에서 지연이 주요 이슈인 경우는 비연결형 서비스가 바람직

오류 제어는 제공하지 않음

혼잡 제어는 제공하지 않음

 

UDP 응용

단순 요청 - 음답 통신이 필요하고 흐름과 오류 제어가 필요없는 프로세스에 적합

내부에 흐름 및 오류 제어가 있는 프로세스에 적합

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

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

RIP와 같은 경로 갱신 프로토콜에서 사용

수신된 메시지 단편간 지연이 동일한 실시간 응용에 사용

 

인터넷에서 큰 크기의 파일을 받을때 UDP?

파일 전달에 지연을 딱히 상관없음

오히려 완벽하게 파일이 전송되어야 되기에 = 훼손되면 안되기에

UDP는 적합하지 않다