Computer Science

[9주차] 컴퓨터 네트워크

Ahn Paul 2024. 11. 6. 19:47

2024. 11. 06 한양대학교 수업 내용

UDP (User Datagram Protocol)

· 헤더의 구성 자체가 단순하게 되어 있다.

· 전달되는 Segments는 손실될 수도 있으며, 순서대로 도착하지 않을 수도 있다.

· Connectionless transport이다.

> Sender와 Receiver 사이의 handshaking 과정이 없다.

> UDP Segments들은 각각 다르게 처리된다.

 

UDP가 있는 이유

- 연결 수립 과정이 필요 없다. (RTT delay 시간이 줄어듦)

- 간단하다.

- 헤더 사이즈가 작다. (32bit 사이즈로 헤더를 유지하고 있음.)

- 혼잡 제어가 없다. 

> 인터넷에 혼잡이 있는 경우 송신자 / 수신자의 트래픽을 제어해야 하는 혼잡제어가 없다.

> 높은 전송 속도를 필요로 하는 곳에 많이 사용이 된다.

 

UDP 헤더 구조

 

UDP 사용 예시

- DNS

- SNMP (Simple Network Management Protocol)

- 스트리밍 앱 (Loss tolerant함, 예를 들어서 스트리밍의 경우에는 일부 프레임이 손실이 되어도 끊기지 않음.)

- HTTP/3

> UDP에서 Reliable한 전송을 하기 위해서는 Application Layer에서 처리를 할 수있다. (신뢰성 및 혼잡 제어 등을 추가할 수 있음.)

 

UDP에서는 패킷에 오류가 발생한 경우에는 폐기된다.

 

SNMP에서 UDP를 사용하는 이유는 유효성 검사 및 헤더 등의 검사를 할 시간이 아깝기 때문이라고 볼 수 있음. 

DNS에도 마찬가지로 수많은 요청에 대해서 여러 작업을 처리하는 것이 비효율적임.

 

 

UDP 헤더 구조

 

UDP Header의 값에 대하여

Source Port: 수신측의 정보를 담고 있음

Destination Port: 데이터를 전달해야 할 부분에 대한 정보를 담고 있음

UDP는 위의 정보를 통해서 Destination의 Applicaition으로 자료를 전달할 수 있음

Application data (payload) : 전달할 데어터가 담겨 있는 부분임

> 오버헤드를 줄이고, 상대방에게 빠르게 전달하고자 가볍게 설계가 되었음.

UDP Checksum: 오류 검출용으로 사용된다.

 

Checksum

- 전송된 Segment에서 에러를 검출하기 위한 값

- UDP의 경우에는 Checksum의 값이 잘못된 경우에는 다시 요청하지 않고, 폐기함.

Checksum Example

- 1의 보수를 통하여 Checksum을 만듦

- 문제가 없는 것은 아님, 아래와 같이 두 개의 값이 변경되는 경우에는 Checksum 값이 동일한 현상이 발생함.

- UDP에서는 일부 손실에 큰 영향이 없고, 전송의 속도가 중요한 경우에 많이 사용된다.

 

 신뢰성 있는 데이터 전송의 원칙

- 신뢰할 수 있는 데이터를 보내는 채널은 Reliable Channel이라고 가정한다.

- TCP의 경우에는 데이터 일정 시간 안 오게 되면, 확인 신호를 보내고 이때 확인 후 다시 보내는 과정이 있다. (이것을 보고 Reliable 하다고 할 수 있다.)

- Reliable data transport channel의 복잡도는 채널의 특성에 따라 달라진다. 

 

## RDT (Reliable Data Transfer Protocol) Interface

 

Getting Started

- Sender, Receiver 측의 RDT protocol의 개발 진행 

 

RDT는 일반적으로 전송 환경에 따라 여러 버전으로 구분됨.

 

RDT 1.0

- 완벽한 전송이라고 하는 것은 bit 에러가 없으며, 패킷의 손실이 없는 것을 의미한다.

- 1.0에서는 완벽한 신뢰성을 가정한 가장 기본적인 RDT 버전으로, 오류 검출이나 수정 메커니즘이 필요 없는 환경을 전제로 한다.

 

RDT 2.0

- 오류가 발생할 수 있는 채널에서 동착하며, 오류 검출 및 재전송 기능이 추가된 버전이다.

- 오류를 수정할 수 있는 방법은 무엇인가?

> ACKs (Acknowledgements) : Receiver가 Sender에게 수신 여부를 전달하도록 함.

> NAKs (Negative Acknowldegments) : Receiver가 Sender에서 패킷에 에러가 발생했다는 것을 전달하도록 함.

> Sender는 NAK를 받으면 다시 전송함 (Retransmit)

- 2.0은 치명적인 결함이 있다.

> ACK/NAK가 Corrupted 된 경우에 문제가 발생함

> 중복 처리 과정에서 문제가 발생할 수 있음 -> 이 현상을 해결하기 위해서 Seqence number를 추가함

 

RDT 3.0

- 패킷 손실까지 고려하여 시간 초과와 같은 기능이 포함된 버전으로, 현재 가장 많이 네트워크 환경에서 사용하는 형태임