상세 컨텐츠

본문 제목

[네트워크] UDP & Checksum

CS/네트워크

by young1403 2023. 9. 19. 18:11

본문

 

지난 글에서 HTTP/3.0에 대해 알아보며 UDP에 대해 잠깐 설명하였습니다. 이 글은 그 UDP통신이 무엇인지와 UDP통신의 장단점과 같은 특징에 대해 설명해 보겠습니다.

 

[UDP란?]

OSI7계층의 Transport layer(전송계층)의 대표적인 프로토콜은 TCP와 UDP입니다. TCP와 달리 UDP는 비연결형, 비뢰성의 특징을 가진 전송 프로토콜입니다. UDP는 논리적 연결(connection setup)을 하지 않고 datagram으로 패킷을 전송합니다. 또한 흐름제어, 혼잡제어, 오류제어 등을 제공하지 않는 굉장히 단순한 프로토콜 입니다. 이런 적은 양의 오버헤드를 가지고 있기 때문에 신뢰성을 크게 고려하지 않아도 되는 상황에서  사용합니다.

 

[UDP의 특징]

  • 비연결형, 비신뢰성
  • 흐름제어, 오류제어, 혼잡제어등을 하지 않음.
  • TCP에 비해 header 내용이 단순하여 size가 작음
  • connection setup(연결수립) 과정이 없어 통신 과정이 간결함
  • 주로 live방송과 같은 실시간성이 중요한 통신에 사용.(순간의 조그마한 패킷을 잃어버려도 그 패킷을 받기 위해 재 통신을 하지 않음. - 티가 크게 안남)
  • 실시간 live, 스트리밍 서비스 외에도 DNS서버 조회 시, google 일부 서비스에서 QUIC를 사용해 UDP를 커스터 마이 지겹여서  사용하는 것을 볼 수 있습니다.

[Checksum]

udp 헤더에 checksum이 있는 것을 볼 수 있을 텐데요. udp 헤더는 각 패킷에 대한 신뢰성이 없기 때문에 해당 패킷이 내가 받아도 되는 정상적인 패킷인지 구별할 필요성이 있습니다. 그 식별 방법으로 송신 쪽에서 보낸 checksum과 수신 쪽에서 checksum의 값을 계산해서 비교해 확인해보는 것 입니다. 이런 방식으로 UDP에서 에러탐지를 수행할 수 있습니다.

 

송신쪽 포트번호, 수신쪽 포트번호, 데이터 길이, payload의 데이터, 도착 IP 주소등을 16비트로 쪼개어 전부 더합니다. 만약 더해서 overflow나 carray-out 된 값(16비트를 넘어서 나온 값들)은 기존의 sum값에 다시 더해서 sum 결괏값을 만듭니다. 그렇게 해서 나온 최종 sum값을 1의 보수를 취해서 나오는 값이 checksum값입니다.

 

checksum 계산 과정

 

참고 이미지 : https://www.brainkart.com/article/User-Datagram-Protocol-%28UDP%29_13485

 

관련글 더보기

댓글 영역