The Pocket Guide to TCP/IP Sockets: C Version

Similar documents
The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

PowerPoint 프레젠테이션

vi 사용법

2009년 상반기 사업계획

본 강의에 들어가기 전

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

The Pocket Guide to TCP/IP Sockets: C Version

본 강의에 들어가기 전

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

The Pocket Guide to TCP/IP Sockets: C Version

본 강의에 들어가기 전

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

The Pocket Guide to TCP/IP Sockets: C Version

Chapter 4 UDP 소켓 사용법

Microsoft Word - KPMC-400,401 SW 사용 설명서

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 04-UDP Programming.ppt

슬라이드 1

Microsoft Word - Network Programming_NewVersion_01_.docx

PowerPoint 프레젠테이션

슬라이드 1

<43B7CE20BECBBEC6BAB8B4C C5EBBDC52E687770>

[ 목차 ] 1. 취약점개요 2. 배경지식 3. 취약점발생결과 (exploit 테스트 ) 4. 취약점발생원인분석 4.1 취약점 Q&A 5. exploit 분석 6. 보안대책 7. 결론 8. 레퍼런스 2

SYN flooding

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

제1장 Unix란 무엇인가?

K&R2 Reference Manual 번역본

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa

제1장 Unix란 무엇인가?

슬라이드 1

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 03-TCP Programming.ppt

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t

9장 윈도우 소켓 프로그래밍

Microsoft PowerPoint - 15-EmbedSW-10-Socket

IPv6 적용

Microsoft PowerPoint PythonGUI-socket

Microsoft PowerPoint - Lecture_Note_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt

좀비프로세스 2

Network Programming

Network Programming

<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6>

제12장 파일 입출력

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

Chapter #01 Subject

목차 목차포트스캔코드포트스캔결과포트스캔탐지코드포트스캔탐지결과 참조

Unix Network Programming Chapter 4. Elementary TCP Sockets

chap7.key

11장 포인터

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

hd132x_k_v1r3_Final_.PDF

BMP 파일 처리

bn2019_2

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

4. What will be the output of this program? Explain results for each variable and each thread. #include "apue.h" int var=1; pthread_mutex_t lock; void

FlightGear 2.10

슬라이드 1

PowerPoint 프레젠테이션


PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

2009년 상반기 사업계획

2009년 상반기 사업계획

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

일반적인 네트워크의 구성은 다음과 같다

The OSI Model

목 차 1. 포트스캐닝 (Port Scanning) 이란? 2. 포트 (Port) 란? 3. 스캔 (Scan) 의종류 4. 포트스캐너 (Port Scanner) 구현 5. 포트스캔 (Port Scan) 구현 6. 참조

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

PowerPoint 프레젠테이션

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

The Pocket Guide to TCP/IP Sockets: C Version

1장. 유닉스 시스템 프로그래밍 개요

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

Microsoft PowerPoint C-구조체

Sena Technologies, Inc. HelloDevice Super 1.1.0

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

3ÆÄÆ®-11

금오공대 컴퓨터공학전공 강의자료

PowerPoint 프레젠테이션

Transcription:

1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장

2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결

3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow control) 를하지않음 메시지의경계가있다! TCP 는스트림전송으로 send() 와 recv() 의횟수가상호관련이없다 UDP 는데이터그램전송으로메시지의경계가존재하며송신메시지와수신메시지사이의상관관계가존재

4 목포해양대해양컴퓨터공학과 UDP 헤더와 TCP 헤더 UDP 헤더 TCP 헤더

5 목포해양대해양컴퓨터공학과 UDP 서버의특징 (1) TCP와 UDP의공통점 포트번호를이용하여종단 ( 응용 ) 간전송 데이터위변조확인 (checksum 존재 ) 실제로 checksum 확인하는경우는거의없음 TCP 서버의특징 처음생성한소켓은연결만을담당 연결과정에서반환된소켓은데이터송수신을담당 서버쪽의데이터송수신소켓과클라이언트의소켓은 1:1 연결 스트림전송으로전송데이터의크기무제한

6 목포해양대해양컴퓨터공학과 UDP 서버의특징 (2) UDP 서버의특징 UDP 는연결자체가없음 UDP 서버는다수의클라이언트소켓과동시에데이터송수신처리 1 : 1 혹은 1: many 연결 데이터그램 ( 메시지 ) 단위전송이며하나의데이터그램은 65535 바이트크기로제한됨 그이상의크기는잘라서보내야함

7 목포해양대해양컴퓨터공학과 UDP 서버 - 클라이언트전송 프로세스 비연결형전송프로세스 UDP 서버 socket() bind() recvfrom() sendto() close() UDP 클라이언트 socket() sendto() recvfrom() close()

8 목포해양대해양컴퓨터공학과 UDP 소켓생성 용도 : 메시지를상대방에게전송 int socket(int family,int type,int proto); int sock; sock = socket(pf_inet, SOCK_DGRAM,0); if (sock<0) { /* ERROR */ }

9 목포해양대해양컴퓨터공학과 UDP 기반의데이터송수신 함수 (1) ssize_t sendto (int sock, const void *msg, int len, unsigned flags const struct sockaddr *addr, int addrlen) 용도 : 메시지를상대방에게전송 반환값 : 성공시전송된바이트수, 실패시 -1 sock: 소켓의파일디스크립터, UDP 소켓 msg: 전송하고자하는데이터를저장해놓은버퍼 len: 보낼데이터의크기 flags: 옵션 ( 일반적으로 0) addr: 전송하고자하는호스트의소켓주소구조체 addrlen: 소켓주소구조체 (addr) 의크기

UDP 기반의데이터송수신 함수 (2) ssize_t recvfrom (int sock, const void *buf, int len, unsigned flags struct sockaddr *addr, int *addrlen) 용도 : 상대방이전송하여수신버퍼에도착한메시지데이터를메모리에복사 반환값 : 성공시복사된바이트수, 실패시 -1 sock: 데이터를수신할소켓의파일디스크립터, UDP 소켓 buf: 수신할데이터를저장할버퍼 len: 수신할수있는최대바이트수 flags: 옵션 addr: 전송한호스트의소켓주소구조체 addrlen: addr 이가리키는구조체변수의크기 FIFO 버퍼에있는단위정보의크기가 len 보다큰경우, len 까지만반환되고, 읽히지않은나머지정보는버려짐 충분한크기의버퍼준비필요! (UDP 데이터최대크기 65,507) MSG_PEEK 플래그사용가능 10

UDP 메시지의처리 경계가있는메시지 TCP 와는달리 UDP 에서는하나의 sendto() 와하나의 recvfrom 이쌍 (pair) 를이룸 sendto() 와 recvfrom() 호출이서로짝을이루도록순서가맞아야함 Server Client MSG 1 MSG 2 세번에걸쳐메시지전송 세번에메시지수신후세번에메시지전송 MSG 3 MSG 1 MSG 2 MSG 3 세번에걸쳐서 메시지수신 11

UDP Echo 서버예제 (simple) #define BUFSIZE 65507 int main(int argc, char **argv) { int serv_sock; char message[bufsize]; int str_len; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; int clnt_addr_size; serv_sock=socket(pf_inet, SOCK_DGRAM, 0); memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(inaddr_any); serv_addr.sin_port = htons(atoi(argv[1])); if (bind(serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr))==-1) error_handling("bind() error"); while(1) { clnt_addr_size = sizeof(clnt_addr); str_len = recvfrom(serv_sock, message, BUFSIZE, 0, (struct sockaddr*)&clnt_addr, &clnt_addr_size); } sendto(serv_sock, message, str_len, 0, (struct sockaddr*)&clnt_addr, sizeof(clnt_addr)); 12 } close(serv_sock); return 0;

UDP Echo 클라이언트예제 (simple) #define BUFSIZE 65507 int main(int argc, char **argv) { int sock; char message[bufsize]; int str_len, addr_size; struct sockaddr_in serv_addr; struct sockaddr_in from_addr; sock=socket(pf_inet, SOCK_DGRAM, 0); memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(argv[1]); serv_addr.sin_port = htons(atoi(argv[2])); while(1) { fgets(message, sizeof(message), stdin); if(!strcmp(message,"q\n")) break; sendto(sock, message, strlen(message), 0, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); addr_size = sizeof(from_addr); str_len = recvfrom(sock, message, BUFSIZE, 0, (struct sockaddr*)&from_addr, &addr_size); message[str_len] = 0; // \0 printf( from server: %s", message); } close(sock); return 0; } 13

sudpechoserver.c (1) 14

sudpechoserver.c (2) 15

sudpechoclient.c (1) 16

sudpechoclient.c (2) 17

교재 Makefile 18

UDP 서버-클라이언트전송프로세스 연결형전송프로세스 사용목적 : 사용편의, 송수신성능향상 이전행위에대한오류확인가능 UDP 서버 socket() UDP 클라이언트 socket() bind() connect() recvfrom() send() sendto() close() recv() close() 19

응용과제 2 장과제개선 2 와같이사용자입력을계속받아전달하도록개선 동시에여러클라이언트를동작하여서버동작확인 서버화면캡처 20