UDP응용프로토콜

원래벌레·2022년 11월 29일
2

🌞 UDP를 다시 집고 넘어가자

UDP는 비연결, 비신뢰성 프로토콜로 오류제어와 흐름제어가 없습니다.

재전송 과정이 불편한 음성, 화상전송등의 응용에 사용이 됩니다.

UDP 프레임 형식

UDP Checksum 계산

UDP 활용 예

🌱 실시간 통신


전화와 같은 실시간 통신의 경우에는 위와 같이 문제가 발생하여 패킷이 정상적으로 전달이 되지 않을 때 재전송을 해주지 않는다.
왜냐하면 이러한 재전송을 하는 것이 더 안좋기 때문이다.
실시간 통신의 경우에는 지연시간이 사용자의 품질에 영향을 많이준다.
약간의 지연이 있다하더라도 사용자가 느끼는 불편함은 크다.
그렇기 때문에 이러한 지연시간을 늘리는 재전송 행위를 넣는 것은 좋지 않은 방법이다.


🌱 일시성 패킷전달

패킷을 하나를 보내고 하나를 받는 것으로 끝나는 경우이다.
이경우에는 굳이 TCP를 사용하여 연결을 하고 연결을 유지하고 연결을 끊어주고 할 필요가 없다.
단순히 오류가 발생하면 패킷을 재시도 하거나 무시를 해주면 되는 부분이기 때문이다.
ex) DNS, DHCP


🌱 파일전송(TFTP)

응용 계층에서 전송 과정을 감시하고, 필요시에는 재전송도 수행하는 방법이다.
파일을 전송하는 것을 TCP에서 오류제어및 흐름제어를 해줄 때 응용 계층에서 하는 것보다 더 느린 경우가 발생한다. 그래서 이를 응용계층에서 다 해주기 때문에 TCP보다 가벼운 UDP를 통해서 패킷을 전달을 한다.


🌼 UDP 응용 계층의 구성

UDP는 포트를 통해서 응용 프로세스를 분리를 한다.

메시지는 Mux/Parser를 통하여 한꺼번에 메시지가 모여서 전송을 하거나, Parsing을 통하여 메시지를 적절한 포트에 전송을 합니다.

DHCP의 경우에는 Client 포트로 68번 포트를 사용하고, 서버는 67번 포트를 사용한다.

이 68번 포트와 67번 포트는 BOOTP client, BOOTTP server의 포트를 그대로 전승하여 사용한다.

BOOT 정보를 가지고 있는 BOOTP, 이 BOOTP를 그대로 전승 받아서 개발한 프로토콜이 DHCP 프로토콜이다.

현재 BOOTP는 사용하지 않는다.

UDP용 포트번호


🌞 DHCP

DHCP는 동적 호스트 구성 프로토콜로 호스트 IP 구성관리를 단순화하는 IP표준이다.

동적 호스트 구성 프로토콜 표준에는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 DHCP 사용 클라이언트에게 동적으로 할당하는 방법을 제공한다.

DHCP를 사용하기 전에는 호스트에 IP를 할당해주기 위하여 RARP 또는 BOOTP를 사용을 하였다.
그런데 이 두가지의 프로토콜을 이용하여 IP를 할당하는 경우에는 호스트에게 고정적인 IP를 할당해주었다. 즉 이 경우에 호스트를 사용하지 않고 있어도 IP가 할당되어 있어 해당 IP를 다른 호스트에서 사용하지 못하게 한다.

이런 결과는 결국엔 IP를 낭비하게 한다. 그래서 나온것이 DHCP이다.


🌻 RARP, BOOTP, DHCP의 비교

🌱 공통점

  • IP주소를 알려준다.

🌱 RARP

  • 미리 설정된 MAC/IP 매핑 테이블을 통해서 MAC 주소에 대한 IP 주소정보를 응답한다.

🌱 BOOTP

  • 하드디스크 없이 단말이 부팅될 때, 자신이 필요로 하는 운영체제 파일을 서버로부터 내려 받기 위해 고안된 프로토콜이다.
  • RARP와 달리 IP주소 뿐 아니라 게이트웨이 DNS 주소 등 정보도 제공이 가능하다.

🌱 DHCP

  • RARP, BOOTP는 관리자에 의한 고정적인 정보를 알려준다. 따라서 단말이동 또는 LAN카드 변경 시 빠른 대응이 어렵다.
  • DHCP는 BOOTP를 개량하여 IP 주소 풀에서 가용한 IP주소를 일정기간 임대해 주는 동적 주소 할당 프로토콜이다. BOOTP처럼 MAC/IP 매핑 테이블을 이용하여 고정 IP를 할당 할 수도 있다.


🌼 DHCP 동작절차

🌱 DHCP Discover

  • 메시지 방향 : 단말 -> DHCP 서버
  • 브로드캐스트 메시지
  • 단말장비가 DHCP서버에게 아이피 주소 할당을 요청하는 것이다.

🌱 DHCP Offer

  • 메시지 방향 : DHCP서버 -> 단말
  • 브로드캐스트 메시지 또는 유니캐스트 메시지
  • 단말에서 요청을 한 아이피 주소 정보를 포함한 네트워크 정보의 할당 요청을, DHCP 서버가 받아서 이것에 대해서 응답을 하는 것이며, 이때 아이피 주소정보와 단말의 MAC주소 정보 등을 네트워크 정보와 함께 같이 전송한다.

🌱 DHCP Request

  • 메시지 방향 : 단말 -> DHCP 서버
  • 브로드캐스트 메시지
  • 단말이 받은 아이피 주소 정보를 사용하겠다는 것을 서버로 보내서, 확정을 받기 위한 메시지이다.

🌱 DHCP ACK

  • 메시지 방향 : DHCP서버 -> 단말
  • 브로드캐스트 메시지 또는 유니캐스트 메시지
  • 단말에서 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP Ack 메시지를 Broadcast로, Flag=0이면 Unicast로 보내주며, 단말의 MAC 어드레스에 매칭이 되는 IP주소와 게이트웨이 주소를 확정하여 주는 것이다.

🌱 DHCP Release

  • 메시지 방향 : 단말 -> DHCP서버
  • 호스트가 직접 IP를 반납하기 위한 메시지이다.

🌻 DHCP/BOOTP 프레임

  • BOOTP의 호환을 위하여 동일 포트 번호 및 기본 헤더 구성이 동일하다.

  • 단, 패킷 종류(Discover, Offer 등) 식별자와 임대기간 등 DHCP 관련 정보가 BOOTP의 옵션 영역에 추가가 됐다.

구성요소


🌱 Operation Code

  • Request(01), Response(02)

🌱 Hardware Type

  • LAN의 종류를 표기한다. ex) Ethernet(01)

🌱 Hardware Length

  • LAN이 사용하는 프로토콜의 주소 길이 ex) Ethernet(06)

🌱 Hop Count

  • DHCP 패킷이 경유할 수 있는 최대 라우터의 개수이다.

🌱 Transaction Id

  • 랜덤한 32비트 숫자이다. Request 송신시 사용된 번호는 응답 메시지에도 동일한 값을 가지도록 하여 그릇된 응답을 구분하도록 한다.

🌱 Num of seconds

  • 이패킷을 송신한 시스템이 부팅 이후 초단위의 경과 시간이다.

🌱 B-flag

  • 1로 설정하여 클라이언트가 DHCP요청메시지를 전송하면 서버는 브로드캐스트 주소로 응답메시지를 보낸다.
  • 이유 : 클라이언트가 아직 IP주소 할당되지 않았으므로 클라이언트가 응답을 수신 하기 위해서는 브로드캐스트로 받아야 한다.

🌱 Client IP addr

  • 클라이언트의 IP 주소로 최초 요청 시에는 0.0.0.0 으로 할당되지 않은 상태이다.

🌱 Your IP addr

  • 클라이언트에 할당된 IP 주소로 서버에 의한 응답 메시지에 포함된다.

🌱 GW addr

  • DHCP 메시지를 중계하는 Relay Agent의 IP주소이다.
  • 이와 달리, 기본게이트웨이 주소는 옵션에 채워진다.

  • Relay Agent
    브로드캐스트를 통해서 IP를 할당하기 때문에, 다른 서브넷에 있는 호스트의 경우에는 새로운 DHCP서버를 통해서 관리해야 하는 비효율적인 구조가 생겨난다.
    이 문제를 해결해주기 위하여 나온 것이 Relay Agent이다.
    라우터의 Relay Agent 기능을 설정을 해주면 서로 다른 서브넷의 위치하는 단말과 DHCP 서버간에도 DHCP 메시지 통신이 가능해진다.
    DHCP Relay Agent의 가장 핵심적인 기능은 단말이 송신하는 DHCP브로드캐스트 패킷을 유니캐스트로 변환하여 DHCP 서버에 전달하는 것이다.

🌱 Client HW addr

  • 클라이언트의 하드웨어 주소이다. ex) 이더넷 주소 , MAC Address

🌱 Server Name String

  • 서버 이름

🌱 Boot file name

  • 부트 파일 경로와 파일이름(BOOTP용)

🌱 Option

  • 옵션의형식

  • 옵션의 종류

🌞 TFTP

  • UDP 상에서 이루어지는 간단한 파일 전송프로토콜이다.

  • 라우터/스위치 등 임베디드 시스템과 같이 하드 디스크가 없는 시스템의 경우, 자신이 필요한 설정파일 또는 갱신된 운영체제 파일을 서버로부터 내려 받거나 올려 보낼 때 사용한다.

클라이언트가 요청을 보내면 서버는 파일을 보낸다.


🌻 TFTP의 메시지 형식

  • Read/Write Request
  • data를 보내는 메시지
  • ACK
  • 에러메시지
  • Option ACK

🌼 TFTP의 동작

🌱 Wirte

🌱 Read

profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글

관련 채용 정보