Chapter 5 UDP Socket 소켓 프로그래밍.

Slides:



Advertisements
Similar presentations
소켓 프로그래밍.  프로젝트 생성 ◦ Visual Studio 2008 ◦ Visual C# 2008 Express Edition ◦ 통합 개발 환경 (IDE)  서버 소켓  클라이언트 소켓  소켓 프로그램 실행  추적과 디버깅  소켓 클래스 메서드  소켓.
Advertisements

2장. TCP/IP, 서브넷팅 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
CHAP 22. 블루투스.
Socket Programming 소개.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Network Lab. Young-Chul Hwang
Department of Computer Science and Engineering
Chapter 4 Multi-Threaded Socket
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Chapter 2 Socket Programming
Multimedia & Mobile Communications Lab.
9장 데이터 링크층 개요 (Introduction To Data-Link Layer)
제 17 장 TCP : 전송 제어 프로토콜 정보통신연구실.
제 14장 Multicast & Broadcast
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Chapter 21 Network Layer: ARP, ICMP (IGMP).
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
Chapter 06. UDP 서버/클라이언트.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
10 장 데이터 링크 제어(Data Link Control)
Java의 정석 제 15 장 네트워킹(Networking) Java 정석 남궁성 강의
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
15장 네트워킹 15.1 네트워킹의 개요와 java.net 패키지 15.2 인터넷 주소와 URL 15.3 TCP 소켓
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
U D P 전공 : 정보보호 학번 : 이름 : 배 지 태.
2장. TCP/IP, 서브넷팅 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
Chapter 07. 소켓 옵션.
제 11 장 UDP 11.1 프로세스-대-프로세스 통신 11.2 사용자 데이터그램 11.3 검사합 11.4 UDP 동작
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
22 장 전송층(Transport Layer)
2장. TCP/IP, 서브넷팅 2012년 2학기 중부대학교 정보보호학과 이병천 교수.
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
21 장 전송층(Transport Layer)
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
오라클 넷(Oracle Net)의 개념 및 구성
MAIL CLIENT 김창우 윤성훈 이경재.
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
Network 네트워크 이론 및 실습 TCP / IP 4장.
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
2 네트워크 모델 학습 목표 모듈 개념을 알아보고 계층 구조의 필요성을 이해한다.
10 기타 전송 계층 프로토콜.
01. 라우팅 및 원격 액세스의 개요 라우팅은 패킷을 송신지부터 수신지까지 어떠한 경로를 통해 보낼 것인지를 결정하는 방법
Chapter 26 IP over ATM.
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
제 19 장 TCP 대화식 데이터 흐름.
Ping Test.
(Dynamic Host Configuration Protocol)
Addressing the Network – IPv4
Chapter 27 Mobile IP.
라우터의 이해 (보충자료) TCP/IP구성 Ping명령어를 이용한 연결검사 비트와 바이트 10진수/2진수/16진수
Chapter 04. TCP 서버/클라이언트.
제 13 장 인터넷 그룹 관리 프로토콜 정보통신연구실.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
제 6 장 IP 패킷 전달과 라우팅 6.1 연결형 서비스와 비연결형 서비스 6.2 직접 전달과 간접 전달 6.3 라우팅 방법
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
4. IP 데이터그램과 라우팅 (6장. 인터넷과 IP) IP 데이터그램 : 특정 물리망에 종속되지 않은 가상의 패킷 형식.
Network Lab. Young-Chul Hwang
통신프로토콜 전산정보학부 모바일인터넷과 권 춘 우
ARP.
Presentation transcript:

Chapter 5 UDP Socket 소켓 프로그래밍

UDP Socket UDP 개념 UDP 프로세스 흐름 UDP Echo 프로그램 Socket 클래스를 이용한 UDP 브로드캐스팅 멀티캐스팅

UDP 개념 User Datagram Protocol (RFC 768) 비 연결형 프로토콜 신뢰성 보다는 시간이 우선 헤더 포멧 송신 측 포트번호는 선택사항 제공하는 유일한 신뢰성은 checksum 비교적 간단한 헤더를 가지기 때문에 전송되는 바이트를 줄일 수 있음 데이터가 목적지까지 빨리 이동할 수 있게 됨

UDP 개념 TCP 와의 차이점 UDP TCP 접속 성립이 요구되지 않음 접속 성립이 요구됨 데이터가 순서대로 도착하지 않음 데이터가 순서대로 도착함 낮은 신뢰성, best-effort 높은 신뢰성 Datagram Stream 브로드캐스트와 멀티캐스트 지원 유니캐스트만 지원

UDP 프로세스 흐름 서버 소켓 생성 포트 바인딩 포트 바인딩 후 접속 요청에 대한 리스닝 과정 없이 즉시 데이터 전송 가능 데이터 송수신은 TCP와 차이가 있음 클라이언트 서버에 접속할 필요가 없음 소켓 생성 후 즉시 데이터 전송 가능 서버와는 달리 포트 바인딩을 하지 않음 .NET 프레임워크에서는 UDP 소켓을 이용하여 통신을 하기 위해 UdpClient 클래스만을 가짐 즉, UdpClient 클래스만을 이용하여 UDP 프로그램 구현 가능

UDP 프로세스 흐름 UDP 서버 프로세스 흐름

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

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

UDP 서버/클라이언트 동작 원리 (2/2) UDP 서버/클라이언트 동작 원리 (cont’d) UDP 서버 UDP 서버 통신 . . . 통신 통신 UDP 클라이언트 #1 UDP 클라이언트 #2 UDP 클라이언트 #1 . . . UDP 클라이언트 #n

UDP Echo 프로그램 예제 프로그램 : EchoServerUDP.cs, EchoClientUDP.cs UdpClient 클래스 생성자 포트 바인딩이 없는 생성자 public UdpClient() public UdpClient(AddressFamily) 포트 바인딩을 가지지 않는 생성자는 멀티캐스팅에는 적절하지 않음 첫 번째 생성자는 IPv4 주소지정 스키마를 포함한 객체 생성 IPv4 외의 주소지정 스키마가 요구될 때에는 두 번째 생성자 사용

UDP Echo 프로그램 포트 바인딩이 있는 생성자 public UdpClient(int) public UdpClient(int, AddressFamily) public UdpClient(IPEndPoint) public UdpClient(string, int) 첫 번째 생성자는 IPv4 주소지정 스키마를 가짐 마지막 생성자는 IP주소 문자열과 포트번호를 인자로 가짐 IP 주소는 디폴트 원격 호스트의 주소를 명시하는 것으로 접속 성립을 위해 존재하는 것이 아님

UDP Echo 프로그램 디폴트 원격 호스트 TCP의 접속 성립과는 다른 개념으로, 단지 데이터를 보내고자 하는 기본 호스트의 주소를 지정 UDP를 이용하여 특정 호스트에 계속 메시지를 보내고자 하는 경우, 이 디폴트 원격 호스트를 명시함으로써 따로 주소를 지정하지 않아도 디폴트 원격 호스트에 메시지를 보낼 수 있음 디폴트 원격 호스트는 생성자로 객체 생성 시에 설정이 가능하며, Connect() 메서드를 이용하여 설정 또는 변경이 가능함

UDP Echo 프로그램 Connect() 메서드 각 메서드의 인자는 디폴트 원격 호스트를 명시 디폴트 원격 호스트의 설정 및 변경 오버로드된 세 개의 메서드를 가짐 public void Connect(IPEndPoint) public void Connect(IPAddress, int) public void Connect(string, int) 각 메서드의 인자는 디폴트 원격 호스트를 명시 주소는 IPEndPoint, IPAddress 또는 IP 주소 문자열과 포트번호를 이용하여 지정 가능

UDP Echo 프로그램 데이터 송신 public int Send(byte[], int) public int Send(byte[], int, IPEndPoint) public int Send(byte[], int, string, int) byte[], int : 보낼 데이터와 데이터의 길이 첫 번째 메서드는 생성자 또는 Connect() 메서드에 의해 설정된 디폴트 원격 호스트로 데이터를 송신 나머지 두 개의 메서드는 원격 호스트의 주소를 지정하여 데이터를 송신

UDP Echo 프로그램 데이터 수신 public byte[] Receive(ref IPEndPoint) 만약 수신 측에서 Connect() 메서드를 이용하여 디폴트 원격 호스트를 명시한 경우 디폴트 원격 호스트로부터 보내지는 것이 아닌 모든 데이터는 폐기

Socket 클래스를 이용한 UDP 예제 프로그램 : 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)

브로드캐스팅/멀티캐스팅 통신의 종류 유니캐스팅 브로드캐스팅 멀티캐스팅

브로드캐스팅 예제 프로그램 : BroadcastSender.cs, BroadcastReceiver.cs 다수의 클라이언트에게 메시지를 전달 TCP에서는 가능하지 않음 특수 주소인 255.255.255.255 또는 IPAddress.Broadcast는 브로드캐스트 주소를 나타냄 IPv6에는 브로드캐스트 주소가 존재하지 않음 송신자와 같은 서브 넷에 있는 수신자에게만 브로드캐스트 메시지가 전달됨

멀티캐스팅 예제 프로그램 : MulticastSender.cs, MulticastReceiver.cs UDP에서만 가능 서브 넷의 모든 호스트에게 메시지를 전달하는 브로드캐스트와는 달리 멀티캐스트 그룹에 가입된 호스트에게만 메시지를 전달 메시지를 받기 위해서는 멀티캐스트 그룹에 가입해야 함 멀티캐스트 그룹으로 메시지를 보내기 위해 멀티캐스트 그룹에 가입할 필요는 없음 멀티캐스트 IPv4 주소는 224.0.0.0 ~ 239.255.255.255 IPv6의 멀티캐스트 주소는 RFC 2375를 통해서 확인 가능

멀티캐스팅 멀티캐스트 주소 특징 그룹 가입과 탈퇴가 자유롭고, 그룹 구성원 모두가 평등 멀티캐스트 데이터를 받으려면 그룹에 가입해야 함 멀티캐스트 데이터를 보내기 위해 그룹에 가입할 필요는 없음 28 비트 멀티캐스트 그룹 ID 1

멀티캐스팅 멀티캐스트 가입/탈퇴를 위한 메서드 멀티캐스트 그룹 가입 멀티캐스트 그룹 탈퇴 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