Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

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

The Pocket Guide to TCP/IP Sockets: C Version

2009년 상반기 사업계획

슬라이드 1

제1장 Unix란 무엇인가?

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

본 강의에 들어가기 전

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

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

본 강의에 들어가기 전

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

vi 사용법

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 03-TCP Programming.ppt

슬라이드 1

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

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

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

The Pocket Guide to TCP/IP Sockets: C Version

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

PowerPoint 프레젠테이션

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint PythonGUI-socket

본 강의에 들어가기 전

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

Microsoft PowerPoint - Lecture_Note_2.ppt [Compatibility Mode]

PowerPoint 프레젠테이션

Chapter 4 UDP 소켓 사용법

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

좀비프로세스 2

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

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

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

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - 15-EmbedSW-10-Socket

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

제1장 Unix란 무엇인가?

SYN flooding

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

<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6>

Microsoft Word - Network Programming_NewVersion_01_.docx

PowerPoint 프레젠테이션

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

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

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

제1장 Unix란 무엇인가?

The OSI Model

윤성우의 열혈 TCP/IP 소켓 프로그래밍

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

슬라이드 1

<43B7CE20BECBBEC6BAB8B4C C5EBBDC52E687770>

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

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint PythonGUI-network

Network Programming

2009년 상반기 사업계획

게시판 스팸 실시간 차단 시스템

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Network Programming

C++ Programming

Network Programming

2009년 상반기 사업계획

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

FlightGear 2.10

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

Microsoft PowerPoint - Chapter 6.ppt

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

슬라이드 1

전송계층프로토콜 TCP(Transmission Control Protocol) 전송계층에서동작하는연결지향형 (connectionoriented) 프로토콜 데이터의흐름을관리하고, 데이터가정확한지검증하며통신 쓰리웨이핸드셰이킹 (three-way handshaking) 을통

[제1강] 텍스트를 입력하세요

PowerPoint 프레젠테이션

13주-14주proc.PDF

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

untitled

KNK_C_05_Pointers_Arrays_structures_summary_v02

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

놀이동산미아찾기시스템

제12장 파일 입출력

Microsoft PowerPoint - additional06.ppt [호환 모드]

2014밝고고운동요부르기-수정3

2005프로그램표지

Microsoft PowerPoint - chap09-1.ppt

PowerPoint 프레젠테이션

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

Microsoft Word - MSOffice_WPS_analysis.doc

Microsoft PowerPoint - Chapter_09.pptx

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

ABC 11장

03장.스택.key

API 매뉴얼

Transcription:

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

TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write() 연결대기 연결수락 클라이언트의요구처리 close() 2

TCP Server Program socket() 소켓의생성 socket(pf_inet, SOCK_STREAM,0) bind() int bind(int sockfd, struct sockaddr * myaddr, int addrlen); socket() 으로생성된소켓은그응용프로그램내에서유일한번호인소켓번호를배정받는다. 그러나이번호는응용프로그램만알고있는번호이므로이프로그램이컴퓨터외부와통신하려면이소켓번호와소켓주소 (IP 주소 + 포트번호 ) 를연결해두어야하며이를위해 bind() 가사용된다. 3

TCP Server Program bind() 호출시소켓번호와소켓주소의관계 응용프로그램 ( 서버 ) socket() bind() 연결 소켓번호 2. 자신의 IP 주소 3. 자신의포트번호 1. 프로토콜 TCP/IP 4. 상대방 IP 주소 5. 상대방포트번호 소켓인터페이스 네트워크 4

연결요청대기상태 ' 로의진입 listen 함수는전달되는인자의소켓을 서버소켓 이되게한다. listen 함수는 연결요청대기큐 를생성한다. #include <sys/type.h> int listen(int s, int backlog); s : 연결요청대기상태 에서클라이언트의연결요청을받아들이는역할을하게될소켓의파일디스크립터를인자로전달 서버소켓 backlog : 연결요청대기큐 (Queue) 의크기를나타냄. 인자로 5가들어오면, 큐의크기가 5가되어클라이언트의연결요청을 5개까지대기시킬수있게된다. 함수호출성공시에는 0, 실패시에는 -1이리턴 5

서버의역할과연결요청대기상태 Server socket is kind of a gatekeeper. Server 대기실 서버소켓 서버로의연결요청 data client 두번째인자 첫번째인자 6

연결요청수락하기 연결요청대기큐 (queue) 에존재하는클라이언트의연결요청수락 #include <sys/type.h> #include <sys/socket.h> int accept(int s, struct sockaddr * addr, int * addrlen); s : 서버소켓의파일디스크립터를인자로전달 addr : 연결요청을수락할클라이언트의주소정보를저장할변수의포인터. 함수호출이성공하면 addr이가리키는변수에는클라이언트의주소정보로채워지게됨. addrlen : 함수호출시인자로전달된 addr 포인터가가리키는구조체의크기를저장하고있는변수의포인터를넘겨줌. 서버는 *addr 를통해클라이언트의 IP 주소를알수있음. 성공시소켓의새로생성된파일디스크립터를, 실패시 -1 리턴 7

TCP Server Program accept() 호출시얻는소켓주소정보와새로운소켓 응용프로그램 (Client) socket() bind() listen() accept() 소켓번호 새로운소켓번호 소켓인터페이스 2. 자신의 IP 주소 3. 자신의포트번호 1. 프로토콜 TCP/IP 4. 상대방 IP 주소 5. 상대방포트번호 네트워크 8

연결요청수락상태 연결요청 연결요청대기큐 1 2 3 서버소켓 Client1 Client2 Client3 Accept 함수호출연결요청수락 새로운소켓 연결완료! 데이터송수신진행 accept() 함수의수행이성공하면접속된클라이언트와의통신에사용할새로운소켓이만들어지고이소켓번호가리턴, 실패시에는 -1을리턴서버는이클라이언트와통신하기위하여 accept() 가리턴하여새로만들어진소켓번호를사용 9

Remind of Hello World! Server 프로그램예제 helloworld_server.c 실행하기포트번호는 123+ 각자아이디 Ex) ID : ip25 = 12325 10

클라이언트의기본적인함수호출순서 Procedure TCP Client socket() 소켓개설 sockaddr_in 구성 서버의 IP 주소와포트번호지정 connect() 서버로연결요구 read(), write() 데이터송수신 close() 11

연결요청함수 소켓과목적지주소에대한정보를마련한후연결요청을시도한다. #include <sys/type.h> int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); 서버에연결요청 sockfd : 미리생성해놓은소켓의파일디스크립터 serv_addr : 연결요청을보낼서버의주소정보를지닌구조체변수의포인터 addrlen : serv_addr 포인터가가리키는주소정보구조체변수의크기 12

TCP Client Program connect() 호출시소켓번호와소켓주소의관계 응용프로그램 (Client) socket() connect() 소켓번호 소켓인터페이스 2. 자신의 IP 주소 3. 자신의포트번호 1. 프로토콜 4. 상대방 IP 주소 5. 상대방포트번호 TCP/IP 네트워크 13

Remind of Hello World! Client 프로그램예제 helloworld_client.c 실행하기포트번호는 123+ 각자아이디 Ex) ID : ip25 = 12325 14

소켓사용절차 TCP ( 연결형 ) 소켓프로그래밍절차 서버클라이언트 socket() socket() bind() listen() 연결요청 connect() accept() write() read() close() 데이터송수신 종료 read() write() close() 15

Iterative 서버의구현 Iterative TCP Server socket() bind() 소켓개설 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write() 연결을기다림 연결수락 클라이언트의요구를처리한후결과 N Finished? Y closed() 16

Iterative 서버의코드 Template for( ; ; ){ clnt_addr_size=sizeof(clnt_addr); clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size); if(clnt_sock==-1) { error_handling("accept() error"); break; } /* 데이터전송후종결 */ write(clnt_sock, message, sizeof(message)); close(clnt_sock); } 17

예제확인 helloworld_server2.c, helloworld_client.c 18

에코 (echo) 서버 / 클라이언트의구현 에코서버 / 클라이언트의기능 Server Client 버퍼 ( 배열 ) Hello! Hello! message 19

예제확인 프로그램예제 echo_server.c, echo_client.c 실행결과 20

TCP 기반의데이터전송특징 한번의데이터전송함수호출 (write, send) 이늘하나의패킷을형성하는것은아니다. Server Client 버퍼 ( 배열 ) D ABCD C A B A, B 먼저도착 21

다시구현하는 TCP 기반의에코클라이언트 프로그램예제 echo_client2.c 22

경계가없는 TCP 기반의데이터전송 데이터송수신함수의호출횟수는큰의미를지니지않는다. Server Client MSG 1 두번에걸쳐메시지전송 한번에메시지수신후한번에메시지전송 MSG 2 MSG 1 + MSG 2 네번에걸쳐서메시지수신 23

예제확인 프로그램예제 bnd_server.c, bnd_client.c 실행결과 24

실습과제 #1 daytime_tcp_server.c, daytime_tcp_client.c Daytime service를제공하는서버프로그램과클라이언트프로그램을작성하시오.(tcp 이용 ) Hint #include<stdio.h> #include<stdlib.h> #include<time.h> Int main(int argc, char *argv[ ]) { time_t tim; tim =time(null); printf( 현재시각은 %s, ctime(&tim)); return 0; } 25

실습과제 #2 hostname_tcp_server.c, hostname_tcp_client.c 클라이언트가도메인네임을서버로전달해주면그서버의 hostname을알려주는프로그램을작성하시오 (TCP 이용 ) Hint struct hostent, gethostbyname() 26