Department of Computer Engineering

Slides:



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

Chap15 네트워킹 Section 1 : 네트워킹의 개요와 java.net 패키지 Section 2 : 인터넷 주소와 URL
Java Socket 통신 이개혁 정대준.
Chapter 13 전송층 개요.
7장. TCP와 UDP.
Understanding of Socket and File I/O
Asymmetric Link 분석.
Chapter 06. UDP 서버/클라이언트.
22 장 프로세스간 전달 : UDP와 TCP 22.1 프로세스간 전달 22.2 사용자 데이터그램 프로토콜
TCP/IP Socket Cover Slide 조태문.
1. 왜 의사헤더를 추가하나? 1 / 32 UDP 데이터그램이 목적지에 제대로 전송됐는지 확인하기 위해
TCP Client/Server Program
Department of Computer Science and Engineering
TCP/IP 소켓 프로그래밍 - C 버전 중에서
Department of Computer Engineering
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
PHP 웹 프로그래밍 (PHP Web Programming) 네트워크 프로그래밍 문양세 강원대학교 IT대학 컴퓨터과학전공.
TCP/IP Socket Cover Slide 조태문.
Department of Computer Engineering
제 18 장 TCP/IP 연결 확립과 종료 정보통신연구실.
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
컴퓨터 네트워크 PART 03 프로그래밍 (chapter 01 Socket 프로그래밍) 임효택
Internet Address Conversion Functions
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
11 소켓 프로그래밍 기초.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
18장 Practical Network Project
JAVA 프로그래밍 12장 네트워킹(Networking).
Choi Seong Yun 네트워크 프로그래밍 Choi Seong Yun
Using Standard I/O on Sockets
Department of Computer Engineering
Department of Computer Engineering
PART 02 프로토콜 컴퓨터 네트워크 chapter 06 트랜스포트 계층 임효택.
Department of Computer Engineering
Department of Computer Engineering
(Web Programming & Practice)
정보보호 실습 #2 네트워크 스캐닝 Choong Seon Hong Networking Lab.
Socket Address Structure and Byte Ordering Functions
제 14 장 도메인 네임 시스템 정보통신연구실.
Department of Computer Engineering
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하
Department of Computer Engineering
Chapter 06. UDP 서버/클라이언트.
Advanced Socket Programming
School of Electronics and Information. Kyung Hee University.
Department of Computer Engineering
Department of Computer Science and Engineering
Network Programming(1)
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
소켓의 옵션 School of Electronics and Information. Kyung Hee University.
서버 실습 기말과제 게임소프트웨어 b 이도하 Date :2014/12/11(목)
P2P를 연결을 위한 여러기술 휴즈플로우 이재동 예전에 간략하게 크로스 플랫폼 p2p를 이야기한적이 있었는데요
네트워크와 소켓 프로그래밍 Chapter 01. * 학습목표 TCP/IP 프로토콜의 동작 원리를 개관 소켓의 기본 개념을 이해
School of Electronics and Information. Kyung Hee University.
네트워크 프로그래밍의 이해 School of Electronics and Information.
Transmission Control Protocol (TCP)
Chapter 16 Socket Interface.
Department of Computer Engineering
Department of Computer Engineering
Department of Computer Engineering
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
Operating System Multiple Access Chatting Program using Multithread
Department of Computer Engineering
Department of Computer Engineering
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
Presentation transcript:

Department of Computer Engineering UDP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong

Remind of Connection-Oriented and Connectionless Server Connection-Oriented Service 종점간 연결 설정/해제, 데이터 송수신 등 세 단계의 절차를 거침 주로 TCP를 이용하여 작성 데이터의 안정적인 전달을 보장 (flow control) TCP 프로토콜, telnet, ftp 등 각 클라이언트마다 연결을 개설 클라이언트 수가 증가하면 서버에 부담이 클 수 있음 Connectionless Service 종점간 연결 설정/해제 작업 없이 바로 데이터를 주고 받는 방식 주로 UDP를 이용하여 작성 안정적인 데이터 전달을 보장하지 않으므로 응용 프로그램에서 처리 클라이언트마다 연결을 설정할 필요가 없음 서버의 부담이 적음 (메모리 사용 등) 방송형, 멀티캐스팅형 서비스에 적합

UDP Program UDP (비연결형) 소켓 프로그래밍 절차 TCP와 달리 일 대 일 통신에만 사용되지 않음 비연결형 소켓 일반적으로 연결 설정 과정을 거치지 않음 데이터를 위한 소켓은 하나만 개설 소켓 개설 후 바로 상대방과 데이터를 송수신 Server Client socket() bind() recvfrom() sendto() close() 데이터 송수신 종료

UDP 기반의 데이터 입출력 함수 데이터 전송 함수  주소 정보를 포함해서 데이터를 전송하는 함수 sock: 데이터를 전송할 때 사용할 소켓의 파일 디스크립터 msg: 전송하고자 하는 데이터를 저장해 놓은 버퍼를 가리키는 포인터 len: msg 포인터가 가리키는 위치에서부터 몇 바이트를 전송할 것인지의 크기 flags: 옵션을 설정하는데 필요한 인자. 일반적으로 0. addr: 전송하고자 하는 곳의 주소 정보 addrlen: addr 포인터가 가리키고 있는 구조체 변수의 크기 int sendto(int sock, const void* msg, int len, unsigned flags, const struct sockaddr * addr, int addrlen)

UDP 기반의 데이터 입출력 함수 데이터 수신 함수  데이터가 전송된 위치 정보를 얻을 수 있는 기능 제공 sock: 데이터를 수신할 때 사용할 소켓의 파일 디스크립터 buf: 수신할 데이터를 저장할 버퍼를 가리키는 포인터 len: 수신할 수 있는 최대 바이트 수 flags: 옵션을 설정하는데 필요한 인자. 일반적으로 0. addr: 주소 정보 구조체 변수의 포인터. 함수 호출이 끝나면, 데이터를 전송한 호스트의 주소 정보로 채워짐 addrlen: addr 포인터가 가리키고 있는 구조체 변수의 크기 int recvfrom(int sock, int * buf, int len, unsigned flags, struct sockaddr * addr, int * addrlen)

UDP 에코 서버/클라이언트 프로그램 예제 uecho_server.c, uecho_client.c 실행결과

데이터 경계가 존재하는 UDP 소켓 한쪽이 sendto()를 호출했으면 이 데이터를 받기 위해서 상대방은 반드시 recvfrom()을 호출해야 함 TCP 소켓에서는 스트림을 이용하므로 write()나 send()로 연속하여 쓰기를 수행하거나 read()나 recv()로 연속하여 읽기를 해도 문제가 되지 않음 UDP에서는 sendto() 와 recvfrom() 호출이 서로 짝을 이루도록 순서가 맞아야 함 Server Client 세 번에 걸쳐 메시지 전송 MSG 1 MSG 2 MSG 3 세 번에 메시지 수신 후 세 번에 메시지 전송 MSG 1 MSG 2 세 번에 걸쳐서 메시지 수신 MSG 3

예제 확인 프로그램 예제 becho_server.c becho_client.c 실행결과

TCP 기반에서 connect 함수 호출 시 내부 상황 IP와 Port의 할당. 연결 요청 진행(Three-way handshaking) 커널과 소켓의 연결 생성. TCP 기반 HOST Connect 호출 시 연결 생성 커널(kernel) socket Host

UDP 기반에서 connect 함수 호출 시 내부 상황 IP와 Port의 할당 connect 함수를 호출하지 않는 UDP 클라이언트의 데이터 송 수신 UDP 기반 Host 커널(kernel) socket Host sendto, recvfrom 호출 중  호출 후 sendto, recvfrom 호출 전  호출 중 UDP 기반 Host 커널(kernel) socket Host

Connected UDP connect 함수 호출을 하지 않으면 IP와 Port는 언제 할당 되는가? Connected UDP sendto 함수 호출 시 Connected UDP connect() 함수를 호출해서 IP와 Port를 소켓에 할당해 놓음 sendto()로 데이터를 전송하는 순간 소켓과 커널이 내부적으로 연결 커널은 인자로 받은 소켓주소와 UDP 소켓을 내부적으로 연결해 두고 계속 유지함 TCP와 같이 3-way 핸드쉐이크 연결설정이 이루어지지 않음 UDP 소켓을 통해서 처리속도 향상을 위해 사용 가능 유의사항 잘못된 IP 주소를 인자로 주어도 connect()에서 에러가 발생하지 않음 (3-way 핸드쉐이크가 수행되지 않기 때문) 연결된 UDP의 고정된 통신 상대를 connect()로 변경 가능  데이터를 주고 받는 속도가 빨라진다.  TCP 소켓 기반의 데이터 입 출력 함수를 그대로 사용 할 수 있다. read(), write()

성능이 향상된 UDP echo client 프로그램 예제 cecho_ client.c,

실습과제 #3 daytime service와 host정보를 제공해주는 UDP 서버프로그램과 UDP 클라이언트 프로그램을 작성하시오. 코드명: info_server.c, infor_client.c 실행 예 ./info_client 163.180.118.99 3333 Input: time => Today is 2009/10/14. Input: 163.180.96.54 => Host name is nms2.kyunghee.ac.kr.