27
쉽게 배우는 데이터 통신컴퓨터 네트워크 웹(WWW)

2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

쉽게 배우는 데이터 통신과 컴퓨터 네트워크

웹(WWW)

Page 2: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

2/27

학습목표

웹 서비스를 위한 클라이언트-서버 구조를 살펴본다.

웹 서비스를 지원하는 APM(Apache, PHP, MySQL)의 연동 방식을

이해한다.

HTML이 지원하는 기본 태그 명령어와 프레임 구조를 이해한다.

HTTP의 요청/응답 메시지의 구조와 동작 원리를 이해한다.

CGI의 원리를 이해하고 FORM 태그로 사용자 입력을 처리하는 방식을

알아본다.

Page 3: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

3/27

1절. 웹 시스템 구조

• 웹 서비스: TCP 포트 80번

클라이언트-서버 모델

URL

• 웹 서버의 자원 명칭

• 사용하는 프로토콜, 서버의 호스트 이름, 서버 내부의 파일 경로명으로 구성

• 예: http://www.korea.co.kr/welcom.html

• UNIX/Linux 시스템

– 로그인 이름 hong

– 홈 디렉토리/public_html/index.html

– http://www.korea.co.kr/~hong

Page 4: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

4/27

1절. 웹 시스템 구조

클라이언트-서버 모델

연결 설정과 해제

1. 사용자가 웹 브라우저에게 웹 서버의 URL 주소 입력

2. 웹 브라우저가 DNS 서버에게 웹 서버의 호스트 이름을 IP 주소로 변경 요청

3. 웹 브라우저가 <IP 주소 + 포트 80번>의 웹 서버와 TCP 접속 시도

4. 웹 브라우저가 웹 서버에게 최초 화면을 위한 GET 명령 전송

5. 웹 서버가 웹 브라우저에게 요청한 웹 문서를 회신

6. 웹 브라우저와 웹 서버 사이의 연결 해제

7. 웹 브라우저가 사용자 화면에 웹 문서를 출력

Page 5: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

5/27

1절. 웹 시스템 구조

클라이언트-서버 모델

연결 설정과 해제 [그림 14-1]

Page 6: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

6/27

1절. 웹 시스템 구조

APM에서의 서버와 클라이언트 구조 • APM (Apache, PHP, MySQL)

– Apache: 웹 서버 프로그램

– PHP: 유닉스/리눅스 환경에서 지원되며, HTML 언어의 기능을 보강

– MySQL: 데이터베이스 기능 지원

APM의 동작 원리

1. 웹 브라우저가 Apache에 웹 문서 요청

2. PHP 코드 처리 필요 시 PHP에 요청

3. 데이터베이스 처리 필요 시 MySQL에 요청

4. 데이터베이스 결과 회신

5. PHP가 실행 결과인 HTML 코드 회신

6. 웹 문서를 웹 브라우저에 회신

Page 7: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

7/27

1절. 웹 시스템 구조

APM에서의 서버와 클라이언트 구조

PHP 코드의 처리

• PHP 코드는 HTML 문서에 Embedded 형식으로 작성: <? 와 ?> 이 구분자

– PHP 코드가 포함된 문서의 확장자는 .php

– 예

• 웹 브라우저에 회신되는 내용: PHP 코드는 서버에서 실행되고 결과만 회신

– 예

Page 8: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

8/27

1절. 웹 시스템 구조

APM에서의 서버와 클라이언트 구조

PHP 코드의 처리

• 화면 출력 내용 [그림 14-3]

Page 9: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

9/27

2절. HTML

HTML 명령어 • HTML: 웹 문서를 작성하는 언어

• <HTML>로 시작하고, </HTML>로 종료

• 헤더: <HEAD>로 시작하고, </HEAD>로 종료

• 바디: <BODY>로 시작하고, </BODY>로 종료

Page 10: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

10/27

2절. HTML

HTML 명령어

HTML 기본 명령어

• <Hn>: 제목을 표시하며, n 값으로 크기 조정

• <HR>: 수평선

• <FONT SIZE=‘n’ COLOR=“#ffffff”>: 글자 크기와 색깔 지정

• <P>: 문단 구분

• <BR>: 줄 바꿈

• <B>: 굵은 글씨

• <I>: 이탤릭 글씨

• <U>: 밑줄

• <SUB>: 아래 첨자

• <SUP>: 위 첨자

• <A HREF=“URL 주소”>: 웹 문서 링크

• <IMG SRC=“그림 파일”>: 그림 표시

Page 11: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

11/27

2절. HTML

HTML 명령어

HTML 문서 작성의 예

– 그림 14-4

<HTML>

<HEAD>

<TITLE> 기본 웹 문서 </TITLE>

</HEAD>

<BODY>

<H2>기본 태그 연습</H2>

<HR>

<B>굵은 글씨</B><BR>

<I>이탤릭 글씨</I><BR>

<U>밑줄 글씨</U><BR>

<A HREF="http://www.korea.co.kr">한국주식회사</A>

</BODY>

</HTML>

Page 12: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

12/27

2절. HTML

HTML 명령어

HTML 표 명령어

• <TABLE>: 테이블 작성

• <TR>: 테이블의 한 줄

• <TD>: 테이블의 한 칸

<HTML>

<HEAD>

<TITLE> 표 만들기 </TITLE>

</HEAD>

<BODY>

<TABLE>

<TR> <TD>학년</TD> <TD>1</TD> <TD>2</TD> <TD>3</TD> <TD>4</TD> </TR>

<TR> <TD>인원</TD> <TD>50</TD> <TD>52</TD> <TD>54</TD> <TD>46</TD> </TR>

</TABLE>

</BODY>

</HTML>

Page 13: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

13/27

2절. HTML

프레임 • 한 화면을 여러 프레임으로 나누는 기능을 제공

• <FRAMESET> 태그

– 좌우 1:9의 예 [그림 14-6] <HTML>

<FRAMESET cols="10%,*" border=5>

<FRAME name="left" src="left.html">

<FRAME name=right" src="right.html">

</FRAMESET>

</HTML>

– left.html

<HTML> <BODY> left </BODY> </HTML>

– right.html

<HTML> <BODY> right </BODY> </HTML>

Page 14: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

14/27

3절. HTTP

• 웹 문서를 전송하는 프로토콜

• HTTP: TCP 포트 80 번

요청과 응답 • 동작 원리: 요청과 응답

• 요청

– HTTP 클라이언트가 서버에 요청을 전송

– 요청 메소드, URL, HTTP 버전과 기타 부가 정보 포함

• 응답

– HTTP 서버가 요청의 결과인 응답 코드가 포함된 정보를 회신

Page 15: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

15/27

3절. HTTP

요청과 응답

비상태 연결 [그림 14-7]

• 요청과 응답 이후, 연결이 끊어지므로 비상태 프로토콜

Page 16: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

16/27

3절. HTTP

요청과 응답

MIME 유사 메시지

• HTTP의 요청, 응답 메시지는 MIME 유사 메시지 구조로 전송됨

요청 메시지 [그림 14-8]

• 요청문

– 요청 메소드

– URL

– HTTP 버전

• 헤더

• 바디

Page 17: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

17/27

3절. HTTP

요청과 응답

요청 메시지

• 요청 메소드의 종류

– GET: 클라이언트가 서버에 웹 문서를 요청

– HEAD: 문서 내용보다 문서 정보를 요청

– POST: 클라이언트가 서버에 정보 전송

– PUT: 클라이언트가 서버에 문서 전송

Page 18: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

18/27

3절. HTTP

요청과 응답

응답 메시지 [그림 14-9]

• 상태문

– HTTP 버전

– 상태 코드

– 상태 이름

• 헤더

• 바디

Page 19: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

19/27

3절. HTTP

요청과 응답

응답 메시지

• 상태 코드의 종류

– 200 OK: 요청이 성공적으로 수행

– 202 Accepted: 요청이 수신되었으나, 즉각 실행되지 않고 있음

– 400 Bad Request: 요청 메시지의 문법 오류

– 401 Unauthorized: 요청의 실행에 필요한 권한이 없음

– 403 Forbidden: 요청이 거부됨

– 404 Not Found: 원하는 문서를 찾을 수 없음

– 500 Internal Server Error: 서버에 오류 발생

– 501 Not Implemented: 요청을 수행할 수 없음

Page 20: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

20/27

3절. HTTP

HTTP의 동작 과정

요청 메시지

• 개요

– HTTP 서버: uu.ac.kr

– 요청 메소드: GET

– 요청 문서의 URL: index.php

– HTTP 버전: 1

• 메시지 내용

Page 21: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

21/27

3절. HTTP

HTTP의 동작 과정

응답 메시지

• 개요

– 상태문: HTTP/1.1 200 OK

– 헤더 정보: 5 줄

– 바디 정보: <HTML>로 시작하는 웹 문서 내용

• 메시지 내용

HTTP/1.1 200 OK

Date: Thu, 12 Feb 2009 06:29:38 GMT

Server: Apache/1.3.29 (Unix) PHP/4.3.4RC3

X-Powered-By: PHP/4.3.4RC3

Transfer-Encoding: chunked

Content-Type: text/html

<HTML>

<HEAD>

<TITLE> 한국주식회사 홈페이지 </TITLE>

</HEAD>

<FRAMESET rows = "100,*" BORDER = "0" frameborder = "NO">

……

Page 22: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

22/27

3절. HTTP

HTTP의 동작 과정

시뮬레이션

• HTTP 서버: uu.ac.kr

• HTTP 클라이언트 [그림 14-10]

– kihyun.uu.ac.kr

– telnet 프로그램이 대행

Page 23: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

23/27

3절. HTTP

HTTP의 동작 과정

시뮬레이션 [그림 14-11]

Page 24: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

24/27

4절. CGI

• 사용자가 입력하는 정보를 처리하기 위한 구조 [그림 14-12]

• 양방향 통신을 지원

Page 25: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

25/27

4절. CGI

FORM 태그 • 사용자의 입력을 서버에 전달

• <FORM> 태그의 속성

– ACTION: 사용자 입력을 처리한 CGI 프로그램의 URL 주소

– METHOD: 사용자 데이터를 넘기는 방식

– ENCTYPE: 데이터 형식

• <INPUT> 태그의 속성

– TEXT: 텍스트 입력

– PASSWORD: 암호 입력

– CHECKBOX: 체크 박스

– RADIO: 라디오 버튼

– SUBMIT: 입력 허가

– RESET: 입력 취소

Page 26: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

26/27

4절. CGI

FORM 태그 • HTML 문서의 예 [그림 14-13]

<HTML>

<HEAD><TITLE>INPUT 태그</TITLE></HEAD>

<BODY>

<H1>정보 입력</H1>

<FORM action="test.cgi">

이름: <INPUT type="text" name="name" size=10> <BR>

암호: <INPUT type="password" name="passwd" size=10> <BR>

전화: <INPUT type="text" name="tel" size=15> <BR>

학과: <INPUT type="text" name="dept" size=20 value="정보통신과"> <BR>

<BR><BR>

<INPUT type="submit" value="승인">

<INPUT type="reset" value="취소">

</FORM>

</BODY>

</HTML>

Page 27: 2009년 상반기 사업계획 - lily.mmu.ac.krlily.mmu.ac.kr/lecture/13cn/ch14.pdf · 3/27 1절. 웹 시스템 구조 • 웹 서비스: tcp 포트 80번 클라이언트-서버 모델

IT CookBook, 쉽게 배우는 데이터 통신과 컴퓨터 네트워크