420 likes | 744 Views
제 11 장 UDP. 11.1 프로세스-대-프로세스 통신 11.2 사용자 데이터그램 11 .3 검사합 11 .4 UDP 동작 11.5 UDP 사용 11 .6 UDP 설계 11.7 요약. TCP/IP 프로토콜 모음에서 UDP 위치. UDP 전송 프로토콜의 임무. 프로세스-대-프로세스 통신 생성 : 포트 번호 이용 최소한의 오류 제어 메커니즘 수행 프로세스로부터 데이터 단위를 받아 신뢰성 없는 전달 제공 비연결형, 신뢰성이 없는 전송 프로토콜
E N D
제 11 장 UDP 11.1 프로세스-대-프로세스 통신 11.2 사용자 데이터그램 11.3 검사합 11.4 UDP 동작 11.5 UDP 사용 11.6 UDP 설계 11.7 요약
UDP 전송 프로토콜의 임무 • 프로세스-대-프로세스 통신 생성 : 포트 번호 이용 • 최소한의 오류 제어 메커니즘 수행 • 프로세스로부터 데이터 단위를 받아 신뢰성 없는 전달 제공 • 비연결형, 신뢰성이 없는 전송 프로토콜 • 최소한의 오버헤드만 사용하는 간단한 프로토콜
프로세스-대-프로세스 통신(계속) • 포트 번호 • 프로세스-대-프로세스 통신 방법 : 클라이언트 / 서버 • 클라이언트와 서버 프로세스는 같은 이름을 가짐 • Daytime client process / daytime server • 원격 컴퓨터는 여러 개의 서버 프로그램 실행 • 로컬 컴퓨터로 여러 개의 클라이언트 프로그램 수행
프로세스-대-프로세스 통신(계속) • 프로세스 통신을 위해 필요한 사항 • 로컬 호스트(local host) • 로컬 프로세스(local process) • 원격 호스트(remote host) • 원격 프로세스(remote process)
프로세스-대-프로세스 통신(계속) • 프로세스 통신에서 포트 번호의 역할 • 로컬 호스트와 원격 호스트 : IP 주소 • 프로세스 : 포트 번호 • 포트 번호 범위 : 0 ~ 65,535 사이 정수 • 잘 알려진 포트 번호(well-known port number) • 임시 포트 번호(ephemeral port number)
프로세스-대-프로세스 통신(계속) • 포트 번호
프로세스-대-프로세스 통신(계속) • IP 주소 대 포트 번호
프로세스-대-프로세스 통신(계속) • IANA(Internet Assigned Numbers Authority) 범위 • 잘 알려진 포트 : 0 ~ 1,023 • 등록된 포트(registered port) : 1,024~ 49,151 • 동적 포트(dynamic port) : 49,152~ 65,535
프로세스-대-프로세스 통신(계속) • UDP에서사용되는 잘 알려진 포트
프로세스-대-프로세스 통신(계속) • 소켓 주소(Socket Address) • 각 종단 점에서 연결을 만들기 위해 필요한 주소
11.2 사용자 데이터그램 • 8 바이트 고정 크기 헤더 • 사용자 데이터그램 형식
사용자 데이터그램(계속) • 사용자 데이터그램 형식 • 발신지 포트 번호(source port number) • 목적지 포트 번호(destination port number) • 길이(length) : 헤더 + 데이터 • 검사합 : 오류 발견
사용자 데이터그램(계속) • UDP 검사합에 포함된 부분 • 의사 헤더(Pseudoheader) • UDP 헤더 • 응용 계층으로부터 온 데이터
사용자 데이터그램(계속) • UDP 헤더에 첨부된 의사 헤더
사용자 데이터그램(계속) • 송신자 검사합 계산 • UDP 데이터그램에 의사 헤더 추가 • 검사합 필드 0으로 채움 • 전체를 16 비트(2 바이트) 단위로 나눔 • 전체 바이트가 짝수가 아니면 값이 0 인 바이트 추가 • 1 의 보수 연산 이용 16 비트 섹션을 전부 더함 • 결과의 부수를 취하여 검사합 필드에 삽입 • 의사 헤더와 추가된 패딩 제거 • 데이터그램을 IP 소프트웨어에 전달
사용자 데이터그램(계속) • UDP 사용자 데이터그램 검사합 계산
사용자 데이터그램(계속) • 수신자 검사합 계산 • UDP 데이터그램에 의사 헤더 추가 • 필요하면 패팅 추가 • 전체 비트를 16 비트 섹션으로 나눔 • 1 의 보수 연산 이용 섹션을 전부 더함 • 결과에 대해 보수를 취함 • 결과가 0 이면 의사 헤더와 추가된 헤더를 없애고 데이터그램을 받아들인다 • 그렇지 않으면 폐기한다
11.4 UDP 동작 • 비 연결형 서비스 • 각 데이터그램은 서로 독립적 • 연결 설정과 종료 과정 없이 서로 다른 경로로 전달될 수 있음 • 작은 메시지를 보내는 프로세스만이 UDP 사용 • 흐름제어와 오류제어 • 간단하고 신뢰성 없는 프로토콜 • 흐름제어도 없고 윈도우 메커니즘도 없음 • 검사합 외에는 오류 제어 메커니즘이 없음
UDP 동작(계속) • 캡슐화와 역 캡슐화
UDP 동작(계속) • UDP에서 사용되는 큐(Queue)
UDP 동작(계속) • 큐잉 • 클라이언트에서 프로세스가 시작될 때 운영체제에게 포트번호 요청(임시) • 구현에 따라 입력 큐 또는 입/출력큐 생성 • 프로세스가 종료 되면 큐는 제거 • 큐가 생성되어 있지 않으면 ICMP 프로토콜에게 “port unreachable” 메시지를 보낸데이터그램은 폐기
UDP 동작(계속) • 다중화와 역 다중화
11.5 UDP 용도 • 단순한 요청-응답을 필요로 하는 프로세스 • 흐름 제어와 오류 제어가 크게 필요하지 않은 프로세스 • 내부적인 흐름 제어와 오류 제어 메커니즘을 가지고 있는 프로세스 • 멀티캐스팅과 브로드캐스팅을 위한 전송 프로토콜 • SNMP와 같은 관리 프로세스 • RIP(Routing Information Protocol)와 같은 경로 갱신 프로토콜에 사용
11.6 UDP 설계 • UDP 패키지 구성 요소 • 제어 블록 테이블 • 입력 큐 • 제어 블록 모듈 • 입력 모듈 • 출력 모듈
UDP 설계(계속) • UDP 설계
UDP 설계(계속) • 제어 블록 테이블(Control Block Table) • 연결 포트를 추적하기 위한 테이블 • 테이블 엔트리(상태, 프로세스 ID, 포트 번호, 큐 번호) • 입력 큐(Input Queue) • 프로세스당 하나씩 배정
UDP 설계(계속) • 제어 블록 모듈(Control-Block Module) • 제어 블록 테이블 관리 담당 • 프로세스가 시작될 때 운영체제에게 포트 번호 요청 • 운영 체제는 서버에게 잘 알려진 포트 번호, 클라이언트는 임시 포트 번호 배정 • 프로세스 번호와 포트 번호를 제어 블록으로 보냄
UDP 설계(계속) • 제어 블록 번호 알고리즘 Receive: a process ID and a port number. 1. Search the control block table for a FREE entry. 1. If(not found) 1. Delete an entry using a predefined strategy. 2. Create a new entry with the state IN-USE. 3. Enter the process ID and the port number. 2. Return
UDP 설계(계속) • 입력 모듈(Input Module) • IP로 부터 데이터그램을 받는다 • 제어 블록 테이블을 찾아서 데이터그램과 같은 포트 번호를 가진 엔트리를 찾는다 • 있으면 엔트리 정보를 이용하여 데이터를 큐에 넣는다 • 없으면 ICMP 메시지를 생성
UDP 설계(계속) • 입력 모듈 알고리즘 Receive: a user datagram from IP 1. Look for the corresponding entry in the control-block table. 1. If(found) 1. Check the queue field to see if a queue is allocated. 1. If(no) 1. Allocate a queue. 2. Enqueue the data in the corresponding queue. 2. If(not found) 1. Ask the ICMP module to send an “unreachable port” message. 2. Discard the user datagram. 2. Return
UDP 설계(계속) • 출력 모듈(output module) • 데이터그램을 생성하여 보내는 책임을 가짐 Receive: data and information from a process • Create a UDP user datagram. • Send the user datagram. • Return.
UDP 설계(계속) • 예제 : 제어 블록 데이터의 초기값
UDP 설계(계속) • 예제 1 • 목적지 포트 번호가 52,012 인 데이터그램 도착 • 입력 모듈이 01 번호를 찾아냄 • 큐 번호 38 이 IN-USE 상태 • 데이터그램을 38 번 큐에 보냄 • 테이블은 변하지 않음
UDP 설계(계속) • 예제 2 • 몇 초 후에 프로세스 시작 • 운영체제에게 포트 번호 요청 • 포트 번호 52,014 할당 받음 • 테이블에 엔트리 생성 • 이곳을 향한 데이터그램이 도착하지 않아 큐는 배정 하지 않음
UDP 설계(계속) • 예제 2 후의 제어 블록 테이블
UDP 설계(계속) • 예제 3 • 52,011 포트에 데이터그램 도착 • 테이블을 검사하여 큐가 배당되지 않음을 확인 • 모듈은 43 번 큐 생성
UDP 설계(계속) • 예제 3 후의 제어 블록 테이블
UDP 설계(계속) • 예제 4 • 몇 초 후 52,222 포트에 데이터그램에 도착 • 이를 위한 엔트리를 찾지 못함 • 데이터그램은 폐기되고, 발신지에 “unreachable port” 메시지를 보낼 것을 ICMP에 요청 • 예제 5 • 몇 초 후 프로세스가 사용자 데이터그램을 보내고자 함 • 데이터를 출력 모듈에 보내고, 이 모듈로 UDP 헤더를 붙여서 보냄