• 검색 결과가 없습니다.

Chapter 5 UDP Socket

N/A
N/A
Protected

Academic year: 2021

Share "Chapter 5 UDP Socket"

Copied!
21
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Chapter 5 UDP Socket

소켓 프로그래밍

(2)

 UDP 개념

 UDP 프로세스 흐름

 UDP Echo 프로그램

 Socket 클래스를 이용한 UDP

 브로드캐스팅

 멀티캐스팅

UDP Socket

(3)

User Datagram Protocol (RFC 768)

비 연결형 프로토콜

신뢰성 보다는 시간이 우선

헤더 포멧

송신 측 포트번호는 선택사항

제공하는 유일한 신뢰성은 checksum

비교적 간단한 헤더를 가지기 때문에 전송되는 바이트를 줄일 수 있음

데이터가 목적지까지 빨리 이동할 수 있게 됨

UDP 개념

(4)

 TCP 와의 차이점

UDP 개념

UDP TCP

접속 성립이 요구되지 않음 접속 성립이 요구됨

데이터가 순서대로 도착하지 않음 데이터가 순서대로 도착함 낮은 신뢰성 , best-effort 높은 신뢰성

Datagram Stream

브로드캐스트와 멀티캐스트 지원 유니캐스트만 지원

(5)

서버

소켓 생성

포트 바인딩

포트 바인딩 후 접속 요청에 대한 리스닝 과정 없이 즉시 데이터 전송 가능

데이터 송수신은 TCP 와 차이가 있음

클라이언트

서버에 접속할 필요가 없음

소켓 생성 후 즉시 데이터 전송 가능

서버와는 달리 포트 바인딩을 하지 않음

.NET 프레임워크에서는 UDP 소켓을 이용하여 통신을 하기 위해 UdpClient 클래스만을 가짐

즉 , UdpClient 클래스만을 이용하여 UDP 프로그램 구현 가능

UDP 프로세스 흐름

(6)

 UDP 서버 프로세스 흐름

UDP 프로세스 흐름

(7)

 UDP 클라이언트 프로세스 흐름

UDP 프로세스 흐름

(8)

UDP 서버 / 클라이언트 동작 원리 (1/2)

 UDP 서버 / 클라이언트 동작 원리

UDP

서버

UDP

서버

UDP

클라이언트 #1

(9)

UDP 서버 / 클라이언트 동작 원리 (2/2)

 UDP 서버 / 클라이언트 동작 원리 (cont’d)

UDP

서버

UDP

클라이언트 #1

UDP

클라이언트 #2

통신 통신

UDP

서버

UDP

클라이언트 #1

UDP

클라이언트 #n

. . .

. . .

(10)

 예제 프로그램 : EchoServerUDP.cs, EchoClientUDP.cs

 UdpClient 클래스 생성자

포트 바인딩이 없는 생성자

public UdpClient()

public UdpClient(AddressFamily)

 포트 바인딩을 가지지 않는 생성자는 멀티캐스팅에는 적절하지 않음

 첫 번째 생성자는 IPv4 주소지정 스키마를 포함한 객체 생성

 IPv4 외의 주소지정 스키마가 요구될 때에는 두 번째 생성자 사용

UDP Echo 프로그램

(11)

포트 바인딩이 있는 생성자

public UdpClient(int)

public UdpClient(int, AddressFamily) public UdpClient(IPEndPoint)

public UdpClient(string, int)

첫 번째 생성자는 IPv4 주소지정 스키마를 가짐

마지막 생성자는 IP 주소 문자열과 포트번호를 인자로 가짐

IP 주소는 디폴트 원격 호스트의 주소를 명시하는 것으로 접 속 성립을 위해 존재하는 것이 아님

UDP Echo 프로그램

(12)

 디폴트 원격 호스트

TCP 의 접속 성립과는 다른 개념으로 , 단지 데이터를 보 내고자 하는 기본 호스트의 주소를 지정

UDP 를 이용하여 특정 호스트에 계속 메시지를 보내고자 하는 경우 , 이 디폴트 원격 호스트를 명시함으로써 따로 주소를 지정하지 않아도 디폴트 원격 호스트에 메시지를 보낼 수 있음

디폴트 원격 호스트는 생성자로 객체 생성 시에 설정이 가능하며 , Connect() 메서드를 이용하여 설정 또는 변 경이 가능함

UDP Echo 프로그램

(13)

 Connect() 메서드

디폴트 원격 호스트의 설정 및 변경

오버로드된 세 개의 메서드를 가짐

public void Connect(IPEndPoint)

public void Connect(IPAddress, int) public void Connect(string, int)

◦ 각 메서드의 인자는 디폴트 원격 호스트를 명시

◦ 주소는 IPEndPoint, IPAddress 또는 IP 주소 문 자열과 포트번호를 이용하여 지정 가능

UDP Echo 프로그램

(14)

 데이터 송신

public int Send(byte[], int)

public int Send(byte[], int, IPEndPoint) public int Send(byte[], int, string, int)

byte[], int : 보낼 데이터와 데이터의 길이

첫 번째 메서드는 생성자 또는 Connect() 메서드에 의 해 설정된 디폴트 원격 호스트로 데이터를 송신

나머지 두 개의 메서드는 원격 호스트의 주소를 지정하여 데이터를 송신

UDP Echo 프로그램

(15)

 데이터 수신

public byte[] Receive(ref IPEndPoint)

데이터를 수신하게 되면 byte[] 형태로 수신한 데이터 를 반환

인자인 IPEndPoint 에는 송신자의 주소가 채워짐

만약 수신 측에서 Connect() 메서드를 이용하여 디폴 트 원격 호스트를 명시한 경우 디폴트 원격 호스트로부터 보내지는 것이 아닌 모든 데이터는 폐기

UDP Echo 프로그램

(16)

예제 프로그램 : EchoServerUDPSocket.cs, EchoClientUDPSocket.cs

UdpClient가 아닌 Socket 클래스의 SendTo() 메서드와 ReceiveFrom() 메서드를 활용하여 UDP Echo 프로그램을 만들 수 있음

데이터 송신

public int SendTo(byte[], EndPoint)

public int SendTo(byte[], SocketFlags, EndPoint)

public int SendTo(byte[], int, SocketFlags, EndPoint)

public int SendTo(byte[], int, int, SocketFlags, EndPoint)

◦byte[], int , int - 보낼 데이터의 바이트 배열과 시작위치 (offset), 데이터의 크기

◦SocketFlags - 소켓의 동작을 지정

◦EndPoint - 원격 호스트

데이터 수신

public int ReceiveFrom(byte[], ref EndPoint)

public int ReceiveFrom(byte[], SocketFlags, ref EndPoint)

public int ReceiveFrom(byte[], int, SocketFlags, ref EndPoint)

public int ReceiveFrom(byte[], int, int, SocketFlags, ref EndPoint)

Socket 클래스를 이용한 UDP

(17)

브로드캐스팅 / 멀티캐스팅

 통신의 종류

유니캐스팅 브로드캐스팅 멀티캐스팅

(18)

예제 프로그램 : BroadcastSender.cs, BroadcastReceiver.cs

다수의 클라이언트에게 메시지를 전달

TCP 에서는 가능하지 않음

특수 주소인 255.255.255.255 또는 IPAddress.Broadcast 브로드캐스트 주소를 나타냄

IPv6 에는 브로드캐스트 주소가 존재하지 않음

송신자와 같은 서브 넷에 있는 수신자에게만 브로드캐스트 메시지가 전달됨

브로드캐스팅

(19)

예제 프로그램 : MulticastSender.cs, MulticastReceiver.cs

UDP 에서만 가능

서브 넷의 모든 호스트에게 메시지를 전달하는 브로드캐스트와 는 달리 멀티캐스트 그룹에 가입된 호스트에게만 메시지를 전달

메시지를 받기 위해서는 멀티캐스트 그룹에 가입해야 함

멀티캐스트 그룹으로 메시지를 보내기 위해 멀티캐스트 그룹에 가입할 필요는 없음

멀티캐스트 IPv4 주소는 224.0.0.0 ~ 239.255.255.255

IPv6 의 멀티캐스트 주소는 RFC 2375 를 통해서 확인 가능

멀티캐스팅

(20)

멀티캐스팅

 멀티캐스트 주소

 특징

그룹 가입과 탈퇴가 자유롭고 , 그룹 구성원 모두가 평등

멀티캐스트 데이터를 받으려면 그룹에 가입해야 함

멀티캐스트 데이터를 보내기 위해 그룹에 가입할 필요는 없음

28

비트

멀티캐스트 그룹 ID

1 1 1 0

(21)

멀티캐스트 가입 /탈퇴를 위한 메서드

멀티캐스트 그룹 가입

public void JoinMulticastGroup(IPAddress)

public void JoinMulticastGroup(int, IPAddress) public void JoinMulticastGroup(IPAddress, int)

public void JoinMulticastGroup(IPAddress, IPAddress)

 멀티캐스트 그룹에 가입하기 전에 포트 바인딩을 해야 함

 int, IPAddress – interface index, 멀티캐스트 그룹 IP 주소

 Interface index는 같은 링크에 있는 하드웨어를 식별하기 위해 사용

 IPAddress , int – 멀티캐스트 그룹 IP 주소 , TTL

 TTL(Time to Live)은 멀티캐스팅된 데이터그램에 허용되는 라우터 홉수를 의미 , 데이터그램이 지정된 수를 넘어 라우터를 경유한 경우에 폐기됨

 IPAddress , IPAddress – 멀티캐스트 그룹 IP 주소 , 로컬 IP 주소

멀티캐스트 그룹 탈퇴

public void DropMulticastGroup(IPAddress)

public void DropMulticastGroup(IPAddress, int)

 Int – interface index

멀티캐스팅

참조

관련 문서

달리 분류되지 않는 농림수산식품.. Human Computer

단일 개인을 유일하게 식별하거나, 접촉하거나 찾아내기 위해 사용 될 수 있는 정보 또는 단일 개인을 유일하게 식별하기 위해 다른 정 보원들과 함께 사용될 수

Control of the PCS Interface is via GPIB using an external controller or the Test Set’s internal IBASIC controller, or via the serial port by the Agilent 8924C whose

Basic aspects of AUTOSAR architecture and methodology Safety mechanisms supported by AUTOSAR.. Technical safety concepts supported by AUTOSAR Relationship to ISO

Despite the still significant oversupply of skilled staff in the commercial and administrative occupations (last place in the ranking) and in occupations in

3.7 Fracture interface after tensile shear test with plunge depth 43 Table.. 3.13 Fracture interface after tensile shear test with dwell time

Research design, data, methodology: This study uses market share index (MSI), trade specialization index (TSI), export bias index (EBI), export intensity index (ie)

& kinetics on surface, liquid interfaces, and application to catalysis, electrocatalysis,