Justweon
Justweon
Justweon
전체 방문자
오늘
어제
  • 분류 전체보기 (70)
    • 웹 개발 (2)
      • React (0)
      • Spring (0)
    • 모바일 앱 프로그래밍 (4)
    • 네트워크 프로그래밍 (17)
      • C (17)
    • DATA (42)
      • 데이터 사이언스 (6)
      • 머신 러닝 (31)
      • 데이터베이스 (2)
      • 기타 (3)
    • 토이 프로젝트 (0)
      • 닮은 배우 분류기 (0)
      • PDF 변환기 (GUI) (0)
    • 취미 (1)
      • Photoshop (1)
      • 먹부림 (0)
    • 이것저것 (2)
    • 보안 (1)
      • 드림핵 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • pandas
  • 정규화
  • 텐서보드
  • 하이퍼 파라미터
  • 파이썬
  • 맛집
  • 토이프로젝트
  • 코랩
  • 하이퍼파라미터
  • 취미
  • 알고리즘
  • 시각화
  • GUI
  • 샐러드
  • 머신 러닝
  • 모델 평가
  • 경사 하강법
  • keras
  • 포토샵
  • 심층 신경망
  • SVM
  • 과소적합(underfitting)
  • 데이터 전처리
  • 콜백
  • tensorflow
  • 프로젝트
  • MLP
  • 데이터 사이언스
  • 과대적합(overfitting)
  • 그리드 서치

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Justweon

Justweon

네트워크 프로그래밍/C

[네트워크 프로그래밍/C] UDP에 대한 이해

2022. 2. 25. 21:57

UDP 소켓의 특성

UDP의 동작원리를 편지를 예로 들어서 설명해보겠습니다. 편지를 보내기 위해서는 일단 편지봉투에다가 보내는 사람과 받는 사람의 주소정보를 써 넣어야 합니다. 그리고 우표를 붙여서 우체통에 넣어주면 끝인데, 편지의 특성상 보내고 나서 상대방의 수신여부를 확인할 길은 없습니다. 물론 전송도중에 편지가 분실될 확률도 있습니다. 즉, 편지는 신뢰할 수 없는 전송방법입니다. 이와 마찬가지로 UDP 소켓은 신뢰할 수 없는 전송방법을 제공합니다.

 

여기서 TCP 소켓이 무조건 더 좋은가? 라고 생각할 수 있는데, 물론 TCP가 신뢰성 측면에서는 더 좋은 소켓입니다. 하지만 UDP는 TCP보다 훨씬 간결한 소켓입니다. ACK와 같은 응답 메시지를 보내는 일도 없고, SEQ와 같이 패킷에 번호를 부여하는 일도 없습니다. 때문에 상황에 따라서는 TCP보다 더 좋은 성능을 발휘합니다. 그리고 UDP도 TCP만큼은 아니지만 생각보다 데이터의 손실이 자주 발생하지는 않아서, 신뢰성보다 성능이 중요시되면 UDP가 더 좋은 선택이 될 수도 있습니다.

 

바로 앞 포스트에서 TCP는 신뢰성 없는 IP를 기반으로 신뢰성 있는 데이터 송수신을 위해 흐름 제어를 한다고 했는데, 이 흐름제어가 UDP에는 존재하지 않습니다. 이 흐름제어가 UDP와 TCP를 구분짓는 가장 큰 차이점입니다.

UDP의 내부 동작원리

패킷 전송에 있어서 UDP와 IP 역할

위 그림에서 보이듯이 호스트 B를 떠난 UDP 패킷이 호스트 A에게 전달되도록 하는 것은 IP의 역할이지만, 이렇게 전달된 UDP 패킷을 호스트 A 내에 존재하는 UDP 소켓 중 하나에게 최종 전달하는 것은 IP의 역할이 아니고 UDP의 역할입니다. 즉, UDP의 역할 중 가장 중요한 것은 수신된 패킷을 PORT 정보를 참조해 최종 목적지인 UDP 소켓에 전달하는 것입니다.

'네트워크 프로그래밍 > C' 카테고리의 다른 글

[네트워크 프로그래밍/C] UDP의 데이터 송수신 특성과 UDP에서의 connect 함수호출  (0) 2022.02.26
[네트워크 프로그래밍/C] UDP 기반 서버, 클라이언트의 구현  (0) 2022.02.25
[네트워크 프로그래밍/C] TCP의 이론적 내용  (0) 2022.02.25
[네트워크 프로그래밍/C] TCP 기반 서버, 클라이언트 구현  (0) 2022.02.22
[네트워크 프로그래밍/C] TCP와 UDP에 대한 이해  (0) 2022.02.22
    '네트워크 프로그래밍/C' 카테고리의 다른 글
    • [네트워크 프로그래밍/C] UDP의 데이터 송수신 특성과 UDP에서의 connect 함수호출
    • [네트워크 프로그래밍/C] UDP 기반 서버, 클라이언트의 구현
    • [네트워크 프로그래밍/C] TCP의 이론적 내용
    • [네트워크 프로그래밍/C] TCP 기반 서버, 클라이언트 구현
    Justweon
    Justweon
    공부 목적을 위해 기록하는 블로그입니다 :)

    티스토리툴바