컴퓨터망 11) UDP

zh025700·2022년 7월 1일
0

컴퓨터네트워크

목록 보기
11/26
post-custom-banner

컴퓨터망

11. UDP

2개의 특별한 transport 계층 프로토콜이 있다
UDP와 TCP

Introdouction

UDP는 애플리케이션 계층과 IP 계층 사이에 위치하며 애플리케이션 프로그램과 네트워크 운영 사이의 중개 역할한다

transport 계층 프로토콜의 책임

  1. 프로세스 간 통신
  2. flow control
  • UDP는 1을 위해 포트 번호를 사용
  • UDP는 2를 매우 최소 수준에서 수행
    • UDP는 flow control이 없음
    • 받은 패킷에서 오류를 감지하면 오류를 삭제한다

UDP는 connectionless unreliable 전송 프로토콜

  • process to process를 제공하는 것 외에는 IP 서비스에 아무것도 추가하지 않는다

왜 UDP를 사용?

  • UDP는 최소 오버헤드를 사용하는 매우 간단한 프로토콜
    • 프로세스가 작은 메시지를 보내고 싶어하고 신뢰성에 크게 신경 쓰지 않는다면 UDP를 사용할 수 있다

User Datagram

데이터그램이라고 불리는 UDP 패킷은 8바이트의 고정된 크기의 헤더를 가지고 있다

UDP Services

Process to Process communication

  • UDP는 IP주소와 포트 번호를 조합한 소켓주소를 사용해 프로세스간 통신을 제공한다

well known port num

Connectionless services

  • UDP는 무연결 서비스를 제공

    • UDP에 의해 전송된 각 사용자 데이터그램이 독립적인 데이터그램임을 의미
  • TCP의 경우처럼 연결 설정도 없고 연결 종료도 없다

    • 이는 각 사용자 데이터그램이 서로 다른 경로로 이동할 수 있음을 의미

    • UDP를 사용하는 프로세스가 데이터 스트림을 UDP로 보낼 수 없다

      • 각 request는 하나의 데이터그램에 들어갈 수 있을 만큼 충분히 작아야 한다

Flowcontrol

없다

Error control

  • UDP에는 체크섬을 제외하고 오류 제어가 없다
  • sender가 메시지가 손실되었는지 또는 중복되었는지 알 수 없다
  • receiver가 체크섬을 통해 오류를 감지하면 데이터그램은 자동으로 폐기

Checksum

  • UDP 체크섬 계산은 IP에 대한 계산과 다름
  • 여기서 체크섬은 슈도 헤더, UDP 헤더, 애플리케이션 계층에서 들어오는 데이터 섹션으로 구성

슈도 헤더

  • 데이터 그램이 0으로 구성된 일부 field로 캡슐화되는 IP 패킷의 헤더 부분

  • 프로토콜 field는 패킷이 UDP에 속하는지 확인하기 위해 추가
  • 위 그림의 모든 값을 이용해 체크섬 구함

Congestion control

  • UDP는 congestion control이 없다

Encapsulation and decapsulation

  • 메시지를 다른 프로세스에 보내기 위해 UDP는 메시지를 캡슐화 후 de캡슐화를 한다

Encapsulation

  • 프로세스에서 UDP를 통해 보낼 메시지가 있으면 소켓 주소 및 데이터 길이와 함께 메시지를 UDP로 전달
  • UDP는 데이터를 수신하고 UDP 헤더를 추가
  • 그런 다음 UDP는 소켓 주소를 사용하여 사용자 데이터그램을 IP로 전달
  • IP는 프로토콜 필드 값 17을 사용하여 자체 헤더를 추가하여 데이터가 UDP 프로토콜에서 왔음을 나타냄
  • 그 후, IP 데이터그램은 데이터 링크 계층으로 전달

Decapsulation

  • 물리, 링크 계층에서 IP로 전달된다
  • IP는 자체 검사를 수행
  • 오류가 없으면 헤더가 삭제되고 데이터그램이 sender 및 receiver IP 주소와 함께 UDP로 전달
    • UDP는 체크섬을 사용하여 데이터그램을 확인
  • 오류가 없으면 헤더가 삭제되고 응용 프로그램 데이터가 sender 소켓 주소와 함께 프로세스로 전달
    • sender 소켓 주소는 수신된 메시지에 응답해야 하는 경우 프로세스로 전달

Queuing

  • 큐는 프로세스가 실행 중인 동안 작동
    • 프로세스가 종료되면 큐도 삭제

클라이언트 프로세스 발신

  • 요청에 지정된 source 포트 번호를 사용하여 메시지를 송신 큐에 보낼 수 있다
  • UDP는 메시지를 하나씩 제거하고 UDP 헤더를 추가한 후 IP로 전달

클라이언트 프로세스 수신

  • 클라이언트에 메시지가 도착하면 UDP는 데이터그램의 destination 포트 번호 필드에 지정된 포트 번호에 대해 수신 큐가 생성되었는지 확인

    • 큐가 있으면 UDP는 수신된 데이터그램을 큐의 끝으로 보냄
    • 큐가 없는 경우, UDP는 데이터그램을 삭제하고 ICMP 프로토콜에 포트 도달 불가능 메시지를 서버로 보내도록 요청
  • 동일한 서버든 다른 서버든 특정 클라이언트 프로그램에 대한 모든 수신 메시지는 동일한 큐로 전송

서버

  • 서버는 시작할 때 well known 포트를 사용하여 수신 및 송신 큐를 요청

서버 수신

  • 서버에 대한 메시지가 도착하면 UDP는 데이터그램의 destination 포트 번호 에 지정된 포트 번호에 대해 수신 큐가 있는지 확인
    • 큐가 있으면 UDP는 수신된 데이터그램을 큐의 끝으로 보냄
    • 큐가 없으면 UDP는 데이터그램을 폐기하고 ICMP 프로토콜에 port unreachable 메시지를 클라이언트에 전송하도록 요청
  • 특정 서버에 대한 모든 수신 메시지는 동일한 대기열로 전송

서버 발신

  • 서버는 요청에 지정된 source 포트 번호를 사용하여 메시지를 발신 큐로 보냄

  • UDP는 UDP 헤더를 추가한 후 IP로 전달

Multiplexing, demultiplexing

TCP/IP 프로토콜을 실행하는 호스트에서, UDP가 하나만 있지만 UDP의 서비스를 사용하고자 하는 프로세스가 여러 개 있을 수 있다
이 상황을 처리하기 위해 UDP multiplex와 demultiplexe를 사용한다

multiplexing
sender에는 데이터그램을 보내야 하는 여러 프로세스가 있을 수 있다
그러나 UDP는 하나만 있다
이것은 다대일 관계이며 multiplexing이 필요하다
UDP는 할당된 포트 번호로 구분되는 서로 다른 프로세스의 메시지를 받아이고 헤더를 추가한 후 UDP는 데이터그램을 IP로 전달한다

demultiplexing
receiver사에는 UDP가 하나뿐이지만 데이터그램을 수신할 수 있는 프로세스가 많을 수 있다
이것은 일대다 관계이며 demultiplexing이 필요하다
UDP는 IP로부터 사용자 데이터그램을 수신한다
오류 검사 및 헤더 삭제 후 UDP는 포트 번호에 따라 각 메시지를 해당 프로세스에 전달한다

UDP와 다른 일반 프로토콜 비교

UDP는 오류 감지를 위해 패킷에 추가된 선택적 체크섬을 제외하고 13장에서 논의한 무연결 단순 프로토콜의 예이다

UDP를 connectionless 단순 프로토콜과 비교할 수 있다
유일한 차이점은 UDP가 receiver에서 손상된 패킷을 탐지하기 위한 선택적 체크섬을 제공한다는 것이다
체크섬이 패킷에 추가되면 수신 UDP는 패킷을 확인하고 패킷이 손상된 경우 패킷을 폐기할 수 있다
그러나 보낸 사람에게 피드백이 전송되지 않는다

UDP application

  • UDP, TCP 중 최적의 프로토콜을 사용하면 된다

UDP package

  • UDP가 UDP 패킷의 송수신을 처리하는 방법
  • UDP 패키지가 제어 블록 테이블, 입력 큐, 제어 블록 모듈, 입력 모듈, 출력 모듈 등 5가지 구성 요소를 포함하고 있다고 말할 수 있다
  • 그림은 이러한 구성 요소와 이들의 상호작용을 보여준다

  • 보낼땐 큐가 없지만 받을땐 큐가 있다
profile
정리
post-custom-banner

0개의 댓글