The Pocket Guide to TCP/IP Sockets: C Version

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

vi 사용법

2009년 상반기 사업계획

본 강의에 들어가기 전

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

The Pocket Guide to TCP/IP Sockets: C Version

본 강의에 들어가기 전

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

The Pocket Guide to TCP/IP Sockets: C Version

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

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

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

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

본 강의에 들어가기 전

The Pocket Guide to TCP/IP Sockets: C Version

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

제1장 Unix란 무엇인가?

슬라이드 1

PowerPoint 프레젠테이션

Microsoft Word - Network Programming_NewVersion_01_.docx

Chapter 4 UDP 소켓 사용법

Microsoft PowerPoint - 04-UDP Programming.ppt

슬라이드 1

슬라이드 1

PowerPoint 프레젠테이션

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

SYN flooding

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

K&R2 Reference Manual 번역본

제1장 Unix란 무엇인가?

Microsoft PowerPoint - Lecture_Note_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 03-TCP Programming.ppt

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

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

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

제1장 Unix란 무엇인가?

Microsoft PowerPoint PythonGUI-socket

<43B7CE20BECBBEC6BAB8B4C C5EBBDC52E687770>

좀비프로세스 2

슬라이드 1

IPv6 적용

제12장 파일 입출력

제1장 Unix란 무엇인가?

Chapter #01 Subject

Microsoft PowerPoint - 15-EmbedSW-10-Socket

chap7.key

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

The Pocket Guide to TCP/IP Sockets: C Version

Network Programming

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

bn2019_2

11장 포인터

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Network Programming

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

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

FlightGear 2.10

PowerPoint 프레젠테이션


PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

2009년 상반기 사업계획

BMP 파일 처리

2009년 상반기 사업계획

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

Unix Network Programming Chapter 4. Elementary TCP Sockets

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

hd132x_k_v1r3_Final_.PDF

슬라이드 1

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

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

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - [2009] 02.pptx

자바-11장N'1-502

<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6>

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

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

The OSI Model

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - 제11강 파일 처리

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

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

Microsoft PowerPoint - chap4 [호환 모드]

03장.스택.key

Transcription:

얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓

제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결

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

UDP 서버의특징 (1) TCP 와 UDP 의공통점 포트번호를이용하여종단 ( 응용 ) 간젂송 데이터위변조확인 TCP 서버의특징 서버소켓은연결만을담당 연결과정에서반환된클라이언트소켓은데이터송수싞을담당 서버쪽의데이터송수싞소켓과클라이언트의소켓은 1:1 연결 스트림젂송으로젂송데이터의크기무제한

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

UDP 서버 - 클라이언트전송프로세스 비연결형전송프로세스 UDP 서버 socket() UDP 클라이언트 socket() bind() recvfrom() sendto() sendto() recvfrom() close() close()

UDP 소켓생성 int socket(int family,int type,int proto); int sock; sock = socket(pf_inet, SOCK_DGRAM,0); if (sock<0) { /* ERROR */ } 용도 : 메시지를상대방에게전송

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 이가리키는구조체변수의크기

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

UDP Echo 서버예제 #define BUFSIZE 30 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)); } } close(serv_sock); return 0;

UDP Echo 클라이언트예제 #define BUFSIZE 30 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; printf( from server: %s", message); } close(sock); return 0;

UDP 서버 - 클라이언트전송프로세스 연결형전송프로세스 사용목적 : 사용편의, 송수싞성능향상 UDP 서버 socket() UDP 클라이언트 socket() bind() connect() recvfrom() send() sendto() recv() close() close()