Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하 2001. 4. 13.

Slides:



Advertisements
Similar presentations
제 4 장 인터넷 창병모 네트워크 구성 2 LAN(Local Area Network) LAN  근거리 통신망으로 집, 사무실, 학교 등의 건물과 같이  가까운 지역을 한데 묶는 컴퓨터 네트워크 이더넷 (Ethernet)  제록스 PARC.
Advertisements

Python Socket/HTTP overmania. 목표  소켓을 이용하여 기본적인 서버 - 클라이언트 모델을 구현할 수 있다.  간단한 웹서버를 소켓을 이용하여 작성할 수 있다.
TCP 서버/클라이언트 동작 원리 - (1) TCP 서버/클라이언트 예 웹 서버 웹 클라이언트 웹 클라이언트
1.
목차 소켓이란 무엇인가 Socket클래스의 생성자 소켓에 관한 정보 알아내기 소켓 닫기 소켓 옵션 설정하기 소켓 예외
Java Socket 통신 이개혁 정대준.
Network Lab. Yong bae, Kim
Understanding of Socket and File I/O
13장 소켓.
Chapter 06. UDP 서버/클라이언트.
TCP/IP Socket Cover Slide 조태문.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
TCP/IP 소켓 프로그래밍 - C 버전 중에서
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
PHP 웹 프로그래밍 (PHP Web Programming) 네트워크 프로그래밍 문양세 강원대학교 IT대학 컴퓨터과학전공.
TCP/IP Socket Cover Slide 조태문.
제 4장 주소변환 프로토콜 (ARP : Address Resolution Protocol)
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 프로그래밍) 임효택
호스트이름과 네트워크이름 찾기 (Hostname and Network Name Lookups)
Inetd Daemon의 이용 VLSI 석사 3학기 고재현.
Internet Address Conversion Functions
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
18장 Practical Network Project
제 12장 I/O멀티플렉싱(Multiplexing)
Choi Seong Yun 네트워크 프로그래밍 Choi Seong Yun
Using Standard I/O on Sockets
Department of Computer Engineering
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Department of Computer Engineering
Processing resulting output
(Web Programming & Practice)
Socket Address Structure and Byte Ordering Functions
제 14 장 도메인 네임 시스템 정보통신연구실.
Department of Computer Engineering
Socket Address Structure and Byte Ordering Functions
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Department of Computer Engineering
Advanced Socket Programming
DHCP 박윤환 윤준호.
TCP/IP 통신망 특론 2장 Link Layer 컴퓨터 네트워크 실험실 이희규.
Department of Computer Science and Engineering
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 이름 장용하 차희진 연구제안서.
School of Electronics and Information. Kyung Hee University.
네트워크 프로그래밍의 이해 School of Electronics and Information.
Transmission Control Protocol (TCP)
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
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
MONSTER CAR 구정재 한석우 김재형.
Department of Computer Engineering
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
소리가 작으면 이어폰 사용 권장!.
Department of Computer Engineering
Presentation transcript:

Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하 2001. 4. 13

목 차 서버의 역할 이해하기 listen(2) 함수 accept(2) 함수 TCP/IP 서버 작성 클라이언트 프로그램 수정

1. 서버의 역할 이해하기 서버의 단계 서버와 클라이언트의 차이 소켓 생성 소켓 주소 바인드 Listen 연결 연결 승인 클라이언트 프로그램과 통신 소켓 차단 서버와 클라이언트의 차이 소켓에서 서버주소를 바인드 연결을 위한 서버 listen 서버 연결 승인

서버의 역할 이해하기(계속) 클라이언트 Optional bind(2) socket(2) Step C1 C2 connect(2) communicate Read/write close(2) End C3 C4 C5 서 버 listen(2) accept(2) S1 S2 S3 S4 S5 S6 1. 소켓 생성 2. 소켓 주소 바인드 3. Listen 연결 4. 연결 승인 5. 메시지 전달(통신) 6. 소켓 차단

1. 서버의 역할 이해하기(계속) 클라이언트 만들어짐 socket 접속완료 종 료 서 버 이름을 받음 대기큐 구축 접속을 받음 (대기) connect OK 응답 bind listen accept

2. Listen(2) 함수 listen(2) 함수 #include <sys/socket.h> int listen(int s, int backlog); s:소켓 함수로 반환하는 지시자 backlog: 연결 큐의 길이 함수의 반환이 성공 → 0 실패 → -1(erron에 기록)

2. Listen(2) 함수(계속) 9 8 7 6 5 4 3 2 1 Linux kernel Process Client Client Connects Linux kernel 9 8 7 6 5 4 3 2 1 accept(2) Process Client Request listen(2)

2. Listen(2) 함수(계속) backlog 값 명세 초기 UNIX backlog 5 사용 Richard Stevens backlog 16 사용 현재 20 사용(5-10을 선호) backlog 클수록 Web Sever Application에 적합

3. accept(2) 함수 호출 accept(2) 함수 #include <sys/types.h> #include <sys/socket.h> Int accept(int s, struct sockaddr *addr, int *addrlen); S: 소켓 지시자 *addr: 클라이언트 소켓주소(sockaddr형 객체 주소를 갖는 포인터) *addrlen: 객체의 최대 크기

3. accept(2) 함수 호출(계속) 클라이언트 Optional Bind(2) socket(2) Step C1 C2 connect(2) communicate Read/write close(2) End C3 C4 C5 서 버 bind(2) listen(2) accept(2) S1 S2 S3 S4 S5 S6

4. TCP/IP 서버 작성 프로그램 분석 서버 네트워크 주소 결정 If (argc >= 2) { /* Addr on cmdline: */ srvr_addr = argv[1]; } else { /* Use default address: */ srvr_addr = “127.0.0.1”; }

4. TCP/IP 서버 작성 서버 포트 결정 소켓 생성 If (argc >= 3) { srvr_addr = argv[2]; s = socket(PF_INET,SOCK_STREAM,0); If (s == -1) bail(“socket( )”);

4. TCP/IP 서버 작성 서버 소켓 주소 생성 Memset(&adr_srvr,0,sizeof adr_srvr); Adr_srvr.sin_family = AF_Inet; Adr_srvr.sin_port = htons(atoi(srvr_port)); If ( strcmp(srvr_addr,”*”) !=0 ) { /* Normal Address */ adr_srvr.sin_addr.s_addr= inet_addr(srvr_addr); if ( adr_srvr.sin_addr.s_addr == INADDR_NODE ) bail(“bad address.”); } else { /* Wild Address */ adr_srvr.sin_addr.s_addr = INADDR_ANY; }

4. TCP/IP 서버 작성 소켓 주소 바인드 Listening 소켓 생성 Len_inet = sizeof adr_srvr; Z = bind(s,(struct sockaddr *)&adr_srvr,len_inet); If ( z == -1 ) bail(“bind(2)”); z = listen(s,10); If ( z == -1) bail(“listen(2)”);

4. TCP/IP 서버 작성 클라이언트 서비스 루프 시작(for;;) 클라이언트 연결 승인 Len_inet = sizeof adr_clnt; c = accept(s,(struct sockaddr *)&adr_clnt,len_inet); If ( c == -1 ) bail(“accept(2)”);

4. TCP/IP 서버 작성 데이트/시간 스트링 생성 데이트/시간 스트링 클라이언트에게 보내기 클라이언트 연결 닫기;close(c) time(&td); n = (int) strftime(dtbuf,sizeof dtbuf, “%A %b %d %H : %M : %S %Y\n”,localtime(&td)); z = write(c,dtbuf,n); If ( z == -1) bail(“write(2)”);

4. TCP/IP 서버 작성 출 력 $ make server gcc –c –D_GUN_SOURCE –Wall –Wreturn-type server.c gcc server.o –o server $ ./server & [1] 1049 $ telnet 127.0.0.1 9099 Trying 127.0.0.1… Connected to 127.0.0.1. Escape character is ‘^]’. Sunday Aug 22 21:18:24 1999 Connection closed by foreign host. $

4. TCP/IP 서버 작성 Wild Server Local loopback interface(출력) @pepper [1] 1078 $ telnet 127.0.0.1 9099 Trying 127.0.0.1… Connected to 127.0.0.1. Escape character is ‘^]’. Sunday aug 22 21:40:19 1999 Connection closed by foreign host.

4. TCP/IP 서버 작성 Wild Server 다른 IP 주소사용(출력) @pepper $ telnet 192.168.0.1 9099 Trying 192.168.0.1… Connected to 192.168.0.1. Escape character is ‘^]’. Sunday aug 22 21:40:27 1999 Connection closed by foreign host.

5. 클라이언트 프로그램 수정 프로그램 분석 임의의 두 포트 승인 If ( argc >= 3 ) srvr_port = argv[2];

5. 클라이언트 프로그램 수정 프로그램 분석 출 력 @pepper $ ./daytime 127.0.0.1 9099 Date & Time is: Sunday Aug 22 22:02:19 1999 $ ./daytime 192.168.0.1 9099 Date & Time is: Sunday Aug 22 22:02:30 1999

요 약