네트워크 관련/네트워크

[UDP, UDP Header] 개념잡기

늅이 2016. 6. 9. 17:22

UDP란?

User Datagram Protocol의 약자로 해석하자면 데이터를 데이터그램 단위로 처리하는 프로토콜입니다.
데이터그램단위로 쪼개면 전송을 해야하기 떄문에 전송계층에 위치한다고 생각하시면 연관지어 암기가 되실껍니다 

UDP=데이터를 데이터그램단위로 처리하는 프로토콜!
데이터그램단위로 처리했으니 전송을 해야겠으니 전송계층이구나!


말로만 듣던 TCP와 UDP의 차이점은?

정말 간단하게 정리하자면 

TCP: 복잡하기 때문에 신뢰성이 높은 연결형 프로토콜
뭔가 연결도 했으니 복잡하겠고, 하는게 많으니 신뢰성도 높아진다고 생각하시면 쉽겠죠?

UDP: 간단하기 때문에 신뢰할 수 없는 비연결형 프로토콜



그럼 IP만으로 통신을 하지 굳이 왜 다른 것들이 존재하나요?

원래는 두대의 컴퓨터간에 IP주소를 바탕으로 데이터가 전달되는것으로 하여 
비정상적인 경우를 대비해 해결책으로 ICMP 를 사용해서 처리하도록 알려줬습니다.

여기서 끝난다면 정말 좋겠지만 문제점이 있습니다

1. IP의 역할은 Host to Host(장치 to 장치) 만을 지원합니다.
장치에서 장치로 이동은 IP로 해결되지만 하나의 장비안에서 수많은 프로그램들이 통신을 할경우에는 어떻게 해야 할까요?
즉. IP로는 한계가 있다는 얘깁니다.
예를들면 메세지를 받았습니다.  이 메세지가 웹서핑용으로 처리해야할지, 메일로 처리해야할지 하나의 IP만으로는 도저히 할수가 없다고 생각하시면 되겠습니다.

2. IP에서 오류가 발생한다면 ICMP에서 알려준다고 앞서 말씀드렸습니다. 하지만 ICMP는 알려주기만 할 뿐 대처를 못하는 녀석입니다. 그렇다면 이 오류를 어떻게 대처할지를 IP에서 처리하지 못하기 때문에 IP보다 위에서 처리를 해줘야 합니다.

==> 그래서 1번을 해결하기 위하여 포트번호 가 나오게 되고 2번을 해결하기 위하여 상위 프로토콜인 TCP와 UDP가 나오게 되었습니다.


그렇다면 TCP와 UDP가 2번의 어떤문제들을 해결하고 있나요?

TCP: 데이터의 분실, 중복, 순서가 뒤바뀜 등을 자동으로 보정해줘서 송수신 데이터의 정확한 전달을 할 수 있게 해줍니다.
UDP: IP가 제공하는 정도의 수준만을 제공하는 간단한 IP상위계층의 프로토콜입니다. 이말은 TCP와는 다르게 에러가 날 수도있고 재전송이나 순서가 뒤바뀔 수도 있어서 이경우 어플리케이션에서 처리해야하는 번거로움이 있습니다

그러면 TCP가 성능이 월등히 좋은데 왜 UDP를 사용하나요?

UDP의 결정적인 장점은 데이터의 신속성입니다. 즉 데이터 처리가 TCP보다 빠릅니다. TCP와는 다르게 복잡하지 않기 때문에 가능한 일입니다.
또한 한두장의 이미지가 빠져도 앞뒤장으로 보정을 해서 문제를 커버할 수도 있습니다.

주로 아프리카 TV 같은 실시간 방송과 온라인게임에 사용됩니다.
온라인게임에서 네트워크 환경이 안좋으면 끊기는 이유가 UDP통신은 신속하게 보내지만 데이터가 완벽하게 전달받지 못해서 끊기는것이라고 생각하시면 편합니다.
아프리카 TV를 데이터신호가 약한곳에서 시청하면 버퍼링이 계속 발생하는 원리


그럼 UDP Header를 살펴봅시다

[ UDP Header ] 


단순한 구조이기 때문에 직접 그리지 않고 수업시간에 받은 자료를 가져왔습니다.


Source Port: 시작포트입니다

Destination Port: 도착지 포트입니다

Length: 길이입니다

Checksum: 오류검출입니다


말그대로 UDP는 상대방이 받던지 말던지~~하고 보내기만 하는 녀석입니다.

그렇기때문에 매우 단순하고 직관적입니다.


주의!! 작성자는 보안을 공부하는 학생입니다.

본 게시물은 작성자가 수업을 듣고 이해한 대로 작성하여 틀린부분이 있을수도 있습니다.

틀린부분 지적해주시면 바로 수정하겠습니다 감사합니다.