Chapter 06. UDP 서버/클라이언트.

Slides:



Advertisements
Similar presentations
TCP 서버/클라이언트 동작 원리 - (1) TCP 서버/클라이언트 예 웹 서버 웹 클라이언트 웹 클라이언트
Advertisements

12장. Raw 소켓 Raw 소켓의 특징과 사용 방법을 익힌다. Ping 프로그램의 동작 원리를 이해하고 작성 방법을 익힌다.
Part TCP / IP(계속) 3. IP 주소 4. IP 라우팅 5. 응용 프로토콜.
CHAP 22. 블루투스.
한남대학교 컴퓨터공학과 소프트웨어공학실험실 최 용 준
10장. 소켓 입출력 모델(I) 블로킹과 넌블로킹 소켓의 특징을 이해한다. Select 소켓 입출력 모델을 이해하고 활용한다.
윈도우 네트워크 프로그래밍 √ 원리를 알면 IT가 맛있다 TCP/IP 소켓 프로그래밍 광주대학교 정보통신학과 조 정 호.
Chapter 06. UDP 서버/클라이언트.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Chapter 03. 소켓 주소 구조체 다루기.
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
Multimedia & Mobile Communications Lab.
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
제 14장 Multicast & Broadcast
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Chapter 21 Network Layer: ARP, ICMP (IGMP).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Department of Computer Engineering
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Understanding of Socket and File I/O
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
13장 고급 입출력 함수 박사 4학기 최 성자.
Chapter 03. 소켓 주소 구조체 다루기.
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 5 UDP Socket 소켓 프로그래밍.
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
Chapter 07. 소켓 옵션.
Network Security WireShark를 활용한 프로토콜 분석 I.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
제 15 장 BOOTP와 DHCP BOOTP 15.2 동적 호스트 설정 프로토콜.
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
TCP/IP 인터네트워킹 INTERNETWORKING with TCP/IP <vol
Department of Computer Engineering
Network 네트워크 이론 및 실습 TCP / IP 4장.
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
2 네트워크 모델 학습 목표 모듈 개념을 알아보고 계층 구조의 필요성을 이해한다.
01. 라우팅 및 원격 액세스의 개요 라우팅은 패킷을 송신지부터 수신지까지 어떠한 경로를 통해 보낼 것인지를 결정하는 방법
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
(Dynamic Host Configuration Protocol)
Chapter 27 Mobile IP.
Chapter 04. TCP 서버/클라이언트.
제 13 장 인터넷 그룹 관리 프로토콜 정보통신연구실.
Chapter 02. 윈도우 소켓 시작하기.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
Department of Computer Engineering
ARP.
중간 결과 보고 ( Server & Client )
Presentation transcript:

Chapter 06. UDP 서버/클라이언트

UDP 서버/클라이언트의 기본 구조와 동작 원리를 이해한다. UDP 애플리케이션 작성에 필요한 소켓 함수를 익힌다. 학습 목표 UDP 서버/클라이언트의 기본 구조와 동작 원리를 이해한다. UDP 애플리케이션 작성에 필요한 소켓 함수를 익힌다. 브로드캐스팅의 개념을 이해하고 UDP를 이용한 구현 방법을 익힌다.

TCP와 UDP (1/3) TCP와 UDP의 공통점 포트 번호를 이용하여 주소를 지정 데이터 오류를 체크함

TCP와 UDP의 차이점 TCP와 UDP (2/3) 항목 TCP UDP ① 연결형(connection-oriented) 프로토콜 - 연결이 성공해야 통신 가능 비연결형(connectionless) 프로토콜 - 연결 없이 통신 가능 ② 데이터 경계를 구분하지 않음 - 바이트 스트림(byte-stream) 서비스 데이터 경계를 구분함 - 데이터그램(datagram) 서비스 ③ 신뢰성 있는 데이터 전송 - 데이터를 재전송함 비신뢰적인 데이터 전송 - 데이터를 재전송하지 않음 ④ 1 대 1 통신(unicast) 1 대 1 통신(unicast), 1 대 다 통신(broadcast), 다 대 다 통신(multicast)

TCP와 UDP (3/3) UDP의 특징 - 연결을 하지 않으므로 connect() 함수를 사용하지 않음. (몇 가지 이유로 인해 connect() 함수를 사용하는 경우도 있음) - 데이터 경계 구분을 위한 작업을 애플리케이션이 하지 않아도 됨 - 프로토콜 수준에서 신뢰성 있는 데이터 전송을 보장하지 않으므로, 필요하다면 애플리케이션 수준에서 신뢰성 있는 데이터 전송 기능을 구현해야 함 - 간단한 소켓 함수 호출 절차만 따르면 다자 간 통신을 쉽게 구현할 수 있음

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

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

예제 동작 방식 UDP 서버/클라이언트 예제 UDP 클라이언트 UDP 서버 fgets() sendto() printf() recvfrom()

UDP/IP 소켓 통신을 위해 필요한 요소 ① 프로토콜 ② 지역(local) IP 주소와 지역 포트 번호 소켓을 생성할 때 결정 ② 지역(local) IP 주소와 지역 포트 번호 서버 또는 클라이언트 자신의 주소 ③ 원격(remote) IP 주소와 원격 포트 번호 서버 또는 클라이언트가 통신하는 상대방의 주소

소켓 데이터 구조체 UDP 서버/클라이언트 분석 (2/4) 서버 클라이언트 애플리케이션 운영체제 네트워크 수신 버퍼 지역 IP 주소 지역 포트 번호 원격 IP 주소 원격 포트 번호 클라이언트 애플리케이션 운영체제 네트워크 • • • 수신 버퍼

UDP 서버/클라이언트 구조 ① UDP 서버/클라이언트 분석 (3/4) socket() bind() recvfrom() sendto() closesocket() UDP 서버 UDP 클라이언트 네트워크

UDP 서버/클라이언트 구조 ② UDP 서버/클라이언트 분석 (4/4) socket() bind() recvfrom() sendto() closesocket() send() recv() UDP 서버 UDP 클라이언트 네트워크 connect()

sendto() 함수 하부 프로토콜(예를 들면, UDP/IP)을 이용하여 애플리케이션 데이터를 전송 데이터 전송 함수 (1/4) sendto() 함수 하부 프로토콜(예를 들면, UDP/IP)을 이용하여 애플리케이션 데이터를 전송 sendto() 함수를 호출할 때, 소켓의 지역 IP 주소와 지역 포트 번호가 아직 결정되지 않은 상태라면 시스템이 자동으로 결정 int sendto ( SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen ) ; 성공: 보낸 바이트 수, 실패: SOCKET_ERROR

sendto() 함수 사용 예 데이터 전송 함수 (2/4) // 소켓 주소 구조체를 수신자 주소로 초기화한다. SOCKADDR_IN serveraddr; ... // 보낼 데이터를 저장할 버퍼를 선언한다. char buf[BUFSIZE]; // 보낼 데이터를 버퍼에 저장한다. // 데이터를 보낸다. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&serveraddr, sizeof(serveraddr)); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 보냈습니다.\n", retval);

recvfrom() 함수 수신 버퍼에 도착한 데이터를 애플리케이션 버퍼로 복사 데이터 전송 함수 (3/4) int recvfrom ( SOCKET s, char* buf, int len, int flags, struct sockaddr* from, int* fromlen ) ; 성공: 받은 바이트 수, 실패: SOCKET_ERROR

recvfrom() 함수 사용 예 데이터 전송 함수 (4/4) // 송신자 주소 저장을 위한 변수를 선언한다. SOCKADDR_IN peeraddr; int addrlen; // 받은 데이터를 저장할 버퍼를 선언한다. char buf[BUFSIZE]; // 데이터를 받는다. addrlen = sizeof(peeraddr); retval = recvfrom(sock, buf, BUFSIZE, 0, (SOCKADDR *)&peeraddr, &addrlen); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 받았습니다.\n", retval);

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

브로드캐스팅 (2/6) 브로드캐스팅 원리 송신자

브로드캐스트 데이터를 보내기 위한 절차 ① 소켓에 대해 브로드캐스팅을 활성화시킴 브로드캐스팅 (3/6) BOOL bEnable = TRUE; retval = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bEnable, sizeof(bEnable)); if(retval == SOCKET_ERROR) err_quit("setsockopt()");

브로드캐스트 데이터를 보내기 위한 절차 (cont’d) 브로드캐스팅 (4/6) 브로드캐스트 데이터를 보내기 위한 절차 (cont’d) ② 브로드캐스트 주소로 데이터를 보냄 // 소켓 주소 구조체를 초기화한다. SOCKADDR_IN remoteaddr; ZeroMemory(&remoteaddr, sizeof(remoteaddr)); remoteaddr.sin_family = AF_INET; remoteaddr.sin_port = htons(9000); remoteaddr.sin_addr.s_addr = htonl(INADDR_BROADCAST); // 보낼 데이터를 버퍼에 저장한다. char buf[BUFSIZE]; ... // 데이터를 보낸다. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&remoteaddr, sizeof(remoteaddr)); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 보냈습니다.\n", retval);

브로드캐스트 주소 브로드캐스팅 (5/6) 호스트 ID 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 네트워크 ID 11 . . . . . . . . . . . . 1 네트워크-방향 브로드캐스트 지역 브로드캐스트 11 . . . 1 서브넷-방향 브로드캐스트 서브넷 ID

브로드캐스팅 (6/6) 브로드캐스트 주소 (cont’d) 라우터 네트워크-방향 브로드캐스트 라우터 지역 브로드캐스트